From 56997519fa5f6f12bdd1552fcc82c9861f997728 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Fri, 25 Apr 2025 18:56:19 -0400 Subject: [PATCH 01/97] Initial commit --- .gitignore | 174 ++++++++++++++++++++++++++++++++++++++++++++++ LICENSE | 201 +++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 1 + 3 files changed, 376 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0a19790 --- /dev/null +++ b/.gitignore @@ -0,0 +1,174 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +# .python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# 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 +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/latest/usage/project/#working-with-version-control +.pdm.toml +.pdm-python +.pdm-build/ + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +#.idea/ + +# Ruff stuff: +.ruff_cache/ + +# PyPI configuration file +.pypirc diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8a98da3 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# icefabric \ No newline at end of file From 19ef30156a9ec3b4ca7c039c4e5d0adae87f249e Mon Sep 17 00:00:00 2001 From: taddyb Date: Fri, 25 Apr 2025 19:05:29 -0400 Subject: [PATCH 02/97] initial commit --- .gitignore | 4 ++ .pre-commit-config.yaml | 23 +++++++ docs/index.md | 17 +++++ mkdocs.yml | 1 + pyproject.toml | 126 ++++++++++++++++++++++++++++++++++++++ src/icefabric/__init__.py | 0 6 files changed, 171 insertions(+) create mode 100644 .pre-commit-config.yaml create mode 100644 docs/index.md create mode 100644 mkdocs.yml create mode 100644 pyproject.toml create mode 100644 src/icefabric/__init__.py diff --git a/.gitignore b/.gitignore index 0a19790..11510c8 100644 --- a/.gitignore +++ b/.gitignore @@ -172,3 +172,7 @@ cython_debug/ # PyPI configuration file .pypirc + +.qodo +_version.py +./data diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..1f55ba1 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,23 @@ +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.6.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: check-yaml + - id: debug-statements + + - repo: https://github.com/astral-sh/ruff-pre-commit + # Ruff version. + rev: v0.11.5 + hooks: + # Run the linter. + - id: ruff + args: [ --fix ] + # Run the formatter. + - id: ruff-format + + # - repo: https://github.com/pre-commit/mirrors-mypy + # rev: v1.15.0 + # hooks: + # - id: mypy diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..000ea34 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,17 @@ +# Welcome to MkDocs + +For full documentation visit [mkdocs.org](https://www.mkdocs.org). + +## Commands + +* `mkdocs new [dir-name]` - Create a new project. +* `mkdocs serve` - Start the live-reloading docs server. +* `mkdocs build` - Build the documentation site. +* `mkdocs -h` - Print help message and exit. + +## Project layout + + mkdocs.yml # The configuration file. + docs/ + index.md # The documentation homepage. + ... # Other markdown pages, images and other files. diff --git a/mkdocs.yml b/mkdocs.yml new file mode 100644 index 0000000..c97182f --- /dev/null +++ b/mkdocs.yml @@ -0,0 +1 @@ +site_name: My Docs diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..49021f1 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,126 @@ +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling", "hatch-vcs"] + +[tool.hatch] +version.source = "vcs" +build.hooks.vcs.version-file = "./src/icefabric/_version.py" + +[tool.hatch.metadata] +allow-direct-references = true + +[tool.hatch.build.targets.wheel] +packages = ["src/icefabric"] + +[tool.hatch.build.targets.sdist] +packages = ["src/icefabric"] + +[project] +name = "icefabric" +description = "A tool for training deep learning models for FIM" +readme = "README.md" +dynamic = ["version"] +requires-python = ">=3.11.0" +license = { file = "LICENSE" } +authors = [{ name = "Tadd Bindas" }] +maintainers = [{ name = "Tadd Bindas", email = "taddbindas@gmail.com" }] + +dependencies = [ + "numpy==2.2.5", + "pandas==2.2.3", + "cubed-xarray==0.0.7", + "geopandas==1.0.1", + "pydantic==2.10.6", + "xarray==2025.3.1", + "scipy==1.15.1", + "tqdm==4.67.1", + "zarr==3.0.7", + "sympy==1.13.1", + "scikit-learn==1.6.1", + "matplotlib==3.10.0", + "s3fs==2025.3.2", +] + +dev = ["pre-commit", "ruff", "black", "mypy"] + +docs = [ + "pillow", + "cairosvg", + "mkdocs-material", + "mkdocs-git-committers-plugin", + "mkdocs-material-extensions", + "mkdocs-git-authors-plugin", + "mkdocs-git-revision-date-localized-plugin", +] + +jupyter = ["ipykernel", "jupyterlab"] + +[tool.black] +line-length = 110 +skip-string-normalization = true +preview = true +target-version = ['py311'] + +[tool.ruff] +line-length = 110 +lint.select = [ + "F", # Errors detected by Pyflakes + "E", # Error detected by Pycodestyle + "W", # Warning detected by Pycodestyle + "I", # isort + "D", # pydocstyle + "B", # flake8-bugbear + "TID", # flake8-tidy-imports + "C4", # flake8-comprehensions + "BLE", # flake8-blind-except + "UP", # pyupgrade + "RUF100", # Report unused noqa directives +] +lint.ignore = [ + # line too long -> we accept long comment lines; black gets rid of long code lines + "E501", + # Do not assign a lambda expression, use a def -> lambda expression assignments are convenient + "E731", + # allow I, O, l as variable names -> I is the identity matrix + "E741", + # Missing docstring in public package + "D104", + # Missing docstring in public module + "D100", + # Missing docstring in __init__ + "D107", + # Errors from function calls in argument defaults. These are fine when the result is immutable. + "B008", + # __magic__ methods are are often self-explanatory, allow missing docstrings + "D105", + # first line should end with a period [Bug: doesn't work with single-line docstrings] + "D400", + # First line should be in imperative mood; try rephrasing + "D401", + ## Disable one in each pair of mutually incompatible rules + # We don't want a blank line before a class docstring + "D203", + # We want docstrings to start immediately after the opening triple quote + "D213", +] + +[tool.ruff.lint.pydocstyle] +convention = "numpy" + +[tool.ruff.lint.per-file-ignores] +"docs/*" = ["I"] +"tests/*" = ["D"] +"*/__init__.py" = ["F401"] + +[tool.mypy] +python_version = "3.11" +warn_return_any = true +warn_unused_configs = true +strict_optional = true +ignore_missing_imports = true +disallow_any_unimported = true +check_untyped_defs = true +disallow_untyped_defs = true +no_implicit_optional = true +show_error_codes = true +warn_unused_ignores = true diff --git a/src/icefabric/__init__.py b/src/icefabric/__init__.py new file mode 100644 index 0000000..e69de29 From 1fa9f5aab88c07172d4ece299a2e1e32aa9e9ab3 Mon Sep 17 00:00:00 2001 From: taddyb Date: Fri, 25 Apr 2025 21:26:26 -0400 Subject: [PATCH 03/97] wrote an example for building my warehouse DB --- .gitignore | 2 +- examples/build.ipynb | 229 +++++++++++++++++++++++++++++++++++++ pyproject.toml | 5 + scripts/gpkg_to_parquet.py | 14 +++ 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 examples/build.ipynb create mode 100644 scripts/gpkg_to_parquet.py diff --git a/.gitignore b/.gitignore index 11510c8..ce6cd93 100644 --- a/.gitignore +++ b/.gitignore @@ -175,4 +175,4 @@ cython_debug/ .qodo _version.py -./data +data/ diff --git a/examples/build.ipynb b/examples/build.ipynb new file mode 100644 index 0000000..87e8279 --- /dev/null +++ b/examples/build.ipynb @@ -0,0 +1,229 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiceberg.catalog import load_catalog\n", + "import pyarrow.parquet as pq\n", + "import os\n", + "from pathlib import Path\n", + "import geopandas as gpd\n", + "from shapely import wkb" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": {}, + "outputs": [], + "source": [ + "def add_parquet_to_catalog(file_path, table_name):\n", + " # Check if table already exists\n", + " if catalog.table_exists(f\"hydrofabric.{table_name}\"):\n", + " print(f\"Table {table_name} already exists, loading it\")\n", + " return catalog.load_table(f\"hydrofabric.{table_name}\")\n", + " \n", + " # Read the parquet file\n", + " arrow_table = pq.read_table(file_path)\n", + " \n", + " # Create the table in the catalog\n", + " iceberg_table = catalog.create_table(\n", + " f\"hydrofabric.{table_name}\",\n", + " schema=arrow_table.schema,\n", + " )\n", + " \n", + " # Append the data to the table\n", + " iceberg_table.append(arrow_table)\n", + " \n", + " print(f\"Added {file_path} as table {table_name}\")\n", + " return iceberg_table" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Added ../data/parquet/network.parquet as table network\n", + "Added ../data/parquet/nexus.parquet as table nexus\n", + "Added ../data/parquet/flowpath-attributes.parquet as table flowpath-attributes\n", + "Added ../data/parquet/divides.parquet as table divides\n", + "Added ../data/parquet/pois.parquet as table pois\n", + "Added ../data/parquet/flowpath-attributes-ml.parquet as table flowpath-attributes-ml\n", + "Added ../data/parquet/divide-attributes.parquet as table divide-attributes\n", + "Added ../data/parquet/flowpaths.parquet as table flowpaths\n", + "Added ../data/parquet/hydrolocations.parquet as table hydrolocations\n", + "Added ../data/parquet/lakes.parquet as table lakes\n" + ] + } + ], + "source": [ + "# Get all parquet files from the directory\n", + "parquet_dir = \"../data/parquet\"\n", + "parquet_files = list(Path(parquet_dir).glob(\"*.parquet\"))\n", + "\n", + "# Dictionary to store all tables\n", + "tables = {}\n", + "\n", + "# Add each parquet file to the catalog\n", + "for parquet_file in parquet_files:\n", + " table_name = parquet_file.stem # Get filename without extension\n", + " tables[table_name] = add_parquet_to_catalog(str(parquet_file), table_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tables in the catalog:\n", + "- ('hydrofabric', 'divide-attributes')\n", + "- ('hydrofabric', 'divides')\n", + "- ('hydrofabric', 'flowpath-attributes')\n", + "- ('hydrofabric', 'flowpath-attributes-ml')\n", + "- ('hydrofabric', 'flowpaths')\n", + "- ('hydrofabric', 'hydrolocations')\n", + "- ('hydrofabric', 'lakes')\n", + "- ('hydrofabric', 'network')\n", + "- ('hydrofabric', 'nexus')\n", + "- ('hydrofabric', 'pois')\n" + ] + } + ], + "source": [ + "print(\"Tables in the catalog:\")\n", + "for table_id in catalog.list_tables(\"hydrofabric\"):\n", + " print(f\"- {table_id}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "def create_geodataframe(df):\n", + " if 'geometry' in df.columns:\n", + " df['geometry'] = df['geometry'].apply(\n", + " lambda x: wkb.loads(x) if x is not None else None\n", + " )\n", + " return gpd.GeoDataFrame(df, geometry='geometry', crs=\"EPSG:5070\")\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 41, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
divide_idtoidtypeds_idareasqkmvpuididlengthkmtot_drainage_areasqkmhas_flowlinegeometry
0cat-5539nex-5540networkNaN10.498501wb-55396.4490012247.957002TruePOLYGON ((2059095 2991255, 2059095 2990985, 20...
\n", + "
" + ], + "text/plain": [ + " divide_id toid type ds_id areasqkm vpuid id lengthkm \\\n", + "0 cat-5539 nex-5540 network NaN 10.4985 01 wb-5539 6.449001 \n", + "\n", + " tot_drainage_areasqkm has_flowline \\\n", + "0 2247.957002 True \n", + "\n", + " geometry \n", + "0 POLYGON ((2059095 2991255, 2059095 2990985, 20... " + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "divides_df = tables['divides'].scan(\n", + " row_filter=\"divide_id == 'cat-5539'\",\n", + ").to_pandas()\n", + "divides_gdf = create_geodataframe(divides_df)\n", + "divides_gdf" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pyproject.toml b/pyproject.toml index 49021f1..e71d5e9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,7 @@ maintainers = [{ name = "Tadd Bindas", email = "taddbindas@gmail.com" }] dependencies = [ "numpy==2.2.5", + "fiona==1.10.1", "pandas==2.2.3", "cubed-xarray==0.0.7", "geopandas==1.0.1", @@ -39,8 +40,12 @@ dependencies = [ "scikit-learn==1.6.1", "matplotlib==3.10.0", "s3fs==2025.3.2", + "pyarrow==19.0.1", + "pyiceberg==0.9.0", ] +[project.optional-dependencies] +test = ["pytest", "pytest-cov"] dev = ["pre-commit", "ruff", "black", "mypy"] docs = [ diff --git a/scripts/gpkg_to_parquet.py b/scripts/gpkg_to_parquet.py new file mode 100644 index 0000000..85f28a7 --- /dev/null +++ b/scripts/gpkg_to_parquet.py @@ -0,0 +1,14 @@ +"""A simple script to convert the v2.2 hydrofabric to parquet""" + +import geopandas as gpd +import fiona + +input_file = "data/conus_nextgen.gpkg" +available_layers = fiona.listlayers(input_file) +print(f"Layers in GeoPackage: {available_layers}") + +for layer in available_layers: + gdf = gpd.read_file(input_file, layer=layer) + output_file = f"data/parquet/{layer}.parquet" + gdf.to_parquet(output_file) + print(f"Converted layer '{layer}' to {output_file}") From 08f6dd24e93cb2cbf48b1f1571ea47c7e3644154 Mon Sep 17 00:00:00 2001 From: taddyb Date: Sat, 26 Apr 2025 16:01:12 -0400 Subject: [PATCH 04/97] edited build example to add a get_origin() function --- examples/build.ipynb | 170 ++++++++++++++++++++++++++++++------------- 1 file changed, 119 insertions(+), 51 deletions(-) diff --git a/examples/build.ipynb b/examples/build.ipynb index 87e8279..2aa3eec 100644 --- a/examples/build.ipynb +++ b/examples/build.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 26, + "execution_count": 12, "metadata": {}, "outputs": [], "source": [ @@ -11,12 +11,34 @@ "import os\n", "from pathlib import Path\n", "import geopandas as gpd\n", - "from shapely import wkb" + "from shapely import wkb\n", + "import numpy as np\n", + "import networkx as nx\n", + "from tqdm import tqdm" ] }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiceberg.catalog import load_catalog\n", + "\n", + "warehouse_path = \"../data/warehouse\"\n", + "catalog = load_catalog(\n", + " \"default\",\n", + " **{\n", + " 'type': 'sql',\n", + " \"uri\": f\"sqlite:///{warehouse_path}/icefabric_catalog.db\",\n", + " \"warehouse\": f\"file://{warehouse_path}\",\n", + " },\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ @@ -44,23 +66,23 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Added ../data/parquet/network.parquet as table network\n", - "Added ../data/parquet/nexus.parquet as table nexus\n", - "Added ../data/parquet/flowpath-attributes.parquet as table flowpath-attributes\n", - "Added ../data/parquet/divides.parquet as table divides\n", - "Added ../data/parquet/pois.parquet as table pois\n", - "Added ../data/parquet/flowpath-attributes-ml.parquet as table flowpath-attributes-ml\n", - "Added ../data/parquet/divide-attributes.parquet as table divide-attributes\n", - "Added ../data/parquet/flowpaths.parquet as table flowpaths\n", - "Added ../data/parquet/hydrolocations.parquet as table hydrolocations\n", - "Added ../data/parquet/lakes.parquet as table lakes\n" + "Table network already exists, loading it\n", + "Table nexus already exists, loading it\n", + "Table flowpath-attributes already exists, loading it\n", + "Table divides already exists, loading it\n", + "Table pois already exists, loading it\n", + "Table flowpath-attributes-ml already exists, loading it\n", + "Table divide-attributes already exists, loading it\n", + "Table flowpaths already exists, loading it\n", + "Table hydrolocations already exists, loading it\n", + "Table lakes already exists, loading it\n" ] } ], @@ -80,7 +102,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -124,7 +146,59 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def find_origin(network_table, identifier, id_type=\"hl_uri\"):\n", + " \"\"\"Find an origin point in the hydrofabric network.\n", + " \n", + " This function handles the case where multiple records match the identifier.\n", + " It follows the R implementation to select a single origin point based on \n", + " the minimum hydroseq value.\n", + " \"\"\"\n", + " # Filter network table by the identifier\n", + " if id_type == \"hl_uri\":\n", + " row_filter = f\"{id_type} == '{identifier}'\"\n", + " # elif id_type == \"comid\":\n", + " # row_filter = f\"hf_id == {identifier}\"\n", + " # elif id_type == \"id\":\n", + " # row_filter = f\"id == '{identifier}'\"\n", + " # elif id_type == \"poi_id\":\n", + " # row_filter = f\"poi_id == '{identifier}'\"\n", + " else:\n", + " raise ValueError(f\"Identifier type {id_type} not supported\")\n", + " \n", + " # Get all matching records\n", + " origin_candidates = network_table.scan(row_filter=row_filter).to_pandas()\n", + " \n", + " if len(origin_candidates) == 0:\n", + " raise ValueError(f\"No origin found for {id_type}='{identifier}'\")\n", + " \n", + " # Select relevant columns for the origin\n", + " origin_cols = ['id', 'toid', 'vpuid', 'topo', 'hydroseq']\n", + " available_cols = [col for col in origin_cols if col in origin_candidates.columns]\n", + " \n", + " # Select only the relevant columns and drop duplicates\n", + " origin = origin_candidates[available_cols].drop_duplicates()\n", + " \n", + " # Find the record with minimum hydroseq\n", + " if 'hydroseq' in origin.columns:\n", + " # For consistency with R, check if there are unique hydroseq values\n", + " if len(origin['hydroseq'].unique()) > 1:\n", + " # Sort by hydroseq and take the minimum\n", + " origin = origin.sort_values('hydroseq').iloc[0:1]\n", + " \n", + " # If we still have multiple records, it's a problem\n", + " if len(origin) > 1:\n", + " raise ValueError(f\"Multiple origins found: {origin['id'].tolist()}\")\n", + " \n", + " return origin" + ] + }, + { + "cell_type": "code", + "execution_count": null, "metadata": {}, "outputs": [ { @@ -148,60 +222,54 @@ " \n", " \n", " \n", - " divide_id\n", + " id\n", " toid\n", - " type\n", - " ds_id\n", - " areasqkm\n", " vpuid\n", - " id\n", - " lengthkm\n", - " tot_drainage_areasqkm\n", - " has_flowline\n", - " geometry\n", + " topo\n", + " hydroseq\n", " \n", " \n", " \n", " \n", - " 0\n", - " cat-5539\n", - " nex-5540\n", - " network\n", - " NaN\n", - " 10.4985\n", - " 01\n", - " wb-5539\n", - " 6.449001\n", - " 2247.957002\n", - " True\n", - " POLYGON ((2059095 2991255, 2059095 2990985, 20...\n", + " 1\n", + " wb-87646\n", + " nex-87404\n", + " 02\n", + " fl-nex\n", + " 26923.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " divide_id toid type ds_id areasqkm vpuid id lengthkm \\\n", - "0 cat-5539 nex-5540 network NaN 10.4985 01 wb-5539 6.449001 \n", - "\n", - " tot_drainage_areasqkm has_flowline \\\n", - "0 2247.957002 True \n", - "\n", - " geometry \n", - "0 POLYGON ((2059095 2991255, 2059095 2990985, 20... " + " id toid vpuid topo hydroseq\n", + "1 wb-87646 nex-87404 02 fl-nex 26923.0" ] }, - "execution_count": 41, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "divides_df = tables['divides'].scan(\n", - " row_filter=\"divide_id == 'cat-5539'\",\n", - ").to_pandas()\n", - "divides_gdf = create_geodataframe(divides_df)\n", - "divides_gdf" + "identifier = \"gages-01563500\"\n", + "id_type = \"hl_uri\"\n", + "origin = find_origin(network_table, identifier, id_type)\n", + "origin" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "network_df = tables[\"network\"].scan().to_pandas()\n", + "nexus_df = tables[\"nexus\"].scan().to_pandas()\n", + "\n", + "terminal_id = origin['id'].iloc[0]\n", + "terminal_nexus = origin['toid'].iloc[0]" ] } ], From 9db758d32369729fa3afdb088fea4527d4d63b05 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Sun, 27 Apr 2025 10:20:35 -0400 Subject: [PATCH 05/97] Update LICENSE --- LICENSE | 741 +++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 540 insertions(+), 201 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9..b03120f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,201 +1,540 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. +## ODC Open Database License (ODbL) + +### Preamble + +The Open Database License (ODbL) is a license agreement intended to +allow users to freely share, modify, and use this Database while +maintaining this same freedom for others. Many databases are covered by +copyright, and therefore this document licenses these rights. Some +jurisdictions, mainly in the European Union, have specific rights that +cover databases, and so the ODbL addresses these rights, too. Finally, +the ODbL is also an agreement in contract for users of this Database to +act in certain ways in return for accessing this Database. + +Databases can contain a wide variety of types of content (images, +audiovisual material, and sounds all in the same database, for example), +and so the ODbL only governs the rights over the Database, and not the +contents of the Database individually. Licensors should use the ODbL +together with another license for the contents, if the contents have a +single set of rights that uniformly covers all of the contents. If the +contents have multiple sets of different rights, Licensors should +describe what rights govern what contents together in the individual +record or in some other way that clarifies what rights apply. + +Sometimes the contents of a database, or the database itself, can be +covered by other rights not addressed here (such as private contracts, +trade mark over the name, or privacy rights / data protection rights +over information in the contents), and so you are advised that you may +have to consult other documents or clear other rights before doing +activities not covered by this License. + +------ + +The Licensor (as defined below) + +and + +You (as defined below) + +agree as follows: + +### 1.0 Definitions of Capitalised Words + +"Collective Database" – Means this Database in unmodified form as part +of a collection of independent databases in themselves that together are +assembled into a collective whole. A work that constitutes a Collective +Database will not be considered a Derivative Database. + +"Convey" – As a verb, means Using the Database, a Derivative Database, +or the Database as part of a Collective Database in any way that enables +a Person to make or receive copies of the Database or a Derivative +Database. Conveying does not include interaction with a user through a +computer network, or creating and Using a Produced Work, where no +transfer of a copy of the Database or a Derivative Database occurs. +"Contents" – The contents of this Database, which includes the +information, independent works, or other material collected into the +Database. For example, the contents of the Database could be factual +data or works such as images, audiovisual material, text, or sounds. + +"Database" – A collection of material (the Contents) arranged in a +systematic or methodical way and individually accessible by electronic +or other means offered under the terms of this License. + +"Database Directive" – Means Directive 96/9/EC of the European +Parliament and of the Council of 11 March 1996 on the legal protection +of databases, as amended or succeeded. + +"Database Right" – Means rights resulting from the Chapter III ("sui +generis") rights in the Database Directive (as amended and as transposed +by member states), which includes the Extraction and Re-utilisation of +the whole or a Substantial part of the Contents, as well as any similar +rights available in the relevant jurisdiction under Section 10.4. + +"Derivative Database" – Means a database based upon the Database, and +includes any translation, adaptation, arrangement, modification, or any +other alteration of the Database or of a Substantial part of the +Contents. This includes, but is not limited to, Extracting or +Re-utilising the whole or a Substantial part of the Contents in a new +Database. + +"Extraction" – Means the permanent or temporary transfer of all or a +Substantial part of the Contents to another medium by any means or in +any form. + +"License" – Means this license agreement and is both a license of rights +such as copyright and Database Rights and an agreement in contract. + +"Licensor" – Means the Person that offers the Database under the terms +of this License. + +"Person" – Means a natural or legal person or a body of persons +corporate or incorporate. + +"Produced Work" – a work (such as an image, audiovisual material, text, +or sounds) resulting from using the whole or a Substantial part of the +Contents (via a search or other query) from this Database, a Derivative +Database, or this Database as part of a Collective Database. + +"Publicly" – means to Persons other than You or under Your control by +either more than 50% ownership or by the power to direct their +activities (such as contracting with an independent consultant). + +"Re-utilisation" – means any form of making available to the public all +or a Substantial part of the Contents by the distribution of copies, by +renting, by online or other forms of transmission. + +"Substantial" – Means substantial in terms of quantity or quality or a +combination of both. The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may amount to the +Extraction or Re-utilisation of a Substantial part of the Contents. + +"Use" – As a verb, means doing any act that is restricted by copyright +or Database Rights whether in the original medium or any other; and +includes without limitation distributing, copying, publicly performing, +publicly displaying, and preparing derivative works of the Database, as +well as modifying the Database as may be technically necessary to use it +in a different mode or format. + +"You" – Means a Person exercising rights under this License who has not +previously violated the terms of this License with respect to the +Database, or who has received express permission from the Licensor to +exercise rights under this License despite a previous violation. + +Words in the singular include the plural and vice versa. + +### 2.0 What this License covers + +2.1. Legal effect of this document. This License is: + + a. A license of applicable copyright and neighbouring rights; + + b. A license of the Database Right; and + + c. An agreement in contract between You and the Licensor. + +2.2 Legal rights covered. This License covers the legal rights in the +Database, including: + + a. Copyright. Any copyright or neighbouring rights in the Database. + The copyright licensed includes any individual elements of the + Database, but does not cover the copyright over the Contents + independent of this Database. See Section 2.4 for details. Copyright + law varies between jurisdictions, but is likely to cover: the Database + model or schema, which is the structure, arrangement, and organisation + of the Database, and can also include the Database tables and table + indexes; the data entry and output sheets; and the Field names of + Contents stored in the Database; + + b. Database Rights. Database Rights only extend to the Extraction and + Re-utilisation of the whole or a Substantial part of the Contents. + Database Rights can apply even when there is no copyright over the + Database. Database Rights can also apply when the Contents are removed + from the Database and are selected and arranged in a way that would + not infringe any applicable copyright; and + + c. Contract. This is an agreement between You and the Licensor for + access to the Database. In return you agree to certain conditions of + use on this access as outlined in this License. + +2.3 Rights not covered. + + a. This License does not apply to computer programs used in the making + or operation of the Database; + + b. This License does not cover any patents over the Contents or the + Database; and + + c. This License does not cover any trademarks associated with the + Database. + +2.4 Relationship to Contents in the Database. The individual items of +the Contents contained in this Database may be covered by other rights, +including copyright, patent, data protection, privacy, or personality +rights, and this License does not cover any rights (other than Database +Rights or in contract) in individual Contents contained in the Database. +For example, if used on a Database of images (the Contents), this +License would not apply to copyright over individual images, which could +have their own separate licenses, or one single license covering all of +the rights over the images. + +### 3.0 Rights granted + +3.1 Subject to the terms and conditions of this License, the Licensor +grants to You a worldwide, royalty-free, non-exclusive, terminable (but +only under Section 9) license to Use the Database for the duration of +any applicable copyright and Database Rights. These rights explicitly +include commercial use, and do not exclude any field of endeavour. To +the extent possible in the relevant jurisdiction, these rights may be +exercised in all media and formats whether now known or created in the +future. + +The rights granted cover, for example: + + a. Extraction and Re-utilisation of the whole or a Substantial part of + the Contents; + + b. Creation of Derivative Databases; + + c. Creation of Collective Databases; + + d. Creation of temporary or permanent reproductions by any means and + in any form, in whole or in part, including of any Derivative + Databases or as a part of Collective Databases; and + + e. Distribution, communication, display, lending, making available, or + performance to the public by any means and in any form, in whole or in + part, including of any Derivative Database or as a part of Collective + Databases. + +3.2 Compulsory license schemes. For the avoidance of doubt: + + a. Non-waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; + + b. Waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You of + the rights granted under this License; and, + + c. Voluntary license schemes. The Licensor waives the right to collect + royalties, whether individually or, in the event that the Licensor is + a member of a collecting society that administers voluntary licensing + schemes, via that society, from any exercise by You of the rights + granted under this License. + +3.3 The right to release the Database under different terms, or to stop +distributing or making available the Database, is reserved. Note that +this Database may be multiple-licensed, and so You may have the choice +of using alternative licenses for this Database. Subject to Section +10.4, all other rights not expressly granted by Licensor are reserved. + +### 4.0 Conditions of Use + +4.1 The rights granted in Section 3 above are expressly made subject to +Your complying with the following conditions of use. These are important +conditions of this License, and if You fail to follow them, You will be +in material breach of its terms. + +4.2 Notices. If You Publicly Convey this Database, any Derivative +Database, or the Database as part of a Collective Database, then You +must: + + a. Do so only under the terms of this License or another license + permitted under Section 4.4; + + b. Include a copy of this License (or, as applicable, a license + permitted under Section 4.4) or its Uniform Resource Identifier (URI) + with the Database or Derivative Database, including both in the + Database or Derivative Database and in any relevant documentation; and + + c. Keep intact any copyright or Database Right notices and notices + that refer to this License. + + d. If it is not possible to put the required notices in a particular + file due to its structure, then You must include the notices in a + location (such as a relevant directory) where users would be likely to + look for it. + +4.3 Notice for using output (Contents). Creating and Using a Produced +Work does not require the notice in Section 4.2. However, if you +Publicly Use a Produced Work, You must include a notice associated with +the Produced Work reasonably calculated to make any Person that uses, +views, accesses, interacts with, or is otherwise exposed to the Produced +Work aware that Content was obtained from the Database, Derivative +Database, or the Database as part of a Collective Database, and that it +is available under this License. + + a. Example notice. The following text will satisfy notice under + Section 4.3: + + Contains information from DATABASE NAME, which is made available + here under the Open Database License (ODbL). + +DATABASE NAME should be replaced with the name of the Database and a +hyperlink to the URI of the Database. "Open Database License" should +contain a hyperlink to the URI of the text of this License. If +hyperlinks are not possible, You should include the plain text of the +required URI's with the above notice. + +4.4 Share alike. + + a. Any Derivative Database that You Publicly Use must be only under + the terms of: + + i. This License; + + ii. A later version of this License similar in spirit to this + License; or + + iii. A compatible license. + + If You license the Derivative Database under one of the licenses + mentioned in (iii), You must comply with the terms of that license. + + b. For the avoidance of doubt, Extraction or Re-utilisation of the + whole or a Substantial part of the Contents into a new database is a + Derivative Database and must comply with Section 4.4. + + c. Derivative Databases and Produced Works. A Derivative Database is + Publicly Used and so must comply with Section 4.4. if a Produced Work + created from the Derivative Database is Publicly Used. + + d. Share Alike and additional Contents. For the avoidance of doubt, + You must not add Contents to Derivative Databases under Section 4.4 a + that are incompatible with the rights granted under this License. + + e. Compatible licenses. Licensors may authorise a proxy to determine + compatible licenses under Section 4.4 a iii. If they do so, the + authorised proxy's public statement of acceptance of a compatible + license grants You permission to use the compatible license. + + +4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply +in the following: + + a. For the avoidance of doubt, You are not required to license + Collective Databases under this License if You incorporate this + Database or a Derivative Database in the collection, but this License + still applies to this Database or a Derivative Database as a part of + the Collective Database; + + b. Using this Database, a Derivative Database, or this Database as + part of a Collective Database to create a Produced Work does not + create a Derivative Database for purposes of Section 4.4; and + + c. Use of a Derivative Database internally within an organisation is + not to the public and therefore does not fall under the requirements + of Section 4.4. + +4.6 Access to Derivative Databases. If You Publicly Use a Derivative +Database or a Produced Work from a Derivative Database, You must also +offer to recipients of the Derivative Database or Produced Work a copy +in a machine readable form of: + + a. The entire Derivative Database; or + + b. A file containing all of the alterations made to the Database or + the method of making the alterations to the Database (such as an + algorithm), including any additional Contents, that make up all the + differences between the Database and the Derivative Database. + +The Derivative Database (under a.) or alteration file (under b.) must be +available at no more than a reasonable production cost for physical +distributions and free of charge if distributed over the internet. + +4.7 Technological measures and additional terms + + a. This License does not allow You to impose (except subject to + Section 4.7 b.) any terms or any technological measures on the + Database, a Derivative Database, or the whole or a Substantial part of + the Contents that alter or restrict the terms of this License, or any + rights granted under it, or have the effect or intent of restricting + the ability of any person to exercise those rights. + + b. Parallel distribution. You may impose terms or technological + measures on the Database, a Derivative Database, or the whole or a + Substantial part of the Contents (a "Restricted Database") in + contravention of Section 4.74 a. only if You also make a copy of the + Database or a Derivative Database available to the recipient of the + Restricted Database: + + i. That is available without additional fee; + + ii. That is available in a medium that does not alter or restrict + the terms of this License, or any rights granted under it, or have + the effect or intent of restricting the ability of any person to + exercise those rights (an "Unrestricted Database"); and + + iii. The Unrestricted Database is at least as accessible to the + recipient as a practical matter as the Restricted Database. + + c. For the avoidance of doubt, You may place this Database or a + Derivative Database in an authenticated environment, behind a + password, or within a similar access control scheme provided that You + do not alter or restrict the terms of this License or any rights + granted under it or have the effect or intent of restricting the + ability of any person to exercise those rights. + +4.8 Licensing of others. You may not sublicense the Database. Each time +You communicate the Database, the whole or Substantial part of the +Contents, or any Derivative Database to anyone else in any way, the +Licensor offers to the recipient a license to the Database on the same +terms and conditions as this License. You are not responsible for +enforcing compliance by third parties with this License, but You may +enforce any rights that You have over a Derivative Database. You are +solely responsible for any modifications of a Derivative Database made +by You or another Person at Your direction. You may not impose any +further restrictions on the exercise of the rights granted or affirmed +under this License. + +### 5.0 Moral rights + +5.1 Moral rights. This section covers moral rights, including any rights +to be identified as the author of the Database or to object to treatment +that would otherwise prejudice the author's honour and reputation, or +any other derogatory treatment: + + a. For jurisdictions allowing waiver of moral rights, Licensor waives + all moral rights that Licensor may have in the Database to the fullest + extent possible by the law of the relevant jurisdiction under Section + 10.4; + + b. If waiver of moral rights under Section 5.1 a in the relevant + jurisdiction is not possible, Licensor agrees not to assert any moral + rights over the Database and waives all claims in moral rights to the + fullest extent possible by the law of the relevant jurisdiction under + Section 10.4; and + + c. For jurisdictions not allowing waiver or an agreement not to assert + moral rights under Section 5.1 a and b, the author may retain their + moral rights over certain aspects of the Database. + +Please note that some jurisdictions do not allow for the waiver of moral +rights, and so moral rights may still subsist over the Database in some +jurisdictions. + +### 6.0 Fair dealing, Database exceptions, and other rights not affected + +6.1 This License does not affect any rights that You or anyone else may +independently have under any applicable law to make any use of this +Database, including without limitation: + + a. Exceptions to the Database Right including: Extraction of Contents + from non-electronic Databases for private purposes, Extraction for + purposes of illustration for teaching or scientific research, and + Extraction or Re-utilisation for public security or an administrative + or judicial procedure. + + b. Fair dealing, fair use, or any other legally recognised limitation + or exception to infringement of copyright or other applicable laws. + +6.2 This License does not affect any rights of lawful users to Extract +and Re-utilise insubstantial parts of the Contents, evaluated +quantitatively or qualitatively, for any purposes whatsoever, including +creating a Derivative Database (subject to other rights over the +Contents, see Section 2.4). The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may however amount +to the Extraction or Re-utilisation of a Substantial part of the +Contents. + +### 7.0 Warranties and Disclaimer + +7.1 The Database is licensed by the Licensor "as is" and without any +warranty of any kind, either express, implied, or arising by statute, +custom, course of dealing, or trade usage. Licensor specifically +disclaims any and all implied warranties or conditions of title, +non-infringement, accuracy or completeness, the presence or absence of +errors, fitness for a particular purpose, merchantability, or otherwise. +Some jurisdictions do not allow the exclusion of implied warranties, so +this exclusion may not apply to You. + +### 8.0 Limitation of liability + +8.1 Subject to any liability that may not be excluded or limited by law, +the Licensor is not liable for, and expressly excludes, all liability +for loss or damage however and whenever caused to anyone by any use +under this License, whether by You or by anyone else, and whether caused +by any fault on the part of the Licensor or not. This exclusion of +liability includes, but is not limited to, any special, incidental, +consequential, punitive, or exemplary damages such as loss of revenue, +data, anticipated profits, and lost business. This exclusion applies +even if the Licensor has been advised of the possibility of such +damages. + +8.2 If liability may not be excluded by law, it is limited to actual and +direct financial loss to the extent it is caused by proved negligence on +the part of the Licensor. + +### 9.0 Termination of Your rights under this License + +9.1 Any breach by You of the terms and conditions of this License +automatically terminates this License with immediate effect and without +notice to You. For the avoidance of doubt, Persons who have received the +Database, the whole or a Substantial part of the Contents, Derivative +Databases, or the Database as part of a Collective Database from You +under this License will not have their licenses terminated provided +their use is in full compliance with this License or a license granted +under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will +survive any termination of this License. + +9.2 If You are not in breach of the terms of this License, the Licensor +will not terminate Your rights under it. + +9.3 Unless terminated under Section 9.1, this License is granted to You +for the duration of applicable rights in the Database. + +9.4 Reinstatement of rights. If you cease any breach of the terms and +conditions of this License, then your full rights under this License +will be reinstated: + + a. Provisionally and subject to permanent termination until the 60th + day after cessation of breach; + + b. Permanently on the 60th day after cessation of breach unless + otherwise reasonably notified by the Licensor; or + + c. Permanently if reasonably notified by the Licensor of the + violation, this is the first time You have received notice of + violation of this License from the Licensor, and You cure the + violation prior to 30 days after your receipt of the notice. + +Persons subject to permanent termination of rights are not eligible to +be a recipient and receive a license under Section 4.8. + +9.5 Notwithstanding the above, Licensor reserves the right to release +the Database under different license terms or to stop distributing or +making available the Database. Releasing the Database under different +license terms or stopping the distribution of the Database will not +withdraw this License (or any other license that has been, or is +required to be, granted under the terms of this License), and this +License will continue in full force and effect unless terminated as +stated above. + +### 10.0 General + +10.1 If any provision of this License is held to be invalid or +unenforceable, that must not affect the validity or enforceability of +the remainder of the terms and conditions of this License and each +remaining provision of this License shall be valid and enforced to the +fullest extent permitted by law. + +10.2 This License is the entire agreement between the parties with +respect to the rights granted here over the Database. It replaces any +earlier understandings, agreements or representations with respect to +the Database. + +10.3 If You are in breach of the terms of this License, You will not be +entitled to rely on the terms of this License or to complain of any +breach by the Licensor. + +10.4 Choice of law. This License takes effect in and will be governed by +the laws of the relevant jurisdiction in which the License terms are +sought to be enforced. If the standard suite of rights granted under +applicable copyright law and Database Rights in the relevant +jurisdiction includes additional rights not granted under this License, +these additional rights are granted in this License in order to meet the +terms of this License. From 78db7b810826967a3c87589346a8e328b2280429 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Sun, 27 Apr 2025 10:22:24 -0400 Subject: [PATCH 06/97] Update README.md --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8a98da3..a7a51d2 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# icefabric \ No newline at end of file +# icefabric + +An Apache Iceberg implementation of the Hydrofabric to disseminate continental hydrologic data + +#### Credits: + +Lynker and its contributors +``` +Johnson, J. M. (2022). National Hydrologic Geospatial Fabric (hydrofabric) for the Next Generation (NextGen) Hydrologic Modeling Framework, +HydroShare http://www.hydroshare.org/resource/129787b468aa4d55ace7b124ed27dbde +``` From 039ace7afea5e8561f32004d03edc159af36bdcb Mon Sep 17 00:00:00 2001 From: taddyb Date: Sun, 27 Apr 2025 10:58:25 -0400 Subject: [PATCH 07/97] updated readme --- README.md | 5 +++++ docs/img/icefabric.png | Bin 0 -> 1447330 bytes 2 files changed, 5 insertions(+) create mode 100644 docs/img/icefabric.png diff --git a/README.md b/README.md index a7a51d2..77e388b 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ # icefabric +icefabric + +[![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) + + An Apache Iceberg implementation of the Hydrofabric to disseminate continental hydrologic data #### Credits: diff --git a/docs/img/icefabric.png b/docs/img/icefabric.png new file mode 100644 index 0000000000000000000000000000000000000000..f52c528a92a714cc74a59e913976005576d544ed GIT binary patch literal 1447330 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/i^|N7o22PpCp)YjEP)YW5YBLm(JZ<#^Q=EHRS#9 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
YlX)s~&Ux!L4&^QS|5! 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

t55%F$hkBqLghE|B^+9}{Q`GV_dC7c9 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 z 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Ȋ|BN^NJOAmw_NV^pAHlol@BPf@Z18-t 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�*9Dsx=J?k^J0?wNby}rJ};% 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

PvIlgq10oPk#b+qW4=1 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

t%XVy@R%KWpsdK#-8}GHg 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 R-;{BU<2Up~Nz3zQ$tKqcz*zU*#L}+(sFe=VD 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 k97 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 gq5!=8f@n0inzT}L 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�!TO$_B!+^58dXU&DH&MQ^d2)yD;B{aO!6TI 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�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

KiR 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

pdM3COGKmG?!xN`GsM)N6 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 z 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

)Y$RCa*s;1JrGb84-wxfa{aVqS}MOH9}+{ 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%0DE)B^9-%r-@nDF_x*V%7XoXqyEQGboKsL& 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­+msR>7oW-J(HyA^fw{9PE&Gg(}j*=R=WIMd!>_kP8Pe1M2CAQ7$Q= zsh-GuO|W94dKxuKkDa)9&c8mQ zUAL?knlm2(i1~Ic^x>A-tb-WBx~z0x4IW9&~xY zG5Eb-QiA$cn;WT1LXqE}pYxmoZe4IQP(ZOa74VI%*p&BTaDeXO5FsQ$B{1w*?4Q`9 zg-rKOhJrCz&_S=fqoIsl$#vb#Cqwu4a$#*_3PDld@3&#vsJ4DBJ8w*m3#+ey=@V?m zbIuRGY}iG6HE$lcoe>i+Ruf~2Br>w+24Wd_%eAQL@#gK=Uh&CNnQQ<~Aq^&KKmT__-wuXMrJO>b4=s{771G5|=?U4~EQ>TwXg z!|>-h<{RRXq4qk1WVy=uj!q-O)#KL(JR8!B>2|X>;chj&9g%;&KO+14n^Hzd`uYCZ z(fhKcpXb+lPZR*QKuN#wOvJ%~H`@j!qncQ{!onQ+Pt=SGvv=phum*qj74G}gvr>t z6B|vT8Nk?>sW)12CePXEz#X1ZtSMByPBT@vyD@NsAhYqUUgccs)cscboLzQxD9$nv zJI?2Pf4-Cie*2ybMfS`&&yEW3%=<9S`n&dN=E9IXcOzVS)xZm*5Hb>ppFfu|nGfCG zmwR6u7^EF`$DnB@{ch9kwHS_XztKHiy>=Fgc}_cl?iadgEzd^`JRDO#`4KP}o!AI% zNp~h9#BfcIHM4#~#i(VXYKj(KE;K`1kt}pvN_Q!I%Ru+=c|PRaZ(-v3=)Zq|GlE_{ zsSGeoS1 zfv);7`JBfj6~F)M_n$xiKL32=7mP)2WTjtpHPE-18N&D5jNZb%W;X5$D{GDo99{T; z-KLnkR-IjE^IP*|xJLqF|5-sY@D>%3`ThRf`8n~#$-dQlPYD9beQ;=6m?iDZ%*F@` zw+(k@#5#u?gAyX*V4Aski6nYz)>ZnwO;&)nzq_>`!#x7?(a*O?W-z%S0_NN}r^g(v zj;qI^*!boYqJ6P6R^59;5Rbqix(iTsJqQMRIx;haEouy7mIu0%O$2>8CheM5;yii3 z-|G21VbHy}zlnIu;**aF2CGWeI^MdQsh&}g#+|i*(}V8LJY5a%?WS?du>!>LOf@3V zRqaS^st9|`nb+t`^h|(8X3!d5^~#=kQefVnuQE3o^JH?9G)VFRhK-AUMi-vj&CpIW zwbcla;Q?nLclV}Q^z=U4-=#CjG&_^lh?!ml07I_ImEG2TB1S%nMzrtr zcc0qvpdbZP(-wzZl0=Gu;Ii}H0mo2;GDO~=@9Nw8PTwlbGlONP+=~DlHD7MFj!YXi z$*v19HVY0OjFvbF4;^5Qhg49{=h+p{U;`KOFYU)lMdmCv>TRvLL2)D*ah~%sbh<;_ zLA3ykLo1{)J)8SU4oLR4>q)_IPfNL%p^j1!mV~imFMbM`pl87Dre z*Dsc_Ug^HG{D+VT-Kn5N_5D^|%-YW&A~ROZGxnGnTQCi#yB!fs4&2?~n~k8@$ki!- zMeRIne^lMtlX_b;0?Irm%F{L7Ma6lZzeo=E)c5D^hr12kNzvTFPOO68-O~m?pNB9~ zNpue|5xngh->#qE^_>A0rRp)(#j~(+Zf>JZ@mmFMNE+RB;yk||U|$LCQM*+}K9LzR zraQ!xJj<7uJh^sf+o&xD(C@S!DOtE(q%l#|tFxc)of^%Yd|=n@TNi_>-j0TzZU1&` zxS2%Dz@b4U9g^;Ch;S!>9;TEl4vfYCCQ!GQpDFX+GNGLkA`lRWjroxx!iJU+sFjrg zrtALx_n-cKBXW$Yp8*JsohROC9pcF|HGNwrp3gH_bI|($4ADK~vJ1f6B4T=aroZ2r zqM#EIPo@Bw+nZ=jbpzH+Rc(sjIf>BNRr4lS@l6Y&xYn`hd7jM7&vP=Aiox9a`BOjl z+xM2Flc`8>JqH*&2n|-v*=@|6NDYi_?`M_UG`kHCl07xkgYiZXP(ARx-sELpbhYVC zug^Fqg5Zo5$9_?s-L2e>t8O)k6h(gid7kI-_VTm&l#>i9%&MxjVN=Jb6#=YQgXjGV z^F>Z!^)@idP4wQDY>Z#1Kxjh)BO+2-9=5w_+^(4+A#tifE}_edV+g_h^XKRLQ=2qn zFWJmYeW>Y?sKADN-I)`+gPFCfVw|xFhNfqEP!5oQx;W z^LYR?EIT4YN$TF81$R_;{S=vGRJAE8+`G@=0KBzTfg|Q5)*y zMjFj3;cLdul!*RbybB=rxVtmrpMU*=FU7S!zbtaE-Hs<>0LFS6=6k;@<=+ft%;@m* zpT7upSDW#9^7-UuSxonU5u%l`JQ?MO(29@${QUX%zyF&Im#eC~Fqpp8M%VY=-QsZn zV&$6NCBgC}r#dswC%3x7Ca1YP&Cqg_H*XZi7$;oQu`9Qkd%NyWPaE^*5QAHsN$6=N z-`y&PA_w351(1=?9{NF19t5?s+L zXTJB2{r*zF3}_+dnhM+BTY%1aUYC+5$js-Bn_NuO;(lhze#OJa0IArg^v-Bz7GY|; zhmuK-rTr6|Zu?eYZw#2G4ny)zR~Niy+afeGFs57Jd~dfs*l*BYT<>4fw)^M%=lk;$ z=X{<=!L&cWo=7sd*fbA%>7_HL%V6lO?-JYwi5Gh7o}GSHcCN=?_y7&FiFWE>I(+~}HJl-z0r&p*HZ_3IzS z8LZ2eYo@^-#~81(UFz!D-DjI%FIDV&dv1|bDjB!x=g&`VO2aHR_*HL2>>6N?+xHNO zWB}u-cGX&l_xeD0(Ykfry$%VIViK!{*sCl-qT3vrb8ip2n!pnGmTxeEgY7p4X|Nhm zxAA0bqVsxiNK_SNa4!-)U13+PV}o#4-5CYp*#rUFK+RYuq*SCr z(?#cUGB=DJn@Aavc)7H5A~V#5%#0oT(*Y0A z(`Jb2aoy%p5$g6%q0Dz4Xsr>St0tmi#xwCr1>%H){k?2InY(lwdc2bk@Ev7G=&avV zlxBg~6UvjZ^55=iyX*BYAF&(Lz1b0wp~c|yJ-+^?c#>SYO9%O!haj{&CsY+f6vxns z6M4?_>+^`}?w+bD1cPTg{EZG;CTmX}?N~Z@O>uupP}j^9sxcS{8qdg}tS5ujU)0r)AjSyAyrr3`s8QDe}JV7DxdI7w{O*W+9mOyfByM=K2%`+ zig$6G?CTAzfN0nH;6X{JXX<_p1N6*-`3;u4sz_vLb+2{nTUUQQz+GJ)lPPUc+*Lo{ zKiEbBsOs%(<9s%rb4{iTMiM9`Y>)fr-n#pGf`H@@gqBInjF`+oZ?x&s_Y~(S&Qy`_ z%hmU8krg~5`*u%>QMVV1I(Qjph65Vl-B<4R)tw^A%*V>Qv$R$ZP8^c^WJHF*Ohx84 za?6QcFI7;Und)0b#a>C<(0W!77Y2e-ZuM_6JhP^-x;1Sgq>^7 zCqH?xtC(#x#7ss$+x+i+b#02X1~wohx2HyqMTpLuPl;uZbkAA@Z`a!g7{CgedNqnL z)TPf^fyHhBCA4w7lE*}sr>pPPt_U-VL*-y2TiQL_*53Y3Reisrf@2R5eS3j}z z1y4pik!@=!D>XaB%JW3-FgK>#=*aBB^whn{G@?CLXQp1gvE5TOg2&x=FXNz;d9M4q z*;8#TZ5eo7b2Fh=T{$xndpJ7;6BnfiV~@igEJ4)v0#z3`T~&tlXlY0<3(W(2i-r&h zG1ss854{rlhg-ma91%87vXWF(D$+Vzd)kXBoavlbVIH|L- zJ>(7t*B_}oF;kiB86#+jK^};8zn%#sy!eELwXGn~25x<8-IGMkMFx!3#kBpzkpjy} zC7#doJWqY6`$x9Os`4x*Ij-?9Fd>TKijJQ{P}+W`x~p*U%8dIpc#x2`J7N{ z*~A%ZJ5NP~c%DcE8S9Dbx;=x?Of8Fb&1NuUu4-iM#eQM3*78;z-Cf18Bf=aIc~a}h zzxRpECwgX?)sgA9l;wElPWA1E!Oh-+@tx^=S6&+*o%VwK4Y{m$-M=81OnABQjSS&>FugDfO7(iQEo#R?kP|c@!zfI4D(ht=^M7 zPdpJTxz5#E?|8Xu(X?3I!JXw-MzUP{Bmj(z6Y)IH-VQ4mb9)zB-ay^4jTzsrNPHr= zhbcF*Qm;2@dEy}2dCrpec7O%IGRM{R#PfE2T+j?JpUbsgpZwB4TDRJ&xX`x3(=7y1Q3snUo}ar+$9Eo5wQ7_uJr0 zdw^Fr+5{y1e7maM4S>pwSUN%kBZv$=Foua+$ZVtELz0;~r#S801du0+b?=J!N!I z(^f+YQf+S=&{Y}d`JBw8{rk^<|M~f&vtPtacX!K*OoC+x^?8nGy81j%{yG|mR-6UP zTGMOqH5z`g$}h6n3{-XXD!ZyKiRU~3J-*)#ct75%x>X8>qCNBdv%*1R8ip8P;*D=J zw(QuxLQnkSTl5!!(VjSPGk-nj`GnHM=X_G(o?CTvf_qKBHp5sS6jvrR)AzMe65W&M zXtO`+D)OA%6J=~#->Uvrb=})N)ih`^7_plpB0w%h6t3x+J4=Xd4+qalMY?CVL$fQ@ zX;|LJtEB~9&+ z+_t$vX0r+g&v)8oZ_v?jG3<6Oh#bH-b0Uz1`vZmPW9HFv$aRJ zu$ZPCW0sany{U_#acL&xDTB<22!4JgMPfo44kGp`*j+Jt`SK0#y2F%G8`ir_xRANl zmWFSYfcxj}pMh2=pS>iZ6f*YeTZvRAfU>M0ne_k zsRB9R?uO$e6?k)FE)8-pch;Cjp3r%+Va@D|)3v440XAfPM_unRSA7`-5wUW3c8#Tz zN#Nwhn8=uN*SGC2oEWF%n)`Em3S_ql*wy{Bb}*BRZRPq8rae<#pd(L)Z0|U|8p{y7 zUFGiEg1PZH60I0`NC{^d8tgyUGolQ(eWyGPyOsbCAeAR~7J+SOjVaTt_CnH@E7X8B zJ5cVv;ABQ-(C)fho4s2`Xt}TBTeqsG?tsn{cPdgkx$G{I02_^22+GcT0RwQxlP9p+ zm4Hr&yj3u!W@8b&@M&UIyIn=>n8aQh9!H|7d8tg}@#_&c$H1co$qQlW)w}u^=tB&G3 z`AY?ZAPF78w|eMbpU-YB-Rt~7cLj;wymBvu93F4CFcp~#^YOfQre~NE!(I3LTN(L! zu?aV=x^*(B;0q+b4E49=aVB+U!BRsoZhz6p=V)4zr$q00y^`+UYIrPo(2VGI=qwKP z9UM*P`3Sz~=aU4xufY>U6H-qF9tZn=VdRsk>|2r|;(KpOBFdX26Cw(|-juFaZ}Vd5 zrQzH%YA8m=>v6-l8!%!4Vlguj>7DQGUOQvEh;MO+z^NGHr zjCBlcq^VLw7=?MY^*uu&B$ux%h-D-0V{LKmFnW?x)kdQ{zdm8j_76e!+Fsr5>9;$x zBEabHjQ|2ERW;1fzD`(-SIsPS>*xOaKSRHs&*z+~8p9}&=Q&eV9E~EigJf?d*PWy@ zrtNVkTZ7r7i#>BrtQ9*?805V~=sc_83LPJ>|I{nLp?{t8=le6GqsJJpU|?tqQ+dKT z)h$wtaS>CiUKNS1#)yGjL+57e-kuK^!=ah_sSD2noj56lR5aCqH&4SVTzQdm~oBNK&)Z$@@3cn?%6eR%6ibyf8AS8(qsFx7@cpiW5NE z2KwjE4@r&!9N;^*zYT7DEfmkp-;wmYQ>Ng^?1C|zjrwDr+{v-lNf_J@q;cEpat(U1 z3PI35;3lt+*E>pm?+>9^jdUSGhzMxKW5j%`lqXYBhRA7UOdITokk?MwlhZx#NNhkc zkJk7D@;uq?-r6AqBl5utG6V%p{(OJ1RDkQDGXrGL*hR>+tQq{>oWxn}lSh&LZKFfPJVX74!dUZJQVx;dl0srYgi`RdU{UG-M(>=JC;!zV-dy*<*|}ag_Jg zGT#?o7u22ZUQ;MO5ug9~M_SIi_px0;)02tNRKvU>)Z|j3$IY2xRQ>$?{Qh$dL3SHg z_TUV-z?3LA!0M?ogP6YacTfjBk8XdLyC3EZ?-V`f5y3lSYCNz`#Bgt`zbg7LDrU#O zp=n!-@E2=UXTo3max$clp+Pjd}~7Sa%p1*`7EST&CxrJMNdnrxwA7PLP~NLda*F~ z_nS5%Reg~-Jk@ua=RCH>em&dv{g#A$p1RdFkyvf|Ing34=1eX3Rvt@%U^2%L844I- z?cycktilk3@g`FZl$)k9)%!HyligI^E+|IQEg0qrME@nz3Eo8?JXXrf6AX0s#-&6Jkw&&gpr_gt5J1&w!uQW*}|!H;8j2#l3f`;`t@GrU9PFEkKo$ zFwJ<Gd=I9MEvbeLaiA$J$FVy^e_)l=uEKgHuKij!@9+HzEZ?({7jTli4p5VAaOT z69~@tzOD27@(;l3&N!YTY^m$6viU?RW5(Zmccmy=nI5-GJe>-lAPZq2k6 zA}krE`#=8mpKIAA=zg~`Yc%h!lX?H#e}DgczdxVnpFHQ!@827C5fKga&+YMfQUKoF z!Al#Yc9*RcauA&9Wj)N+3X)&Z@`}*<^Zc!4V^fkiY$|Sd8111E8GIueCpJ^*=O^<3 zF5{C?Gu0K$9X@8h=}w^HurD_gv0nwRvDW)3xAKYe?2yB@2NQZza#y}@bE$>9sEogR zz2`aIQ{RFZQ2XYI1&jUbfBlaYm17#hi3i4=uVL+gm}-w3_4D)R=c{~x-s>Iiy7f5^ zf&TmV5y_sS3B-m9O?e0}Ajv1ryz2bDq8 z@_TPkfA!+ts-?TO>WK`>eS2mi^TohG=OkyUD$cWG9#SjNqS5Wo$v^jdLK%5`Bu@il z1$BZz-*-ert@qxy3ud0&c+b5u*MYGL-|7jibO*t3u)6^KCG+B(7%xL*QS0UoGV14? zkI0qGFl3MTtRSYVKcDAT#dE?KyQ>&UEbuD&eszwg1+}f9fU4eEm8hK_1SgocCjbU*cR4cb z=0KSwZeN#o=dNJ&-F(uN?CCN+uS{RkG8v8A<(haj?VkF?XO(>?PXgCn-A^6_R-bKd zScJwv&$lWpZ9HVrLps_3RcrBU5?%M@ofk^;|5~ znn9uZYS)rtj}=+>W-20jrmOOt-Q3D%zy&M1zvuG{XhC&bq=OvqdvVtQz0z4DQ&X$4dnq3h3`TqR;{!_O>rxL`VNdc_BPoB55 zz^1(-LihW9$=AwVq|A(9X4Jj+j>yc^8d%pvWCJ09DeqA|jR;y@cNLiojfpk*6Bvu3 z!|suy>nda;bO`_SJ-d72(&YcTKg4lw46|Z82E#i`T4v=EG9C0ClAL=Pdz|3jNyUQE ziHQ@pYNmxSG#=3go|9Duosn3kvuSuuNcVn$1^e-JU+!FG-3*&owhR(Lh;se&&p&;? z4xSf1x?4mLo;y|R8k!|$R^8|G-07~CbRyRdORZqFpXU?67qdSlPW;?&VkL_k#N!jO zzoCuiIaBxBUo9XN%Z1}}p0TICelwIAlBDt6TNJSQy8_8+y!;n(k93;0S1}Lre(UvB zW=`Mw*7L7_!l;?dxIYb8fm=f=gR}CxnsbsNPgi?G&AzvYI463gfnFP+re`_w5xGhp z8*5>w+2~{_&(y8%a~=pwjGWorN><(TeDL-^1W-K@8)HfZHx#n^tIV+8-D8FUa@vc* zpo!(?1!Y=)gRRCBBu}gaYf~p(wK9k0W6qSf9Vfc3l5$7}yc#X&1dN*7GhSYY9U132 zJ>8A!-Y;4+>*moqF$dlDbe^M7oQw=`pA6srN^9=L=lR4F3mX}`>y9lkPDJE_{y=s2 z7|FAEkiW8m^#(D#UuQ;0k>``+Az3}jRHo+|qX+?o-eR|FM>#t{Z;>Z*_ih6(9>K%z zmETUB{idb|HATNUV(1lyMIf|HWzV4>qbPJU6k~@ z-rB(gVIlu@#CV=xu%>#gkMD$eIvCG$LhOwfc%`?qWlw#_Krb)hb)1HPNQGpqbfc#y zl+UkUl0pzw(|5WsZhE+iU4j;?r_tVae^IWX)fk9VZ<3KjNAgwF*e_=4dZzLmhG@F` ziCiTk_Vk~rYSTmSBDJS)Hv^mRhBuL9e=w(E5YYFhy4GxE$5OhK;Pm|d?|*k!#-^c; z#i8Bs?L~%l&uYZulTgszw`wYP4gY*1;N3I48nKyRh5+2|Md|lUP{D*X_DKTBjB`G( z?PEa3xO%)+ia*~Ucp?tQE8jj5na|Ec$3Ex5yX*quZSOW&B{O1GW9R?5xH zWUQ?xw$~zO{H?Cnm^RqqtlJo$^9xjM5N#}kHSEIcA*F+#=OLo2tG+rR46#<|iadms zfh8x;bdA}fc73t`YRr~{N(MZNi3k#laePIe2G~z3&rv>W9botgiJTcO%zj|=R@b-h z_uD*#(#P0{~={YAo z#LSZ)WsE07Ag>$JC)3*CE!VC7_BuzGBp3pK_7I@GGTX@Kob!ffk<|^;bXAK0eeaFr z*)sY4I`NXcF`J&gehW)KQ@!n|H^`j`oXiDARdv-Bcrpn0+8yCc-JO9c6tUrno))z? z!jjHBH9dcRYI{P~`df^Q~{^iCL3R5FUl< z-YL%l9#QKqFg2VM5sVBFaPM7rm>JB^!-!2{>}mY<pN0{Hy%0U+jDxE8ky;f`yH%qO1ne1?4lWrT9T2nejHn#SgNCP8&|C}ROA z@X%zui}b(ZdXS2MU!8aNOcxkv{>^{_$7t7GGBawBA|PWjc0=+vNYot)Xr$wp-7ps$ z!RU~t`$dw`5fKp^J;;shq3^AqE^V+M1@fF+B-u>)ZJ9XZ?p}{mM2H!S)Ms>~cb@uY zgstFo`MCqdmM7A?`su;v*XJnyeE)pEKQ!|&f}kX=ICzEApI`q#tXsBrht}==bY~`{ z6K7LIzH7AS3ki4wwL%;6Z9vL6(bYArzu^X(gs_U1@qqf)y|;jv@dgajYsQ`R1P%Jc zXTduNDh?v5$14zjLjz|a(mj)BGtu2u1H?ImHt9R!A+*Iy1U>!p^ZWb#S)$kaRdybj zT$~C#jsUys@6yGXQ3eJzn`PrwxZH0?L=MkKQ1o5*m8Kw|rs9-@zc3}A%yXde(zD8uu)E;A-5;r|$7#-(y6-}OP z(B{cg-PI*89Ltc#^X=~ovRnkm=kt${zyJN;3yU3gj=nQL zx6iL<+mEi1AY{$rLDk)iwd)k9jF|DaZ^V)ryWKKl?I=5EMkpG=Hcq-W!|EGj&>c~eAqKF3`Ws26WEJRw=XBGcOKK6b3X5=v9XHJ z+ugTMF1h7`0(71Pzg}D=@zdk#*z_#m-U}el8TYofghFt}6!!mil|4*jbn6?F=OgrS z4*?9~L(WTcwr?snpw)LGm5A=fDhcSaob;Kjo~}|v$X)PsggiN@cf$cq zd4I+UHW9I@LImmWu2B_$HSDmE8|r4CXoWM&lW*S0;Xz5F*6nMOQQ9nSj7M^p2$;s%8`J}V<3zglgeDL zKd!&;Y+}GJ7+np7X-s+f(A7TiVeWlTjLGlMmB@vS4Tg75WjSV) zDGlQ1=X*i`Yx*@t8$I>!|LgbtxuGokghFw;o|~OLF_151@CvH@}^HFs+iIWf9^zZ?ikhJ zVW-2w(fQ7u+xk0rTlPafpO?I5M2sgQPz5cm>GibA?g-7sZ|^LJaWcN&d-9|7PLvh7 z0}Ys6OTK_Xaudvk6~ay{FtZDB*L+iPXE=k54Nl%@-skxhjD?|vkS9%ky8vt0z7j!I z^@%h=vA;8(46Nl3@d_%dONt#+pBv(;~R6~sU24e*&b(wA#CPhX* zHQ(PqzvXy7#}-&vr|XQ_9wnut?g2WLTF9*@yRHOMVeQxxLXWvD`qxtud19x&%iskW zM}XY34Jg3dRlcOUd%2JeJUomyc7A5qT`1WuzgHkQbY6A}5R1GhMt^t7dWDp1g-45;sR%kOIsWwO27|ioLcY2L0?ty?= zE64PxXZAB``;(ty$D7SOEB<5H*> zlw#=M)3?{3M{k&xy34UPX-_weCwBKTo^A>PHss9ZbpjivrL=2Nm3aN=2AL9+w*c^o zQ$4L4k!y$Ooy87Df93sLj!SUdw@GBgb8-XJd(884Y_5t5_BEFd1ZSG9{=B;kZQ!R* zCc(jwP{yj76w7PXjMP-&`};RZ#Qqfs zAqHX~3?ee8YnoK+C9K1)g*I3Wre|+Wj*UU2QUcuNK}9BJ_qtu4kYG$8@XVC7qH0%9 zMjkB<6b70W-Zpg$;b5%Lr^l|Jbsr0{8Ju^|1i9g9$4O%rhY*p*;5!y1orqc>F>sWQ z*YncT8M=e$ll&Cs#zmcpp-kH-Zh#hDvAkt-&k z$BH0yZ$&VVW`_3pd{|Xou}dRq0H$8onhuh+M}jViK-cxNGX9qN|3%kf7ZHtZ|6za z{q6D0U^ra>%{aznobh;y|Fh6WK4L3id~d;CJd06+Bpcx=4=oeC-AO5Oy2q?cy>{bm?i8Qjwdu28Obgo;|7jB=(h$md|gK`W9GohT-+|Gam$z33 zHbcVzN&NQL%W`<0@6V4cNi&u)=xr3=2%tdC0G5t~yNGx7wlxGi)=AG$ zTLi5a4A>#ojAyFq-fu((w2B>*J@cN?N>8snf87hs4#jy6z@VDLQTGTM0PLV={Jme2 z>2xhAo*MNyGS}D!H2Gj7t##hRgHY@imL8i%DmJx!9|o`3vOs5^Fd^2AJSL|{*Ry$f ztVNiQM*;a6jDq8QPvFv~6TOsgj(4xHYH$f-05i@L%Qoefwn4cEuY_cwXl;+biw~>r zoe!Q&&YeNT399HB96imAUS>GBdiR7dZH)K5 z+L)N`HD7bIsf%x&V{%D6ny$@c>$=MVy7z{72b&jbm{{E=UPQN?&~Qt!$WYG^xc#%^ zs9V)r54B(keZLL&oD7Fz=XTW+dIl{q-IVV9z=(5Vw^{)rQtx!(=g-{^Co=E7vl;h>J!0$v zGo^ibzzyHgz^g*j35;K5_TuxtckIj{Rrfx5-0##gC>Opzzx&C5{`ojVQvFn+sh}OP zYU$foHuD@<|2+AB{r;`OKfgZncE>Qc-LQivQ|+pX=fOZyY~CEn50kU z7-Ix^P7L_HKS3^!3)Dil18jFtz0a9^XB5%b1WvF4NOdQ$J5e@9Yj^p%b#I&#q1l~+ zu_!Inmbr9vmnH8t0V($0RwDw&943i0Ohi4U_2Mfx(QdKR>a7TpL81>D%zCfK=dm z{V`QFA&RlE4QfLz<8QD*^iB-~d!Bd@+GLd;ujG)^v3Z9i?EAgjFO@sW47K08W5Y)7 zz4@dlceQ*nro7Y+(A%A_5_XMG5@%MDs$}-`hC*XaSId9dU~eU@^0jgD)aGvwVrhxP zw(R?#|M9<2@#p7HD#lJ_0QK#WU#1uqoZ`kDPT!7`5dQq!-~avJ)peeTIK)T`&V-;r zS6zl=QtIjMUINKTFctF*)*bYdu1U&ADwn@TEqIaVCWEbM6`#)2+l>jNiG?9sKq_? zZOY`?j0Vxu$iwn%siHIT?*BGUagjldd&@6AQ_P~Jyok&&vPVgP!!GX z%8a(#h)Cd$H>_7X$c{(;QGf6A>$CgSmG1tJ1R^{LP0uE>ZkIsOy8+msbjs5dw^g3$ zU=#}8n`hw)6FT!E4u?iWtRHXd{#pydlm(e>*IY$R&-dQU(5{q;UBqD(FaX`}NDiD? zw)U2?tZFhs-opxSI?fJ+Nwd&XgCjGBF!vwkqNR3w$&pmU4{NB3)$GRPREUp)e^PHzpkJ5%{X1be@BUn_jJ>4U&BaLf3U=oy# z?v})E!nG+pTOi0Y*VN(JQ!>cNbMF_6!3sdCwrBgRj*vB>Tt0C;*=2jgc7!&PR!VHe zo{mSflKB5K^>Ou#Z#5} zeG%?}+1{gDv!ltXyTkh6Qq_VWH6RD*dts(vtLr8BlZjkM&x|`2<<9f$Z;r%2zwe*t z5w`Cjp0gv|$b%WdZ8Pxj^vuqgHtNkC1N5g0GCT<1;)!I4@#p#Ja&<4y`WhyE}Vv>X}3p&23|uo)3+-0gxZm?Ym@5rNryznT+Xgi-qg%V3I_ znc$u|-5pE?dfHW+)U3vWNWiJO&pF=zpQFtYQnIV-jx^IxJYq1$x4V=&v4Yz6!eRl; zy^7;iv2F>!di1d~2=uh_p__LMmS0(l(6GC$!O&7D?56T#N^$aJzxS<+U;g|&G~*l> z+=B>8n`*5dQuofuFy~3xymhw{2Z^3l`-xHh7E129)gPiJHN)TxJ~ULsnQl*$@V80E ztW$~}Tfhz~phYXK&)&vb?$FikarvC{&OLEf5F^d92zGhC-_+ZlYAjV(*uIUR>4oVt zQtcZx`@a2&p!d1dv3l%VCV)teGxdJz;aXr(@0YGn_dfA>{G7)dPg}-zcSMBp-q*`xn~FH50;6wp zhc#VQ-LH~Fj(>mRnQ~^d>y}kbsK&AH>ScRl;&}oH<-dP_gW88hn7wBRPt_Rg-(Q73 zOo2)Jos#i9S$5`gt2RYIFydK$^8Q-i_xD838t8ZE%?R`W-Cv5;E*p6Q^L<7m;u{YK z|Mfiab52AXCo`18xxer8L;?$AAR^8gH$|X+>pnk!JpG^l```7xu#cYpd@`nZBH!CX z*ENCX#9JdTXN3Uk*7Nh!Tjh#8GHq|)svC+$`|msMObvmWPv;_qqU)kC=au^&0$&p8U!+pD9efgpN}2|abMJ&PARLiNST%}x`&?|FEb zRPn9SAwH5qcqdzC-HOn8B)GIU1$ic!V```CL({7j5oq)Iu$~4?>73(nO&y)zy8Aff zM(HJqZkKzLMN($OysyPi#{u-J#l&`N7#S|0%2EWo#;&E7?H3+iU?8x~8O*NP zKpp~H*+;Ajy6u`K#Qi>l!t{n0;F6N$;(i96p64f)P&9TB)%ROT0HQwH7tpu1skXs5 z5*XCi@`DL@+(mi+aS&ZOB11O{=Ha z$dhf4m(FI1A=L&^$nW(0_gs!02imr}Uq!~r5Iq<-yrFSNQ+a;xuL1SS-);tl4&m45-`~Gq>CB6G6_ndTQW^qv1$mG4%`H3)eO+6O<9|Z zabG$#oSE)c9_|$5R-DiREv0QEE$?GTE{;WjMdsm50r@;N7vM?tTmQT_-RCD;1CBo} z+D!NV`v3gT`#=82pMU)!hzyMH?~UXWYVV$7XYKLlKmPT5@7xklgr+y`m_KK)VpVU( z+5L!Nn{#I?yo{{-_W0-UIe%*IbRl@(Uj$anbCf0)S@1mhRuN|8S^N|akL$Kgn4v&W zqjnK0-fFce(Y8N2%+YMwyl4a9*`yU_#R#!kAP>zT#izd)Z z93tILx|I^K*8_4pTn3Zm!QmNVx&yr<{2hy~_X*^D32%4Jx&pw@p+g3Vs+$pT7|IN# z>bd;7oryXTyJ!p@ABRvk(2v6J2Y`nI0^ z?~t7Kks!{BAtUx8ZI754?B-1GWvr_9xf)t4HZrp6eWxP%bN=iK{|^2-=3sb*${DPU z(q_Q?t!tQ!pXX;ViV;KLy_b^As;kfp7t{w>NZSljoSJu3` zjc0v+nELlWyBywVg+aJ_pZB4qH*Gs775DZ4Ym`2bzwe7)O6H{L@9^WA4S%i*q(QmL zU#SoP%CofbB(7ceH_s1K_Bgo36)XfAMkI`$?|inGOzzs?6Cxic9{+bahZQ^_+iozbhDi&iV5kZ*LUQa}6lMcevTfOip{)F6wLUf=nG({qO(% zKWB_#W?T#wj}w4nAvR;AFu;dGa^G2*C_>SZcj_#%&cyHiXMvKLF)I(QUd+jCx`?Kgf5e7Kx5pi! zIA^A($M9j+X^g)pvHUGgze=-1fH7;f#@}%MiMj*Kup^>f9!fw&*K(-#D~ajaY~hw~ zF(Bot+48#ArPe+E^Zct(yuUll_1{`YM)nTPjbL_wzotd##ac%AqMNqfxch?bJ zo%+BMgMm5iMg=22>|=ay3fP0RnXc(w^%8%}H4->Z>4|3(R8`H8fm>DYY?Pws z!kD)>v$xOc2JJmgaDiZ>P#hh_iCiCCkbqAF0E*p%(D~PMB*5BLtM}y0U6Vsnrohn% z{zS&oTI)CQ6U5t*Ucc7Pmb}vv2i`x0woz{k~V!bAEKv zK$wZW@yOHwq4V$m^}qi4-~VPtZeclA5t(^tV5)8vJQ4XH&$E+^lL-hw?T7%>C-{uv zWa`N$`FT=e6?yBz(PqB1yWCc_G)8=U2Y z?V4dXi%8MaM2pdA5b-IUsE;di0D#KK<*#B|f0MM&c~bj3bx+T`@=+(~;^ zZi5by0@2z_8`_B8%zkh#Ucq9S5o1P*f7UwrTt;JBn()LOhn+t_b#QyXB zMMj2FhTWs!(A8D<3PXQe^7C_cY5@Al%=3rw377~Q6B$XRPT#3&w`ryFL;$ZqP`^e9 zz_$0QXGt(0@>U21sJbs^w!pBGTo?+I>Rv?9a09XYu4*$q?vPRms;WYwKEp~-bKhBI z>tI!(AFi-!LJFPCm8*Zn34ZJ&zqP(Mo$>&7o^Z<~(>43^`T5a_J+OQ{wYhnM(>=9k+Yhp| zUsoy-?|uLCfB&yd7?IJJyREzpMPf%dW>+K3{<4^%{fc=Z};+xpF{wx-YC?tnqilTQYA|#-4;Q9)@n;_kHOgSXJiq z`~Agh3bSXXp%m2Z3z2qwC~USH<2XW6xvCXe(1}Qn$z*1x;(7KfNC+PM{`=p*Z_zj@ zyD=kRX*{6^)KVuFA zCt|xgy9kD?V1SKn!mEaaB2PH>OLhBpJDhJnlPp>BVc!Tp8T%GJk=MNJSnSYQp^+Go8PZ<(iYhOH+J#%jevNZSp7uinR1@h z_09JEA&a=TVLm_4I+FL^m?<~f9ieW+9A7=>hv&ck`R6$@#X+2H>kcq%^{(Znmi&P2 z?@HRp)AvR?mmu7}SQ3VE}oaI6;g;9L3S^dr8HZ$$$Unzk7P6JT`&} zHpQ;Zy-m5rkkX#2ySp6>-}lXvJMgcbEphHpB*0svPhz^!G%rmjfiTs%?EQl$kkIhLfrtWW8ltc|wZFaZPo1GZjcC<`#6=MPVVWf_i4U^W>A!hPLbG z%_Su4x)n4-)5Fwk38N#U@n8^XyjIn~nk zq;PL*MWK5U-$Pa-GHPZg-~?+nX3>$_NrWQpr9(z=i@@8%lydXXK5>Sw_d4*+x5;hs zOKd~_+tn~KPft(XPvn=+4yLu=HPp=RsTYlf^4Ft9Gcx90oKWEX&x)f=5z!kLu7R8p zpvukuf?nMh)V2}Kwe4x|wLww|>^alZ6PfS(n|WeE;(|RMFyxwuxHBh6%683A=yHB~ z=HZ(2dO!{Q6LRA&+s88_tbcj%gsjiO=J5i5+$ANnqtEQWx?WZ=KADAbT3)Ptmg<2Z3gFJL8-`CpY|*v4Vw25v*I+ zb(FhExl@s6-V!Gx!HCHF{`S;={^vfa{-XLKw$4}pdcUkZndmlO=&S| zYDY2qdEalr-{~77bnXwW++R)1wJ5G{vQ;(6GSvpwwlH7$5f*io6 zxqVje(ri2d-GS(kZWX*odTcB(j$Bi_dGO@I`%(A|N+SK=k%uj69I@{0apn=n)Vx)m z2<>WB(pxt}HWt6mS&7(I=i~0r4X(N~t3B>mP<2H0Ox1a!s*)ON`|f|9X9w7~@1a8a zuiwhxl3FObnkhx1x;b-OOr}mQ;JpKq6&erh9h6n|ZS@C=<;i0E|Y>7IPDJ@iK%uP#!_ z?EM!k0nE+k?AQMHzJH#d8P6?dlHKKusJ@W_Z_m#A-pA4`q^cX|`SaxaTUGU?)G`d~ zbBSv~b2TkCu{LD<% zMKG8kWpXj0Gi1K+Z{&{SBBb^g86wayXR0TN?M~Rth;P6&D{WfK#x@tCl>ur=92i{J z52J{4a_H_BWE4Dz=iUiMK6&3xolTgun_@g?Dn65rsPraxi#(Gh#2_8R>|WdaC>GX?YzkK}4!= zK{LSIJ^qqFRgn@@-P(k(;Gt+DYKlZa6ShK_s<&zx-c3NkDA@zax8M0aj_2o0&&gQb z#y9PsdAqe=FACj*E_7yi2Xn%Ye(E*@Xh$5l>lM%>#dU#kTeJL2maTD5^N7vv&WH)@ z*9CChHrz&<$!J;NdtZ0wb9yddP1LkL6P8Fu>fQz%Ct$z7H_l?MS0MteOCFsHOc~Y_ z?e2?+NkUrmK}+-)Ii`-%o~d3uS?0s05b+$eUtqs`AhJ`T?k$BOB3K<6_wK>h%br`9 zZ${p(_uilL^Ze^4MVvzdUX`0fw0oObfAY_tKXFd{&;R+K^@X5ZmZr#2WI~Vv=uuBE zgJ{3p+}1O!$lYdxoVwWGXwdfi`zrMF#Jx3Dj3}Fg;mAX};alY{Dl%dr2>U{-w&ulV zMtjGI2r-ed|yEt7HFNTPp!?A*{ zp1HyB+Pp*Wtq6@haNk}PNX1Oq9(Ke7@yyHuY8}=p|8~$nbukzk&J*u%(;i#g97{0> zqkLh7V&KETm*JYevy|s4uV}OGoS&HA=3e45yT;S`BYTyR|G!F=4O%mfKt{mCZm@ze zZ1efyec$}~Q4bhv)(dKN#X9I2k`2Tckx&GPo@y$(JLN4Ru9mDx$TB@!<6e9MGYrLg z?$FLBCDpwHM8tH9X?|7bJ(=6>KHHaQI4wrF?mmU}A=_&q zhC<;S5#0@-s-J&7fByBvdMg&%J4oP#>-Rk;2OXo{WA7JoDe><$&;4Kj{^$Pl&kpeS zfg7pmnyzUtATksK9Es2fUDvmObrqMLd$I`-nn2hSkr;mm$Bg&=J@G_hjOo7JyZGwv znmb;|%&Sm7F{>$98>P=~CQ~u_u|*E2TyE!2p2IP!8o`Zgu22T!nzolD;fNp*5nWfv zz48W=gF**HLu7Xo+=*`WoCL(4+VMFW3Qi3aso994$4dU;PYCxGGN(rzZx(GnBL4f& z-C_0LHCo#Z=!D+6d7d!d9RbW_QVPZPB{iNN0kS)!m>kZ1uV>jAdz;t}T~0fn@D*hJ zb@1(+{_VT6OfJ2b%rS!Ak5tdYbcE3;&+wen_jkC$_t`902K)BKvJm0n3fimIEz2!@ z&rIrgt6QcdK?o~2Qz8*E(6>U2hi+6;v6tJv?~VNNnAH8W3F?_uA5e%OklbDO+$W9( zGo=(cOX-Y^C0|OBsTrd=aE7MaKqzJZ{`2;?FjTuw)B1)lJD|k)iQ{E_YCRji)2Z+Y zAz)WS8=WnjRQvnx56smf>`1_-d-aX}I^qh)pP%QwJyl3-;s@h%GM~g))R6tYS~;Mc z5!7=I2&@5+igaVxp;*v)?dZ#ly#l>s4I@4dWBcUP{y_ONrZM0s}o+eKE|;Fi2Ll=kpQ_7|NQClU%yuM7?%1CJl z_PC>1p=Xa@;9$%R@!VH>wqu_PkI$2Sv9!1u=d-q#A$hF&gp^;429X5%ZNTwoky|*7 zo^G48f*4CV^-5c_$4T~X@b)uh-g-?RXo>PcPWe~R_QQ0_^9`OnAU8+A0Fm{+8Apfz z{Js&&BzG@OKz+Lwx;^&Pw1K;i&cQ`Rn_z@F(=gG$1@Nu<^B;fy{G^S4{_7tqCjQ%A zMv9G+LlOU%|I7dR-~ax1-y*OTrpOaJcOU;#S0T+#aXwC;@VPK&z1JbkdE7+O9ixvAILe7t?{DBK&UcxRpzg!n>tUnA08LoF#F`P6+Ez2}B^R^M}ep4~)N zb!aO?T)6a;B>t3F%splsOsTs0QE-H5enc@$PloiI`W}lLb?BZs+DlCLd|!`9U3M@S z?jD8rU;J}UyVvEOnPYo!r{WB?;D#|Hp_<($Y)4twqib2%T_`hj9W+uQvPp6+|pB@*DzH1_soa@e`QvR0Q@>6PXlxHkvWQ z48v^;p-{}Ur)o2iGkQ+E_de&b{acOk;e4$y+fzxEUH59=fDCwd-Udy_xP^}r``z3k zs%sD00Fq~Usky1Gxn`&ve>239X9KtBA_I;)jdz%OPM&}9JU{2;bl;lhd`|5BaFX}; z#>t5-La4SVGKf%)-n#Gm{`2owJD@U1WJEP+!LZz4@SP{LA4hT*c=XcnCTB|fWQyaN z0L!Ru5v-|c2G4n5cO##iyRzZM^yt>VBZEikJ||9`f8N{Ep3zrlGZ{S>Aoe0HV1nqW zeOom&p?u%onevjUwxhpYq1(+}HU9kct?BtWrxp-oMzH=Oy=8@>JPMLAZZNoxiJ3n< zd^S*$w+lmhBGWy!$;vL*Souh%;ii$1lXYjO-I%eG1om>Caq?@)*La^U;?h6cgGmOm z-uGs3t90+R!4q6rir}~V&!0atUTylIcS_n={Z=J%JR4(bOekt@%|xUJnK@hmi@v(P zu&R)hb|+r9GsX~;^EM(gPjxL@Z}ZMJW(pGEeDeOj-5uv_*bi+5kwG$=w}*Om|_zkBBS`7>QI!NK3#1tWg`^-SAc!{`CpdV!hcYsWbkA%JybBv(mB9W!ko95NL5fZg0kv&UP9DpEu*vZ&?h#?oG5Rg75DQa(A`ba{a*TR|rghK;QFox>^p1 zyAg}g7l0FO)-;DR#R^G`a1SME{TWS)QoSWD(4V#G{ux9jKFx+X(}o7a1;n=N1DVNv zTPFm~t$4BrD>PWe^k5>+emn_crmv*G)`KhI%srp*L_xfpaKGjFX|L!!<( zTPc$`(^%fH_X8nMqY+6M8LHaHcS3_1Z`J$CZHOe_>0M1ME_MR(x2H^RYlQY9JnJ6INVmmP{g42 zZ1#0x7&En;?BZbhiL<3!K?*Aq!R+~OX`$K7=NoJJvIghu#1^*Q^-erLAf^!nga_;l zFL@bjaEyrf{r5jXFcbINu?!K2vBen?W>v?UDEt81(Q7HjNab(2#^mHaVC?DH44#&( zDNJ=fC$>D*_x${ju?@&2OnpVntwnQY@Fbz2XE(<*xgjFA5Ll->Ts5(Y{Eb`E5e%`) zn^&0>2Anw=ZUa7%d!$fC?uIJDGp6zwicr5jA+oXmYfLOCd3%8Xh&`E|53)X~bdeF7 z>V6g4K6ggWaxiOn4*M^E4%5@A=&Bv-c#IVS49D+Mu6n)#D`uz&1>kh-yak%>NkxX5 zv0S7tF-$9@@%>l=F>XcN`_WBq)${zAK%%<(w*HpB@k^`Oa4M$@ z;y%(8+n&jus(*^TN7}JdIx`paCQHu=Bg_c`;#R#CQg}*qQzHESmNNZ?UkBt}a$+Qe zs$QSqZe4FR)%)4rTgt>Ja^|hZInQF0^p~JdAruUDVKBFQs}|e4cp_c3Wo|Y|H{^f6 zg%$bE)_Jg*)@)S0=J&&N*V3 z81jAZ#GHt048Qv6d~KzG;fTLgNc+UD6Eti``#z;C|4*E7oC z^Z>?gi_FwaSMP;syUQ13MiN9We$}3#WLUrqy8eQLclssW_Zj0<=V+ff1RnH6;*{o9J0$b~SXUr5GUmaxQ zE%*YJJ);v)>^m2KwZew``=kQ!ht|Py#!$9{-M!} z^Iwo?R5y))m=wZetSC6LZf)z=3fv1I0`^pQW{v^5dSX!vjIl|iSR%{rDZ0B(JPr$s zQC$h}cG!vdTL|&kC}(nms02p^@Hv*)q0*lDh$M@Qwh_c$#}>Gxz+7S zeErZ~uXqqW2x3871lYlB_ii^pw@2-*iftSe5=g-y!j~lhp9K&0or;M(Jf4j&}Z!=(?5aZ4j z#$_+h)G*)Q-^fFghK1>SB18H9^Y5v8o)eF%Uw~7iOjpmKJ?BTi|Gf7%&dKMTfB(MP z1f#|oIlNW3Z)8XSP`3yoOnYCHl)7uWLkT-&<2=GISK0Dnh}f z6zHA1qM)S>fOh+KWyE(=wV&rKN(J;T7EWZ>zB%p`fI0coxUvSOUA2^_6#`NF7s_p? zAWwFiZL3|~v5WFOrId;DlNk5wX-kMW&fBXo4!K0l{#F=mgIUNS>9A|etlDs-gZ zHrZp*8PVmQP1-JXX)@yX{z{sAp>A^t`Xldm8ZbsnixnPH_tS-#PXJY|zdH7rP&-+jPzVCbUtAFG=EU=64 zzJZKQ`F6Sc=jZ(15ssow_dl(N9<3G?!t?~7IE`8Bv|&gz$1TK=n3Ccs2eSZK(C_bE z=8wp~%>j_A>R>32y-6|y*T~&;_S~=E-F-4g!6SLPYft~Sv{`7Trw#V4NX_@8&MvcT53JiknLC%x3()Kb1eO_h8&UnRkX%Hcm3l4bl;zukU9a~Wq@41}RjO=IZs5d(2$edTPx z?Ad?8bd407U`c6a2bvs1Zs^!W2;h-m4^a1(x7)p&VO!a*`ls_G86MibK06*nJoEkz z^3U@OaJxiv5Q07ZJJ0zEseQkc^3vDP0LcN887S|2go@|+PTrs*<@Ro8cihmxl7wQD zTHHr#Z1w6WNSe-EiYYN_G(AKBQ+Kh?vvJI^H4UVaJLlYm$m$oy^E_wXs;PBe_Ba*O zZqG@Y`^08OcX#yOvj!xj|3_O@8b$e6vq4+GuYjTG8bAGT0jsY{DhcnA}BBkk? zF{TR+9$@gcmCt#q-V~iDLjx-kJs2S{D6|Um`_KRWGdE5iK7ZfJFeq@w8L8oWuiGcj z9$O7#P&IKLu-tu~XNg(m!V4`t$sE^~{ArDc6pZ%F)KO+W#&k6~pCr|Io@W~3nzQIB zMQkfCgR^fQEC7y~L2!%+MX>6ARdcwFstG|s@zfM&f_dxT+V;AFYaks&#CgugXax}% zdvx*~#zEemyx zM0d9%;`Fq-0i5S7M5d>OBq7Btq*T$j&Cg)0U6AZ&j2ar%-3DR7vul)`nH4hpoafd{ zpnC|-PQ5_sQ%f)PbxSoIk~C4>s9M-1#rMuE4Y{j{+bwAiXMnMVORxEH=o!RHEQr}7 zxH37t6Y*(J(3pU_df$k7w6DoQ_FFV`L?#35xqaQhIb&{oWjI1MI38ktA{t+Zw~9w+ z*Q|R0`)e#-ArPu-!)s(jo>kzcGKgD!-~L3FJtI8N^Oplp+9KAx4xrljp2j{;cy?et ztI0a&sT#lphYpMp_~yU^d|J{CDkxZ81OrTZJeZsrb_aw;ySwH*RA_!*X8?A2bM`-c z+T)rh5)17VMKM&a>Y8a$k?HQbR|<^VqX0+V30j8tPw$vAfDuXVu#kfeW+*cM`TeK) zYVfcB`1wElkN=ZlJ*r!xJoR4Zi4Su-?=;ID8JoQSkLSESzW?>V|7+Oh2^asz zfBeTHBl|5U0k0YbYpP!0B|pl-lpFn>v`^RsKOFcNk@=z@m!LKddA+}$!5ViUduQ0L z@^o1d+ft_o=(&b__+;WsxRrKX4d%&BW9$)X#;MO{)pm%zH1K$4?vi!_+e@c6%)z;J zF=S?tGyT55iqn1bA;xPmf@PoDn1ZGG~`Q=kzVpka4XXj}dxl<%j_ZEQQ<81dgXkD^q0VmI3SI!$I z3R_dZ*Zt?ubMG7?c*Lph^Yh$)-VUBTa*q*5-S0jeGv%?KToFu!W;`>;+3XFphGP9~ zwN$8?q&Kueapx!+UCjZ=4?feK4*WkN}~~z@WOkGSvv% zYebzHiPPS!!XEj%TbYu4%Wy7jbQ*(3kCGnv2#r~oOp}`>NB6WEnPRZp`^w*(Uq0s} zabw#E=G*(VJ33?Ly2)?HImo!>NbDW)WV%fccB8&o@9(eR0MS-v zjh7?%WNfQoW0pG=OPv8CavQ){Ad5FLvvv6Vo7QHWbPvnQ+yh^G!oi4{yS{a1xFG`4 z&?mBPQ4XCgqApI81du^UjKO?*ji#3*FOt(<)$zuVB=o$=b5gVUkNtO&nGxs6?7s;R zd*C4#L{Zbrd7KCV{Z&>x)%A0JZntVE|D2zy{d*4(HJuX2kwQ244 zvj6q3|Dd@OID)=SsfDGIKj-;*p1SYb{HSUs6vo`Kjm$`B#?|*$#Yq>mKjHYS(CuE% zn?Gf@?wt^o(Su%-`3hNigD2u_v=kp>or40nbO>L2`%~W}a?24`<^rkmWKYd(5vbqk z^PGsRsi~XPTNM!}^Gj&Ykjy+b-rE|-lN*j^{B6O`a`z?~hvD?Cy@YdLsZ!kE`}6ZK zc;5mBOix9Aw>Z%Il80gO;p1uKipco^c17ny4kYBF_JU$<1n4~X}Hahh~j5ukEbk^$cNbx&l<%aM;2rR26v zJn_T~PUMzBVJfq#MK7XT3MlHgs%vX+o6E0y7yaa!ZQci@434CzxziY5MJ`@RJIBQ( zqHZleXWU0gyVp!I9l`DZTw`GdP#mM-&m)mi_k>VYFqXhbAtHK0T+sCD z*)u!Zi>(l#8?m@1k@c=&VqqSD;x@euPuCk9Ryu= zfDPN7Ov!zj%7`x5qZE6FL&Uc>zD@DZzn*_R{{mOJT=)%gBVh}{s+Ej`>tSkp+=bLz zx5pxX^3PlM-@oO)aHN?}0<&3};R^;2&|3 zWe{f--Sv79ku$bmkU1#0JZOhJiwb4OxAhLHx?VFDSH(3T*fOmdP?4A&CvAW}ye+k< zYig6n2Ef@VtcLSRNdjSggVGs9KKscF$aaLFpQ)NDG6vY~A4#?%vEzc^@yy;gAiDU8 z*(3VCJdx)6&p&o-=O#lYJ?PoKT!{_l5cVWt@aNB;UKj21rzaw2&v;dJGG}L}VBg<8 zQlYm=K;@aKRMvdkALdSC*SVYgYdzw}?fWA2wo_qNz0T}&4(#fiN8P?}Z3lUFf&yiz z*~aMSnd;?FQOc9k)9(eZt@Au&ChB&bJQmP=e_v#zRBn{xC+oc_Q86Aj#($6B(hk~< zx$nyiF@S#GUjUJcU^3?ur^sU6eUY8IbvB3R_ooG#*!&N;G_0hvSk&|T#ved;OY_vdm+)7a9f~4jAdrT43_h%$e#lmm}EW~ zAE4S}e>G+4bG}OvVq`G2BiJt^lVy-5{DprS4-CO zB*?wl_cXnhY3_d))<6IJ?qOm0_y6?Hy|p9K!`!oV0Pdo2@&Vja<=Nd>Pj^*McQu#e z0>HB8_qPTfuP@zGLjiZ%)2_izV2`~^hI#v?m?u{{4Q}1&BB&%x&IFP1W267+cYN{) zLK{HrW(lquov^2c$Z&hxPQh5!+ffAgd*8WtAqqRXmNaB!1j9D{rLF+ZH7T8l+=I)v zLg=cg(f*^@!nP#cx9+{$R2dgJQ+?~!Tet7n-Szw4#=-Qlg(sg7_)@lx9*IUJD8J5uRpUb?JcFd8{gnyY9YQ8=T_Iu$;k8AyZoJ7+v|*ze}Kr(kbsP*`fF+e z+WLCA-&@#pS5Pnm5%G1Ez9RuCg4^2x$@l(Z^FvlHImBJ_{%yX}FYRRywh_A>@}RnzeBXQT%}^+k^-Tex)huLuik5`RGa^QkLYziVpC@+K&H0>Q z7tMBem%Tlls=0mFHyp}1DdFc|KMF9k7piS7$BDIp%r4Bw?W(uFT$>wW&9}_nL`yIP zL_E}CrWV#gk_muVf#(3zHP|r_4RC308-cet7|(=od*1h-a-EC})w~{NoKXIy3#A!# zyQk0dY<{fV&_?~Y`L!iX`edYRk$E3A@tQ%ZpM)&`%z zAOhgYAU*rELC>K2-EBYMes3sN6*a&)heQqa#R0G~k*WDUu0SYmRd*ryPF0uT_n#(X zurKz!_q|mo;}hI@QRb#}R<5CEcCBOf-~JpkXWX8dUjCbelW|TAfl!_##^b6UPftnc zF&bKMhS0RT70mpJP}_=Ney}(6SZf>qz_`=HJeUE=@W5ziW*~;M$K2z3_7mp%9k`_(oQ zstT^I0z6P+bhgMJ_O|n-_lmnW+yQC zt{eD>KWxB*LUnbO#KFkSb)SesY$|gw?&_{vE{~@fdNTGRunYQ4o^RryFg2a$A&Ksk z{+x$&WNvSbmIrW2OlWL`b|Iv2)!XwG#FxPzWJUn%;@!2l<79HRJgYgHFM+w;MRKeu z6LL3%#S_tZR?SY028a_U&pAJdJR+(#?l7LNd;7MnCl0Xuwp&$km?tPj#Z+L43 zesA^6B9}wbbG)G3brt?!{~!OaCuG8n`xXNyv#0zQnVicYH(!i&($=J zF!_~?mkZ&VJ*#vt5_n|>`a9t9^w-jfkj3emhUA^7hdCG!C!hDe+Of=likVTMdy?we z;8Zr6J!@@$exAQEe|mZo z@`~{47HlbI`gTX8jGj3e+s2zA<*v?1qeJo##B~$;$yhR-d+uEyEch29Eu!s+SXZ1uTBG@y4OfVx?mIeR{?zO+my<4*72MIpQHMFz(k z2FRH@Kj{K(9o^;)QJR9)sYdQ``#d%mb35G z0f3Xw%-m_YjhLQ%&WC5%5c77)W-_xk!vq79aST`0Q6R#`c+dlBAGQjZoE}kxdakzz zO+?a&HNt>6d3x4hsI4_)nkEFv-%xWSk<)MwDaa$EPted7YJ2=V*)zMBK%j2}Qhd^= zs&@-h>qNsUuG|Wqcno*fzP8E;?pIHX*WT(#P+jAgpt{h$Pac1Ik>0LP=mAmp&P<%N zCAeL|V>Z4h(Vo6~b=~oV$KAby|8echaw8C#vF%qzc;;j--pgC-=z{1GJj$6vk88N;r=ks`x2 z?JxczC{A=W#~&~)gWe}%OZoo(8hp;9;Mf7&X&N&_>Cf~0-nw`GJfbuMV0V}hoN?Av z+Ow{>>cNQ=V>J#2llZ-tsguv#8hABrnI|%CmB$-mXn*Zf!zBF|py}0kdc63gPt7o7 zT9`ZFoH(~`=u1+*RXQC$A*ZWiP(?gQk2zp5arP*AI+>E%mgCYcb?~L#uaUl!#O-N z1%Cln1MWuhC=5(@wM7Hau4v4BqV9zSnBpFpb{oL`3BtQkscH#Z0j*mkOu=~0q162v z?spiwi`?;A#hw9dX*jBy=jYs+MXtfz0QUZhNo}>mZjn7)3e_rZ&QC5!ukT%SnrUyt z=QcqmrskZi8ek_^9)gAF3nBLW67&Et-f$x4DqHh&}e15z`ctUHY+FCDJ zJ(4n_r-LzTu4b<;2N9%py&ROu4Cwa6h7QH&`GM5GIiy1?{L{L~a> zzTISXfjO=WdVJq^+h9E<#%`KdvwVF|{!p&>QiM5}Zfg-a3X^?nrt_pByQ=i$&(w`L zAFqt#o;*J_i%ibj@6r^{&zbQ;O!Cl}Ef(&Sq8rK2pe8PI)7>?L$mnS~D0g>zQrUfD zVZKX(5p76-8|HG88BM zdn2MTCyzH+a}A(px;g`l1!CfBr-)-~ZAzZ!oZ6qS$AH&$l4tuN)t!-H+yIhN&60Z$^-8 z`{;CEnVISRCTC>A-G3Kq6N;{NGmScD+HJzABM3&ZKJ(fqC-!={Y!Gv6W@e`@_P9;T z<;EPP6g_qCZ}9xrzyBTN&H@ehG{-PAkI1Tl`RC`)%-qek?b}lnM7XNhd&?f0k(k;T z6eWIsV(zYB7Jf(qP-Amz0~}9P-%X`wa;l^h{oadU4`=+GxYzyO2+kINxyGSR2}D1i8g8#<=jpvV_q0zFdt4IH4Hy019U4y|?a-NQEGO6=d+_Px;dE4NvWf zzhukBbJ-p!)m3nMRus-%o>bj+qdrgG->z$*GM2iwYn{vGae&`3m-v=wLQFI_^bn!+ zX0>*9#^|cushy?}|Mc(2$Dq0jwD+{@ZsSCnJ>#jb&DEX=J?H1Gvim#RQIrY9NrGFK z)Q~}*9}n!V-$iO6mHoC>wc9-r@RArY?T80<)rF8sN(9cLCWOrBx4UZra{y;1{;Db) z^ZxV8;Gg_4cG!XL-=A|L|Lnp5!R#30@Qm+{IEQjq1gx+_xmpUViMNsePD@$JHjwt;=qikO=7wT23AXYQXvTe_c9L6V`t&2RdP0&|bz`GAq{|RgQ=GT1{L$^*a|d5MlXrL3-pRWgqPyzO z&+~NmbDo(!!12C!Ou^^pdG7^ye{V=e?TlX;nQ`ZiJ;1!P+9GusxhK5wbhZ7PjE?}3 zTyylO`AwK+-x+bz_H><}A9yxD+_mEvhIq@E{`q+r)z|k8oc#a+002ouK~%%xK<149 z>6ch=z#0{2`R=hnOnBDkXwKA{L;7}c4pO;_&3S$@B3VUfrLwn+gq+Ad!f>igsA0I= zGk8wid$FBob3FH*?xM*!9C@yHVremgJ-e;?+$K1KS+0rxwkn5>YKgzMH$$UbY8dhy zm{pf+A)caGRic*0-1Snq@`JX;rigEA^%v3({H;W4rr?f~Gg~*AcJGQfr7@&wJ3^Z% z*=Z}FjSEWH{pkiApFdB%WooAHz2D?Fqkap3PGVmo411Cpk^Ol*8V#i2kFK;vgvjtL zdxi}4oe4far|&Iy`|L~FHwNWF=5D6;y^3{qV3zY6bFV0bh3xx!FUW$&8DHSwFn`~F zu%t+9BUlkRb(icUvBwDvG3{354Da0|F9~$tGJax*XD^f%75Y1D<*diIr^k_A$4@-b zy-z8{fX@yvHf~YRd8#|WNHG&L(>>$!P&(C9V=C6jCvzkrCA{viY{cQB9ml>6--BBKjcUiDza=jda`23w67kl1ZMHm;-PF=ViNwxTC|vWoWq{@?%W#G|7~ z_N})aOfoSoqTko6JlqrHUaPvT-7kkZa8i*uoE_EP zn&%v(Fs|JkZDYGV7=>iqnQ4bGHHc`82d-^M@0Od@9T_0x=-I(j5oce8EI?+EJ#nN6 zP3!spgIr)jYD|#To#&y&xxLRQY*b#PINY6A#Hsp+0k&o*0N zd}0)k5}x?k>)A44GXzSfs}%z!`;MW#Dok6U+2XpsId<%HBeGd3l0mNJqYB=#Ummp13XMcvG5SlUY z&4~xJTRM{FE=t9*)Xs5tkwPYHP=Eg8r)#DsmL|q%_n^_ZeNQ~`a9+{ekmX-@HveM1 zQ6Fi;0y8wA7usr5LOjniQgA26GXXE!WwXdL0J^G4{&~*DmzBw&Bkx$to{!iRW{*#P zUKA*T=^3mHlzR@(xBqz}67C)oxmX^1YP^96nQ~tju0FhMe)oJ=Pe+`F+1B21t@t4+ z&-B|7ap!hThIT11aNRnYC;5A)x+AjPu5u&e*mLv)qvyilP`NX4t}^O-bAX|2jIESzSBnFmUVU zvcJcQ7*FPdnM{;tdTk9e)r#03t{Y6;^%a=Pa5tg8D;_}v-Md`qI1-}?+Yu(#xx+*b zXS#-ny&}&56ma{}L?|PFe$Mv)HbWxmmS=X=W1}$-;0vGWODOY5GK=&3&-?q&KU3BH zrL_M(^u}PEXWsRNM`<{wpb`E~@dw~wP%ClE3?sjy8TikwfoyY`4I!XH0s|jf#=9Kr zzB`iNau_fpKF^OpN<9VO`SaY{?V`0jqmA)H)F6J6<^Ntq0@xosX^DyGu8sehu31Sj zITJw;i6~D-%;>Fa&hz~2Z)5KwdWj#)GZo(?S@T|H*uj0GEFsEj53KhVfsD;! zCHYID-S$KtE~Oc+ZjaA7ZD3qenCgz7KhGX$YZ!l>(1b>#MJI%297tm*E#jxYhX%TP zBbLTmD|bJJ$gC>kZiH^S$;gwQF}iC5)v*$7#60JxtB1p_4`DE|Aiq#pNS*Pm%?p~t zVPWhZ1jCwh;=}KzuoN>YNFM$EQxxK81`Dxgrpz7p?!Pbk6HeCvqd)o2H zW>*DQj2WIuY)Epx33F!qE>Kg9>B5+CzydPJoj_IhhIx`PE>A}uj~Njn8U;(Ss6bmF z_j~IIm~10lwb%3e{d0`l1p8jw@|m`vJbIv77FtC3#$g>F`##!rXd%lpUzRXDw`v%1@&guIb4?UCd zY^vXY6gy+q%IICR5U9HU^;!h_hVSn`dGgPne|?v#uJb&s?R+tQM4x-#u{}mao_z1scCUb$rUs7bUY@a@%q<*! z{SCmQlc+hQy~=7;Ro95~JbyI3*2`py=<&=B;u(?&!!ZGks~f}Gj4?G~w2c$o+yvbB z)yc0#GvFrONtH*xfxNm zVdv^2gsHnJ!mg6e#jFrz-)c)(neImCpFbFK*S^ZCrvAR~`<_ar*!vLfWWbn#==}M) zzrWqhkQ6K24d5i;qjzi)6J9jVi=t$IP6}rA$-o<*P5V9JKI6tVcU` zV$ycvzWq1S!abw!hdG}UTu+mma{!k>XulAOBhlW-nrC2iATVmwcoN}75;l6atJeWd zqcJCriKK4b1+vYaR1inFcP{EY`OiPEwT#3?#gIKpQks<)gzQcB2ke?ko&_12Tx=rk zO-WbXWe*9_@=;dJ`~F7ml#|o7p7@kDEHgbCcOaGLPd-0?_InX0Hd^poFZC!nh!Ycx zo*)qU6PqrjVe~CT{PVy5^WXnm!zA?lBxV^05&`vR2?M~I>05d7Q;W<8t2#2Q@nocd z!S)TqqlhomgO z$jqwQ0BWTAcAj&Q^{}ww=`MZ{ zE9?TO*o+X=i%|h*VEOiy$Zg|-18WH1C(m}+mf}2PQcWAkb3~p9i2eIA^3Tt|%&BjfYqPiQ?t|<*1v9FK!SKo_sj}Uv4wWr=ocQ=&wra-ynY%o((GgHrbmSTD$ zNz_ai1|27GA+TKMIdz*Bm2h)VZzCL|2zh3zshu)G9D!{UTQ1ftZn=4$GwnKOEhFH*H$w&)p1#Hc3{ib&nhJvqoc!s& zttKO2pA%I(AP{(-pF72gUHU2`2IEm6mY*a)I3#8XpxSXspL51mj7U2QcN!-GHiY>d zJ!joS%E#z3cXYux0gYi-zqRq6U34%+NrUdYptE}~nddnnRTslgJil-E+enIwq4wYZ zfZaGQ)q1leCKAFlKu5$5Trh7F!3cSM6ecK5Zx*E?*d%(4xfgVvXSRgTOg^UVBJ*ra z@Y^D4H4~XhaHwf$G&JLQ79Yg>-aPS~KV7x6*!#W_C+PcSakZwWE?Z{mx0=Aud44_7 z#Nc8QqBt`lS<2M=_O^Z%>wAZ`E(^@8Z;G+YhfS~p9_LxVgaMo#oxpCBZqIwma9xuP zJmwo2>vddC$ZnRz>@Ew5v*QzcM7c*1(;JvE7g07b9!#4|X5E?^rW70gW5aSZ){>=G zB|@<$`W{c5pM};2WFV6cVP=Lu=MTg3opG;t=mR1(0ZBZuzuj>+2*%9)eVZOD051nt zBy6tbCkXRS#S$2{-car6dM9EBuN=>Qhwr?e77pOowUUN0BX!@)eLc%^DhMBN}(dv-o19BGP8S1x)F>xY<=y`h&bK>m|#EFHAd=bsTRR5hS zTIP8A)>rJ<0uUKq-EmKE2Yt<8C$S6=K~BdI=xcKYIyDPBA|qnD{=QTBcBL|c+rJO8 z2Zi5mMCkKX4QiS%lzrm4=mk(>0Y;nM!Pi|k<|L=S<)$}ry#2N2y%UKwX&~fk7)(WI zpsZPpNz<~C9Dl-QW7ygd+OGb|_&KM0LdV#b^rBtGam_vFC#)s#Z7=roZ$amQhxfgR zc+TUQp89K%-+C7JDi4M2LZdf<2}Rid4fgNpA<`Th(?uzTw{hPaAsbT#=sfwM`nG(Y z0&}XyXX6e!$#%`eH*qtKGV(7(Xl}z@&e*XQ%_dXvB&PQuxVWaSONivjbF1sU40?L6 zeBw6@T@-@4-prhE5LT>4-T+>;RgCMGx1CUJ~G zxmW6@Kn=SmQgI&7XuY3ZiX4nAJ%KN&jhczn*5){zfPKX$g@!RDMmNx<2#V-IuI?rH z{R{%3>I<3*IeMzsE1&xv_jBS_cky}h{paQ3?E#f3465JMAvH4ur)H|e*hp1sONJf0 zBzJq*npoQgoK&HOI8WRv41OYpV|XnA@WeTpVWZv)nUod#$RIi*hyMAGKmR(78V|XEslIdx?XCv1Xw`#mlV~Xxrfpp(m!T>fX+;GsGzdSKZL_~Gxn)mD- zPr9cKSTn8o76LP^B$)6_+u>A*zSsK@1(*ljjK9UueaL4fKu?WLw7}2u7^D!=@@@@G zbyvkXPP1h!RGp7l-k?+DgZFm(`WKPs@2X!3IC$@5#7c{I>qy9MLgyS$f#mq^e;}*N z+V&8-#}JMc_16JXWtHqd#_5@O3e)hAQZt=~{8^7c)J0^RPu1V^iS!s53!VKjpe zV-Px_**+FWWKRVZ8Su>Dq=3^^3N>5Y)n3%}bSv|myuZI02{0nIxdo`Xq@!W-=|2-Hz(d_zkqUAoQYYfQ8%E^xwEGeIzU@(Hs(;m~!*m2GbyHM_2p7`@0bug#Ox97O_9sy)f<2Ar99wW#dm~r>s@--2v1UFJ z3~8is3z;WPoJ>etxdXuEs52%^o6rn$3($vCADi*s+9pv?KM}=pgWi4gLLY?aF_oDL ze=^GTTIBMn+|E44m)_u3ApW-@G|1%n`B|Ik63jdS!m}~N-X`GB^W0kqM#OBEszMQp9;q*TAiO zXumV>eKT{D(On&f0K0BurnYc~kRw(dN|MtJ3Nx7*iuvMz4w4pwUE|r)9=^&TzEbG)0L=xQfy?uCLlFQW zPBYJ=*u1Xm&h$OcS@sJfk}MEh3KRdFKgjRtV$gkee?Fc#(qOEi*`ttGGddwR$>^D`3LO!7&htFT{85ZhH8f7|*B_#pj@q$bgNYNBFmqy3Qy_$)#f%Xi3e$H>* zjl*@f7z&PY;#?0f3JySG-U&px36gR0r}~y#K!7tdZfsH(wh+KjGws684ZC+^0o&EX z8ZM?S1a7Xd4NRGs``btagN}%z^_>DLC>V>y^-3LGG>+&x1aZ|%+IZF|C35-x_-Mo9cxO;)nSiFC<30^jf(p7czO-K zdqG;@iH$!$e==h^OLpI7@K0;uZPjC^dtnOr9s--uX)0sEDdq1%dN|``M55Z|`FXTY zHb6T)lsseC>k0}`-0J7x@C?T@o7d8k23qF0OQgW@1mov$n&p}etwdB0B{JLv{Htc|YAIVS!p` z-OOOfR7e>qbV$_qGX)9jV?d)YK+o5%tuowoukUttm?`JSkh$GoQDhK%S{-nqh_a>@ zm|xR1QxlPKva9azTRo(ncp!z&?OSzcUC7Jx@|P&lDvF7oUeJf(M)l0CvhjPr7X^}@ z*=Z2m_w|XO0`-06bn?Vmxli{OiAg2w_S`AEpG^1e5T2bzKbc{Os=B}L|KS;+yQ_O_ zxwkF2pnQDaIQw>k2r5r9@|#2kHnp4?Kj%45Q1lqx5~}*%3phi}Z13-FE6$UVBA5Yr zKe>%tw*{Px$b>n4VaD?l=P*^~gjBf8#0TSsYAFpP$duQ%g&D(}9j-Y*s&Mhtu zkhXEVriZarv8bx%^!7hIef#>#qNH;|GCFq!gw%r3f+rTT+k3sv)aC-adU^s$e7U+M zTq*QV))pRr#n{DN-Tji4ve048RPA*{9dh#>;JRa7iQ z|6d%Ad$S*RyKi5&0od*uGEOA4;L8XR+jI7K)kw@%ND>>*~nOLk(VT|K}P=lq<)baj84Ep_)dXQGo4=Gz^? zpXVo2Mw+WjECeFY^E__9_nrACcx>-+XCp-uG&M-F?Jc`%sfI(%{b%C4B+WnAoe+_40J1%47(HuQhOS6A^_MGqW?i~ zY9*3H2B5(JHGO*#DEeNO7E()OYHt8Qks=n_D{(F0o6(6y_1W(ABTaiUb1lHtJ>A{y zMo*I@dkI%UniBc)+`B}>9 zG=mav6@b}+3n=fL5ACVx{R5N8pZuTy)BowufBuMK`%cUAL=brIs|d_et7L+aTO}76 zCo@lX|9}2p|L_0T|MUO#`(D&k*BZH6W;e!|XxrbyAiP_DQOet>w-jVpqPC?Gp$u-K ziTYnOlihBUxK+Lz?wkD@%DpW+$Qq(BGpjTI$-`N(JtB?_fO97|t(!sy$Oaa4Gw!#4 zJ;<%qVL&!*)Ox!Ct!K(X*X*;1V9l-f1#prA2Z)m!5Kkh&&HT+Y6hG(rhcChGI%THs zE5$h>uWC=32PZabz+kL34E-TG_Hj7h5Mu%A9B{98eW%N=1z0W#SP1UieNiX9 z(*)|iZ9~XdR%N<+`dR>)DNNsLGTU8q+m-Pz1?0if<~`jNB4|B|(4v>8Aucec0`|Jz zF@w&H#cRl6Xh5`y=!C5nqe)7?i1NSClLl7aQo@M_D+EVX6SOP(y-+>)_ z9bpU@TGSDL{`|2g<2jMJC6D0D{{}D}gi<{dI{C!@XSeL*6_+zJPJAm?F!nr5dfYv| z+&Pk_w!Q&45VrSEg&^q&>EsIIB|QqkUv^b$X|uePjguV%eH zwo)|1@U4c%A(usC($zGFBgKFuLfRz$kj#)nUu>j*;sL33t!c4su6`wLDT**ofP-l(xtMV-KS~Hm?0fl$jOhz% zsy98gfa&fL@pZz2iz=6jV0*Z*!zVqEeCzIr?N6Kqp-5!Jz}4gNQ8>hMVHyZ7H5_$k zT%>4O1gCH3+4q(eS{^06O5KTEdNpQzm@jIL9{g&n+yNUw3_vt`_op>w?j#07y1L8XflSJ#A` z=Mbpd@E$)0q(T|zBYSk~obK7mX5FUfZl3TMncSQN;rIjY5mt6hwK8NbP!9-*u>Ni8 z;dUI|E`2{BcJ==; znEtIX{ycva8lbD*z7*`7nH`1hDGGg=XKrs}OCp2w`gZ?BG8V17Hx@28NzmH`1C2ak zVa8}b|M{8j-yM_;nxxGW{GO2Fn&7LD5s`~|pgb1f{CVKMQ#4P6AJr|!*)KSpgXJip zLBWBTDc4KI!mJMwKoN6Cu^qdBL8-5)OXK&xoVne9p0iQ{OzY9^u;n+j(N|jpyj=0PTT^ zzFQ8=++%S{4ReT0DaNm?zrTMMF`TI$it2!S-o7V(UYA}#faq&J2^ZQ-vbJMPV0L0A zy1wd)w{f=<#C-*xjPX=AY>15kkrCY}H|flC@4II}kE?r!fFw4Si#>ON-B*bdn(p4{ zD+XXNH;6%efmAc#*>>VmA*P3LwMm3{ZT4Lp*fLl{5qY{V@HsnYtjtwj%$kO~6)CH3 zTS(B7O#WZ~Z~u=7bsLya+}lRyIT);#d=0SYHI3>%&wt>%TV8Et49gZ8djdjWNw!?y;!BV0a>Hf%2FcWKvuo0=E0H3$y$Cmk|-tW-voDv-Otk zy@|f>#1pYV=s`S3-XI|yl6mWHVU~#7O^ou?@89S7p>*q#A#D3wpsHTOL6C=Zc~+N| z)Nd6rk=ZpO&hu0cF_FA?VTkd5#OR2GYZ^n+y=Yy_7)U8nQ>``JZHZJ|vNE`P4lD+> z-phzssfh)+-2&a_H-wAD1f;UMGEPrxT}z%_N}fDM-CI9D$B?_L?U~F_$Xy%Qk@eOc zPwbX<>g02)BBOdv?ljQ?+g0s7`R~(ujb2r~34vW;KF{&secyfS#J^fS#G^D^bqPs( zDS$mylSe1hgRU`ZW=YQ@@jOqzx9#mFGeY~q06mxbp{MDcnIr6?11MTs!-Y8s-rerm z+s>IrSCfttvTA>Bt3)O;(_;cvJ;0ym{P+DEP(&EBN1~m{bx~)-pn~CQ1Z#Y-3zf~) zA#vWKCA-KxO5Ebq*O>t_z(ErSd zF!jD~=Fx|VWVQR=bB=_T{MLD%s;h{Zw&9sP2R&HO!ILmJi*qp(betz|wc97vv)B5J7;{`+k-#(+TAdwyyC@3T^V*ORd1^Ml&QIXVJ)~|e?Ck%v4Oq`C zf>W76wl`&682smd{`}tC)nr8KoUEz7jZL+AN6|5^d3R161QeTEv@rp_UHhJy{y3pp z#SWK^@m=6oW4gQWb`yeH(7n@DKhG0C@&3Icnd)1~AZ0BzQ~RBjB(T3o-_kR_;mB^M zHUq5jXz^g!S59}&6!7iSfeI#oIMHKtXC4Z-2Gbwld}gU1qV6pz^2l2qm0Vu2$>L~s z0@qX8J@>v;+lmjRD&aOTwTOCvm=!o;kGwUWsdbXL*?t)(zU8L@*1d6#i1$_~iD4!@ zLB03xzK?NwF3qncy*${lh*h{OzVFXDZ@2hQIlgc>V#*Ai^UPZ{B?5swe<`XEy?v?h;QjmCp46e{{ac2A{``mR6}?2TZZjF;en+2^RekUK z{QOWrVL_k!i$%90x_j&=&S1SkhP`{k%)>zU%)OwVC#z=XvY_iuoUM(azj*F$yVzg% zW1qLKTZuGx*F{C3d&mC*cbU9}+(J47^~RWfuCw_gd%d>C@=z?e&2ZhxMzU9)lSzI=hp5qz_P2o#SqGE2Qc0^(~)|! zb6Vs(OfFvI3(WzB+YW`~_qWd3Fc{apD=ZK~-B*zr>bBi`0{l5YHN6{y#WZ(;vBnE` zcZgJAAGvoJ%qLxAY^$n!Ce9O@sj=mKK`!looiP8%Mhs0`+Jw0bb#-RcbWpRXu4&t; z=o!96iQn~m%bwhM*& zHbW-v|M8pWC*xl)PCM5gEGa)kPlWEx4dp*XDEIFh zp=EAu=5ujhU3b^k8=?RE_rE*k*z=$}hoY|2ldukIp5uqawddh>Unwi{}Da@1W zW*p3nHzLZ2FZVsY2N6MVq@FlO5Wc?u^sRdc5DW7`u;6{+a!?=gyQLaJAd%JO#`5-2nwf{ ztRV!c-D!ePp6+*lEIS$f9MVL81nPwpHi-u{~$w{Pph{2Hp2AiYg)_kRO=5H@CLW zkvrunyX)<`Ei7^keV36J{MNWcs=F5=&~TnJ_u}8(>El430DbRon;AQ;8PIgh9nY-Y zQ=uUso%4XRJJjx>=lMx}V|_pvmm&q69YkhC1{M3oUmGx%?U0G#bWgua;vRtV&!7Jo zL{CO2x#EQBS+!pE?9XqDBI4Qka=-WXM2gl-1I+UhdD8W@Yjl_ zBEV2=Tt^~e`JDLu{SE2od4SvfTepIdi*6=XHxc_f*_mv+?dnwFzn~ zgZSj2_=YlojuqgfQbA!c26KMSgzBBIK7ET)uiRiqQfQIAeT|*e?lEnrA<&-VWH^?a zYy%OwcV-fR&+dgVaGyAmc2uzjliStrT@I2WM%?-R*S`9iMjxYlx+3+3hBlxzC6Y$0 zINJaI5MBuyNrfjeGfzg+6jo2snergP_<&hceT@{@-$Vy>D>B{l_qXV;)IYTfSHPS_ ztMm=%oWo(&?Rsa)X596?KxIU&O}PAf%e0L5y>ojFhJEjKXXxjDe*W|4&k5Q#QPZtC z@%;SxIhkE|rj|T9;52@JZ_nJf{`>d;c<+6G-}~G5_s;l<5FK%zKbb#I_pgWUS~yCk zwxY7L?)F4v=5gCY9}*PxzHi-%H~^&c%`GuKBQu!V?0$E*F;+xGRQK*V-}@S31O_vk z3-k#=v*oe322G zEIno4>28}V3Y_2j3m`I0QHaP;!k(IlEfA6UU_iO2>JDHrOiW+z^lcwr4sPlOKr9C) zB0{0JE=3}GKB^dI<{yMz-*p-ygWRCq7_g*pfDEh|qsqf+c zjp~PZlF4mM^{s^>B#G`a=I77PhLjj0k%0fcFTa4hKI{g*Ori(7YZ-qrr98*c_qGD4 z8ELxnWd0n_q@p<}4>|3=ZBAr@+`t<47l&Z%iEiT>^gB8$)*^sId1t26pq@w=W}@5h z6URc&q{5S3GvTA$kG`O;_R`hAnDZCkr8ospHMU>OC>GJcePa9zueIB{pK* z@kQ7-%XqfmJ#|5LaL|WoTH40JW~o0p)}k#IVYwm=n74n$*hc5({`Ly~VX|^o2a6$N z+YbVTDg)=7b+m?dh!Qbq7(;O`*y@BA5O3-ryC zdp~(Xiu2#wm~n91aFI&I?e3~oFmC>JJky9LwX^|lU?A)wLS*;+dSE_h`D^hRaA%-U zs@_&;If-#{y2nEYxXEJc*_|w^CjNxLE)O~orikgkWjP`(D0J`Jx1^J2(**)J9wDX+ zC`om3XU+#7+o+ld4qMV^Z^c5MK58{=TqvUZfy=Ten95=R)ar)$1wb&%9+I zg7seR_g7143hv{gTkE*>)&ep8(ITWhuu{P^dKyAlUh0j$>HBW9>%Oq#?D1XH0@MsE zjq+qZ_kHJ=5uY*1`?bT1cWYgJR1>dw7lT65^Y|bs9{s zPuO$&`J>I^Qcvh?E(QvKY;?^NatOUw&mm8HLXtTHp2skHC8&i02D=jtn#M2sCK~ z+#W(OJ-gw9a>fCJ7|7k`RPR$7H50oWn^LTvgKcNvKhLvgj_uE@Js;wIMy6G+-F!e2 zdGCI3%5P!dZT5k1*;GWsf`9LoJ&PHLLhQSkJ%UPm2H^Btt%)F&(|7Iy#}T4Mkndaj zdd3WtV4K`02sq0dUPfPc+c268Db|Oxeb(47ErEyAAVo3g1d*CM%Q7Rj%S+O?904Ji z@(M$j%^cB~2+j_!w}XqdC&J*?Ta|mS9h!sTEc9%G?C!UI_XXaIlDyLk)?)$cTFS*1 z9}q-;`i8xk-#}KIdGPjj%WR&^b`2U1Psj7@*fgk~B6I3K=cl%)LH`GTdV9Kay9ODy z?Y7ZyG8%O zP8`D@52JqbId64v-g_fr!*C)k9%;9~qQ`c3Fs9M-{+#@MulFPV(6e}G*-H7AL?|UD z-Br#^W>mi{$McM*{6-&qiV4R#x9*9}f}A`Qqq3g!4H)eeeB==T6IL zH&>wsucUyCo?5HxV#G~L-eALh-#iB&HIv)Zwv<{JomOK3BU35fzFXt#>QxIv*>mgi z$v>bkn>|!6iD@mo-P@DSnF*ZgE2_}J<1Kw+&nPsJNlaE3#M%nH5IiamV0G$5tWa~w zEM?n9Bek}Ks z;h$~MTMC;`4h?}rxPd)MM7=fB=Nv6La+>0ayq=jRXRDqw_(V7!kwbqzJ|h`3?7G1i zL9~FrH&0HF@wxZh-^P|@QW0ST(}L~@et+^uh`Jp|i%cJQC-a`_<`7SCLm-|Diq@jL zmWZ=8P?5V@v7+sxs9tYnBzq9uO#;T$I5rcbnN7sel=~gq3__%Z9DFPBp%*B)F#g+} zN0^0wKO1S7!B!Rq^sS(3M*UR^zjBM?>`D}EsH&95_H;*tl=d*VfEterrNtdCwJE}N z=SN(AJ~dO!z@TqI3*N!h3!vTcbKbv~bUZ(6eC(dR*+xdh!5W!j*RR$Nsj$6n?`OoV6V>u0&D&Z8+9?k*@iOMe@N z^nGbi%Xq?c?;>KicKXPr(tUp!Cjww_%AxLVbKt-;1Y}_~1^SwXw(ui*2Y{)JKUr^i zkL-aN%+zM_hMN(^cA&S*s7%_{*I8F4iU5c9^uCkaGn_{3?}6Hyc?A=DjRXf1kg-BF z{4-QCGRAQ2a^jMSCSpeqeoj`-%b|yBr?R z_YB`Sadn;p(apl>q=Jfg-w|e`hbPrTh%?RgJ%?;M-2G*i+ILgfd+VICB2vsHxlmKx zZ%uXlWH`!&;X56acboy@0y4?SoVvS0UPu>r!>WHOVrxKne;T;6(`);7yHjg*tyzXK zBa_o&Xu7JJM?dG`X1A2@TZ=UVI=2&#(C+!2Gu7ot{JRz6cGEz}JIBE+IXbxi4HPNN z$R_)a-BO(MG<&M^-uEk*k`kvm z@S#TSvf&*P*=kr{m3wW_Rzuy1N&vWU#^5-M?LePHNnPg#Ds1grav zOhDu)7A(RUq+%JEkufvDjPS&aXIVyFRkniz=(8Lm6-wP(nP2nQypfCRlnxXIG)wLwvHclM!(+|kOQ-QyTU_?_oG{Fm_Ka&LZT0`?s4cqK`0 z6kCTqjliRyK}~Ccfq8;pzqjENpN|X)peR%{q(Q{MJ zHZ*JI#OdjGtAifzVOE&wh}3)y;6V=@5uEirDwNm_#is|*_9EJM-*z)CVJ-AS&z^H|fWt0?1<{17lS^Mmx5s_Xc7F$HPu}U zW0ArG<*o8F-LM$pA;7X4r<0k&FqGBal8uCYJBK;<27@-mZaUyLXEIl`{8T9U-dBp9Vbt{UiodQu8HWHEBFG>6rP+a8b#eDL`nX7kjiw-$ zhq?YK2!3=())dn8)E>+;T)z8QA5z9@LI&K_5qG*SWA<~d{pr-;>+Vm66bxp=^=oJv zNQFHTf8T4*bB-eW`%!SF5i%DMjs0H71ih+KenWlQ3PB|9dm~d^_S}gdb&HTf)809R zOiVK~qyd(23@uX=o|b~jP1w-R%)P5{nc|A6i;OV&Nal69=A0k=OCpxRM!N!`j1apo zwK9jP>W6ehy}!9>t&rVl-?=eSb^rYQY45a8b?eX1A8V@qc?8tjo-{1c-6m3JW<|*S zu02%Ea2W=+@gdM6va6)@)ZTbg6w@(UI5$cbp`Ua3JaykYp9@>_5xD0TiIE`7@%QiD zKp~QChG1qY?EzFhT=LRPL=Z7E7B{hXO`%U-k z@NVVGTI0)iwj1~R{v{&CngM)mG<0Id{2IS5%&fwDf%gG9AdC!0W5o*!VTPVzFf*{Y z`i*JD6h=q#PFO&r@7gqIf@?ej0aq2p%pVJEUjE+86Rg|+?efgn(|!K@sp{_gC!d~1 z_?-B>kfGgo4!6A(TeAkXMs5aK_}0`2*k?|-ErKL5ATbths4EZ)cRcB^{kh<#f@NE&32 z@$>h6;bv_9dw%Z?0^Tt9j;J4rAHk9B0 zFm88HK0j05x8Z;X+OB4g;i7n}BLk$uCYxmYhz?fYlL@n@rhLv1Tg|O;w*EU zwpV`q{=SOX8M&CAH3Z;@l%~2}5l_3GlZJZwoancSg>GZW0e)v<&^<;E+;#u_`7;}T zC!LV^^N94{_Z>U<07y|7+Ik${{&H)%(GbOv{Ik8c1 z-D2)^Vdr3KP2aKh^|?*<{G@u_C*(NYxB3O1ps>~nB>AC6i3J6H{9W_}_AJM$d(Jb{ zds!kpZKZBILP>r5uR~fMw~N$Ze%}`!hot!PsAj&r_$>5mPB;{xEm zvs0_-vQW3k{y9IC#vSwkeaFH%&xTSAq1%cK&2T)dA(y@?yW@~NGwzv;OlmSb>xABJ z>jdLt&+hWtW7o`NL{A0d|M>eC8_SJt{VtplQ^h<|lc1UTGn=UhGPHx(C4Y1k8x97> zk<-X0x?R;Ljsn#kz-(Tx$3YFF9?6k+SCf?U38M64>$gA>tvX(pE-$CchR z#(g3fIWvkpAy?nq2tE1y-WQ&3KR<^%gc9AU^#S#K#Fn;*pPvH<+!^daBxUTXX{9!K z9sqEI1pU7npgrzKMD|P7A^Ng!!`Y4bmBN~|Q z=CEDv2>pql?y}LIFhi$ZLCx(#Kl!tl^qtS&y5+wDi0odT${|_(wksF?`L#a+F$z_6 zgxZ6tltziZ_ViMrrZbnx-P6W4J-csLo;-WRYz-z(M9RaS>fWa5M8q_uMc82M>Qa6u zHZgvV`;IxJGBd^ZR+nRdV*y*n?djQ@WoUY8+Z1FVwlED283TjBpr=0jBHd%R^Wbi1 zo5Xlfk%{SE9z2E!K#Oj|7G;cx{JJKiuGl7xs5Jbk;x=MnY9*$d4Ac(xE9 z0Wv5EgccRrlS$l!Ds{IT1rFyW`%;l;LS6Ro#Y_NzJyxtmWeb z7Js@&0~^-w`?sotG4^}k;+g4CC?g{J_wBk%VZNS!?sAh+-N~=*c7luDxm77iXCK6K zhm>b@LOlp|4+I&?)0^VjfmW~iD#VJP=l;EZC~^m-Yiqhy3!5L5cKjF8&Xl}V*TMFQ z0sp?BBI8zjJDtSVG-qb9s*UO`4GcG)hk9&hH34Fe(cax)k3dgnA)mj`^%Sj2~;hGHqyQARhspH0?=`tzQE#DKmUg?f)nwlHMp7dWp3J*E_rcH4@%M#< zU}wTB{E0||m>Nl5pR}20MJ4XB!qu~*ZA*mUH-doA&ok3+wV}B$n-n&Ph%L!V(C0O5 zG@!Hj&l$zun|RK7tKANPI(4r@ncwQ`c1IpEIP7XSBw!0U*ywEtSbI#nGampbbmEbI z>vnMjAu^*IIa{vz{~N(YKF<>Bw`EIWY#1}ti35Iztt4Gb1SWld6-Rv=RJ!9e%gzUM#x`5y({Gj2Qj zzJL%LaEgnJ#EMO*#!CT00o4)V7MRtgMgN};@yDLW2RgdfE~Yi zYLtM0_kDeiq^bt$Q+2C=F~MN_<(oEtJU)lkHb6nLxpV-$+6~^B@+KF^PP#uND@ z%gmk;&DjNqFuvU#^Y4SdzrDS7kL)||xoYE_LwHx>sPFw9C%OiF^Xuf02*X|T@vszK zm+@@f2pQeqra`e~oHWr@`&k`KL^zmuAXL{8GM{Q+zcW>r zp?{zSf>cc{^GgvuEo=pb0BLL`AeuG1x|882P^$-TetM+*^%6l!{= z-e2v1sLaz|m^!MO{A`(j-`|>dtJ@fI>>P$8qvv8@To`jv$gStkxTk6mWb||}Fg;52 zboa@_zi9g+SL-x6MorIKUwlnUU{%w;k2}hJq2c z1y?UhRbX^CptieTvo|mh5_N`Cx3HyX;_Y6nP5k7xV?nZ8nLCY;gNM@vGU8OdGgBRL z5WQcxjrhfkL&jhYBbfxprTKntjM6(ZHTh^}jjO!_^}ZK7*$4zsz`E-43IE=i5&}JO z)KeI=CnD@YPa8i1LOm^NdS)Etj+=IH9s#$Nd2f5(g)FRSQ(iG0c55oCrWo5K0wctH z?_Y@d5vcZz>*TY){cl0vOv(Y<@hBtS_g#|Wz>r*1D-w-W$^l@#_doyhpYC4Q=kISL z8GHUVGnN=eNg>sB20{MB4`xYAL#F6Z6dX&~g9)5-c2cH@&>64aX~+=R9>vl4AFGKO zf-z9L52L0DieEVnu2c$fZ|eZGQqlNEFg6)^KCr!{-}iT>GXDr8aqN4qg4V7yn|uua z{CWCassw-w9J6WL^Cb!08*cu`LT=vXvU)EV+dxnR2NHGPcT3@YFBe;UM`Xn5x!v!- zjTWDoi$R>Q$ChUhh@%0jELB91YgYHRRrgMzPqK`2&SrP5h`U%R(<7}yW5x*7UZ+fx z%+Syg*?SU)XNtRdy1mi%;lMu3>iPTrH$uBOV~FE#G`xT4-M4lh(fYHs6`L9P;kBtP z`PZ0x=CdiE6WExLvF=0y5hT|=hl`mmIEZ}jZ&Kqv`O|KA7$Gc0bh;t1*<=1ZKgxLj z{%#jgUb_{hCzOU^4mvV!BOnuSQy8%4#=d&o<-xk<+t?m?)glKoSv4gm3ga;D$k-vRpxA$v^e z?fc*;^}a7>gX<7-Fzxy|d$GRH`T1Le+An!n6Dh#I?>p|tJxpMNU^iofcY1zQcY9rH zB@1YHtd91VS$ew#R=2$QPH;9kIfQTdd9;-GRAjUicLvkUpv@hO+YwK9tte*R0;Tg0 zem^~aBcJ)nY0RJLnGZ_1jDd8<5c z80R@nufb~Jd)*El0%ERQox(bFVR+Y0V5~Iu32orq<-TWBd7l z37n~Riq%yM`AHI?JP1AK-n*b^B>_xLghFBZ>myF19TAy%tCpKy_l-z><}!qWK;*}$ z&fWO{cjn2!qajRG4T+k2C`dIGih-*tPjq+9B*bZ?h;`=CV-6Zkz~kB}z8PZmc=}eK zJVLa)dIVXkf#14@-foEzYB>GTu8h$%zCu0&y$d1~_S=Q-9g|nJ1Mb;@?Q&6`6Eow! zMm|qg_njd@L{%XO>--!H%D>A=0Tm}{w~J<&&E0r>Y*^L%Y2k+vYoxmT}tc~Vm5ym$IbB!#l4JZo}Q z9Nf2G&dD@U_nz}eU(N3;;B&bty}A%*R9Au#QNImAOajfGYyEs<&Wu19;PfQ}#28vP zg3*HIgSmLC{;bNa7nwmXk`duq-q+|ZGQQ^b9#-Kmm38;`BOuN+;#GRG5rqOi0Ri& zo#el=(EWYCEh1@J`zYEaDU|^T{Uv66-(STeBP_VV#o*FiB;Vg(3*q>9GE#nACl2#>RWkc^J6={pHCmzB00N=-ck}j1Zu2|tS6Ngd)BXRuCNJlLcK*qU^wYV!EtrXPx31o6YWbqiTuPZ z)gZb%^PKZ%W(I!`pM845v|B)))7==)+aR!g@C9@)jA#uy;C+h`+Ybg&JFO6TG?#WW z!`BpNYDqvaet+Ni^8;YI;o2n_8QsMbGvFw~XquB5`UV}0I9z>s*ETI}Ln)$u>)u}C z9Sz0#cr?bXw>TL;G|rP%xUg}$MSLYxpWw*f;Z(7h!Ph?uIGX)zH9^WWT@Z@+^@(9-j< z9>$x26(l!*BFy>cjB*5Z0yTf{n@|L*TMR_P8?rD1bH|=gm>`)?&YnVHPgj}Z0w*}! zG&RjN>RNrPjvg{TA5s^D=llU(x9RH$^Z-GnLIMhup`h#5?V}@!{s`1wKB*^CkovbH zw@qnJDcNu3dCXF%dX|RF?PpOo`G5Vt|3A9gRB(B`=+DHAnQKEx1|m0d%XPjkvmH__ zC8Bo8(93U8#y;=B&0CHTyF97taf@4?V@B+L(dKO9Ogk~e(r!|5>o;|beKh8HLMgd> zPCjqH$q?C|e+2}NXBFRjI`5kElcav{+na7ePa#iCH-(5(w-&I>IM0*!_xIL&@{!V< z>cXA;`Qdj;<|1>C`1`)=tlsV%1FjiF1O(08kFoPfTO5#bS*<`@@g2%Sapxnr*pnIl zzG_4O+ZD zM?3(kUzt=cKz#s$hr0J7&vfNUuQ6a_8yw6s4;JnM&qx{Kz1QB_{qp{{4Re)`ZzFdT z9(@f?-HOPNNN%fGl8L(A{gP6g?mExmaC@rrv8xJADBPwNT%bd|H4%Z(yzes8V4Uaq z{qMUU#&hz^8ZFsHbkFa5|NNXd`QN|4L7vQeTUz$=E~2P4i|(cS$nBmnIuy1xKX!ZW z?{7T0Erw8TpXE7wJ{~gdnx2eY-tJ;VmfA^rtmg!T-`^X7)cLI!OIWL~T^bOUs!~gE zn;pq*q>Pe)d;2`G|5%A_dp+vjbHkbd_l@#Q-2wG=4Xe8HJl&HD8||x2`|x`V32c5? zs_8Ki5J_wLUMZ?-E5{2cG_f+8jPNuig6$^h#%vOF?$7hA@YpkxiMpUOpQ_FvfcxHa z&cI|$cSsw?qVaYG1nog-@;P0FaYhbjCj&kH&p7~o>n39rP=C(zJA>(QhaQSuH@1Gg z_v>lWVhr5V7_8OdR-Me<5^}8I!s+L`adG~)-Rg#dglqQulH4QR$Ohx@`}gPkRM)Oz zcBHXvei-}bq$K0(uaBAGC7)OABX@{o4C!yoT)U_6K(R=DHYWEZ1gBC`-Lg9(L-CJ( z3&Ud{9T44@ncpve`{`oWJ(<%`;#Luk{Hc1U=J|OD-0BU%-rsgI$jx-|e_7_RtJ?^8 z=0hp$u_;1sl8A`4p-W=yGh77g{{D+7Sk%AdgU-pW+Bi+moKzXW5OBksj8oN_vO&9Q zD4dhG>UsWW=IurVX4o@?pC|wR_svkAr@JY%r++UcMx2wFuG=Qo5Cjkd2Qs4S#!g#i zdewcH1=(~@D0fv75#4pCPCneKlQ`g)KF_@O?twVq###|`eD|zfuH~|t^F*#yZN75I zPOWo1`nRu_xaIRPDY}ZOh0D&P9al~QEx%$=>rb-8SDP&P_ulCF$e!7TfVd4*-ma~t zubAo9aLYe7wLxXj8W$mdqRA_6hflSQAO-$uvbRh@yRpIh0q~sYhBuT3(32iQyRu^xWTjg~%u7`=Cx_DtvE$lGEvk=r#ciYWieu*BOfm2JLe1 zoo1^n`*-}(b$O!RQ4nNTky;|}lllAhk>WYVboIYGE5O8DBJ#w1a7OIBwX4ZpC+y$o zhV(pthRs!@t%R5f_Pra~U(OF^Hg-i3#)!fF;JE=+H-S}u+_&~4;x*|~cQXrtDUWfE zz^wP(Fzhms&v|B{$e6ZQ0W*y}OYZ83$n`}mGG^y7Ug?U*}%k+(^&NV)Wi9`DBo@q)w29(K+ynDeqLXC$eYc9#= z1U@1N49a!;oHW+u>DmN2k6FWA!clpQ*;V2`Wwt7U{n*B0*DYla;v}v2_Xu1Qur+v#IDtrU3qS#SzJKo~5fBkvh`+-rs-Gk!u7;TMOB^Ojkk9 zlcF{%vvevM>Q$bNYnJG;=uUr?)y?rorsDY@f6d4xaWpO>A|=4xT)r-Xo(2kjnHRGChnu_NN%CI$kjs*+8~@bB*%k*ZCxDBh1U*x zidynrz0^X{0rNaRQ?nRc!ZRa8p15`GijMW^kgR!0>L~dKW>1F>gTl-Q10pl}UQ1xq zDiG+gF->aUC5N$06$a}5V*Et5x~DOthz;P^9;~^40~7vRcY4l~M^DxD1lPA9%v9jn z{7}uSIGb6q*=`+m6(T}tW5$cOH)d+`&q?U_{sv>is{7>p>cw+Ini^*kozI~`fyQ~B zuJU(qn&}I!DaT*bAlhJ*#xT%4+CNJ*N zi%I3LL7=^pg)fsvE(*R*(UjfDY zzOkwXVLmZ2Q?by3>28vP_VDxCEjPo6_(|36>dHuf<4$t+L5_THDY&2N4~4H-T>avt zK<=ato|767c_Q=?HZXZkSFOm_ZZgd_%3u} z+wI8ow8@rZ1UhC>3dT8qX8v|Fgb0@RCuZ*FmJzZMHJ+}_1Lz6g_nU%#n@CKLw&iVX zlw3bQKV98aq-K#HL_y#C%A?4c>O1G;GGE;lneD3g<@tGz-dh`>nrRVZYSZGdzD`Z%-fH$~qnD){& zBR>lFXiwMnY-n5C?NA<&KZnhEt3*@6_x{t8P$S&qp6)J15IE$v_~{944K4xS{slx} z8hgNa?=J@MoS&cW>ygsPaWq%(8YFRw6m?2GlI37L<&K8Idn5cvSL$Ktoj=KHpO2C?N68P#1x zXfRU{GM^{*`a(C>lqN*^^BhD5p`nwa-K0Ht)f;;a4SHBT+tRDHD3MhqF+==EocJzi zs*|S|%3vtz-DT{GcDTPyko3fQD|#q)H})_k{98qJP~%x3DZT-GPQ-uylYoDJui~7D zbuKIdrY|BC((g57X+apf5sno)#Lfs7*&W3AoCowY^BiSV^;g6kRNZ_MKm+|=lIJ<1 zFiyza0{uV2P{ZhRo;%p6__mqb_dIz-PmLXn-~0RXJlk#XOnj;D859s=)a=hy-AghL z00aDxwdgxf#Gm)}%&eEm-OC@fK~E?%cc@kY!np4{F;WI&>2iv*@AlzWrxTHXewJ%i zQ{3ZpsNaj-B*AR(kj$B`?qs^EJQ>;3QiAeZd!sw&m<)?XRd2Tg-Ylr5X7XuQ|K62H zDu7`!X3u9_k!Mg;3*H=vZFe~(XlJfH4GC5Iwvv}L4cd5nLbW3UUP9d1pXJ zEbre^^vps+x@R4@-fmxCi?T(Ud5GnWr8pCA00xRgH>&QR|M^eNb&d1`qTXL9DAw&r z+1^BQdvWkaAnf0{K(t5T6VIJOdJ{VYDfS)2oK$aMaf8BrvDJ?rWGs}8>R=agnu zE#az-x?441SHnKfBM_njYGMAl0|A}<&t!Xt(v||Enua-Sf4DqB(;j%TpGX5}*iNm` zedX~7s|?>TJ8aKgE{z;<2z$^CprydL+iLGpxsBx>o|NGxt9w_#t0!74(asjfH3;x~asv4M{q^8H z(QY)vPwDsJieb1vU?>sN?ULD^5mFNSmQ5zlxcHU7H#}TV-y~RGy z@eDBMIWr8RJOhU@m=jOC>R!bTAEw5l^xdu!?Wt)fPVzj50Xd{V@aK6>{(t~xnTxmH z8K%w-(K#y^LMXki*Xdh5HTAx`tju##+A8vM4kI%kG2;9zP(RcRMTV41^cv3&#UWz8 zKXNdn_(DNdDMrSf>Y2VJGxM=@tG;*3tz8Mh-$fkQjcSO9lLpP{_S~v|tE#(cuH=GS zXDEMO7!2SRY=IG40s%;m3H}O69ssvG6kToQU22b$KCZz{*gYIOk+! z1WAPvc?6Ap&H=_o{+#FhP~YLRdwMvYpXU+v{{B|Kd1AIJXWZMfL~DRztlgI*Ap}kR z-l-mDh`RI6R0Q+r;{nYC_wqa^qTk{0@}Xm>Kbc`fc^!w-BYV^-8t)`KlkOy-8kiW zf)QVTsP23ZZt-jM>D~=$X`wz#w^}*j*b90VM6k*yHzjB9b#o|gNOZ`5CHr`gV0iO}Fx;~W4$>*HegN~N61XzOG^ZWOARk-i(-FSfEHU`&5hD1avl>pVq zPcwj>BrC(@(bLQKn~_3FiUappd#qjrDVZnFb9#KIf~vY1Pl!7Ej%$!{^2wjIA8b_0 zXfb5|Gxr7j*)R#ri~dw9ae8X*UF5{yzrXjL#EHyRQ&wNo z7O*22?aJLLiF`n~U4e^;+#?77G8mT*qU&L<=DzJD_mnI99KCLqQ1 z8{~J=17UW%YcL(kwS9YablvdEQo~f$#RhUW-^zvJ1J)2yCUr6}4J*$veBWP6puZvn z32{mK-yexw?Nlmj96UB=Pk-PnS_8;PC09eS#<@j3O{u$RMTTb`(9>>_qykaZ=ZWWu z$gmY+a20i^?)``hv6^^kQyCq>q)tk}$%T3Ef;tD?HiNzwfn8B}24-Zl~<$JoS#jbDogOGnkVZ3;>uBH$=0G>>1boO{OOl zvb<(u(cZ^)Gjh+fK*OW&qwa_U#7wyh;!mc=2J+_*n4Ts(^LRMDwohb+5xb5LMV`Fg z=_mRfPTxYDq@t%be8B}?PJ8bZ;`Ded1;3RjG4mP5-S7K${~FvpdG&RB&xGA8Jix#a z4CN4#PM#eIOPSKo^H73<;B+O3k(U1Xx$Qv_ClnFN_S~+mWb9!Vnv(`sw8N7k(KU75 z?_J5m?T(W_KYt=MRe~2ZvN_6Jz9Z2y)qe6x#`LWj!svPOoIJ24EU4g|!`MmYu1nO@ z@87?@V6l&U31vnI`Vtg*@-VidI@3E9QQ$l=)6>q(bDrsid3s!X>#;C4!y$Q^o{hf}yn8aN{B3lxBnWP3M4*c7*YZA>7$YraX~{KQj*s`orU6k#tVZ&O~x?AP29s-fj@ z4efr*5$BwmYWwFA5Vz+!VdGYDI?h8IN7#Fi62{4ea65Izo^jWknZcay<#OjcMMynS!ID@XqXS*r< zkzwAuCNC%s2Y11ZAjI9Ac+hBIN4=JIp}`Zmu$m8y``gPTPaOlm&_sH3oYsLHnfDz> zXJkMK%mf8(@R-^b9fBtw*!!`so^`5eTVY~V>nE^;NTKU;@8!$J*yJrdq^qhXwDbKC zsmzTO@U01a-=SyZ;gHem>9!y0fBv02A z#<8D3kd`7gybG9H5V1E$dhd(i&pBh)l61szd*J>T3J1F{9J_q;j2SaC?(On(p*nLT zG9ujej1H$P9I#d#M$+JPhajrm_K?a$G?|;d!QXDwh>8aJMXEEyWL1YdGCNea@ReR1 zATly``;`QSKA|S3djCl&0*V}Z;(W&tS<~&b%mx4@J?GR6dhjo+u79kaC$nz>kT(?m z-JWEE*yq4^ytAujy9d)7{M^^7?hM6@L;6#e~ z4TaQMgyRWK&*J*gQ0#ZHN&W-7vwEHg!y)dt4rcdfA&3oVUhDawQ8HEO*^_U}Vq5DpvZJ z(DUa%?ZG&xv2ESo`?Il*X-S7!_Pu>FGM|~jg))J4B2*O>RL1-JOYtWj2Pdw32TEKd zRL>-|VvmgUn4|j^0vQoMM}zzO-^e&neZIW!t}>%XT3AjfgWRhpgYYCo7-3rvPq@6!g$z~M+fcv&NQIU&6Y6fpt`w)(icrr8`)kTP0&bUW6!Ms0F+>l> z<%M!Wq_V0b<=&r`Q}V)MZU6s>`lDn?mK=!^Qw3liS;IZ>i@W3pcf}9xYo;>709Ag# zvqoB^rK|eYtNU(7xSIj0=kRTSF+z9NX7Zf#1GkKli8ktUa2;>rGIzS%qc_ByDNZoy z*tbQHZ}9=$fKPi03>l8691KgVk2<>yMeS zy}7lBy$oX1IH-$#YJ{o#{IS zGclu{3Gg>WID>H>N$bh_^XF&)&h89*nn6agjanEj#d(#Ajn(u9WA@iI{hdp25808a zxzF>_me_M)ondvJxP3JnMmmTcBp?ypJCbI5_l5jUr$bWa<_9bxia;Lvr)x*%icaq5 z&&O{Vy@ANsvN6XSdfm$AW_Qg<$TAq5O=BD0#yf(!N05MF&q7^`rH$$>z=KtlqPTfT zPy_?_-pULU*1atw53xe{I?$U)1RC41^F)A-0ui!fY#D0jq3P+4%&6GvIq8|HcuxKq zwbf8qM8ZI}6`4=K#z<6UfqW3XAQAY8ULNS5z2x)HCY>S?Z_*ajDIhcy-(VNfSFM@>S5JRT(gvO%7xYM#L&PMGq zGoAJ^6kCot3`b?Et2L`Fo}ly99A&Y*+2z7&HqlP7<_D~E;1RNt&L zJf6&ojQ{KZ`fpY}q=*bYmH+*IGlGZ}mB5hYo~&A?cnrjL1?8vG?_R{7JtxD|fB#;a zl>r8(hYkc9A}SMDP{j4dNs3iDQqO(clu47H8E*)Op&4XU<^OVzZ;1uQ&;LcAI@lK& zlnhq9sQlS%oe^14>LKOvXuP5L+@oE{SZZWsbc+#B?SBoB;hn?)@stOnd#WV$@Avs+ zBE5j%OuGXZ!*k;#H@9#09T4yK`_0tsh}~ouimaaLtE^=nN5)yw9EdyL>?APVaR~0M z3PjBKd7_2qIb%Q#X<0+-PHjziNVI8&G|Lz79_puUM+JAlG2iRt$;yb<`hgTtWI87q zz>xG_8g~_dfmn|2cWrb2^MRCEOQSM;zn7rJ=loG$V}J9oe04Vt&1#H)zpsgN4kLcQ zMhnK@`!^&0Q4a9;Z*P8XKVRMb{5c!CwPyy!81!4|jl8#mYK^6RFh`{Njs^q5ktEr_ z#tvA(=N#`a0$jK!@WLy#lVv-jw&v6`t$Xso#yBHz3doiSJg4+i_w_K7ZBV zI@92~UwFGgZY*>IM~lRnRkr{L%pGFhN2)*~GDYqpkK7;BTO|LSTm&Zvi?>_HDXf_` zY;D9PEWSH_tVH%b5_q6Hwx{P*L>^>}v}6fMRnIx+c^;Br><$IV2*0*EGt4wt$$eXA zf`VE5j3YCmqTaL*BbXAfWNgXs^d0Mt6WeF;TBjL? zeY>7$>E20fAd~M(9VRoY|#jCbp~DV8jny94>n1Q3aCESPCSkNNIE zQMua-WP}Dl$X=n2#b8?g`~7NN$y$e;mu4($GorHZ_xtzv-(E>VWTXSktY5zbz>1ij z-TYbz*3A8V$D=#_yZ!t7o4!z+8yk*|&)#lBb#{#f5@>W!&v>M1liU!Wr=>;*a({)} z!Lki{yo;lOJGlRtI+aX}Eb#aH$?v<>+tv-t%)J-&uiI*D(`!bb^N9pK5jFDfULdu2 z9wVYQics}z`Rx9_+u4r{YnGdv#bjh~;ra#){r=wHy-Tn1R*Iuw4dyOi3z!*M6&WYO z2?FGk4?I}YQsw~NQ(1LBTXWo8#G*XUsn&1|JD&{N{U!z_XRRh_$!&hJ@)ZdIjNL>R zGZ!bc;8noTQ=iBrVmTE+aG}X^!_3eq`HDvv`=NYUg0+pffHA*&EqiS$LLy|}+eUoy zV^3^es%XdUpEX*EpA|um)vqyX>|f7FL1O&=Q$Qs16uI!K_ZYngh{*65(?Mj0pd=Tk zZ6K={X25b}7(?1G`XjbKZNGhjxxEk`2*2<5{(iq%LeIvU-Rc=>=HBmGc;nwQaS`dO z>9OHpOVi%xRYZl^_lJyAiHIR$8{e}PYI-|>(EZ--i+@IfEj{90_y|~xh^M>1KWoo( zxzp#$I_qTtSg(Q*H$Q;eG6XXRkE@ zdHkw>K&g9%m`yz_WGRBhB#^+JzUV~|Mn#>EHOs^ynU%=cBe>PmBY}?B0Y<`}tGCRg zyQR)VoRgJ@!Oif*{&-oD(OcxO@BQ`Q-rE*XEu8vP(QaayFd@gz^%j`Za?3$hW+sfu zdL(ZK;CFA|-{(|)?{1dc> zBf01M{bf`J7gr-Ng88ZQdDc27p}lW=Jm-8qr+X_3=`9&Lm|-n}XXfrDJ;F55SDD#v zhChG)b3T8}u%_yqtOc>{ZseR(@yy8Go3V5h8P5}K^}QbLUe`7=Bg(!=*7;!c{WZLB zil}1Pe?EUC^z`q)-|l{G$a0>?VAU$u-o=_nyWt05?IO>+@gL1>#CHoo6&V$AJQ90b zCC{Hv*3rnLz@CivF+6&~cK}&uFSUS7t*|T>%VK6ymc;@yt}IjXK;8O&f73Evv7APc zt51snf43Ps01WTdcxJ}?80MZ}l4fKE90TrxeJNhy4cd7j4Ba<~C^ACV!BGEp4GO}$ zT3C#?bWZ*ItT~uiX?T#(&WQNt9EVn9o=R$m(_Ix=pIKsZaC-7oMfA6qcfRG0ibK3} zs(*-2EFv=ibI)TluN#Fks>~oNPUcftPd>34bol<7;-W0PI|K-rUh*ImW&?13K8FNm zGGavmFas3F;yDlEEd$Yva6so|K5wgmyN3rz#Gw%ze5xu30DSWKe0G&2O}F+D=VZ*? zMW^;C2B>v4W7!;yYl#Q+si(4LW@YEo+Si!vjA+fTzrXJ_{eC}REq{H(}BC*k^>Ao~7`>oa<0Mj$g&P}KoLM*n_& zr>fw<7Lo|aGk2zA`;lJpL`T-rlxcb9_Vf&@7#Wr8&tybY8NA=`9`f&ogS`66ELKHo z2Be{#yvX*y0tWYr=8bvgsz`7DJlfC4y#nx5<#~FnmW=;lV8_~=uU}4d!-`0FQ8SE+ zlRN6AAtdVrw2Xgeyjc(Z>r=;JW)#Uv;yob$;|Eikk$26Ftc8&7%#0DEyJz6mi_)7B zB4#5iVUmJ&RKh@#=JGA_1;qG8*{!YYKmW&nV*R2_ERLq~oDy@U|Ni|8`#FCyYdrny zH7f-oGA$sTnT`c_DHE@^C|53oWfvu@GBVS#>S>&)=lMwL9&VA0@7;O@9gsnutiON1 zqpmDQj1gu<@FeVrGA6T->^pB+#Ne!i?JBl}Gpf4A!ZvlC0~Umm3T! z5C*$vt4&!8UqD5iXOU|PhA`7DjYsNxzh7G!an7?Zd>OqB+?DJFxc*^Cw#QX33MA_R z!(K+D$@7loa;Y{Caw}x9ITje}WQ=zx6B*gp)6+e{#iZMGo!B+_I#?FQvtFb7ovhp; zi>&**8ufSyW}w0KV}_Z*c=5u(^GU}>b1muig?S?FVPJ%P5rYt>;zhE;eE)PRqvD+B zQon!5X&L>yu+5NnS8tOiDvi1;wA2BfsLc)#QE`NS4i5rYNkjqmI4i-DMw-mZ z_w|w)F90Oo`m&RbJavxV0(6Wzv$zxu&F}Y(ofbGqe*T==1L7-n05%Y&L1or4H|RqF zy^WFWKRj9IY?t&o_0qe5`4`)dRXh-pMFQaui;y&)sm$F4Z^<)xY-)Nes$}jcsMX8g z=l|>f^Z#RV2d)8}JiasH#J9Z^nEVZ@UVMVtl8oN)pI@ZvjERhz#0U=bW-;p<|J`7v;#< z%Fe#teXBQ85u(xw;5D1W>s@sUolCe%%9x02O4OE%j05tDhf(}-OHIcR3 z@9*!{$zX20ayLOpRD|AB;v$R|g|~?|?aAmp%1Hx8fZTBZ!nYT3J`riFkb+u%sz$!k zf9ePhT3*fHE|`EZPWTQFOztszAxw+%tZu1C0pOq|Mo zJ02;u0~lnIdw3d(=--V*aBCRvRxvX?EGTj@bPfjPUw1~VuO}nrH=K}B!gTM#CrJYS z-Fcp(-I7K#S}nt=)LYu&nvWw&QX~xS@2%hAt+TQ!eIia<&P~V7o}?GN zfQX*iZu&kt8Mv*bYGlM{cJ>)r89Dc!s;l?N5|P{RS;^Nvn=4Y=m{)7aiVF6XfOA6n zpN*2s_0e=}SJO(yvf;eGC-OW`-@9(gx%c_=cm%}$2Q#b35zO@c4H0puD@1}mS)2dS ze*N=M)7|+LjN8B9Cu1+MXa~Dn9Y|K5lhS@b2)J@1@J7V+*b{m7>`cbR@qZ|NIG6_1p5mYA&sf8~pwLvL5V_F&Gta=-#NP z%hWYwv?{Q#B*?`|1bA5c&&Q5C1BO`ghW zO#fXSF1TO8-TULzk(b2}&Wona$oK-HxQou}S zCg{oM=vQRGFaJ{ex4|Zp|X&-kXd(M;zGC^N``_wI|*0FDt#XAY*8a zBaCn&p32`HYrw4(v&V+IZ$w}ZI*pm;dFkqz3Czr#sy1K~{@t zYCoqUbz5@Pk$vyCPH3N`1OumPb5i-FJ*L2c4>&|J4U7P-=o{D@%k?DLG=$IR&rFXM zYdbs9z8Q%(1f1w?CmLCT9Ix;0z@m=1$CuxlXHP91J@1h6x z>%d03T9;dSSyj1YV7$u(20|3tPNM?7PiidqJD5=cu*PuOMZP;<)Vk!M3^Zp_jWM9O=(C7}9?CC*9(8baY z$H$63Rd>95h?y^v;TZYeD|;15bMG!EijnbT&<$iFiLr1ufOGe}Mc6w>408zn{r-}y zEYH$fLJTs-BhNr<^Ofw;^EqQglhNjnkoaZyE*n5Ky^nm1O zMO|Cc1Bsoaylvx*CGHAd>Ex~|bSEoGVD@Xfn;(?DY^~V3x?XvLvw}ox$(-xSq0Gqr z12IDSMV9wg)B|z}?+Agltac)*@{NGcUQdaN#ADw~LjkMT5O$s<$Jzu1K*$jhQFpFx zXJsPd0K0*YK(LV0vV7SQNr!tToIC;Vb`GAZN16dMQlmA%`VGb)pGZKy*mxsh@ML{Q z``@yRWh$0{>25PV=V79|0Y>G{iZmU-^Blo*?|1%M%;N9f%1DF>@=V{&8Z)5PqOCVQ z=ql@##zbO9nVC<$o9CYRWH3$Sp7+-HHw1mZHh)1HTy)psS@NXrsG#062%}O~W^O8} zp0jWB8TZ^>hH}*qu|Kz+81s()6KETDRn5Cd-NmWje<7XBmS*NTHJDhGXGQl!ZX^mC z3(5kR3IF=y&G8CZ z{|GBvc8~B->QywK6FnaJIVZq)NOH!R3=JcMJyHi-7}sH64v|UvFakhjv}1ZUqpuN} z+woc&2ZNqzOlID0`;zHVR$SS)Nl2;+(Y{vroTO78a(2|iAnotp21thkD{ur?`n8bj zVaETs!L#~ z+mncI4+gDk3*^0Xs&=Y366BuC+I;^3sM&jESgo81CQe*{w)r2CC;PMHa(W zY!SDD%;M~#!QKdbMUA0WoGci-2e1Y@b*Qn`zhA`RayT*|PosaoI#1I5{c+ox^y^Om zVYYjhW0E6*Ef8*41JWIWcWrrjB!Dqv&lCdh>4DQdWPQ$j`}#*fcp>zkPf6@%|N76L z&mBclSbAdYD>EZse-_Q)=nXIw2wAjdT6l705i=oxdZGXE`+f7&!}z_wF*4AzKGv8q z6A{sFgBg)|NLH-l!kMf9s91T1*&(taZ`SHGUmrv}uF-TOnFs_7m%GCyF5 zS6aoRgUNC&d&fiwDn9G!QM)4V%=0`8dGPzz6^A&+@}zpLLKuf!t0Al^c;n4&FO3)F8^JPM4;TV_+VgF~tKW`s< z2@D8^1N7*(M{wW$SR~bRV@rGj!?T0ct@>F=#<&nIROZM@WDu2GZmLtZ8?!gB>1%?< z;?&3UhF3F30uexWn_z6Ndb$2@>+~#}hs)g}5wZe_Wo!72(RGV&Cm++l%(SDw9pQRD z(nS54xmlSJJEzo5NvQz4ONtBB6^xxhIVDXm{7uZlmrw(_MOafIg2w4 zgaewLR|e_Pk9J08rl-XyQf`aP$Ra@XjjX}FKUI~D+jolrw>wB?qQ`Jl^qpX0%jxs0 zb2MUN_VKY9E#TX0ii+ix?V0pFW3U+3xIQImt4V4^{bN_G!Y}6 zs&2b8g<{sp45q_XnaLUZw$~0rXE?~r%nE`PiP%D$nbRFdioiLaT!Pn&Kh{+*+}eXWwF_0iSs9E?Jw8uG#b}lrl5xf& zkxU4g`J4Outt43sjNg}EtJMwrQxCWtq?Z&$Y>~tHJm;J{dht-CT9tXu`8-c$JyncI z|GQmr+b2-GAEkJ$gKq>l^H|2KYexTmmJAkiEK1s|Ej+U#o49>rKQE)Dq!HWP3Nj6C z*-0~ho+D#Xg3#M+yuTk`yq-OVG1FHooOL9~7`HUm#JT`y)|>%oHobv~*dqo+yQ0qL z)P6;PMTs#^o^zha6GQbDAcJrP>ueV#XL?^`YGJc_o9Q`kQ}%rwWoa3yS@oRto4f>m z1n8=B{*=V$sXu@I)H!hSy^il*+kbD{vt(zX2Yzen<{lSFK6Q{$8RNYH+3o#`)7bBL zWyqSDzUpa!!`93^l|cS}JvM{g&BHwBaH)R*!8003>;5~HId?{*_V0HW&Ld-P zL*CW83|b7H=dm%r*~IqPw3FL0rmafOcr^5+Ba;FHR_soQ{kxkrGmykutKwf}69kYO zaDuIk!@B`jZV|0c5CX0D$}#@^Zub-;z^pn^+D`QL9&PnF{D$ZZaVig)BWEBZvFOmq zUE=Sxfw70AklVAo8}Y4C*w*d7`r!rVd)wH#a~$OV5Cvl;yv(RkHxMu8JKjAz4PwuP z-tJrS`Fx%yHSexiy@g(l=DNqz{d&9UoUsw#xl5st-93ZN%MpcS?KT3=Djc zL;7AqPku6ET8q5h8THmN#_oGpgZ}HA$$dLR)7u;;fZ3d(z&d|+>pPm!jSQ(b($q7$ zSHkai@y0U*pje=$_50oo{Q5#-#$lf4v1Y8__rH8ch`~sJv!GeycYiY-5%Tn0CVp;2 zOnYfC0_frLn|maAhMU3DHpMKUo+P+jh20$wMjWd{yH}2$*5*?Q2ACyXNx@u%WyWE! zD#u$bkr;LIoKFV(-o+m-*(S3Vl|i6qi1+`YncX1>>fIk%|BB}jG`(m3w{Xdb%FF`I zY0dhaA_Zvf$ZgI1`Zv?obhmee!%A$eLE8wbs`~T!gdxuWm_TR0HqE2nDIhYQIyQG? zQq28Uco)-VR6UWhJX>6Q*Pc7NPlC)s2L;IdziP(x^rf{|xi@}i-``hbM&MZ- zoz@@;VrDWUq6BH?sakKvIVUq0|7y+s{XoZA_Aq449gOQ!1J2Cnb1E0Wq_6?$-)GZX z!@v#?JTrfu=bVSg(MXO;Mz-)ij^T{7_I>3U6}>3oIF)ldSdqYJ;Kok9!HE2qxF;)5 zE`#!SZ>&o&(RcRKAqIs^V(F15d`+TG&Sm$Ub9PEmS+AyKr$+8AqlO0?V~Gfa_bT&_ zrEOz;{mb?*H@BdFPpv@zh9`@O)qV>YM^+?tm6c<`u01LE6%az=i4z}5eTM`CNR96{ zcQ=NaCxe99ed`==H*s4xN>aP7Mb`VuM~<)LJmoh4R{>l4jw14TBEJ5uk99#ednct^ zI_KFMN)~%`f4|5$vAF)+rf*w8*zA#{$^&bpXqzk3- zU=}c(8Ibs#gC%DNmupsWuI@oDpgrx2&Fu2Of4^C=?c8J`(2}JC_hJNVIpxXZ{5lL0 zSNhL6w|jesj!KpQxKr=8Eb1IFn9L1x6ZOC#7@83N8JgR!q{Pza5Fe=nI;wHu__?moCj)lI@C zbZ3Y4seKmqtvoATucBJ&*_JE3uk>Vw#;2a;`(=g(_xBgfrB~tJs>+P%$;=?O8xVO& z++VLvZ@|hN_1>r*iHv$M;h9UHvMvNici*bAO9iz{e5Yi zCnBoVeMRVe{%n`s>N>}E23`zzhCM{Inj3@#v0PUHa-O>P5{}I0l!=~Zghn&td2jeT zjz-WUX`8x~mbE9zRWShG)AQ~Qp_8;`KVlIPIc`pwcrv!|lo|I5T2~CpF%$-wYkm1; zX0p7`xG~e3si=E@S+REwI_fEnx>ZjGd0UD7kh%EuUR(DW2PYt*HrO2zTS3M?mG_KG z#Qx}IOqy>G46E6$t0e~-N@K=xyyB) z>AOTD0yeVFsNcynvf}Kz(lLZZm=WMCMRmuA5Z3#)83UtxvTEEgbv;$Ww7TMe?r!7V zZ)^epgfuGw$~Y#bk!b@}MeN6E%|&}J+MkxD0CbO~9loD>e(L`3Uo%b>Bet>?NDsO@ zQXVh6{oB7{E&Md1WWPxrtW>T%8r{tE_D0m6!8vt;dY(N~StUWYFBtoS3#f0_S{^O*kA@w@zA3S%4b?Yfw`}xi2bks{QX)pD~qa#NKa2N zNk3J~%OsgFx!;X=@p;frG)H~!?@m*;WHV11u``G9NO~eNN+uIxFTN4JG+v>1tH9pT zW5&HBT>(L!=Mem^*V#_;KYu=~@V@S|&Z&I6F+pj=*33Ayd9!&w&l3?5mXVYM`P6#u zzEbaqs>r84nT$y9Ey^T@L|=K&j$l5!Wvl0$Pd$!EgR3cQPYTgrK{1jqkl~XZ~A`6SjzJnSq|m z;1X>za~TU6MH<1k-#V6{_V3<^eCk;O79*s&^G^Rc+Q-p$FleY%kxuI!VMf&30>p}a zFqZqGq~nyff|wTy21Wg^b#cJK0@!0saCeu*GE;UL;tqx&Y#$Gf%58SPCzxdusb zA%AP9c+(=J zaEM!KNBShFX?rYBcS|64xwLE~m?WO3{`?<*PL?nPifM*h)+F3s;iS6n@AucHlOS&Y z_=+(#Zdn0I)(pTrpT)`+6VoH*%Nf~qLeP%LiW6Cj%Fqm~UW`Wt=-92eJpJ>`?aNgn z&BjmHPos(j^Lw~;m6ma@?(f&Wku}o@>`?$T>8f17M`k>q&n6}Q^E|uC$t_$i5g(f) z8l8^7E}ErhJ9tUS3hX1~XM4c57(*i%FJ zLW}kSnM`}?JVYe)R7JA;t}{0u#!h+zS&2aeXR{LjR1#int?{Xc5lgmxp3kXV{xE|` zYoAK@g*`s;)LIt7AU>xe60Pt3(LT=^SknkdnsJ~Y0NhZY6PfQqXTL+_es>|f&8r}5 zKit?W@u6l03;jc|-Yy0=5WDoHs`FHx!^{%+?O_rkk@0?`YEg4zS(+NZ%k@-}`)=^)`?BZUodP|>691gz4n=5$-7`apDyFl=O z12h7f$&)>;{$-T@adMWZGvp^qHFWJTd)72CLOklWyZFcrP=?eI#{rEaW`zfS^}LRV zO@}UXK;!qE1Z%6omM7vMqxQx*Z9t0$jvWFZ#EptxoP%AzBHqUUJkyZqRUvk_VAbbC z32;>{gHtxF+5WZ-IUF!|6(#6*??R(r&iLCM1Ig#qUK)+XO*euOxs}X1pYBU4wipK( zKHJyc-9|g;WYqI)#~RXL%4eO0-M>KE3(VR18P;nCva&V^x)P=5}z(z_^h#Mex66$rIcvxFKuQ%pO4&{Zr8SLB4g(`dNJ{n zamIH%Pdt!Mrh#+zEJbpN9BjV7;rRRax3kD|3g+Hke%5PydCeGpPTJ-vrlg4~4-qJy z2>n`V3zV~-XXh2WsI}tPZJ>gd?w!c>$2&40&FvkQdVB{NW}ca;ij2f~`CEaQRwlO! zxN(||2a(AWJ>!Uz0fsy?i1cRXes?O9fpZoa-u4E4Gf%+m?o%ZQ$y7M=cgN_6Gr%(V z0*rdBfd`1dNI^Ka#Plq{QGMHcG|dF9R#s%@?b%Q4rcml^3bx4&EIJs^C%fgfT~T*r z>(q0ie&6dclUPeozj*H=#!Xgmqw2%J?S4L=B_}N}m9-DBuohvxA5qS)nH^)@iX7F`&bzrVkW$vo!L(o*ho5)lkm#NWHYDP%8JR#)9`|5hPyy?y9{IM4q$MwSPMw#Hu@u{$yBTphB}S8_5bCTUn5}qC<^n=ARlX z&q-qo&u*(Pz+Pemu>>K5iBQRNlNDsc9;H)m#O%b%QnyIqMrFR-O{Q%p>QmcM7nF7S z_pMXnE>TUOoRM5+$H2dtbY^1Vb*oKe&p3&{^3K#%0 zIZL~*_X6|!D8_{LO1Y~JL8?tjGcz$XchBUCbf{Yknpy&v^dc`|BZ{8Uv~*aa!P5PL zh&t03MxGt~aUVA@Ti3te;dv@%=7|&FaC*eblwC1%rzdtz3KO*aRQAjY3JK0_#+LYP zC>&Ajp{E%Hj@og8fO-}}@Fb7{yZgs&nnk8%*)y+Bji$(emHs=MZPv#4 zM&_adGYbCwTC9bGaqE#ro&tTp-w3Yg5K=zryM2c6Pm&{RgK(ecS-_2jBKa!o>r|m{ z?_1x}pU?B{_ElrDQVXxAV%MX>sazc8%S#CVpa1>u&db(%#|ZUgC3d9bO(Cp@PLl8Z zB5Om#rX8M9#W7?3=2Cd4ozMcMfA`i?S!cr*(}P$$N0??n!t$Z7hUA}o?(L|;yw}zR zA=67%Z=71IvM6$^#8E z648D4*Ei#cxP56eN>D~7R$oaf%CvwW+!BkP5T5#;=U zR3dHkI5Qly<#1+wzrQfgQ!sQp7DT2Tb-HX z#<-ryj=tTxBxawTtcvI!&k$a5-ri4O&D@BHOuvocNP0{Xm3h&@WXjtBqGc3?^ln{A zHs;i$8PYONMRy<}YkTBH4l&nN;iYII>}xHX9KLdl`9$${rz3Kye)L|VnET*l$F<6V zbZj1SD_)2#p;JWc+ng(a+*O)qOH@N9gAqBch|HwS2KxRGIQeu>ob>->=!bv=cSX;{iz&1}&qFQ{7@7I%fV^(IwrxJ!*(*5s>@al}Nneb}G zXd9VxdtR2?wK%u)99btyo6k+hXvT30_L64Endy9+HRHX++iB!S+6wBuzh`Go$u|={LM$jCRSE425L3 zn(w+++7u9IMz4I=nHd?>Sm<+d^By$6{f*3%)!if`3ah82Y-WX7rr?kaut$~UVBhv-`j)(Io=={g@AUcvSDe^(EEV!yA~lvt_UEw=&hh- zQyFo8zfFo~;8P*H@85bpw7oPh64omqYK$0Qmy?fpuBU7G1{LW zeH|Hj9!1Lo!$GvUA7#0JcQg6XddC_kAoxy3M8sH-Dj%oZ!-!t^>yEG0X2rhmfu6C% zle&X=Gq-{*B!*7vMM6U-l~K^v+4}Tc1AFH$Qj=|2`1T~QlT(hbqutybf;j%&g87|jd*rjvrtlm z2WUhXYMd(D%T1vfA0-aa-GMX(Y|+6ka{u`NKl#K z(2nFxW*&sQZ@dX+{N{f0$wQ2LA8~uUw-GT^W(uPja6kM>(5iY1CaQS3JQ1+v834&@ zXix7i2zxCtK_>4V5fxB7lP6CkJiOM+>clHn!s_x0=q10qk}Uvc1?5O$ybOza@^%A0 zl}m^TKZWT^yh@pcZorZ0h_a!e8Ca&vR}9ghMP$vYSFsUzox8_;I< zt2aPk`m2{^$4y~w*)O=oXb;Hf>B`7RiyGT4I|kq1kb0hv$FneTQ*=bu$u@|9%&aPy z@N^`Jkif_~ltnYo**x9+E}#etkmf(9w9_D*4XH$Hq=&`8qFF=x2Vo5P|NMXde^2bp zNyWnJ)Tsad{q8OKJZDR35dw17bR7&V7`36PQGAe?6yv;~2K{ zJR)qbQ}p(YD9~k)4kX2T{%U(}lYci1g!%B3>(#eBdWTP!_^J_!7Br0voQnxhCiaNdg@~%#zhJ?N47?qc*wzRcc*~?@*}Xk!fLt>`Rn6^q@??GQk4{+T zz>!&iy9N6>`9F8}a*kQCPqc`f{=qz-k9x+vp|Y7?q02TAX|#Rt&rWKzISQH{(B?r><(p3rGzMntm{mi^7FFP{#eke~eya?6Un$Ap5o=qOn)7HL&Bn1K)mYfk|Y$r7XGrI(p>;U6`oLz~P z{$3|@SJY+@mGSMn>p3uII>^@x4Zjm}sLu22rkuI{s;Q`DV_PQQc1?udJ*qhRzthtz z3RxWf^kgls0l&XL5R8QJ`P7W>{jE7jGg;NYFR}t|yxp1|CuA`q`>qI_gO}yP_=jy$ z50p{Uy}GK%tgXQQy4~k|77&_#9pRO^0;?_C3EX<0P}a9HwfN#)VhF<*PmV>SkP&Cs zZy9lC0*p#ix-ao)50(k`^e!??XO$)Hw%U$Ua~s0*Ikx&Xvo;(PO#j*i0F}@5uf0&z zV8lTB_2=`^V&{+EVDXT^RHwyD{=yWQ=cVy-o6)pbjFEwD!{QXu&TRp+iKE%qc8 zF9y`|I%t=RgK-$j0927JTm3fQS1Db&njny{*E6$i69B*4ASmVegx$WCwbk;~@80h( zBDKT16?iU`qi^!Lx~D?K{F(%~J^Mu)!2&Zh6BTrf#DrU3uD|X8Pv!Px-x0OU0Ffm7 zb|gt~-xrc)?rgs}x9gPVU%WD7Prmj)Z?vw=xypK5>25KTmFuX{I1(qHUthkF$Iz7| zg!!@|_U2Xu?`_x-hf!IT`2o{YEeY-SQjdVP%4|`oaQW+Z7yJ+plzGpf$*U;Iys+;?02n}vp> zA_@QZcjGXZj<0>#RF5*9QLj+kZg(;pz`a#xyf%!^dNwR@_uXS;^6qPq0mI{b4lII= zPJ{-T(Vm6&cr18kf=ju9WG0e1aJ=0dydv}5*8K_`JiXKDS4YAC!b^RQS_uXH(g3)l z{C7qXb=7k(jL)CX%)n`OvP2ZHA`L@#{5cPkGd_tC`rcv;ch(8+I6!;oNGwHCeodX4 zX=y)=;pg+``**=zZ#KeeFLp{4$Kl!pJl_A+qs#=jY{R~t&*RxWrYlP$VCf{zQ{BDm zZbWUM;Ldl9jMs_?VTfA8devT>7i72PvR#-A%yH&v-R?f;QBQ!Tk?~~St31>gFV+q_ z{)d6s^!fxDamY7%6UOiNjVQ#w3=c$5_NgV3ZM0d+I_ux-o^BcXyb$^zOq$rmEv378 z^nFAY*~uC0fUHi@=-Z@_IT~srDuPN+3l%{KGn&ZctGf}h>eS5muzP<0XIJJDKgXO_ zR%KFijbeI!o%Q5NXk=3cxm74^wzcnaO?N=B2gLdLRD=j}O}9zTtU7ddzS1^B0XB1{ zSFHj&k}~*W>>5CKCsIXvGSZlpRRV@=d%w)9a*^zC-_9yPD-{cGP&~QN^3bk7e>@)ao{i4)Y@0X}vo7IN zs~ub~9)rJc2NZPz%TrvTp~JatO1Z-Xlk`qB#)?}1yt}Ur$oUjJ4X2ss*d7T1t{e4r z63*JRGh%kIpD<8yPH<1q2;Se9jCNO@{tk1WfXz(f&>l@~-NVt{2nSK;fkrctk+$u* zlY3(J2Iyr?&jc%|i0I!Ei)Vzux%+&YRsrSr5hdJMGLqdE$4;eE`CSpBAV+rYEkQ~jj+cRU- z2CJ%XM~0=g>rZN=z7u@%>^15jPWEb_o&hl2GUs8CyQXj%!VVj6op<3dQ6WP zkd(}PQdi!`d&Coee!s8x$Ou$LCNaLgO9-xr?z?Rn<<{AeA$zCP=-W%=s0ecc(O8Vw zeim&wPiR1+p1eJVdzxUJ%;3GlbmghYHlzuMKnFdRJ5c$KYTipu=EANt|7ZtHXdG3Z z5seJb1VaWEn3{~8C&2jKAeV^t4~rWPNzUhq(cUM`*Vik zly4CGOGoVA=Cxy0#=v&dkY@fi*WMsZcT{0DnmsSEq!Cryt_Lw!%zamY<~Z^c?!B7x z;y;F`@X7>Cp)y7@5|F1tZ=V)b97#bV#LmbJ&TPDmNw+2=`nJ>ITGoojb;`Brpn$!) zR0gJpyo^d9&Ig!o=iwHbJ#(HTSwduttZDzdf|l3*gK1?YXjt5h;kJDLQK5Gxl8*M= zZlx++k=v79AzVdW zEl9vd7Q-J0_Vse|`OOz`A}bTqxBrFZ(pIdx@ip&h6B?EO_wmmJy(~*z+f;FX6I;6d z^U0C>HW7*dyyczVgLMXi5N9SBqqSg?RaoVpQ}Qbs*i(O|$#85!RZyf0fhGCHnwR#s zki88EiC*j0#!5=e^=|K5CIgtc>%cW_t9y14Fyo?^WS)NP z7L*|Ekx97n)H8jbdj7eGD3e3iW@G_~p32&@MihFSmFoG9BH)Qd7=icU)7x3X;rq~r zWKT2TEn`Mx)yOISosPg$&+4RZ&tC8f1S`Dkfi>0MOU{fLWlTu1Sh|-zIEs?nHy#sJjH=&%{~N4@MUcp#J?`Pj9#xfSi#-kLIXMt%d4SB!A8yoH2Jf^TJQ*15%53>tE1bys zfRUJ$9&eXFPrBi5*Eye$ZO@?F7*HreKjK$y+TCZ)g2g9cu1ulGa)0;~1e zn`hhFu4>2p<3~w|FlQXG*s;OQkU`|F^8d8FZI@xz|efZSJn-!kf9NjX7BI6y=%-Bd}WV*+( z>y6YR`gS=EX^dcIk-mLpU>1aDi}igN<`wJRcEEQiG*4S?1# zUL~MC?HlV< zA(F9EXK8>%t;dv~D zCHyqgFPC!(gx*NR@YE3@-8V$-wP8|YCf3Tls1UUxLervc#VpDPnV6=c@lM|M$Q)zS zfPN8AkD!T&ikjP}l6eSbinF}}gWDp6ewt7ath3pbf_v^&A7q`9C@G_o;S<`-B6jO6 zb$Imdd*LLx`;e@l?@a836^LBzuQhH@L>T=(CiWD(iiAwtbdC%pB1gT0-x<6yO6yHB z*c6ewpT_z|u+b?l>M*!fG>AwrOfAhJz&v^HZ?s=QAXtW}U?FV=uDnFYh}*rlOW_^! zRuz+TdvhWd>Iwbk$BuoluigwC-I+f8fG*V1gW=$Y@b~bM1+@s-CjvMOdqD(nrZIKr z!aHI`RlTPMX_tCD0a3QDZs->E!3orjVPHX`=0 zJY!*?*uoznT?n85{6B1K?&7#IYt;E7m>oRi-DRO7divBZ*f#U>+-boYpNz;bVpT5o zkY@~aBT$IOyF#3vDzEUO?Zig25Xq!xI%?yCWH}t@=JNEsZQ|Y6E=z{eMASg)Ap}Qd znoc2d6Bc6R2KP%*i}r1A#MY3{bBNGf=tc!1(zw&bB)Aul{@v|2yw^h5X5Tplt{p6y zM8qep>34^U{$GEFQFZMcBT!XAeZLogXZE$Oa9bE=l!U9{OrVf+Zx`cE!?mU4WUT3l zL3j6kMTx$QKfCw>gs6}PnQ!a@T85W4mFu|uXYJ@Ro;pb*wzP3?FeII`n|J;Ce$ImpGBYZ&+W{q0nBYGZKve)& zqW$eJiTd+Lx5*F)D>E%f-NVoGXJ6qXol|~aI^I8UIU{p%RFb0*QS1C%I|w2xeXpRw zh>VIo{R`m8L}vzr#gBajs{IdAd6SQAE%V3>qP6GpGF+82s&in>pw*{JUGQbZ7+JA1 zaRKxij$|j=V0W1lwP-kS_;42Wa3Watq2#10DI>M#=DM=H=5!1 z#)CpGIHhk#3ZjA5z><>f-OMsL{hR6ISBBIE*BC=6NG`XxX64-y!1-RTe1-9{!VqGk zhs>%p@%`S$jTLwzQOQQ zGwSZl0-(9)RP3hF%BYqgofBsCbUFpcsfzOKSLbbgL?(cUcsIARwb8e29Xy6-I?Yjk zK7VXvQ0UBB_*@SY+Y)lm-R}jwmk3%U7P&@APaMJ5O`ZR3MZMe-!^He14xi8IJDz=f zWH9dC!y#fEi2?vopijjrP|z){nD_x1C_{zpva_XSVBjlhc|9A_a;s$t)( z$0KB9JS^&`cE>vx94>?y^KZxLdoR6Nb}gBN@h>>JbF^IfE=T&DQ>VrVU4VccaVq+k zT=NqxxEM-QegwxYh8askItFKES14TZBDPJK813!a0BOw&Z8Kx~ZWYID2pz7hU*C=K zM4jK=V(VVP1JtG*cfY!M$*rQxP)v`WbI88kB2Pu-N((~Mk$KLM5D}1jO~!9D2s3gw z<5bleFNZjE#E!}MFB4?|W9WDDJef!S1zGjT=9m$q{&k;v_FUMp#>{RtGcpYIZ%kyyiG$zo{;ovt$EAqD zl@@9M`13if*D46O7R5fD82}OwpK;56KX0U;Cl@UpQEhKx8PJ-4FarG$)3e&P%F0Yj zcNFRH29Md(*mLRgcxE*RU`8zaxK2!qMMhvrr`>u{`Szl`ZTx)WlF@BeiTbE%Z;XLST(Msx4IJ94WCo=@hf=Tw~}!p6P7JY}Z6-roM* zri{!Tf79%-W`cnGPZj0+yHY2!Wdu&1$W*vnGu^-Gxii;fa|MttOIi6Wjm`Rh}zsOW_mmx_5Q;9*E9dKZsqjY%9ldJ z_jwVhQ^;^%L8Fm=6f|NWs|K@(Dajs9-$k$yan3%zof*&htn0zk`-KEOelK;P_lyqd zcYk-M*$Kesb5o#%-x2_nwth`RT;naLSUkJZ6gYBC^o z@2qj|PiudkyFMU6-S>X4FyC3Cr*5~W;jjp2<&i?Nz^Z(k=-!F1ce~!pkXx-Cv|68v z@KyjZd!1TLEi+D?3@?@A_v;zY|2}x&$j|esh^-kcXLRtwLgk4JB!0i&YBIvUx35Oi zu)F82d9QHI$T*o%kwK{S_rL#z7^PFufw_mQlnJ1$TIe$G>e%Y+pP?yWK{VT^z9@**!W~WmOTz{7j525E;DgvX7%sijxkn9ogo`Z6S zJ`knRUHFN?Fz@|ATfwzOG9fS#>6fRJRayIdS-6efcK%MLb2|gZ5-O&$m^n7?ngM36 zg7*AxjK7f*%xo4ziL5o%c8_MJN0%@%S0}kRAehq^v$j)KWdH8({$N&C!j%sU62G3Ey=!pr)RvgYD|x2vT~r?0`WvHrE$Mi-TnLCjh@cT1Y$iA zQ7utCbu#PoJPXx9zC_yP9h>&z;zl#Q@5+B2fYPEhv10Vpp!vrzfci2-}XC9(s!)8X06_9nLC-woQaJ3&y!K-`Q)om%z8@lPnS?K2;N^CTs`ES>1iA4 zzAdlqq86Rys094`4Z!+*K6PSjA@Uz>)`%s@tPE!C3r3?c-=ZCa?ImhDlk2sRa9fPrk`_Udl@9?;vnnH{%QstE zznQ(T}X>JWE}a zkzV}mPGp8g1ZQ+kc^Y73{BASw)CZdBd*Woix@nIbtf)*5bbE59&YAnY7HuK+y?QD` zMu72R9~n}!BANKapV8<}o{S1#LECS%yP0`?C4c@Lb;x$lwmS^p!LBj9(>9j> z;<~@~e9nPGkT1BV^mrL4eod+Pc^*Dkk`F$8f055FAZEN&WgBs#SeCa78nvgI9Ru!r zA;$Rg`PiZXbyOiqv3oZ9QmEg(o4;@M$!F#|_`jLN<|AOq%qZiRnG!Un0M??hNLHK( zN76`eb{a?X{(kwKbLu;@WxM$)($~Z&mXL4h3K<^72|y0r(Fp)Kw=*-MrpH|D&&r1B zr3Ni26vr2Wo=Mv^P9f74hcLCE%aHZ=B?Wrn}B(c7slPRQ`!kRg!KZm) z+mglDb5}$pN|~GiJgYZ;J|Dv0-!C)rIsE?<^+!pTBsmf-rmBE>Mx?8{vLfzvHv?49dGElW=7W09%&)+VLn4#-_uUCRo^pVdSbv`4 zzpZ|v8h+yGvEoQm_db7efE-t~$=y4f==M(3@`)94(-WJqCuJ<>ZN~mGB_X5x^@L93 zIh)}oZRz`aV^c{coKp3O=-ZP1oS)zK*8q{lwwsXw{r?%_npAf8{I|EW(zMX*@W$&8 zhfWN-{_$4>XpHu{hgjAf!D?en(cKK~_M^?`$!Ri7OwTBu=j2KrX;fVXGtNwLou9K` z>ZMRHGwj{TeG|tB5T}-Eugt`qaSwKkHath@Ew^z`rJ{$^U2a75Vl?KCw#KzAnx1y$ zIkG;8R$nSJ1NQZP7vjF}IRd$EBX`HwW&nXe)FwYO(LHd}N9?+Bj+S zec@B0GBScx{=GbtLmvGJ9y*wuY9PJ|;Q{=V;E{^S|y^t4gaAxGqn z+`qH)-tRq;VgX6ea#q!crr0J5#@>P@zX0ji&el0+>b~#qIS==U%+lT%X=NsJTyQRP zd(rR<5+f5c9^eE9(-%}IW`==ePMcI?@Gm~4j6YD@oFN7jx;b62#Iuzx7!-#fH0_Tb z#nib~%PC}9L`flldq9M@91Q`8<0<_YHa&xk6nv{s#s{zlld8UD9l@{^eQPk8r>b-k zo~Cha0P&@g$I>vyZJu+whO5ehe=_Sf5Ozfzs3oSd`$h(UagX)n`On|K=P*nhOizgI z*%^=#duSh^>ptgMJJ)@$PI&mg|M^dlc@l2%bakr*)}1|=O;2VL*kq>tGkxuOPTb#a z@;s_?yLOzGse$dPH~WK+qHMmk$U{_UHg=WwnOG|<&Xhob9(nA?sU z*u-oo6(Nj$5aN5U$)vhlCv$q%$k|icYh1KnH97V#{Q{&v<)}plKCO{o~Jo8-_GqtZAMEctad#?(F zKG2|qk!eYFdkKftZ|vr8w@k8P%S+f3UjS+B*1ioy2ROwgr^)4+**Z)9rNFx z1ZU&;#OxQNd)B8%67AdX+QYlcMr4rFV0S6G-nFqABjD{{O)z%RhC40rPd+y7erFy9 zLI%;je{ci|ofKT7fN9il+)Q~(IWy}IV3p&5gLuNm+%a*t{jT*r1+CRcka;V=fF|-+K7 z{=FqGp80z?*YuxwTJ~_NDCI)S>PC=-E#!H{$&SpJ%e7Z=oQg=wnCh|HPJg}Ph$wFn zmLt%-^-9mo-m8$ISp*v)=Dn4fJyyCsWMq2iZDdvVQAqpeF@>M!=-*H8KmYk(#cqKI zbSS>btEQpqi9?#@`Amj%0qAa;jINtOBNz1=K(+b#mNvsccl9U&sodUsh+)o1n4O@F z+oo$yp8bddQ-kc5_?*1eRkfl5Wpt?9+}H09cjLu~_x^I2CpMxA$)3VzCZ)*9#@EsV z+KiuI)r=J(S)N5Bxr~K8>{QX;-iD?#(=fY0Im93p@cQK*(^KfTs0?vO!+-w#@!VQt zjY6hXa)feFTVw)9OyAN;*UVu0nh7)&8BqmlzJlCpK|pVe5MJEP#x!YCerw;XFL1`4 z)J}FhBO&79I=)Htw6}(%53B9}<}v=A4VtKKtgN~h06g6Y$-ytUZ$o)x?fQKM1B=ya zP!Q*i0nMf|oRQr%Q-S>ST99v_43Kp@GTio_5LeMcUXOdudHi;xVZ@eXl`zonS>O@}Hx(YA*yqGn^7KD7o51&j>>W4Jn@IJDUP~EQW{eQD63)KhLsT zrfd38tXsJ>`k96HGA84|iagUjv(7<`{U}amRsY^zg-xcn)=Z+S8%SqHU=cX8^YJ;E zZ_BL2if%k_nf!b-sRcq94xq`*Grnv4?H!B2H61wZ1qh5O3@+ZV7V)0 z{>wzDXRMR~iVfGTBNk*$y?2arbmv9$1PxBvQ+l5J_wwk8gxqb}${0)Xt-^S=wXPfu z#)7_??LLCt$~gJVy^FcrWX^i86H!&EnB9f#{{lfqLe7b9&omO!_Pg=>w=kX05%hci zlFtHj_E!l0BN2@l#D{Ta+X~Gs2cJmT(SqHhF_OqU@BJkfFh{%H^E^KoG#pg*4IQpH z1`BJA48AooNZuaKAR^SE>$Qk?d!cZn0f?|ptA(|s@c4)Yx1b^CVl`JY1t!yb4#;<$&=ZjMQ-d(Me2 z^K-p=E)X5$43{i6Ds3jBiB+YDb6b&JuZawHk3~$IPKtw`-tEZ#D86T0#(2(&Zjz{K zd#K#{0~WNqKLy_iwcB@Sp6BUL@_b1_w)7{@jO~h0j~Ub?R-iF%Pa2=Xc&YO>uP3dc zAq#@WoN7sIua}Y5$m;0=1d&Ywp67Y0s=CQ)dKdR&k2StTb`2Fr5!BcrFP<2K?&c+> zjGXEbx|=PA7E}M-Q>AlqNWxt`1cTqtb>>!|bHpAq6~6C$8~EM=3U%VMSB*P{N7@mB|>Lrw}0RF&(F`Tx7xwj%FYQ38YA`SS*{LT-RLE# zir<}Mu?(1hYF3icRxHMb@08vA^ZX$<92OX0os@Bv+m>wLSyt>{rleM zISI8JMUW#?dtI5x@EC#yPHhCMt0L0Erj@Fk&k8iIbng3~lTQSuON`(Cd*W$Zbm&xH zOUh?^iQa`SRm7ahNF=`UI+e7 zMH@Y>$eBg#;(gzrKR*%a_I)SF?Wh`dR|Zomj%^2x0Zwu*XX#r+%mO~CHQY!!_3quI zX6*Y!{=L0?Jt;zQ?{7o^xfSFHV?h)Omb*(LBhYSKiSys0*c6!_RM(%MKcA-)+*iUf zjzv9B&Tw3Tuk!RMsl|EQpigid6k{De+I%{-?l<6s$9?BZ{7-Y?229WPwd`$aZ`q+n z8$gymUf+y8^tAk(q*+~xOlj;)&JoNU6fy!I)uX44zHd%WcTN5I`ExcG3=DUMIyU=O zPlrNagEYE(i3Rhm*8$2sHI9G{8FMc)gMd-p5rk6&7*nm#RONGg@AM|?G$uH2F@UKn zC{FzSdnssB9=iyo=68hg&U||!5C&7;Y!cbk)%QG)!R=f#B1P}qSsltA%cvQpj-H`> zXQsMoBTo#l7kWh?$O->8#4!-|eE#Te1nF*527_mfG9T|3%#7&??j7ch2r2d(hoMms z=ft0SOD9ae|M`2)S!6K9@ATgTDSx7?F_`J@8Qfj3Dk8Cwhr0K+k-4W^RQDI11}R3{ z-qHA44Jx7kL<8{`lTrVj!f2v>hC*alUY+^hE|y}bgWowV+LKnWbB~?-}(ll ziBaZOvoX`<`9J;nnE}c7eeoGW0`UF43gyYZWB39R=E5ElQ>NBv$gy2lC()z)@UJ-s z-#`Vh$4%v^0}B|ae&6%_>_=)9=c|(Esw*Lc(N4Uezr%@prWL36KFtNk z=#D=@opI+H{5fX;&K7}Yxh>nOU66-F#+e>*cJ>5}l+{H=GH&;g1|2#z?{sgG@rmfA zCrJy>K0isbd(2&QaZ91yNNKO{p={S|O_!dA&c5Wyl|IlRf#EScl&UIX&+$F~#L5dF z*gTIiJs#AQ7rKIRE!5WE>LN0yZnX(#KJ5ndbK>oL-+nSOau2N4caP*D8ZkZH?>RqW z+;jNXr`@ z#aN1V^-MzfoHn{{2i!SV$?h8aIpy~j>o}5PY8&}pt>7Y4d+J1x@oC+ArmVxwVe7~ZjNhu0pUE*G zWwvXbDAR6t==9ttl94NA-#X*4Wf3v1{U9+^J&}nSic|AFqSyPDfkr+t)9>#UnR%qG zP!_Q{e%$)aa{?+GU5eZ&f8?pV&LQtOcJJBVai6%^76oVAJsIIWxb8F4{P~jx>TQZ+ zf9O(jyR&XlYa5s)huEkZ07}A+$XnG7VIsI9r!Q!tNT^XWpXkFjLV?_8{$M%C?Xwy+ z!Xt9Z?auT3|C4Dm4)*QL6CqSD3{@%5ECJ)%&qiK$Cgf%uiv4?wK5^Uy`sdI8baz#m zM$7CIr>FMn*5wtTKmqg=A~rB)QJLAZyAf^RoB$#GYlLo}NFvFqYbY{O$LP(zy}!Tb z&!I81IgzHgOw|Ub-(}`@&w}>FuA<$_gAKoHrVKij7DDW5gRxGb?o~XD>nPhB6P@Wf z=NK%Pd#DsJXlYw*C2BU~&gExeBf+A2E)m2qwMvSretr(6x}~G3n(@!i&$zvDn31(V zw?WGqH^(hH;%rZRJuS9RoI9OL<4#kV=)SNTnIYl54OoC88*MW~?%w$HRu|66Tes_9 zwg*k+l$V~OO}%^}+urK!24lb>_3`L-vEp7R*7O^SV=aRAE;LM-y*F)uhvzs9KTaB*JS!K#y9F{xJvm(xj z`2G7=+WbzKKo!1cKum8r3=;NPha^0qQ`LZfo-=UwJQ)oAfBxTpe}1^Pl7K^y=BOr2ukt(zEt#F z&;0rGr)$WuBB{3R#%6c^FaP)d*Vt$2A`M_}_c_T?vjlBXX*E2akNEwigCwgl$jI9U zJ9$XAtsz3w*T8emo;1Tz{qBX&GoCH^t;%3Og3;hIQPBqoQwr66JO=`D*?l6 zo5cW<(Ll_U6e+c*YclkEo8U>UXtD=ES9==~#)5%oF<^@|_ezKq1lvPQAQYN^-49V9 zx*K-Q1my6EW5cLv0PewwFulFm54QNJAHGONwfFyz%(`v&x&Q*$3Slg4;)4&6#9NjB z02HZcjPGtLZZOLoOnWk-Ju|Z?-1E(un&*k-({(ivU_N^(ge13&X2{;_T!2Fh3rdtQ zdk0)vSr9XBn#_<{w%~}fO0S&?f9N=X-1YNp7!01<&0rva@5egTrU>>LOtBXQe~l%s zhGnE&lf|L{Z4k5H0fMBeUk@HZKYj&$3TU<>Bw&ICB?ogj=!a$P! zNyfNmg_*uH;r#_|hZDUNj4?Aky-J#`wlPF|6AumqXxhEP0d~!ar=~uPw9SaUm4-y( zz5V1d-CZZ2tp`NL^bk1btYJGM_jvO0Q>L}GpD)vbS+*(peFCS2Xw=a&XzYI&p6TvQ zQ$kuWxy4(*i34J)P5jUQ{OP_+^Y$k;8xD4qw%rMv=LlB2R~c}t6>%agcl9}^elJBS z?yPySGh*ipvua?D*PDo)K-jZOFr1(Bd*6ER&v^z6VcL>JDp~IZ*x*cWz?RA-vCeon z?w-OvyE2c*^h88sx+k?Fp}u_+VL2o~eJ^8aKgx^@)qQ(RTY0K4$za@i^ZY~v++%!8 zSaaGDn!eJxUFX@Bss#31Jh5B3nm#|LZ?EyAdV<@mo;}X*Q;6aYzsrX086nQkGktp# z6%EiCv9Ff?y0kpGfx1;)8OCsR6`M)M>;>Lw4h9T*uoK~k=$*LHL0I-(1_pbktN-W! z_#aG-EvUL?K5{@;AsFP}zc&&eKdBIz-F;5(VjWuqH^%6hKY3o)<-vYO= zL_y0CB=FhUw&4qShxx>Y(_rWmfKToGw(mxd+8H>fxd*k3NBXuLRJ7ZJASEi~nwnu)%${AUFf-gx$lsc@4PuFVA-MY+km*lG z_j;)w_-?hxRP}C%KkUiBay8b1Q&YB|IGb1iyrNw4E zo)I)`3?k5gu$QY|Y>#qzY9ob7FB`G%zGnl`Q>1_2dh%>%VH=!ru&7pMdIM(4UEftr zN`oEmrK|Cse24%1qtElx_m1$H)X0TCMJU0tzqx+THx>aGWX9k(3FMOUtw_%X*g_(z z7+-jw+Gu!8)y#)|-YZ)&l)ASv5~+HBr|0Akb1|WP-`X}Cq)`6ezdID@E=XeR;5b4x zkiA3?uV)EjY~RaL7~mjNOKicn+w#~erXjZezA&hU*TWP0_v6;OSMMTNyCY&|kmNYy z0lm6f089P*c@AKc_4}?%3@KRX*_eZtldka0_wlg@oVuCWUHNm?717luW^OXK#oTs? z+mEf=-MtI#Wl`VS?V7vGRIcR^^t7neR|Br;KYxC7cD5l@pJYq)SIXG?n$bqynCtd_NFm!%{NWUSa5Yut%jqz31-SbM*N)E z)>@Sb%y-p;0#f|s4~-Br^_(BV@o#l*camea`>hunMk zEkxDNc?3jI8F@0#kFa~3fszbT9th}ekW6#W7R&jbMsF|9Zo3;Z3hHD$p?wu0EY7f| z7Rk|F5*V@E|Ij|@_BQ~fEZ_Hcad#YJs;fz)bm9n_nJr_84DB`(Cy#b6gxC@fskeH% zr#>!dgg}&Ee#uz_v-r#9OM7%{z=#lbd1HDQmPfPi*qNCr&wQj#%s=1wLY)+%_15ia zZc@))y40Pf5s^}QZrAJwiNWWDjH+w$JLh$MOmKONep|=^8kqJ7Qfh@HJp*D`L7hBz ztucb_IJuem`}Xg>_1=XDtZFOIvxCW*SrUmrEgZAmeY+X~A^JOXfm$fuCR6*)^lf87 zTXk@DXw8h!=^i3hVF$Up`$Ga%#3SuBE#7zgtQug5{XgAzW)^IgPwrRe3H@Z`d6qlw z@J2ocUzmIP&aQ|frn;&zKAC$hUzOtkJ^g!se}CU=-+$WaZi6CW%a89rErPn$GjpC}NXmss-dp4FGRp{?%zzXT5e#_-J+_3$QesjVyJ;C>o_x;FIRSu*-mkiXcHP_e zE)>h=&(9&U4S6$|!|?RDd;bu1R{%C5uWPuY=b3Kwc-&oIvZAIh#+YeLgRm#WsrwI; zIJT#&JfTIn#K5;}g#=p_*&;8Aqxk02RK#-Jmo0tyWxuw##?(h3Mu835ex;?W*dUA>D3F;PY@Ya{=z$ zUN2*(dgJbXjr{VD@esYPGdP zQ#kQ`*+Fz)d@W2$nrg%%8SL+b$NdFL48;1lIkqIY{puBu{({sKArbo>U^j%9Ht=P3!JO2t?0x-Mx0? zNl~}P7KhLC=jc%3nolul02)(~o*}Wp6AKFb{2T&e?2PqRpJ&JJqGZ~{%1Zve_x`K)b?L|cfdc(ws=Pa~z=%1gTLI3Z6{z|B+slnp8*3m&C zwb`bP;CTZntF``~NXkft24n7vVhkRp$cD{^Nv}R&R*vbOF5@$=n_&d7+6dU=iMr@1ZzXg+Lj4_|cx2ns2AoE@?$&WXO`Uc9TnN*u%B+}r5q#LttPo1j7p4I+axf5&ln zbOv)@&kDw2}EZ+Bu zIP{DxBSPPbV{iVfs(t$J6bccTs_{}R&RHpyXSYH9%O(>dcXR(R#jkDZ?fwlZfrDMb8W zs$I82lAus^^^8QY@2ZvUqeCzwZWr@sx`3{#jF>?v#+VvLNZ8Uv=4nsWwGavh>s|Aa z>3yxXyhHAZ$N_Dd>{^PnPez$lrHGTcE2f?z0yZ;Xq9@Oj5!1KohBgvY!R^W2qLcit zgb{m&)6|&u{G3y_&qp7cjoi%4-K7>VJ%oFZc^HHN>d$kw+P1{l`F7b8-#v$O%du5L zI4s0Ng1T>M@i^l+Iep=wVoyZNyo9^nInU{y%m9FLMiPSQ zXhPJJo3PqJ;q~^K=3+I-@4Dwk8d$YTWac|1H>V90I)vROqFS^}EoTL$CCFr^JKF^QY-Bu<< zVKchBvfhMb9IF;c3I-kGG%>usvT~__EX?i#0SDx@M@h*Ik;06X3Ux+oE0f0c-NVvY z-cH9rC*QXrE5bd}H`n!aFc}(qR%5US3+)Av-F>S={4xljz_;g|XA#>H`VPrRSuuV6 zT}KyB6x@M4{w-KUO;i=dL{?vix@qCgmdn3(2nW@c=XutssF`Uv-1|U-bgNE2i82>K z+k0=}m?tz}FTOOWZ>}E^9uv(06iDnsr{7)90sln8TOA6;h;WButs1+%3vqg+NIEmb z95&uf0L7gv#tf?8$lN#3!tcioVq=xGm--^9iFq&0*y*t6-um4XY8rjpa(PyV@Gq;B0+LQPG724QkFliRz8dfLk!0QgPf24e}v5E(lw9mFBb zI|YH5R2b-*JUh|r-5^bmlyNlGw0_?k8C;4hG1i~wY0vxiw%5Dx{DktXxs_~ifzRSJ za>K8-+cuc`?)0GmyDwmoV~5BH6V%St=uJDN0Jc{Pr>*?Lc%COuu2el9Me5$)Tff~y zW(I06c@b15BvI zfA0>Ht7c`N@Gj=mo_lYEQd}MA2UD7zDq%D3%=i-tVLSlO6DRZ2hy07m?Flu+=QHxE zra6pA3<^+0FS~8k*#Qt?MLZ{yz*>_TIFVrPfxc%pUeXvrjKKa%JoDC(K-&9F_g-xF zx<&0D*dfub>O~}r(crXub^^DEf^}U@MpBG88Ba1}Z;^`My8B7D-8J3jHbVhpx(d^? zbs|nE8M0Wnc5e=9mIg<#;Q+|DN@0mr^D#YV`#PTmLx_{IA|o?1<2;#FwU9E~Gs}gO zh3;v9(;y&FJWp)=oaEF$>)`a3tPqaOUjKt8?+*q2|eh( zO(7%o!JHf!?!N6M7p~3FX0+PE9*?BDFh#e2&oz(#}i@J79}PQc^tU><7+s7eW%LOqtO$ z5dyZ7uI&PYdoqP4;Ek@$cpgQB82PQsNsbAj8sdzmyWZdF4$9LWN1(fx*wf=s?)OYd zVDfyN$}JK%IwKXVuDAO4UWySpuoQ8U!QP|Xwrj_${nn5KGiMrH@Zq|3X19sw1cgx8 zUmTT+VEjDi`;f*)+6qur*Wb7MAEVnIZuTQYerL%sy`!Jj5~^)X@3RrZ@?Jf5sf(%t z=7}Vz)bkvL%GkDG*#z(H4R*rv+BA(uOQ?3=lJfcU69^1KOvFwdZU5)*f4c5WGr8en z$$294gb{lFyU~98+TI?Udos=rFEH$}a^w1I-(%N=Im7Oual3bW{H*eJ+|v=~FtFxi zVo@2`r9K>p@#^ir>-Luhrro{Ks+!$_%bps`oVj-fqyoc*Rhb6X?*OkNPH=bETj#|2 zIsaNiu$waxI+0|KZCc{({?C8@Zt$;HXz1B>$jlOt0)z|m_WSpDs%;XAwPZv*PhecA z-u3#2Gg(6e&f1au`I2TQ+vN8wAizbd?mwd0f;XdS z3mJeEr^)g3R?hdTW`4PvK`8S? zmPR)1x61&x$MfaZZk+7T^SJ-w-**VhCkIX(ZTPj?GkxDR2yHK)0)bR;)b?G_jR*11 zEM{oS)f|CytM+b4o|ExB@ozs|*Y|z@i#_aFu(FjpKWD9o5#qRN&1ifvgV}^?{FhoY zW70;WXBX6DQ2Pp2CT8w^`>pNZtT}YQkFJ?%_bOA}p58NV15kIp_jd*oBe&Fnfq#GR zOl^w=?WMbSzp+7~z0UPWL9zFFZS>4o%DlICZ3wE}y{peDOi$gxtW@_z?g@LkJs1}o znVF%GdT(-qdvRwB+$ zs&uWJ&wy;V=#)f+o@7SG+-l#MK^czc`Jtn_(>>#2N`wE}4K`oS#-=c4rd_$) zBG1wrGXrf8D0bDqXmL!f6|V#VPB0w*h@bO>K(;3$)}&1`^G{dL+{~xd;jhWWp4QoI zLoaW!?ySquGryfbKl!A9d*6&C!JNLDv7V^uYVUP>Y4h)W11MXItOnhmg=ne-nSfby zH>Y1SAO9P(5Xqj&^N4)kYamR+90cQEp;nyP)0*9iWB{}MxuLYR;*nrN0M}(Rb9wt> z1MHDiHNG2wk@UVVF&p&n<|lp)q|?CL@7JN(UbrVVvDV9fi{W?(&bU)S;ul@N{p1P$ z<92+(eu~HC^?jb4fj4~aM;bvp1DJsnmYxxM_XnE`XAp7R58KVO-04XEGypTi^(k?k4! zM=`ONABGa_pP$_LL_C`7b-iVtjci4vJWO_X+5d;qhS>w2e5%UW9yLyA>$7_f$P~O;fqd$cLQTztMV9%6d>Nbi(jHznVm0|JoguHUiU8BgKED|vJCivA9I2&FK<@%&m+ zvukuj>VN(`V~(#I1~am5J(+uO?=L4gN8-O+>}ZmydMw+ePLAl}*j z;bQ)WpUuk|2fP4GguEM68u=vcUdGiOW_Z4XkZ5Lfm*)w_%CAL)InxU)4@JZ6BK7k@ zema=e-b}tm!ve=ci&f=-Q^ga9U_gxS**dsMOiSUfhN`+(N^t)5Rt!Wu;rE?YwMMuH zbbw{f6rni!`}gnO66>G9fx-JbbV*u3E~%M9SS=+7CgTnw&b^o1CNOW^O&jRY6C$gd zQj(=@QE0!6Ts}R&Y18%nE*XR}+?KNIeqF)DgFi5;$HczepOa;vAx(xPzJM8{C_kA*qtwEU`3lSjnvVLVeX;fBzGT z;F4stoQ&#b#yMP`-p}*={=M&8i*-8Z%+4IK$J_m$HI3z1ewtBN52}YoQb;S6Ky^>u zB}-DgZVqWDV+~uIjtX!jCb_!B1O`2wQqP)9Cn7*)EZ?(+5R5q68xWVnK!s{9KvzWs z3>satM{6dheL@*$W*Sq~&Pb+&U(=HNi|YTrFTvE4p^jO6|4zx%q8w|C)j2``-kV}X zbf{_~*3nWv{{z;R#|sV}PhoQ|%{YM@3Me2bk+&+qM#Jsir-m)oZKbd?hDHRo=~eqy zT2qC;pK2~=Vb9N4Qgc7&^sSwuo##)#zdaBej^ReA)!jAqJP&L;<}39AwyPr}B5XH& zxRrI^D*8s8?jn-m`Dd)s;J$w0)P4VVTP zsp|Uu`xn|hA%6e!GRQ@l&c(zoqn`6)u)6SJP4-EYiLv>6Uv0_Vvv|Pwc2B{5&JPqb zGamIK$fjqL)c<&tc4poxqs4gp`tKX(k%*phZ$PBSvan<{o7C+qghFubQ_p?lIpE68 z)!3K)gK^DGcBJ~w|NQwwa_s5)Hkw^=l5qk}#uprdK8ipM1Dc(NVldqRI+P1>4}^uT z@`o_TK>}EupFjnAhc2_A{%xW9j^!P=&Da4_{QbSs2oWLdiF!UF8XFA|Lq!)G?@#;* zvAZIF+!u*3s&Dw5^GubE`~I3vW+Yb%Kp=wE6aIF-w;U9Pt(orSqyZDFAR|5F$a)Lp z&vQUldAXK*(w%Ark&iT<9VisP&JWAm1BH&|Q6xP5|$3ZOtY^w?2yuf@G48l?d+C1;fbSx^QW7VXECt&Z?%& zp%x3l%*bE|JPokh8L<^YEQ3dKEh_hu!P1WHx{|bJ<$iF#!zXTCbS-+Z*e7JLha3rW z@_DOjCKbtpX^@O$l}O~_r)By2bJdMmXaps=z2T+a(vU>Y$?(j3-=Fi7KQVW_W66y` z(>=TKWhfBP5N7@yj6q8=)xb!4+Zab=SKaPRO>^d5Z~`L{tiKnrPy7{Q-5!ZcTwJde zgcx^yCy&h!dTx^wd5&T*^|pexMvJr~J#o(5w#}gH)~43u)NQx*!7J0FX%FVs%Ls## zk{FcC{VsibU_haWQ}^|_qa!pk|1~}k^oAJe`bHHY@^%4%8U;i`D!-wlj4Chd79j}dY=ZQ2pv~OFS zQPs@s+)%ycmS8Y?+T-pUQk>_qIea4RkwRo)g0lFvLAIam5qW=KQA(Z6eL&cJeooKS zguPqqh1dz(q#P@ldAfSp68wTY^G%5$X@?H{{T(DUPW{9;cp4n{z}@T8CAgh9+rgND zl6^;vJgm1iI0lA*vu=+snL(O;BCA(4xaEu9B~>awNxS9L?UtobLK&Q%lTp*C zi9Gw+t5J7z-4G;cj||P+%m~KsZ4waOJ&kw*CT$A0FCm=ti|#o>W9-?lsl*d36NAR? z3WA~TZ~tuUhZmCeQi`(0jU~GWGk?x`yIUni9!+)kzrF934auY99C4Rdnz#J(P@)^&&<7PnW7@ZCT8iy0QdgKElGLkf8q2&OX9Q@x2n5kJ=+i@VBG5I+Olm*qA1s* ztRW@{c9+W(?!76Q7|i?LrGN#oVg#KG*L+cG5O({zmlDPOfz$WSIia7l(YJf`$QuFF zD7BxG>SCK2+E(K9>ewUIZ@uN`q=VxTN7Q(TlyHCFEd~(Lb0s|yf8Q6_V+V&gPi#6a zgv>M3vvhR$M7BG%a>r&csUG(R%$Qa8$%pxT^IFF3nQ4(BcF&d&L8IpP_g9A^KNeJE z--4V94|lSQh-v@!-~aia|0xT;P{JA)W=syf1Ge@J0Mfm;-G>2Tu65!kf2zx~kCSz# zeu`xZ>{W}1h?5Hpt>`vXnI2!{JyGFbDlGXQaSRie~Fc(fQbQYU(8MmRs%cUOM4r7*lHk-&WM8X9)h}^fb(7*E~N#l2jtL%$IqXi zzm=2{+LWki@WiymU;_Kd=D@DEpA$5He+zRnkG*DkhUHXMtCzcG5Ar9+6M4F7+a8Q|NyT*Vs^1iipcfh%1s?RA$ zgi}G&9L#VB1%u3lL9uVIXD%~DHtO&D{?GsXS#8{)QBC=4jFKy#;u2kng&r%o^;POD zjVZq@4ZkJRK4BPJ$}s$e_wpaebsg`B?p}Rid05R1e3^#GML&f(A?+;sJ2=I_lG$6O zdAoP?1$yKFs^@u5p@L~|sB`Itq|4H{=_HYH?E75`#asP-!T{ilymz^#gObA2H4a9c z^9{Q0Wk<$&e&YA{H%`tp)*tkou8s_mzyG<~>sV}?8e1L^mbO{by(qBY$&7Z*_EiNc zKGsym@9zy_Jok1){CQ$9RTIex%zLRg=d@omc|ydatSJta8w!(Qq8GF!K!?HI=U--c zKbPxZ_$M6vQUC&)%~4E$Ny#CDq5X{AF57AT_J#30X?`lV>T3k3pP!f>E}yY!MF0}I zUWP&`Ncxm{i~h@>XJsIfhw%M7nPSABbKduEShBmgeEp6o=kwhdPb3Uidn0HB&5<5u zF#UY%w4TXK*gXoNjk*_7W^x8V!_yU!0|{UB4YOM%R2Qr^=WPUqFf91qU-%~?yz^!3 z&Wa=k!x6_KBl7}-;s5#n_W#889(td7T;)(V&Yu)u@V-SmGDTHap14z(MKWr|^%3z! z!naeF^>iIiRM8#@YZQkE_a#f8ipEwo!Yd?_y;B_7Vgaa;n{Burs4>99B zBBJ}PYszsV5#^dT%vDd!t&zi9ezx}%xRk!VQHP%M(|y0s;s$ofsuEe#Vn%2$Q2?vk zWPZs}RJ|01B>4CDf1mR}I}G&udoyBTBHqB0f}y^@W^hK*et-dH5Qy?!9KrxyrH^b; zKoI(v$GJ2;ZV=O&g%wchDjgjOR^5xB&6TWu+5d4WyO+3X>1@!4DVcMK8-RI9)n{fsKqbdoK-N%wC>e z7~7Rj1l-#OSKmsd!quxMvNEQ|up%+7$Zu9?WNNAh$P*q+*EW(PP6q$}{j1PMd4k$- z?up#Dwr#_Ag^4Hj2Z4W6{LGv(VJNnKFyrN0*x3Hkd|{z|Kys!dQ}jBiPv+nM{ZIZ$ z_ehF(jJmg%h_~ale`gqw?r~53oX7NrNvHribl&$h8cfNCWH0{JGhi5Hb3G5nWM)wJ zUMf~aa`NLTPhCcC_z@Fk%UHa~LQU#!jM3cL=Ysq&$$-!eS97a^+>*$UdVl|B1a%m= z_x}0$BXOw}dnVqe{jAa&_o1yNp2X;m@wjC`XfB*gm zobx=~pcQ(0xZ3I12MD&AFx|l=&uC-)hVforrmWTQeU8nbz6^eW3Myhens}b zMV#PxNwTp#kR9m)An$uK!T=QRf`N|YJcPDEQtA?YE8~ zYf6AgNe!SY6rdWN48!|!*mg!Jrt8DVo}Z;T6X=nOQ&fZ<8 z8~8SIL62fvhwod2{`|?RT|+uWm^F(}V5X)jxfj{)aR;|g5+WC%Jj?Ehv!k-^-hJH} z^#3vg_<^yh!F-932kmBV;>XJVKqsJR{V&+}u?R1Y-W zvPv9(`O!VM!5JiCQSlFNgqw1=aKgUMR1ZeId zfHv!`$OoI8nQ#9S+x-$!e;Q>63Agj?H+TSofdyI^0Dh}wGG&a29xGAr5QNZgH75eM zkZ~5Ep83@7!N*?t*_MomCm1^QK}OTQ3&Dl`-ljEuUa1aCFSw)Zvw47O_QLZpn$Gwzy7smle}?=HT-KA#ll z;nZLo_BcAQYw9Qv^3;ynhdtw<|NQ)P&-;7#5+g&3@l@3l!AJP+IF1aG-MfCaA@p+R zXc=C@24Y$n?&%&7PinW2w)b)YxcYwL&%HP`g1-HVTfyA3%+|{XW61UG!D4!BfuH4N zBS~?Bp8I<An*HPFe0&Iq*{T~vfBk29{0@X zXlgG-;q8rtMaFr$QB|{g`DsuiZ#gD2!q}9*GDuWU`z0d~=R0ltM9@hGT1YcyZOWxpX@<*LkuP3pPgbn z2GLLqyq)Aw)-+hy7yCzvc4OoWvZo`IAu4-1l=O7hE?rwiu5fhwh=UDb&$sr|x36z4 zD;KJ*0MZe$!2|aN^zZTjx7jrUte*NgQ3I}+mI|tHG3+))eKUBGX2$H75N%Jy!C*6T z-<1IK-uI&q8`V?wpXZ#}gm)~^gM(Sfz975DGcFE$b+?`+y?gxU=NOv4FgJ_5FkB$x z{7l!_9PH$t{N8v>PE9I4SopNR8-(Qm;S`Cf!R|i>(so%U{H5d9$~Qd@@is#}L;l7S zp_J4$Ol`T7jKSSh7nn(2&rW6iPZKbGPiFOh%ff1S;3x9dh2li)7-Bp?oZ#)Db*Cj_ zul%9$`#gXCzQ1E>LlayXsP5cdVeY?OrX=<4?qR^~VTXQX$XvY>G#ZT5)O4_Wlp^BZ*?|co zt18e-b=+%fzxK?}|LITNJKN$OQoe5u=jTbmw{1>>m>DfFcNpovzoh}@^b)c>M>*h~Ubj5= zG(^o46Q17yC>;@7paR0HcRoF1zc@yec zobLqB-fmCi*1@I+2)YInxlMF!a=Qo0{oeH$)is=>sCK5NmL(x?3~28|A?#(zvyV^L z*pifpaSb+98YADi?%O-o!+Jixwy&qHj0h~&bGOBLpn>Tcr23X4xSysW56Gx0MG}Wx zS_pbaWcCv|^&8J4CV_=!+8%pQM*Q#@&wdQ{(Z3^^?skm=w>!6iC{S@e%thI2oEUE> zZbNb*8{2aOn~JJhR&44-#!PXX8C0kplIfaDg-R9#gkqLtwI`dNNG+>2GPa>LUO`@B zYDUHSYK!Lgv1-Bnl{~N!u=?UD|8kL=H)u1u@!>W9NxM9~E*4Vy=pw<(^(tg^^$Gs{ z&#xW{F};{lSG^Hj(dK?sB6Ioz{Mdl8{|e2O zMLmh^`t6yX5rM(XyAyPg826sF8x65hQ}_};TlF)>j^GrjiHt1*lKlCfpWol6$N$h_ zH7&+?2caFxMJtU>b7}6G!QHOYGo2Ekn%e9yKbLH5I&&lJVR#rzNpgfxRnorr=;8L% z?QKiqgPDq9-mcGqOU1ajiQ<_qZUP?W37PZONB|lw>qNfy_MVZ=lYz|puBkUnbb}*= zGdP}z?Ds;D6#l`It^TWnC+s2EH5pm6rBe@(afXBX{rUOxdwc66uo{h`b z78VKDID@uBS_#`=g0YxwLO;*Xm@A+Z5yEZkb=*B=uKFghlWp~UBjG$x)$a^}eLIZH z*7DA($0v{1_)MOkKj^M|>FGViVj_>l`Mtpa*Gd5~D0Gd%o(^tG_A@T-J%1ybbsHK& zruS-~)fb5F^5=_*#YqsT>TN*=)$s{#WxqXQb!G(HX@eh_ab{4v-80whPB;{xnGrpJ zB`TxKuIZy0M|kZ^%veQnD5}fjNN-_&1l-Ep8%rBdC{tTawhU9|IjWwS4x@;q?kz=# z%7f~Eu|ncR+`bA*=f2&ExkDkBrtp~!OrubdkGD~=22Uu?gB}8H?^SkJ&}hZs2-U;A zH<`~tie=7QTsR*s2_l*S+{5mk=H^Vq6qw$4TXW?{n6T=FI2?{jBQNRljBG{ODvLgR&60(}mRt^^k7By8^aJ zS^M>?Z}YkRbAV=~>R!tlNRl-DmK~8>0RWVt{z*b@ClJa(Z^;y9ElLEa2BG|x9qW3V zWopBIPJEhj7`LDpK~&vtI|2jITajQg#8{27yE_sh;|RQcJ)J-4YJ`Sh$DYu@VT6NK zHzLv9*2zQry%mY}JQ1^R8qQ3wh7dDf@O&8+)a{#jnwKFAFK^dGgnZpy5me}$To+D& zLfgLUr``=MnPNmzT!_Xw&(1@qy1Q%o_txg^ZQq{z&df+@*zn2N3$($ANJ)Eyh_uvg zcT0kN>sQ)r_nL8i;^;}cwZkn;a^ddV5oswif4C|ZY;++)5#TD7GPI@7=bStldFZtd zdI2wksjn#FVC+yMkXB?6%gIpKvt1c7!9Mx3Ye7KTdx$5Q_UbtmaYzz$m1k(1y{pW~ zkTWv(pS~zhahqz3!EVpUc&pJvrsyq22O=Z18@YAj3Q_`m|G)p+<4^=5H9?Zv0f);X znfY^mXs&Zi4DQ#9pqQx-2@(P0@9*D5WZJe{-~SXB?fRkQV1LMwS$eZ)h*>l=BH!O` zW7U=V!1&LfKmYTS=VNiL6jQ5`{dlDmxvB6r;v3#~Ul2fs@H^c#fq3V)r}wYN_+;?o znT@;012P_Uzo3YK*)tbbDi}{bGBNX$X{)M(v5uitjNG^FLFm4JyRQv0&T}HTSLeYAUCF`-$P3A8fjj4rp`GGVFvWcljqrCb-UjBg$*J^U|e7J z!(?X0UX&tW__1-E@LAErrGgL^YhKs1eKBQ>=gB`_pZ2HoRvl0QthKZ(U#_#*u zo4X!S84`rGE z2C_o?C~!}09BgO<&ZaM-Pna{&LPi+cxX3RKSGgdywp5Da7EUL0Be<{Qa z%>4e|^K&9ID2$#6*N6;n4s=~5Ug05$Teb1`->zL9&vZ{4GvKuID5#xLj5q7H?~`^A zSTD7>U3UOw00EGB;$(&)Y0-ik)@|c6Ody0nb?vJLAniMCQw%}9nPl)^Gh4QYa7+8l z2`vr9JR_p!*}}Dt$XXe_cr{g>w)+Ety@RTkh@HFU1QF3 zOw6tK{p|%cPEpXw#_aX1rfH4^=$s_A65pC0_lY%S&Ms=(-;Z;;b`$%bzrQbviWCe_ zx4Q{?94DUS4m`IYx&oN#uD(4(*ep#7CjU1)d|(qS$R&;+IDIiakNu%6@oQz}Fe1vtG>RYw}yj9cQv*1?RYG|68laVJl_>!r08IgIqXS&Z>1%@$Rt5Zmd z!&ME~|G2r+KtcezyZd^WC*uU{JU;<_P$I?k?dn>ijN+puCPjW~P9*tJ~<=DavY6Gjz_M+ySRwj~MvL6B*M3 z%)C|i+McuRI%oXzT0~U8cX}UTI{-MDMD8<}qGC#h?h5*3j5vgWWUUtH|!KwyaJum4m7K0uz)XFpC2>Y9b`*(VwH7-ch>=ouABg zFz(XM-*FkW7qcbhxZdiS0qub?jR4?juLX#WA$S3}Jx9VqhEfN%bV5`JmS9(V5W#<+ z9dZYjSb<|M7-JeCPW5z614EsYkuXF~!?vf+$)ofB{w{!P%PyYgmnB2h^mJy#!cvIm zJOK37Rpb0TpQM(XB-~2Cv&xUL0rp^rcIO;mKY-YLzmCAJ``fdN7lPhNl&FYYr%uhH z&o|(w_r3RCPjA7hyWhX}KW}Yt*)xCt{%Q|lUjnnmP{tC#A*8o7&mflWxLZrYu)F5> z?|a|d?V1ZXNrh9~TTSM-HQIPmRWoCW2T}y6J)h_1NlB^Qn7Q|Fb?p!5oF9GK0s_0( zU)@E76cD~3wSk3_IQVa|x(j8P#Pd8yx@%1}x(n?SX(2M_({l{k8_Twba)cNrr8su& zC3m)(y~a-BZfqGv#gj*Hg39!;?f5cuH@Xo#HR0N~#4BfhK z)lA>Tv8`Boc46gwp1u45ZaKIOSx%Eg9L&t~WIjRoInUOcpPz^Njt+|Wc^>6ijtD%z zU2O}h{Tcu>u6L@g;l)CjrWhwpQfWkA5cF>`RvEkOJT>Tr|c#;Gh_HOD??7rD6`w&v2CF$3*Hg2WQ>8Q zy6?y{4kq~J35@_*9@*!ljk=@Y$sjE7JnP$92Nyt%y$V$^3a<7^NkK-Q9jl?~RBX1S z?fe%422fRXuW!GC|_(XhK?JFRPDeQ%Aw;R6?3yj`7H z5{}`>xa3m3fpY)=d0Y9}U~? z9+DaAS%}xzoGr#zSIr7^ms{4|-Vvaurw@aq#678evtY673ky;Ht*Tq@9t=F)Z&xjR zBqgvt{dT*DJ4g2-(RSd19uG@9+Bt$D;!mE{{CUf(JMRk-VW76T-;-1_K1mFM0rae} zOj{XAPSwn;-X}vcX6DxQ%*l9uer&EbD2^g>gV<(!(9_+0GS_1p(2fLx1K0$)Usg|l zNdB2J94A9ZP<4%q%ao=RJU@rV_HH8%U{MTunz8l>389GU28p42U_tEelZ^Og-MjpX z#p7Vr5MTA25}^G{HUogcOj|t95fwT%KR%(L0O^c48DfMYBr#?`xog0nB5}?+KgmVk zV#?l70L*oX(mr_@|Mdrbhyn^E?|VryWsUf`JjW!zTgFt~TfJr?3N=;JBr_Gya}%!uXU?|s#5RC6x{yWn1dg{Obt zch+bvJm+LUk;2kTQMY$v$vtrx9&4$fRnN~lzNq;5ms#{qC74?5+IXJS`FzRiH{7hs zz}Wl_iFm~2(6skiTONtsMc{~$spb7G)rSP-g-wV6_mMZQRiZA? zCCfb!%$>n4r`@dTaij5ZRRn|Z5Oa>|_5yt8y4-#1c2TIF`~H4>cPaC%cqmSY>KWsc4ED_K zOcq~p*R8P%3t?)idLb|*QfatvgZ%tM4hTV0?3&mi5*QHzZ?#tTBtIb#?Y4mBP!Pa8 zC%Fdkc75M6Ro`jLqW-=9$bPS->bLI*e$L}Tzkl735IR!ClY1IBuw>W|Rr>$y>5tOv zSaO_86aZ-+%D-pPcbfO>Y4yx16>cQa4|LUIR%V?eMeOZvMgnWmKhGb}bYI(2yzlLI z?FXHq&G6i+$T-iFp)Vi5mqT*eQzMGQm0d+}$G4z{0%NLaD)ph%v}(e&`Pg)bKR-X` z=gG`-!u~fcra;eNEmd0sWkh6F)pT!`W+lG03#O%Vv}cBbsgqnI_p(i&%%A6w;p%lV zVD>p-0&mZ_Z{6qTWaMx#ZjC)v<*t3aZz8AcxsG!det5ff3$okVo}y*$$3&i?Yv%(Q zkr}~U6X@79GBjS(Qtyr^NIPb%nV*w0h){6)EzkW|sThJi5M;olu|+GaI*meRatzL{ zfZn&LnC@}yUPjFB-5{WESCtfsXU4fa1UNWaXy48c7LW+W<`uvQ^)wVlf8Fq|9b*}D zb{J0u2HneEqGFj^)8(n3pXbk?KNM?P7@Bo!s$ukQe}$RusTo;8YCz>7*ww8bbcZ#DMu`@gLs_**>+`|ShC?c}uYf^EMEGtuUv9IE@iFL&Gx z&-CGEK*zNE9S;Gw;nv#XdhV?S2SKdg>M3P>DI1j@n?=65`O^>j@Xue&0 zJPI7lPG{(uX>SSvCLc zJPI)9HW}aK3~JZy5*h2a*nJ^3_O+VM2{YEXJsg4H8j9iNL+Q-f<6g!wFKo!e%$Bd^w` z#uY71SXDXECMt4ssg7IlhGt-I<;O?*%aGtf6ddeS$T0sd5OyER_X0u41^K;H0 z%OI*PC~^;q!nSp3eS;e9g#ODSWyT3lZGS-fmfL6e8|>8tX$ykOWdQ@2CaE}?Ck|=l^C)uceZCo-PtC$7(_&QzoT1GY_0;VG z{r>*#zTG1wVguP`$YgJ&>J|~ph&ItSxx5Mk$~f!N20x=mo&&VYPd?-Mpa1^PEO&F! z7o?W+*7se}cz7ul5N$K!-V4l$6yf^N?(K^%m))~_f7^BM7Tte;f2*zszzh}zjG0OC zoSzH@^r^=Ab>qeOUg-ADMf0S&_R0^i5I}monITYWz(|c@~ zlZXE%3tvRkHkHrM&vqQ=YjPvMm?44vV=K68gCLcu$T9A%NKxF;(mLH|7foYq2*JAq zqpk0dFr0q-7QPLbdjSLV@4aZOAF1Aj-ppREmY}wD)w%DNu%i3jYAGa%va~v?d%LxV;=O(w*e!g$F+-XPu;28sk8D#X2em;)m2s9#r|TdUX&dj zPz`XKp0}#2Lk^yu8pr+(L5w$Iv6Ir7(KkvB%-pX1`2F@JLkijvo17dXm$k9m|MoX_ zseY^4HWl^0fB)z2%xrIG8u$19HemNV)BWDM)BiTa+t;oW59O}fp%ueD&9&*=ZItWQ zThk`qd#A_1;2M0y^*7^$5NpQ$vYnhE6a!$Au@_}fHIt#ApGQ=rBF~ch<7Ce?9sCy_ zGL5ZUAr!Mg&K(8|8|AOJ`mLF+>U%FuyJzsXey1_!jLAI(43^_+%KqbvGtEjB?57dLIA7L%k60ozs&AeNW#=IYsh6i3VGs~ z9iq$-EoH`j3-e3snR}_d^(~XW0l6~?xoVSfWp>{Zb@yHxEfc#IiVK?!`{kyNn=$RT|WF$lM^oS^Pt7!(Nr`_KPg`|;BC{(|9 z#&He}eiP=LJN4ewfn($ktRNDRVsJGpZn%2Jyzd)=O}4B1?b;wr&3nIe$xzIbm>n!= zQ_kPE3_5u-!_~jdtMz*S&fIMe=6jBAg=`_r-4Q(8>-VnJ*Un)h2AFQ|%Y7rZ zpSlByv|`5ad~$nHk%(MFskpoQg=GyD=0_nEN$S3D*H@PKchlfeb~m8VPRo~o7hCWI zCz7ckc0s(983DP4vB>TIf2PdHW3un9y9tx{z3+*P;CqWR8}T|4fO~(d#~D5I?Jaj# z*sn}6d`Cd!i6?V;-NaP6`b%L0RkPXLkHpH}492~eoH!xwdkBn_V&f>D+J3NwDUT$~ zTesaaGr-%|)0?2)nw5dEP^-~ayJxlf$uJU@Brz1ZwF zJ?xB#P%!GP9b0-)V$|&IP6=ZRyWFfvFY*sxSJLb+c4nR3KHG4Y>(?H2n)Z29RM``Oj)wN>V z1x5l~MDZp>-hRKV3$^{}aT!C#$s=*PSd>jI+J_2h;XE{hV=t2};&6lJ9@0Qi%e0w) zhi${%RZ?c8q*Sbv`~Lo2dj8|Xeczr<)`_7L*$opB-<$ZH!>|+>!Ip9v zIz%XSZw;U$5DP;g*uZpsk-9ufDX1m_-6ipytbX^hM_8G%r)O$we5UCEJ}>c}WSQc) z7!t$dvG49Hy5IWS-92-D4nfb={*4Cy*hP!H$6(weMBq&I*XRxH>#wJ}z4HVzA%p3S z+~g5rV>Vu#UTE5SGEQW$cj2{|&PB$$J~+EnW43E*W;9!8YIln#r1!mjT{Z8$_m=It zWz1(=3D)g9Wz75C^g`SM9&FSs-)-W2d<5}>x5Dw9^WAl+I1fBOf6mYIpA)(CGZOG! zq7*laKXsmsK6yc8SRgis$p8Vyx9h8}fw@tOE(r17u4>qC{Q{68zMjClYaJjVwvsge zfB(<_8+m4?cP_5gSefQ%f?=ZG+QR_s`J`d&9u6Z3kLCL9e8S5r5B~l8Mj+$tZ);|L zo`dlY=@okKoD*|rzlj7+BuGOW$b0fM_kjLEhQ}RWYir+f{tDUuB8v7bCHZq|U^!W> zkTT|8301ZhG`sEB?5@oC__JH~Ub0Y}h0DWZN=&0T=1H1UOTC053~u$r7J%o8?M)GJ z>oVcH6vv*K%(IeUxAS?rY9ASd-&;Z2&WITx0cd7|0XK+@xSM(pp}K&nK1V$t&0uCM zj)ybKL|YMe^ThLQZ=fNP@U0%tmhQgy=blZ-JUpRVP5_69Wvk|s-9241pb&~~XQb(= z_j&%9zJGr`P(-_*=k$PfP0!3Z$Gwdn?lKXBaY5;_Vk2|wfya@Cai;z8yL-%?3_s^U;clB5`0u?*Qir7H8ai7)y*HoSl@SeBfdo}kB&TuG*eNNd zjVE&N35vx)2{R!nIk&6Z#?PN0!(I2^w*b>yQlvfS$@^QI7ZO#|3QqC)NpGef>Zz@J zENSFloGdbQtKcT%)(BRHXO%dt?ugivF;0T3ZtcwMs?0O99lOA47;5ILn+!i#9rt@z z)5&P|$piTJcN?ygaXc3h-E|_WudS1t8{WsdMAX2#vNkl3>Jp7 zPqzNapFIOHxG~YMvou)y;jQ~*?peS3a-TLk+oU#6&yZ_+Oxv>d37C;kd#dN0*nxT| zmYcM5lbP9;DzN_s+lZiNK(+xoB~aVf8qcoy?OsR@BjyWxFw!&|;0{+Y!&vN#6khSc zuJetzYNLKwA>9nj(eN8>Z;l=48GurVCQ)_UnZaGUp=Ty|GF9E&w8t)-=eysH%OI%~ zdnXkA87;4i!=LB0J>60Y^!`~qnYksz>LCN%!40OG^sNdWMh0g*10HD_?JFrWdsfdP zjO_kMf9`QV=MRJR$^PQQHVO4!{EIp)AAPF!$oYNdLvUzas{5;&YR1(4&wu{(xNA;o z;C&y1AP%M=DzMj?{f2IJX^9FO>uhh#NduqwRzv4G{a!}+8-Y3^cT%#_TS6w(Mq;{M z@L6z_7W(v@r@OW*u|b8*$Fun#1fo$el&9WbH{vJpJr?-w?ZK%_C3bH#?&_aE&lol_ zMSDmpZ@r)~JQ0>@mu}8~}0R{rgKU$h*l=1U+Qzp9x@9 z4F`>%lfy4Ww+XZpM@Im9XHF}%;`b^MA@Y6i=O(Y&-PT494*1Rm@aO0M*z^0o;MZ)d z`|DXyDO0*{BfrK{bpuQ(lIu_l$=uUmU^8c6m-F*kQ%i35h|yj9nOJE?4^lKd4ag@R zx0~Z0YVTcyIa9Mh(`7tOpGZ=zMp5~Z`{!b>P~|x%53<+UqK}Qazs*m+==KiuF$?ur zIB&%NdPTqay#j)26U6YiH@Uf}thf5)$y~#r``+)QzJs=<6l}L@F~kuA%LIm$BDO?& zyEWEx>R!)8WL3u@6=+cIoh<`Pj*3v<1}w&C$18|`!(a?Q1q4-nYbF_Sa?OlVjJJM9 z2D)z*k{DXbfPVW|P)5AfA!g=&$9u-afBy4SPk>*n2dw+X$)BI+{k`jjO2$Tow{bD( zrJZT#Kp(wc;uc=I?u~pXc2#6b=rPAzE?q#vxI?F>B6D{D5z>15w1Jp)L#@j}-JMO47gK(qNckP+SH z%xYfw?@T;kz_;EInK7&OVQ;c`uzCV&IsGA~-dmX~8Ts}Du))mG-}{&U>JWgjM=OL> zB%M)p6Vg%Y4125Tees-Fw02=!W6^NJKzTFkzwe3UH=DrJh=zs}&&k@-^Jd>?!`#J; zZ{*N+EI5uQo~_<4TNmKZ&$BtB$n*~FyGbZOooV+huN`%JJV_xmpvS*csTewx9O6qU zm1jaJY#yWwP9;6nh@>y<)l!;f-QgZ-3-WgLM|m29-Cbdbj`$h87$Olyqr$XVz8W($ zY{i0Rw$_iNdL5Qx*re{Q1t)#ZqL*E%R2OKsgwNn+pZv#lh0M%_+X7{T& zKj&=U#xk+o7`K^bs*msmsp4FX(*b~BF zw?oS%lC~x_n^w=E;@^q$I~c2)v5JV0ctSJ%JVCHA&xzYko?!u)>80>S`cn#ZYfYxT_@=rCYDIz6X#|ji0~?iD_fdq41i=21`k`zkcaxg4w&D{bb~`oY~A{ zER1x1o@cMg)GnA+-7#i(W-Wsq7MV5ubHd+g!qW@fV&*Y=s`iOIa41dRDl%v|=$eQF z_vc?FX{Ru4*gUGfixx0OBAnxP?_*hjpA!v_y}sKBRui6pdJjW=mw(W=W(#D}%=OH> zq8t)Ed49T!pYVrX_fAg@V1J#9vDJp-^J<2};h=Eu`#dMKo36{RNwAq-06R0;nS)%2 zv)FhVGgGEQoT(j8^gG;7$WCqTFFwV1PVCO?y&Y%S*=sSF0k$8k;JpLX$(XjDI6xJ~ zlh)Xw=$g#ju>>hkGe7i_iRXE4)n2q}u3w)YPH$aG5#d!s=DAe^Of?aa5gFe?CK@{> zwk7Ud1L0)uC@d8pH6io%4dPIS>l@&DPyc`;LyGDKyt!jX&>v+zm#@#6Zf6h-g=c>6 z-DwXY#zNBW7UXZe6T=~s@&dBjo+WjPbO3u8AYo^0=bnnVZ;j_LV2ty3y{?nVH|ef42a0;tY&#@i^?6AZrs*jTvO- za~}5?J*~*Jr~eHT+l4_SmFoAklSWe2mxOl=lp&+{n94}?-j)jusNR~iyS38xcTM0T zc_i?=a6L`~-JO+QY~4?}^exq%o3wV1~x6Qu#}Mm#xHZNnqYSD@cEI&>1< zBj&!3PNX8bJHCU%ZTlxrUnkwwn-S(V(V_G6%=CRPmQPFTDP|m| z4qbaQ&^x`>vJd_mFWz?X937f%?2sTjL^%r=KjJ&%Fr^L12GToK%<=Dt-RiC@q6x?7Qvy43zX`?x~uPWP3AH8@ap_Oe+V_Y z?9ALlWY0X$5vCX3E|GC?@2$v#_BQ(_z}nHWL)O)^#C|>l+?>?5n&a)A_C#-w5fkJfd^KQ}l)_54~ zukc6CEHD@!X%w+EFahSjc$;!d(RY;pRGmh>7f?nn!$btNZDT!up1SpQB7Tm@_x4Zb z?_lY!vn&X*>Q=W>5ogm}pQfWd^yrf^tWowGtEbpOMYp@^KYt#P<;5Hs2*oP4e(r+Xm?cHNL>;9JKFk1=lC_-us*bYU(N?0+zbo zO^a~zgnM{f)~2G~_m~_uhpDNieV#Kt|5ksTnhVEzquQkBzNW-j+jV^Lp@h+xC;9tp z4&todezXCkfiS-{dD7#a>t9+OC%hi$E`qi?9F(7wxY7IX#&JRymbDE?}ku2 z?|Yu}-d7+ZNIe$wdpr)Nr$dW49pGzqo5d+kM>{!C_=1 z6KmO-t=(cE-1ip{XHI0HF&qvk4W=E(?{7gOW?M9=q!@#-IWzmNS|EOeJjTjbR}v@e zSA7QEHKVt@w-P6Pb#RX zMbLE(6~u&Q#s%&2zFqwbGV@fG(Y7(dtQ?)*amy-ldhRVU22Hcx>%xijm`SbktHJ#P zif>myNO@`8avs4N_jn?;$w2fg#>QqdqrD0ERj2M8V~@t#3n0ZQ_uL(UE6rI-nW-?y z;NBBF?&<*4+CTCR~_ zJ8bemT{H09mf4)j%$-cr2r-{O#{9nb=jT~8LH9TaZ+#)WNA%sIhw4@wxi=9%b%%<4 zo+pm0Hb(cpzc06)u4;$Gn5sG27Mvu3E7c%Vi}}Tx*0yUxXC_Fl5tgj!?hbd={5(&? zbxTA@y(zo@-TZI+!~$Zr7UkI}fv9`$7uqAmoJI)Ko|&|0v`fsr-hV$~QBt*kwEr{_ zm|1Owchw70_*%#!Qn@2c%x-PjYTqf`z4=S{_QV4db$>s}h(5@jxR*9j!6{FJgd(?^ zv`Ed1=LdPxi^P+H>M{p}f9F0*G8!Fl_l=|X-V;wv2~?t8!DG1AXw#@J19?)7wNXB~ zZCZRTtINL4rNIy5>|@aL`>W>}Y)6J9WFahX#)fb0%yLeg_BR?4Lc|@@9-8g)q|W>I zHt#L*Y^Yi?4 zb^gT6)ZaSK*;uSVvg)lBHOvR8r=*hs?k$h@FCs%R>0Ly4`2PNik#Q71HCIi0rhdg7 zbl*|xdkN&`2sP8Vh{T3!Jab7*qg{PTp63|aa7yn3G(d*ojI6q|j=Abz&e1v%=T;jn z0-n^No(8)9N&%D7=IVvGeFZlshCLO3{*(LtDD(`=@nkS-u1?H&wn4$cq6v#*?Pf5R zmib+~dK(D}au^H4be9Z0 zXN#NFSXN%cntfodeQAk#|JQh`28oOV^iBkf59}jA05dhSA951hSWgHx!V3hJVt}3= zETN6l9YpWZB16!gIL8(-!rWJpp=?a(qrn6Pne(rX=IJi(u{H>J*AAdh>b-9$Cr$!E z)OIWzBC8s`X%Fr$nPgYX1{h?Q6a#8$p}Q1sw-_ewTZU6>9R>xLN!>57&AU1YYTvK< zb1<{j>VZ|$*vp(>JItm=c%r`cKA>J=kNX7J>Y=o^7!|8o=|!^Q`;Sq0%*^`Vz#iEMthHAX&?y? zK%={3lWZ7B;oQ=A=Gk|;L9pkJ^DBHE=XKphxRR1)6IAd~Eaj_fG6aRhuhDGZdpX0{ zC?$kgUaY|1dn3rejKBT~M#~lj`%bNdY+49OOQa4Ue`2F8GbKi1Vlcxo@N*u9rfNJ2 z?MjQ}C#B=YvY;o}P-b`6+p#qWfbdj{(S&P9qyXiq!cCFGJlVJHmc&^R;%ui^V{?07 zj?g&)oVv@{#s-wBp|r10dj!8#5!nWJ%^o1-@(?@8t)66motyoDAwZ~-!4A(fh2SPg zRdqew&4%K*Ul3h2gLocyUo%mlL)q2vE&KvBF2+AUKeqR!dQuI|ICz2_jn`+bb>fa4 zsc>?twd5ilb9K`Wes+bP+ECi{eex8h+P<&J#8|tVZHgyO`<>T@hvqs1$ICP5E}5IB zIvKxr=uzmzsVRc*+r}*8*khniL@x?05s4~KUH3qTv@jdwSHw;$33cDd7&P(hM}pE% zW={p5?oq7OPTh5TARyxFt}#T^RPrD~ku{~v>E3jD-;piozV8l}>vs%i9Fn)+4?;$u z@hQIT0V5CLJ#%E>8)FKFQ>oClmljhS+6V72wB5#&IsRDvZ3|JTu#}I{5#O;k$e9VT z%iXg(c~|L6of@A}5St!3Jf0TQmI7d(Q?uTHwHLglk5#6)bfRC1Fxe&HH&Axha

->4D%XNt@UW(kPAIC^@f?`1X z%u#obo96`Q-d=7;P)JDh-OdQcfJ;Xd?(YpL5X_(ypwhiP1r)?&K%8Hn6Ablq?HUQ8 zM#FQvQ;`Bu@1;@^0bDf@tG|`j8W=kuB-L)B|1pJU#l7$QMxLequYs$9P}Xe(%#nk> z3628XS1GG&f3w{))d+fA={eEmE&VBFh@FNc~ zT_*MXNmMs{PDbi|e_iC)x+b?#m0QabW21H;V*_9W)`Mr@tqOPMkG^mN-)PnpAUB4i z&d7#gy!Q%FM8=~)yEJ=p=Dq*@C{J}Sn9BKkkr;B8zMyT(zUBU-;|ScFnGFRks%yqY zi^)`W-wi{q)norXORczXEq`G8Lm>721r8%QRW@dnp+!+S$;PY$UZDeY&Di7A0Sb)B zA?8*(KU6VR9d0x7#OCr5yWN=Rb>#@Nc$%HG>^3&K>+5`=5N45u*E8=1vAZ@N`BlGIoLlRz)WpaRjz|Rd-?5qN`wo zn+!}nUjj;j@Sl@CCF&?J^wjh)TU-axs>Zfg-P@d*5UV^>tETvf$+jQ{=5oMo%>}z1 zh@js0Jqjcx)f7bZ%rMUpV`lDszpIvHpzj?h?NB;`O@wzRIn!Gf7t#hC)l2I~6||Ja ztpVCbr$Og-CD$^I*zWFFWuy#_nY4L-{}SosF¸M)TRpd;hGuRr9cLJf;T-S?b? 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 e0Rjbcg8v`Xw*f$h%16fl0000 Date: Mon, 28 Apr 2025 09:31:41 -0400 Subject: [PATCH 08/97] creating management repo for iceberg catalog --- .pre-commit-config.yaml | 9 +- README.md | 2 +- examples/build.ipynb | 441 +++++++++++++++++- pyproject.toml | 73 ++- scripts/gpkg_to_parquet.py | 2 +- src/icefabric_manage/.pyiceberg.yaml | 5 + .../README.md} | 0 src/icefabric_manage/pyproject.toml | 33 ++ .../src/icefabric_manage/__init__.py | 3 + .../src/icefabric_manage/_api.py | 55 +++ 10 files changed, 571 insertions(+), 52 deletions(-) create mode 100644 src/icefabric_manage/.pyiceberg.yaml rename src/{icefabric/__init__.py => icefabric_manage/README.md} (100%) create mode 100644 src/icefabric_manage/pyproject.toml create mode 100644 src/icefabric_manage/src/icefabric_manage/__init__.py create mode 100644 src/icefabric_manage/src/icefabric_manage/_api.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1f55ba1..55c7d48 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -17,7 +17,8 @@ repos: # Run the formatter. - id: ruff-format - # - repo: https://github.com/pre-commit/mirrors-mypy - # rev: v1.15.0 - # hooks: - # - id: mypy + - repo: https://github.com/astral-sh/uv-pre-commit + rev: 0.5.7 + hooks: + - id: uv-lock + diff --git a/README.md b/README.md index 77e388b..1e2efd3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [![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) -An Apache Iceberg implementation of the Hydrofabric to disseminate continental hydrologic data +An [Apache Iceberg](https://py.iceberg.apache.org/) implementation of the Hydrofabric to disseminate continental hydrologic data #### Credits: diff --git a/examples/build.ipynb b/examples/build.ipynb index 2aa3eec..45c6838 100644 --- a/examples/build.ipynb +++ b/examples/build.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 12, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -100,6 +100,71 @@ " tables[table_name] = add_parquet_to_catalog(str(parquet_file), table_name)" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "NoSuchTableError", + "evalue": "Table does not exist: hydrofabric.d", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNoSuchTableError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mcatalog\u001b[49m\u001b[43m.\u001b[49m\u001b[43mload_table\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mhydrofabric.d\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.13/site-packages/pyiceberg/catalog/sql.py:300\u001b[39m, in \u001b[36mSqlCatalog.load_table\u001b[39m\u001b[34m(self, identifier)\u001b[39m\n\u001b[32m 298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[32m 299\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._convert_orm_to_iceberg(result)\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NoSuchTableError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mTable does not exist: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnamespace\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtable_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", + "\u001b[31mNoSuchTableError\u001b[39m: Table does not exist: hydrofabric.d" + ] + } + ], + "source": [ + "catalog.load_table(\"hydrofabric.d\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "network(\n", + " 1: id: optional string,\n", + " 2: toid: optional string,\n", + " 3: divide_id: optional string,\n", + " 4: ds_id: optional double,\n", + " 5: mainstem: optional double,\n", + " 6: hydroseq: optional double,\n", + " 7: hf_source: optional string,\n", + " 8: hf_id: optional double,\n", + " 9: lengthkm: optional double,\n", + " 10: areasqkm: optional double,\n", + " 11: tot_drainage_areasqkm: optional double,\n", + " 12: type: optional string,\n", + " 13: vpuid: optional string,\n", + " 14: hf_hydroseq: optional double,\n", + " 15: hf_lengthkm: optional double,\n", + " 16: hf_mainstem: optional double,\n", + " 17: topo: optional string,\n", + " 18: poi_id: optional double,\n", + " 19: hl_uri: optional string\n", + "),\n", + "partition by: [],\n", + "sort order: [],\n", + "snapshot: Operation.APPEND: id=3803992390522077902, schema_id=0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tables[\"network\"]" + ] + }, { "cell_type": "code", "execution_count": 7, @@ -261,16 +326,386 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "network_df = tables[\"network\"].scan().to_pandas()\n", "nexus_df = tables[\"nexus\"].scan().to_pandas()\n", + "flowpaths_df = tables[\"flowpaths\"].scan().to_pandas()\n", "\n", "terminal_id = origin['id'].iloc[0]\n", "terminal_nexus = origin['toid'].iloc[0]" ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
84513nex-1000wb-1000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84514nex-10000wb-10000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84515nex-10004wb-10004NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84516nex-10008wb-10008NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84517nex-1001wb-1001NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
............................................................
3461032tnx-1000014142wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461033tnx-1000014143wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461034tnx-1000014144wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461035tnx-1000014145wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461036tnx-1000014146wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
\n", + "

404808 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " id toid divide_id ds_id mainstem hydroseq \\\n", + "84513 nex-1000 wb-1000 None NaN NaN NaN \n", + "84514 nex-10000 wb-10000 None NaN NaN NaN \n", + "84515 nex-10004 wb-10004 None NaN NaN NaN \n", + "84516 nex-10008 wb-10008 None NaN NaN NaN \n", + "84517 nex-1001 wb-1001 None NaN NaN NaN \n", + "... ... ... ... ... ... ... \n", + "3461032 tnx-1000014142 wb-0 None NaN NaN NaN \n", + "3461033 tnx-1000014143 wb-0 None NaN NaN NaN \n", + "3461034 tnx-1000014144 wb-0 None NaN NaN NaN \n", + "3461035 tnx-1000014145 wb-0 None NaN NaN NaN \n", + "3461036 tnx-1000014146 wb-0 None NaN NaN NaN \n", + "\n", + " hf_source hf_id lengthkm areasqkm \\\n", + "84513 NOAA Reference Fabric NaN NaN NaN \n", + "84514 NOAA Reference Fabric NaN NaN NaN \n", + "84515 NOAA Reference Fabric NaN NaN NaN \n", + "84516 NOAA Reference Fabric NaN NaN NaN \n", + "84517 NOAA Reference Fabric NaN NaN NaN \n", + "... ... ... ... ... \n", + "3461032 NOAA Reference Fabric NaN NaN NaN \n", + "3461033 NOAA Reference Fabric NaN NaN NaN \n", + "3461034 NOAA Reference Fabric NaN NaN NaN \n", + "3461035 NOAA Reference Fabric NaN NaN NaN \n", + "3461036 NOAA Reference Fabric NaN NaN NaN \n", + "\n", + " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", + "84513 NaN nexus 01 NaN NaN \n", + "84514 NaN nexus 01 NaN NaN \n", + "84515 NaN nexus 01 NaN NaN \n", + "84516 NaN nexus 01 NaN NaN \n", + "84517 NaN nexus 01 NaN NaN \n", + "... ... ... ... ... ... \n", + "3461032 NaN terminal 18 NaN NaN \n", + "3461033 NaN terminal 18 NaN NaN \n", + "3461034 NaN terminal 18 NaN NaN \n", + "3461035 NaN terminal 18 NaN NaN \n", + "3461036 NaN terminal 18 NaN NaN \n", + "\n", + " hf_mainstem topo poi_id hl_uri \n", + "84513 NaN fl-nex NaN None \n", + "84514 NaN fl-nex NaN None \n", + "84515 NaN fl-nex NaN None \n", + "84516 NaN fl-nex NaN None \n", + "84517 NaN fl-nex NaN None \n", + "... ... ... ... ... \n", + "3461032 NaN fl-nex NaN None \n", + "3461033 NaN fl-nex NaN None \n", + "3461034 NaN fl-nex NaN None \n", + "3461035 NaN fl-nex NaN None \n", + "3461036 NaN fl-nex NaN None \n", + "\n", + "[404808 rows x 19 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wb_rows = network_df[network_df['toid'].str.contains('wb-', na=False)]\n", + "nex_rows = network_df[network_df['toid'].str.contains('nex-', na=False)]\n", + "wb_rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/pyproject.toml b/pyproject.toml index e71d5e9..a804791 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,53 +1,17 @@ -[build-system] -build-backend = "hatchling.build" -requires = ["hatchling", "hatch-vcs"] - -[tool.hatch] -version.source = "vcs" -build.hooks.vcs.version-file = "./src/icefabric/_version.py" - -[tool.hatch.metadata] -allow-direct-references = true - -[tool.hatch.build.targets.wheel] -packages = ["src/icefabric"] - -[tool.hatch.build.targets.sdist] -packages = ["src/icefabric"] - [project] name = "icefabric" -description = "A tool for training deep learning models for FIM" +version = "0.1.0" +description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" dynamic = ["version"] -requires-python = ">=3.11.0" +requires-python = ">=3.11" license = { file = "LICENSE" } -authors = [{ name = "Tadd Bindas" }] -maintainers = [{ name = "Tadd Bindas", email = "taddbindas@gmail.com" }] +authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -dependencies = [ - "numpy==2.2.5", - "fiona==1.10.1", - "pandas==2.2.3", - "cubed-xarray==0.0.7", - "geopandas==1.0.1", - "pydantic==2.10.6", - "xarray==2025.3.1", - "scipy==1.15.1", - "tqdm==4.67.1", - "zarr==3.0.7", - "sympy==1.13.1", - "scikit-learn==1.6.1", - "matplotlib==3.10.0", - "s3fs==2025.3.2", - "pyarrow==19.0.1", - "pyiceberg==0.9.0", -] +dependencies = [] [project.optional-dependencies] -test = ["pytest", "pytest-cov"] -dev = ["pre-commit", "ruff", "black", "mypy"] - docs = [ "pillow", "cairosvg", @@ -58,7 +22,30 @@ docs = [ "mkdocs-git-revision-date-localized-plugin", ] -jupyter = ["ipykernel", "jupyterlab"] +[tool.uv.sources] +icefabric_tools = { workspace = true } +icefabric_manage = { workspace = true } +examples = { workspace = true } + +[tool.uv.workspace] +members = [ + "examples/*", "src/*" +] + +[tool.uv] +dev-dependencies = [ + "pre-commit>=3.8.0", + "ipykernel>=6.29.5", + "jupyterlab", + "pytest>=8.3.2", + "ruff", + "black", + "mypy", + "icefabric_manage", + "icefabric_tools", + "examples", +] +package = false [tool.black] line-length = 110 diff --git a/scripts/gpkg_to_parquet.py b/scripts/gpkg_to_parquet.py index 85f28a7..17c4911 100644 --- a/scripts/gpkg_to_parquet.py +++ b/scripts/gpkg_to_parquet.py @@ -10,5 +10,5 @@ for layer in available_layers: gdf = gpd.read_file(input_file, layer=layer) output_file = f"data/parquet/{layer}.parquet" - gdf.to_parquet(output_file) + gdf.to_parquet(output_file) print(f"Converted layer '{layer}' to {output_file}") diff --git a/src/icefabric_manage/.pyiceberg.yaml b/src/icefabric_manage/.pyiceberg.yaml new file mode 100644 index 0000000..0cef7d0 --- /dev/null +++ b/src/icefabric_manage/.pyiceberg.yaml @@ -0,0 +1,5 @@ +catalog: + hydrofabric: + type: sql + uri: sqlite:///../..//warehouse/icefabric_catalog.db + warehouse: file:///../..//warehouse diff --git a/src/icefabric/__init__.py b/src/icefabric_manage/README.md similarity index 100% rename from src/icefabric/__init__.py rename to src/icefabric_manage/README.md diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml new file mode 100644 index 0000000..a4712a2 --- /dev/null +++ b/src/icefabric_manage/pyproject.toml @@ -0,0 +1,33 @@ +[project] +name = "icefabric_manage" +version = "0.1.0" +description = "All functionality for creating, updating, and deleting information from the icefabric catalog" +authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +requires-python = ">=3.11" +readme = "README.md" +dependencies = [ + "numpy==2.2.5", + "fiona==1.10.1", + "pandas==2.2.3", + "cubed-xarray==0.0.7", + "geopandas==1.0.1", + "pydantic==2.10.6", + "xarray==2025.3.1", + "scipy==1.15.1", + "tqdm==4.67.1", + "zarr==3.0.7", + "sympy==1.13.1", + "scikit-learn==1.6.1", + "matplotlib==3.10.0", + "s3fs==2025.3.2", + "pyarrow==19.0.1", + "pyiceberg==0.9.0", +] + +[project.scripts] +icefabric_manage = "icefabric_manage._api:build" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" diff --git a/src/icefabric_manage/src/icefabric_manage/__init__.py b/src/icefabric_manage/src/icefabric_manage/__init__.py new file mode 100644 index 0000000..3803004 --- /dev/null +++ b/src/icefabric_manage/src/icefabric_manage/__init__.py @@ -0,0 +1,3 @@ +from icefabric_manage._api import build + +__all__ = ["build"] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py new file mode 100644 index 0000000..67d2c87 --- /dev/null +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -0,0 +1,55 @@ +"""Contains all api functions that can be called outside of the icefabric_manage package""" + +from pyiceberg.catalog import Catalog, load_catalog, load_table +from pyiceberg.excpetions import NoSuchTableError +from pyiceberg.table import Table +import pyarrow.parquet as pq +from pathlib import Path + +def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str) -> Table: + """Adding a parquet file to the hydrofabric catalog + + Parameters + ---------- + catalog : Catalog + A PyIceberg catalog + file_path : Path + The path to the parquet file + table_name : str + The table name that's wanted + + Returns + ------- + Table + A PyIceberg table + + Raises + ------ + FileNotFoundError + The parquet file given doesn't exist + """ + if file_path.exists(): + arrow_table = pq.read_table(file_path) + iceberg_table = catalog.create_table( + f"hydrofabric.{table_name}", + schema=arrow_table.schema, + ) + iceberg_table.append(arrow_table) + return iceberg_table + else: + raise FileNotFoundError(f"Cannot find file: {file_path}") + +def build(file_dir: Path): + catalog = load_catalog("hydrofabric") + parquet_files = list(file_dir.glob("*.parquet")) + + tables = {} + for parquet_file in parquet_files: + table_name = parquet_file.stem # Get filename without extension + tables[table_name] = _add_parquet_to_catalog(catalog, parquet_file, table_name) + +def load_table_from_catalog(identifier: str) -> Table: + try: + return load_table(identifier) + except NoSuchTableError as e: + raise NoSuchTableError from e From 65797348ae76151d495cac5c0db43d91e5877b67 Mon Sep 17 00:00:00 2001 From: taddyb Date: Mon, 28 Apr 2025 12:49:49 -0400 Subject: [PATCH 09/97] adding new workspaces into the monorepo --- .../.pyiceberg.yaml => .pyiceberg.yaml | 0 examples/__build.ipynb | 730 +++ examples/build.ipynb | 675 +-- pyproject.toml | 4 +- scripts/gpkg_to_parquet.py | 2 +- src/icefabric_manage/pyproject.toml | 3 +- .../src/icefabric_manage/__init__.py | 4 +- .../src/icefabric_manage/_api.py | 63 +- src/icefabric_tools/README.md | 0 src/icefabric_tools/pyproject.toml | 33 + .../src/icefabric_tools/__init__.py | 3 + .../src/icefabric_tools/_api.py | 53 + uv.lock | 3990 +++++++++++++++++ 13 files changed, 4887 insertions(+), 673 deletions(-) rename src/icefabric_manage/.pyiceberg.yaml => .pyiceberg.yaml (100%) create mode 100644 examples/__build.ipynb create mode 100644 src/icefabric_tools/README.md create mode 100644 src/icefabric_tools/pyproject.toml create mode 100644 src/icefabric_tools/src/icefabric_tools/__init__.py create mode 100644 src/icefabric_tools/src/icefabric_tools/_api.py create mode 100644 uv.lock diff --git a/src/icefabric_manage/.pyiceberg.yaml b/.pyiceberg.yaml similarity index 100% rename from src/icefabric_manage/.pyiceberg.yaml rename to .pyiceberg.yaml diff --git a/examples/__build.ipynb b/examples/__build.ipynb new file mode 100644 index 0000000..30d6379 --- /dev/null +++ b/examples/__build.ipynb @@ -0,0 +1,730 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiceberg.catalog import load_catalog\n", + "import pyarrow.parquet as pq\n", + "import os\n", + "from pathlib import Path\n", + "import geopandas as gpd\n", + "from shapely import wkb\n", + "import numpy as np\n", + "import networkx as nx\n", + "from tqdm import tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "from pyiceberg.catalog import load_catalog\n", + "\n", + "warehouse_path = \"../data/warehouse\"\n", + "catalog = load_catalog(\n", + " \"default\",\n", + " **{\n", + " \"type\": \"sql\",\n", + " \"uri\": f\"sqlite:///{warehouse_path}/icefabric_catalog.db\",\n", + " \"warehouse\": f\"file://{warehouse_path}\",\n", + " },\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "def add_parquet_to_catalog(file_path, table_name):\n", + " # Check if table already exists\n", + " if catalog.table_exists(f\"hydrofabric.{table_name}\"):\n", + " print(f\"Table {table_name} already exists, loading it\")\n", + " return catalog.load_table(f\"hydrofabric.{table_name}\")\n", + "\n", + " # Read the parquet file\n", + " arrow_table = pq.read_table(file_path)\n", + "\n", + " # Create the table in the catalog\n", + " iceberg_table = catalog.create_table(\n", + " f\"hydrofabric.{table_name}\",\n", + " schema=arrow_table.schema,\n", + " )\n", + "\n", + " # Append the data to the table\n", + " iceberg_table.append(arrow_table)\n", + "\n", + " print(f\"Added {file_path} as table {table_name}\")\n", + " return iceberg_table" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table network already exists, loading it\n", + "Table nexus already exists, loading it\n", + "Table flowpath-attributes already exists, loading it\n", + "Table divides already exists, loading it\n", + "Table pois already exists, loading it\n", + "Table flowpath-attributes-ml already exists, loading it\n", + "Table divide-attributes already exists, loading it\n", + "Table flowpaths already exists, loading it\n", + "Table hydrolocations already exists, loading it\n", + "Table lakes already exists, loading it\n" + ] + } + ], + "source": [ + "# Get all parquet files from the directory\n", + "parquet_dir = \"../data/parquet\"\n", + "parquet_files = list(Path(parquet_dir).glob(\"*.parquet\"))\n", + "\n", + "# Dictionary to store all tables\n", + "tables = {}\n", + "\n", + "# Add each parquet file to the catalog\n", + "for parquet_file in parquet_files:\n", + " table_name = parquet_file.stem # Get filename without extension\n", + " tables[table_name] = add_parquet_to_catalog(str(parquet_file), table_name)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "NoSuchTableError", + "evalue": "Table does not exist: hydrofabric.d", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mNoSuchTableError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mcatalog\u001b[49m\u001b[43m.\u001b[49m\u001b[43mload_table\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mhydrofabric.d\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.13/site-packages/pyiceberg/catalog/sql.py:300\u001b[39m, in \u001b[36mSqlCatalog.load_table\u001b[39m\u001b[34m(self, identifier)\u001b[39m\n\u001b[32m 298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[32m 299\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._convert_orm_to_iceberg(result)\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NoSuchTableError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mTable does not exist: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnamespace\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtable_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", + "\u001b[31mNoSuchTableError\u001b[39m: Table does not exist: hydrofabric.d" + ] + } + ], + "source": [ + "catalog.load_table(\"hydrofabric.d\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "network(\n", + " 1: id: optional string,\n", + " 2: toid: optional string,\n", + " 3: divide_id: optional string,\n", + " 4: ds_id: optional double,\n", + " 5: mainstem: optional double,\n", + " 6: hydroseq: optional double,\n", + " 7: hf_source: optional string,\n", + " 8: hf_id: optional double,\n", + " 9: lengthkm: optional double,\n", + " 10: areasqkm: optional double,\n", + " 11: tot_drainage_areasqkm: optional double,\n", + " 12: type: optional string,\n", + " 13: vpuid: optional string,\n", + " 14: hf_hydroseq: optional double,\n", + " 15: hf_lengthkm: optional double,\n", + " 16: hf_mainstem: optional double,\n", + " 17: topo: optional string,\n", + " 18: poi_id: optional double,\n", + " 19: hl_uri: optional string\n", + "),\n", + "partition by: [],\n", + "sort order: [],\n", + "snapshot: Operation.APPEND: id=3803992390522077902, schema_id=0" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "tables[\"network\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Tables in the catalog:\n", + "- ('hydrofabric', 'divide-attributes')\n", + "- ('hydrofabric', 'divides')\n", + "- ('hydrofabric', 'flowpath-attributes')\n", + "- ('hydrofabric', 'flowpath-attributes-ml')\n", + "- ('hydrofabric', 'flowpaths')\n", + "- ('hydrofabric', 'hydrolocations')\n", + "- ('hydrofabric', 'lakes')\n", + "- ('hydrofabric', 'network')\n", + "- ('hydrofabric', 'nexus')\n", + "- ('hydrofabric', 'pois')\n" + ] + } + ], + "source": [ + "print(\"Tables in the catalog:\")\n", + "for table_id in catalog.list_tables(\"hydrofabric\"):\n", + " print(f\"- {table_id}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "def create_geodataframe(df):\n", + " if \"geometry\" in df.columns:\n", + " df[\"geometry\"] = df[\"geometry\"].apply(lambda x: wkb.loads(x) if x is not None else None)\n", + " return gpd.GeoDataFrame(df, geometry=\"geometry\", crs=\"EPSG:5070\")\n", + " return df" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "def find_origin(network_table, identifier, id_type=\"hl_uri\"):\n", + " \"\"\"Find an origin point in the hydrofabric network.\n", + "\n", + " This function handles the case where multiple records match the identifier.\n", + " It follows the R implementation to select a single origin point based on\n", + " the minimum hydroseq value.\n", + " \"\"\"\n", + " # Filter network table by the identifier\n", + " if id_type == \"hl_uri\":\n", + " row_filter = f\"{id_type} == '{identifier}'\"\n", + " # elif id_type == \"comid\":\n", + " # row_filter = f\"hf_id == {identifier}\"\n", + " # elif id_type == \"id\":\n", + " # row_filter = f\"id == '{identifier}'\"\n", + " # elif id_type == \"poi_id\":\n", + " # row_filter = f\"poi_id == '{identifier}'\"\n", + " else:\n", + " raise ValueError(f\"Identifier type {id_type} not supported\")\n", + "\n", + " # Get all matching records\n", + " origin_candidates = network_table.scan(row_filter=row_filter).to_pandas()\n", + "\n", + " if len(origin_candidates) == 0:\n", + " raise ValueError(f\"No origin found for {id_type}='{identifier}'\")\n", + "\n", + " # Select relevant columns for the origin\n", + " origin_cols = [\"id\", \"toid\", \"vpuid\", \"topo\", \"hydroseq\"]\n", + " available_cols = [col for col in origin_cols if col in origin_candidates.columns]\n", + "\n", + " # Select only the relevant columns and drop duplicates\n", + " origin = origin_candidates[available_cols].drop_duplicates()\n", + "\n", + " # Find the record with minimum hydroseq\n", + " if \"hydroseq\" in origin.columns:\n", + " # For consistency with R, check if there are unique hydroseq values\n", + " if len(origin[\"hydroseq\"].unique()) > 1:\n", + " # Sort by hydroseq and take the minimum\n", + " origin = origin.sort_values(\"hydroseq\").iloc[0:1]\n", + "\n", + " # If we still have multiple records, it's a problem\n", + " if len(origin) > 1:\n", + " raise ValueError(f\"Multiple origins found: {origin['id'].tolist()}\")\n", + "\n", + " return origin" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoidvpuidtopohydroseq
1wb-87646nex-8740402fl-nex26923.0
\n", + "
" + ], + "text/plain": [ + " id toid vpuid topo hydroseq\n", + "1 wb-87646 nex-87404 02 fl-nex 26923.0" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "identifier = \"gages-01563500\"\n", + "id_type = \"hl_uri\"\n", + "origin = find_origin(network_table, identifier, id_type)\n", + "origin" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": {}, + "outputs": [], + "source": [ + "network_df = tables[\"network\"].scan().to_pandas()\n", + "nexus_df = tables[\"nexus\"].scan().to_pandas()\n", + "flowpaths_df = tables[\"flowpaths\"].scan().to_pandas()\n", + "\n", + "terminal_id = origin[\"id\"].iloc[0]\n", + "terminal_nexus = origin[\"toid\"].iloc[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
84513nex-1000wb-1000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84514nex-10000wb-10000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84515nex-10004wb-10004NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84516nex-10008wb-10008NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84517nex-1001wb-1001NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
............................................................
3461032tnx-1000014142wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461033tnx-1000014143wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461034tnx-1000014144wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461035tnx-1000014145wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461036tnx-1000014146wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
\n", + "

404808 rows × 19 columns

\n", + "
" + ], + "text/plain": [ + " id toid divide_id ds_id mainstem hydroseq \\\n", + "84513 nex-1000 wb-1000 None NaN NaN NaN \n", + "84514 nex-10000 wb-10000 None NaN NaN NaN \n", + "84515 nex-10004 wb-10004 None NaN NaN NaN \n", + "84516 nex-10008 wb-10008 None NaN NaN NaN \n", + "84517 nex-1001 wb-1001 None NaN NaN NaN \n", + "... ... ... ... ... ... ... \n", + "3461032 tnx-1000014142 wb-0 None NaN NaN NaN \n", + "3461033 tnx-1000014143 wb-0 None NaN NaN NaN \n", + "3461034 tnx-1000014144 wb-0 None NaN NaN NaN \n", + "3461035 tnx-1000014145 wb-0 None NaN NaN NaN \n", + "3461036 tnx-1000014146 wb-0 None NaN NaN NaN \n", + "\n", + " hf_source hf_id lengthkm areasqkm \\\n", + "84513 NOAA Reference Fabric NaN NaN NaN \n", + "84514 NOAA Reference Fabric NaN NaN NaN \n", + "84515 NOAA Reference Fabric NaN NaN NaN \n", + "84516 NOAA Reference Fabric NaN NaN NaN \n", + "84517 NOAA Reference Fabric NaN NaN NaN \n", + "... ... ... ... ... \n", + "3461032 NOAA Reference Fabric NaN NaN NaN \n", + "3461033 NOAA Reference Fabric NaN NaN NaN \n", + "3461034 NOAA Reference Fabric NaN NaN NaN \n", + "3461035 NOAA Reference Fabric NaN NaN NaN \n", + "3461036 NOAA Reference Fabric NaN NaN NaN \n", + "\n", + " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", + "84513 NaN nexus 01 NaN NaN \n", + "84514 NaN nexus 01 NaN NaN \n", + "84515 NaN nexus 01 NaN NaN \n", + "84516 NaN nexus 01 NaN NaN \n", + "84517 NaN nexus 01 NaN NaN \n", + "... ... ... ... ... ... \n", + "3461032 NaN terminal 18 NaN NaN \n", + "3461033 NaN terminal 18 NaN NaN \n", + "3461034 NaN terminal 18 NaN NaN \n", + "3461035 NaN terminal 18 NaN NaN \n", + "3461036 NaN terminal 18 NaN NaN \n", + "\n", + " hf_mainstem topo poi_id hl_uri \n", + "84513 NaN fl-nex NaN None \n", + "84514 NaN fl-nex NaN None \n", + "84515 NaN fl-nex NaN None \n", + "84516 NaN fl-nex NaN None \n", + "84517 NaN fl-nex NaN None \n", + "... ... ... ... ... \n", + "3461032 NaN fl-nex NaN None \n", + "3461033 NaN fl-nex NaN None \n", + "3461034 NaN fl-nex NaN None \n", + "3461035 NaN fl-nex NaN None \n", + "3461036 NaN fl-nex NaN None \n", + "\n", + "[404808 rows x 19 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "wb_rows = network_df[network_df[\"toid\"].str.contains(\"wb-\", na=False)]\n", + "nex_rows = network_df[network_df[\"toid\"].str.contains(\"nex-\", na=False)]\n", + "wb_rows" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/build.ipynb b/examples/build.ipynb index 45c6838..1ee57e7 100644 --- a/examples/build.ipynb +++ b/examples/build.ipynb @@ -2,71 +2,18 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ - "from pyiceberg.catalog import load_catalog\n", - "import pyarrow.parquet as pq\n", - "import os\n", "from pathlib import Path\n", - "import geopandas as gpd\n", - "from shapely import wkb\n", - "import numpy as np\n", - "import networkx as nx\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from pyiceberg.catalog import load_catalog\n", - "\n", - "warehouse_path = \"../data/warehouse\"\n", - "catalog = load_catalog(\n", - " \"default\",\n", - " **{\n", - " 'type': 'sql',\n", - " \"uri\": f\"sqlite:///{warehouse_path}/icefabric_catalog.db\",\n", - " \"warehouse\": f\"file://{warehouse_path}\",\n", - " },\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def add_parquet_to_catalog(file_path, table_name):\n", - " # Check if table already exists\n", - " if catalog.table_exists(f\"hydrofabric.{table_name}\"):\n", - " print(f\"Table {table_name} already exists, loading it\")\n", - " return catalog.load_table(f\"hydrofabric.{table_name}\")\n", - " \n", - " # Read the parquet file\n", - " arrow_table = pq.read_table(file_path)\n", - " \n", - " # Create the table in the catalog\n", - " iceberg_table = catalog.create_table(\n", - " f\"hydrofabric.{table_name}\",\n", - " schema=arrow_table.schema,\n", - " )\n", - " \n", - " # Append the data to the table\n", - " iceberg_table.append(arrow_table)\n", - " \n", - " print(f\"Added {file_path} as table {table_name}\")\n", - " return iceberg_table" + "from icefabric_manage import build, load_table_from_catalog\n", + "from icefabric_tools import to_geopandas" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -87,617 +34,37 @@ } ], "source": [ - "# Get all parquet files from the directory\n", - "parquet_dir = \"../data/parquet\"\n", - "parquet_files = list(Path(parquet_dir).glob(\"*.parquet\"))\n", - "\n", - "# Dictionary to store all tables\n", - "tables = {}\n", - "\n", - "# Add each parquet file to the catalog\n", - "for parquet_file in parquet_files:\n", - " table_name = parquet_file.stem # Get filename without extension\n", - " tables[table_name] = add_parquet_to_catalog(str(parquet_file), table_name)" + "warehouse_path = \"../data/warehouse\"\n", + "catalog = build(\n", + " Path(\"/Users/taddbindas/projects/NGWPC/icefabric/data/parquet\"),\n", + " catalog_settings = {\n", + " 'type': 'sql',\n", + " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", + " \"warehouse\": f\"file://{warehouse_path}\",\n", + " },\n", + ")" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { - "ename": "NoSuchTableError", - "evalue": "Table does not exist: hydrofabric.d", + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'load_table'", "output_type": "error", "traceback": [ "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNoSuchTableError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mcatalog\u001b[49m\u001b[43m.\u001b[49m\u001b[43mload_table\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mhydrofabric.d\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.13/site-packages/pyiceberg/catalog/sql.py:300\u001b[39m, in \u001b[36mSqlCatalog.load_table\u001b[39m\u001b[34m(self, identifier)\u001b[39m\n\u001b[32m 298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[32m 299\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._convert_orm_to_iceberg(result)\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NoSuchTableError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mTable does not exist: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnamespace\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtable_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mNoSuchTableError\u001b[39m: Table does not exist: hydrofabric.d" + "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[5]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mload_table_from_catalog\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcatalog\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mnetwork\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/src/icefabric_manage/src/icefabric_manage/_api.py:91\u001b[39m, in \u001b[36mload_table_from_catalog\u001b[39m\u001b[34m(catalog, identifier)\u001b[39m\n\u001b[32m 71\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mload_table_from_catalog\u001b[39m(catalog: Catalog, identifier: \u001b[38;5;28mstr\u001b[39m) -> Table:\n\u001b[32m 72\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"_summary_\u001b[39;00m\n\u001b[32m 73\u001b[39m \n\u001b[32m 74\u001b[39m \u001b[33;03m Parameters\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 89\u001b[39m \u001b[33;03m The table does not exist in the catalog\u001b[39;00m\n\u001b[32m 90\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m91\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m 92\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m catalog.load_table(identifier)\n\u001b[32m 93\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m NoSuchTableError \u001b[38;5;28;01mas\u001b[39;00m e:\n", + "\u001b[31mAttributeError\u001b[39m: 'NoneType' object has no attribute 'load_table'" ] } ], "source": [ - "catalog.load_table(\"hydrofabric.d\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "network(\n", - " 1: id: optional string,\n", - " 2: toid: optional string,\n", - " 3: divide_id: optional string,\n", - " 4: ds_id: optional double,\n", - " 5: mainstem: optional double,\n", - " 6: hydroseq: optional double,\n", - " 7: hf_source: optional string,\n", - " 8: hf_id: optional double,\n", - " 9: lengthkm: optional double,\n", - " 10: areasqkm: optional double,\n", - " 11: tot_drainage_areasqkm: optional double,\n", - " 12: type: optional string,\n", - " 13: vpuid: optional string,\n", - " 14: hf_hydroseq: optional double,\n", - " 15: hf_lengthkm: optional double,\n", - " 16: hf_mainstem: optional double,\n", - " 17: topo: optional string,\n", - " 18: poi_id: optional double,\n", - " 19: hl_uri: optional string\n", - "),\n", - "partition by: [],\n", - "sort order: [],\n", - "snapshot: Operation.APPEND: id=3803992390522077902, schema_id=0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tables[\"network\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tables in the catalog:\n", - "- ('hydrofabric', 'divide-attributes')\n", - "- ('hydrofabric', 'divides')\n", - "- ('hydrofabric', 'flowpath-attributes')\n", - "- ('hydrofabric', 'flowpath-attributes-ml')\n", - "- ('hydrofabric', 'flowpaths')\n", - "- ('hydrofabric', 'hydrolocations')\n", - "- ('hydrofabric', 'lakes')\n", - "- ('hydrofabric', 'network')\n", - "- ('hydrofabric', 'nexus')\n", - "- ('hydrofabric', 'pois')\n" - ] - } - ], - "source": [ - "print(\"Tables in the catalog:\")\n", - "for table_id in catalog.list_tables(\"hydrofabric\"):\n", - " print(f\"- {table_id}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "def create_geodataframe(df):\n", - " if 'geometry' in df.columns:\n", - " df['geometry'] = df['geometry'].apply(\n", - " lambda x: wkb.loads(x) if x is not None else None\n", - " )\n", - " return gpd.GeoDataFrame(df, geometry='geometry', crs=\"EPSG:5070\")\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "def find_origin(network_table, identifier, id_type=\"hl_uri\"):\n", - " \"\"\"Find an origin point in the hydrofabric network.\n", - " \n", - " This function handles the case where multiple records match the identifier.\n", - " It follows the R implementation to select a single origin point based on \n", - " the minimum hydroseq value.\n", - " \"\"\"\n", - " # Filter network table by the identifier\n", - " if id_type == \"hl_uri\":\n", - " row_filter = f\"{id_type} == '{identifier}'\"\n", - " # elif id_type == \"comid\":\n", - " # row_filter = f\"hf_id == {identifier}\"\n", - " # elif id_type == \"id\":\n", - " # row_filter = f\"id == '{identifier}'\"\n", - " # elif id_type == \"poi_id\":\n", - " # row_filter = f\"poi_id == '{identifier}'\"\n", - " else:\n", - " raise ValueError(f\"Identifier type {id_type} not supported\")\n", - " \n", - " # Get all matching records\n", - " origin_candidates = network_table.scan(row_filter=row_filter).to_pandas()\n", - " \n", - " if len(origin_candidates) == 0:\n", - " raise ValueError(f\"No origin found for {id_type}='{identifier}'\")\n", - " \n", - " # Select relevant columns for the origin\n", - " origin_cols = ['id', 'toid', 'vpuid', 'topo', 'hydroseq']\n", - " available_cols = [col for col in origin_cols if col in origin_candidates.columns]\n", - " \n", - " # Select only the relevant columns and drop duplicates\n", - " origin = origin_candidates[available_cols].drop_duplicates()\n", - " \n", - " # Find the record with minimum hydroseq\n", - " if 'hydroseq' in origin.columns:\n", - " # For consistency with R, check if there are unique hydroseq values\n", - " if len(origin['hydroseq'].unique()) > 1:\n", - " # Sort by hydroseq and take the minimum\n", - " origin = origin.sort_values('hydroseq').iloc[0:1]\n", - " \n", - " # If we still have multiple records, it's a problem\n", - " if len(origin) > 1:\n", - " raise ValueError(f\"Multiple origins found: {origin['id'].tolist()}\")\n", - " \n", - " return origin" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtoidvpuidtopohydroseq
1wb-87646nex-8740402fl-nex26923.0
\n", - "
" - ], - "text/plain": [ - " id toid vpuid topo hydroseq\n", - "1 wb-87646 nex-87404 02 fl-nex 26923.0" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "identifier = \"gages-01563500\"\n", - "id_type = \"hl_uri\"\n", - "origin = find_origin(network_table, identifier, id_type)\n", - "origin" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "network_df = tables[\"network\"].scan().to_pandas()\n", - "nexus_df = tables[\"nexus\"].scan().to_pandas()\n", - "flowpaths_df = tables[\"flowpaths\"].scan().to_pandas()\n", - "\n", - "terminal_id = origin['id'].iloc[0]\n", - "terminal_nexus = origin['toid'].iloc[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
84513nex-1000wb-1000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84514nex-10000wb-10000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84515nex-10004wb-10004NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84516nex-10008wb-10008NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84517nex-1001wb-1001NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
............................................................
3461032tnx-1000014142wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461033tnx-1000014143wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461034tnx-1000014144wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461035tnx-1000014145wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461036tnx-1000014146wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
\n", - "

404808 rows × 19 columns

\n", - "
" - ], - "text/plain": [ - " id toid divide_id ds_id mainstem hydroseq \\\n", - "84513 nex-1000 wb-1000 None NaN NaN NaN \n", - "84514 nex-10000 wb-10000 None NaN NaN NaN \n", - "84515 nex-10004 wb-10004 None NaN NaN NaN \n", - "84516 nex-10008 wb-10008 None NaN NaN NaN \n", - "84517 nex-1001 wb-1001 None NaN NaN NaN \n", - "... ... ... ... ... ... ... \n", - "3461032 tnx-1000014142 wb-0 None NaN NaN NaN \n", - "3461033 tnx-1000014143 wb-0 None NaN NaN NaN \n", - "3461034 tnx-1000014144 wb-0 None NaN NaN NaN \n", - "3461035 tnx-1000014145 wb-0 None NaN NaN NaN \n", - "3461036 tnx-1000014146 wb-0 None NaN NaN NaN \n", - "\n", - " hf_source hf_id lengthkm areasqkm \\\n", - "84513 NOAA Reference Fabric NaN NaN NaN \n", - "84514 NOAA Reference Fabric NaN NaN NaN \n", - "84515 NOAA Reference Fabric NaN NaN NaN \n", - "84516 NOAA Reference Fabric NaN NaN NaN \n", - "84517 NOAA Reference Fabric NaN NaN NaN \n", - "... ... ... ... ... \n", - "3461032 NOAA Reference Fabric NaN NaN NaN \n", - "3461033 NOAA Reference Fabric NaN NaN NaN \n", - "3461034 NOAA Reference Fabric NaN NaN NaN \n", - "3461035 NOAA Reference Fabric NaN NaN NaN \n", - "3461036 NOAA Reference Fabric NaN NaN NaN \n", - "\n", - " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", - "84513 NaN nexus 01 NaN NaN \n", - "84514 NaN nexus 01 NaN NaN \n", - "84515 NaN nexus 01 NaN NaN \n", - "84516 NaN nexus 01 NaN NaN \n", - "84517 NaN nexus 01 NaN NaN \n", - "... ... ... ... ... ... \n", - "3461032 NaN terminal 18 NaN NaN \n", - "3461033 NaN terminal 18 NaN NaN \n", - "3461034 NaN terminal 18 NaN NaN \n", - "3461035 NaN terminal 18 NaN NaN \n", - "3461036 NaN terminal 18 NaN NaN \n", - "\n", - " hf_mainstem topo poi_id hl_uri \n", - "84513 NaN fl-nex NaN None \n", - "84514 NaN fl-nex NaN None \n", - "84515 NaN fl-nex NaN None \n", - "84516 NaN fl-nex NaN None \n", - "84517 NaN fl-nex NaN None \n", - "... ... ... ... ... \n", - "3461032 NaN fl-nex NaN None \n", - "3461033 NaN fl-nex NaN None \n", - "3461034 NaN fl-nex NaN None \n", - "3461035 NaN fl-nex NaN None \n", - "3461036 NaN fl-nex NaN None \n", - "\n", - "[404808 rows x 19 columns]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wb_rows = network_df[network_df['toid'].str.contains('wb-', na=False)]\n", - "nex_rows = network_df[network_df['toid'].str.contains('nex-', na=False)]\n", - "wb_rows" + "load_table_from_catalog(catalog, \"network\")" ] }, { diff --git a/pyproject.toml b/pyproject.toml index a804791..b7d9c9a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,6 @@ name = "icefabric" version = "0.1.0" description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" -dynamic = ["version"] requires-python = ">=3.11" license = { file = "LICENSE" } authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] @@ -25,11 +24,10 @@ docs = [ [tool.uv.sources] icefabric_tools = { workspace = true } icefabric_manage = { workspace = true } -examples = { workspace = true } [tool.uv.workspace] members = [ - "examples/*", "src/*" + "src/*" ] [tool.uv] diff --git a/scripts/gpkg_to_parquet.py b/scripts/gpkg_to_parquet.py index 17c4911..1f06b13 100644 --- a/scripts/gpkg_to_parquet.py +++ b/scripts/gpkg_to_parquet.py @@ -1,7 +1,7 @@ """A simple script to convert the v2.2 hydrofabric to parquet""" -import geopandas as gpd import fiona +import geopandas as gpd input_file = "data/conus_nextgen.gpkg" available_layers = fiona.listlayers(input_file) diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index a4712a2..8cb240f 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -22,7 +22,8 @@ dependencies = [ "matplotlib==3.10.0", "s3fs==2025.3.2", "pyarrow==19.0.1", - "pyiceberg==0.9.0", + "pyiceberg[sql-sqlite]", + "python-dotenv==1.1.0" ] [project.scripts] diff --git a/src/icefabric_manage/src/icefabric_manage/__init__.py b/src/icefabric_manage/src/icefabric_manage/__init__.py index 3803004..45625fb 100644 --- a/src/icefabric_manage/src/icefabric_manage/__init__.py +++ b/src/icefabric_manage/src/icefabric_manage/__init__.py @@ -1,3 +1,3 @@ -from icefabric_manage._api import build +from icefabric_manage._api import build, load_table_from_catalog -__all__ = ["build"] +__all__ = ["build", "load_table_from_catalog"] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index 67d2c87..c8fe044 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -1,12 +1,14 @@ """Contains all api functions that can be called outside of the icefabric_manage package""" -from pyiceberg.catalog import Catalog, load_catalog, load_table -from pyiceberg.excpetions import NoSuchTableError -from pyiceberg.table import Table -import pyarrow.parquet as pq from pathlib import Path -def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str) -> Table: +import pyarrow.parquet as pq +from pyiceberg.catalog import Catalog, load_catalog +from pyiceberg.exceptions import NoSuchTableError +from pyiceberg.table import Table + + +def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str): """Adding a parquet file to the hydrofabric catalog Parameters @@ -35,21 +37,58 @@ def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str) schema=arrow_table.schema, ) iceberg_table.append(arrow_table) - return iceberg_table else: raise FileNotFoundError(f"Cannot find file: {file_path}") -def build(file_dir: Path): - catalog = load_catalog("hydrofabric") + +def build(file_dir: Path, catalog_settings: dict[str, str]) -> Catalog: + """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. + + Parameters + ---------- + file_dir : Path + The path to the parquet files to add into the iceberg catalog + catalog_settings : dict[str, str] + The settings for the catalog entry + """ + catalog = load_catalog("hydrofabric", **catalog_settings) + + if not any(ns == ('hydrofabric',) for ns in catalog.list_namespaces()): + catalog.create_namespace('hydrofabric') + print("Created 'hydrofabric' namespace") + parquet_files = list(file_dir.glob("*.parquet")) - tables = {} for parquet_file in parquet_files: table_name = parquet_file.stem # Get filename without extension - tables[table_name] = _add_parquet_to_catalog(catalog, parquet_file, table_name) + if catalog.table_exists(f"hydrofabric.{table_name}"): + print(f"Table {table_name} already exists. Skipping build") + else: + _add_parquet_to_catalog(catalog, parquet_file, table_name) + return catalog -def load_table_from_catalog(identifier: str) -> Table: + +def load_table_from_catalog(catalog: Catalog, identifier: str) -> Table: + """_summary_ + + Parameters + ---------- + catalog : Catalog + The Iceberg catalog + identifier : str + The catalog name and table. Ex: hydrofabric.network + + Returns + ------- + Table + The requested table + + Raises + ------ + NoSuchTableError + The table does not exist in the catalog + """ try: - return load_table(identifier) + return catalog.load_table(identifier) except NoSuchTableError as e: raise NoSuchTableError from e diff --git a/src/icefabric_tools/README.md b/src/icefabric_tools/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml new file mode 100644 index 0000000..abf3353 --- /dev/null +++ b/src/icefabric_tools/pyproject.toml @@ -0,0 +1,33 @@ +[project] +name = "icefabric_tools" +version = "0.1.0" +description = "All functionality for creating, updating, and deleting information from the icefabric catalog" +authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +requires-python = ">=3.11" +readme = "README.md" +dependencies = [ + "numpy==2.2.5", + "fiona==1.10.1", + "pandas==2.2.3", + "cubed-xarray==0.0.7", + "geopandas==1.0.1", + "pydantic==2.10.6", + "xarray==2025.3.1", + "scipy==1.15.1", + "tqdm==4.67.1", + "zarr==3.0.7", + "sympy==1.13.1", + "scikit-learn==1.6.1", + "matplotlib==3.10.0", + "s3fs==2025.3.2", + "pyarrow==19.0.1", + "pyiceberg==0.9.0", +] + +[project.scripts] +icefabric_manage = "icefabric_manage._api:build" + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py new file mode 100644 index 0000000..1b90e20 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -0,0 +1,3 @@ +from icefabric_tools._api import to_geopandas + +__all__ = ["to_geopandas"] diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/_api.py new file mode 100644 index 0000000..a25974b --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/_api.py @@ -0,0 +1,53 @@ +"""Contains all api functions that can be called outside of the icefabric_tools package""" + +import geopandas as gpd +from pyiceberg.table import Table +from shapely import wkb + + +def to_geopandas( + table: Table, + row_filter: str | None = "", + case_sensitive: bool | None = True, + snapshot_id: int | None = None, + limit: int | None = None +) -> gpd.DataFrame: + """Converts a table to a geopandas dataframe + + Parameters + ---------- + table : Table + The iceberg table you are trying to read from + row_filter : str | None, optional + A string or BooleanExpression that describes the desired rows, by default "" + case_sensitive : bool | None, optional + If True column matching is case sensitive, by default True + snapshot_id : int | None, optional + Optional Snapshot ID to time travel to. + If None, scans the table as of the current snapshot ID, by default None + limit : int | None, optional + An integer representing the number of rows to return in the scan result. + If None, fetches all matching rows., by default None + + Returns + ------- + gpd.DataFrame + The resulting queried row, but in a geodataframe + + Raises + ------ + ValueError + Raised if the table does not have a geometry column + """ + df = table.scan( + row_filter=row_filter, + case_sensitive=case_sensitive, + snapshot_id=snapshot_id, + limit=limit, + ).to_pandas() + if "geometry" in df.columns: + df["geometry"] = df["geometry"].apply(lambda x: wkb.loads(x) if x is not None else None) + return gpd.GeoDataFrame(df, geometry="geometry", crs="EPSG:5070") + else: + raise ValueError("The provided table does not have a geometery column.") + return df diff --git a/uv.lock b/uv.lock new file mode 100644 index 0000000..58a72f3 --- /dev/null +++ b/uv.lock @@ -0,0 +1,3990 @@ +version = 1 +revision = 1 +requires-python = ">=3.11" +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version < '3.12'", +] + +[manifest] +members = [ + "icefabric", + "icefabric-manage", + "icefabric-tools", +] + +[[package]] +name = "aiobotocore" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiohttp" }, + { name = "aioitertools" }, + { name = "botocore" }, + { name = "jmespath" }, + { name = "multidict" }, + { name = "python-dateutil" }, + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313 }, +] + +[[package]] +name = "aiohappyeyeballs" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, +] + +[[package]] +name = "aiohttp" +version = "3.11.18" +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/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, + { url = "https://files.pythonhosted.org/packages/0a/18/be8b5dd6b9cf1b2172301dbed28e8e5e878ee687c21947a6c81d6ceaa15d/aiohttp-3.11.18-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:474215ec618974054cf5dc465497ae9708543cbfc312c65212325d4212525811", size = 699833 }, + { url = "https://files.pythonhosted.org/packages/0d/84/ecdc68e293110e6f6f6d7b57786a77555a85f70edd2b180fb1fafaff361a/aiohttp-3.11.18-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ced70adf03920d4e67c373fd692123e34d3ac81dfa1c27e45904a628567d804", size = 462774 }, + { url = "https://files.pythonhosted.org/packages/d7/85/f07718cca55884dad83cc2433746384d267ee970e91f0dcc75c6d5544079/aiohttp-3.11.18-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2d9f6c0152f8d71361905aaf9ed979259537981f47ad099c8b3d81e0319814bd", size = 454429 }, + { url = "https://files.pythonhosted.org/packages/82/02/7f669c3d4d39810db8842c4e572ce4fe3b3a9b82945fdd64affea4c6947e/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a35197013ed929c0aed5c9096de1fc5a9d336914d73ab3f9df14741668c0616c", size = 1670283 }, + { url = "https://files.pythonhosted.org/packages/ec/79/b82a12f67009b377b6c07a26bdd1b81dab7409fc2902d669dbfa79e5ac02/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:540b8a1f3a424f1af63e0af2d2853a759242a1769f9f1ab053996a392bd70118", size = 1717231 }, + { url = "https://files.pythonhosted.org/packages/a6/38/d5a1f28c3904a840642b9a12c286ff41fc66dfa28b87e204b1f242dbd5e6/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9e6710ebebfce2ba21cee6d91e7452d1125100f41b906fb5af3da8c78b764c1", size = 1769621 }, + { url = "https://files.pythonhosted.org/packages/53/2d/deb3749ba293e716b5714dda06e257f123c5b8679072346b1eb28b766a0b/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8af2ef3b4b652ff109f98087242e2ab974b2b2b496304063585e3d78de0b000", size = 1678667 }, + { url = "https://files.pythonhosted.org/packages/b8/a8/04b6e11683a54e104b984bd19a9790eb1ae5f50968b601bb202d0406f0ff/aiohttp-3.11.18-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28c3f975e5ae3dbcbe95b7e3dcd30e51da561a0a0f2cfbcdea30fc1308d72137", size = 1601592 }, + { url = "https://files.pythonhosted.org/packages/5e/9d/c33305ae8370b789423623f0e073d09ac775cd9c831ac0f11338b81c16e0/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c28875e316c7b4c3e745172d882d8a5c835b11018e33432d281211af35794a93", size = 1621679 }, + { url = "https://files.pythonhosted.org/packages/56/45/8e9a27fff0538173d47ba60362823358f7a5f1653c6c30c613469f94150e/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:13cd38515568ae230e1ef6919e2e33da5d0f46862943fcda74e7e915096815f3", size = 1656878 }, + { url = "https://files.pythonhosted.org/packages/84/5b/8c5378f10d7a5a46b10cb9161a3aac3eeae6dba54ec0f627fc4ddc4f2e72/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0e2a92101efb9f4c2942252c69c63ddb26d20f46f540c239ccfa5af865197bb8", size = 1620509 }, + { url = "https://files.pythonhosted.org/packages/9e/2f/99dee7bd91c62c5ff0aa3c55f4ae7e1bc99c6affef780d7777c60c5b3735/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e6d3e32b8753c8d45ac550b11a1090dd66d110d4ef805ffe60fa61495360b3b2", size = 1680263 }, + { url = "https://files.pythonhosted.org/packages/03/0a/378745e4ff88acb83e2d5c884a4fe993a6e9f04600a4560ce0e9b19936e3/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ea4cf2488156e0f281f93cc2fd365025efcba3e2d217cbe3df2840f8c73db261", size = 1715014 }, + { url = "https://files.pythonhosted.org/packages/f6/0b/b5524b3bb4b01e91bc4323aad0c2fcaebdf2f1b4d2eb22743948ba364958/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d4df95ad522c53f2b9ebc07f12ccd2cb15550941e11a5bbc5ddca2ca56316d7", size = 1666614 }, + { url = "https://files.pythonhosted.org/packages/c7/b7/3d7b036d5a4ed5a4c704e0754afe2eef24a824dfab08e6efbffb0f6dd36a/aiohttp-3.11.18-cp313-cp313-win32.whl", hash = "sha256:cdd1bbaf1e61f0d94aced116d6e95fe25942f7a5f42382195fd9501089db5d78", size = 411358 }, + { url = "https://files.pythonhosted.org/packages/1e/3c/143831b32cd23b5263a995b2a1794e10aa42f8a895aae5074c20fda36c07/aiohttp-3.11.18-cp313-cp313-win_amd64.whl", hash = "sha256:bdd619c27e44382cf642223f11cfd4d795161362a5a1fc1fa3940397bc89db01", size = 437658 }, +] + +[[package]] +name = "aioitertools" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, +] + +[[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 = "aiostream" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/fe/aa14603fcd5cc4333f81791bbdf58cd4cb8677c8e21e3cc691d27c00173f/aiostream-0.6.4.tar.gz", hash = "sha256:f99bc6b1b9cea3e70885dc235a233523597555fe4a585ed21d65264b3f1ff3d2", size = 67983 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/5c/639dc59441df1d5cec49a09c36eb89af651476760f950b7d018bdf0ec4a7/aiostream-0.6.4-py3-none-any.whl", hash = "sha256:bd8c6a8b90a52c0325a3b19406f0f2a131448e596c06398886f5be1c73b4cea9", size = 53665 }, +] + +[[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 = "anyio" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "sniffio" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, +] + +[[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 = "argon2-cffi" +version = "23.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "argon2-cffi-bindings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, +] + +[[package]] +name = "argon2-cffi-bindings" +version = "21.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, +] + +[[package]] +name = "array-api-compat" +version = "1.11.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/1e/d04312a19a67744298b7546885149488b8afbb965dfe693aa4964bb60586/array_api_compat-1.11.2.tar.gz", hash = "sha256:a3b7f7b6af18f4c42e79423b1b2479798998b6a74355069d77a01a5282755b5d", size = 50776 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d8/3388c7da49f522e51ab2f919797db28782216cadc9ecc9976160302cfcd6/array_api_compat-1.11.2-py3-none-any.whl", hash = "sha256:b1d0059714a4153b3ae37c989e47b07418f727be5b22908dd3cf9d19bdc2c547", size = 53149 }, +] + +[[package]] +name = "arrow" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, + { name = "types-python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, +] + +[[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 = "async-lru" +version = "2.0.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, +] + +[[package]] +name = "attrs" +version = "25.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, +] + +[[package]] +name = "babel" +version = "2.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, +] + +[[package]] +name = "backrefs" +version = "5.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, + { url = "https://files.pythonhosted.org/packages/04/b8/60dcfb90eb03a06e883a92abbc2ab95c71f0d8c9dd0af76ab1d5ce0b1402/backrefs-5.8-py313-none-any.whl", hash = "sha256:e3a63b073867dbefd0536425f43db618578528e3896fb77be7141328642a1585", size = 399915 }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, +] + +[[package]] +name = "beautifulsoup4" +version = "4.13.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "soupsieve" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, +] + +[[package]] +name = "black" +version = "25.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "mypy-extensions" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673 }, + { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190 }, + { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926 }, + { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, +] + +[[package]] +name = "bleach" +version = "6.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, +] + +[package.optional-dependencies] +css = [ + { name = "tinycss2" }, +] + +[[package]] +name = "botocore" +version = "1.37.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jmespath" }, + { name = "python-dateutil" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164 }, +] + +[[package]] +name = "cachetools" +version = "5.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, +] + +[[package]] +name = "cairocffi" +version = "1.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, +] + +[[package]] +name = "cairosvg" +version = "2.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cairocffi" }, + { name = "cssselect2" }, + { name = "defusedxml" }, + { name = "pillow" }, + { name = "tinycss2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, +] + +[[package]] +name = "certifi" +version = "2025.4.26" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, +] + +[[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.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, + { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, + { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, + { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, + { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, + { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, + { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, + { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, + { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, + { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, + { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, + { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, + { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +] + +[[package]] +name = "click" +version = "8.1.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, +] + +[[package]] +name = "click-plugins" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, +] + +[[package]] +name = "cligj" +version = "0.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, +] + +[[package]] +name = "cloudpickle" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, +] + +[[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 = "contourpy" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, + { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630 }, + { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670 }, + { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694 }, + { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986 }, + { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060 }, + { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747 }, + { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895 }, + { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098 }, + { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535 }, + { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096 }, + { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090 }, + { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643 }, + { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443 }, + { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865 }, + { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162 }, + { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355 }, + { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935 }, + { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 }, + { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 }, + { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, +] + +[[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 = "cryptography" +version = "44.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, + { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, + { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, + { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, + { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, + { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, + { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, + { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, + { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, + { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, + { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, + { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, + { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, + { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, + { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, + { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, + { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, + { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, + { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, + { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, + { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, + { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, + { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, + { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, + { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, + { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, + { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081 }, +] + +[[package]] +name = "cssselect2" +version = "0.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "tinycss2" }, + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, +] + +[[package]] +name = "cubed" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiostream" }, + { name = "array-api-compat" }, + { name = "cloudpickle" }, + { name = "donfig" }, + { name = "fsspec" }, + { name = "mypy-extensions" }, + { name = "ndindex" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "psutil" }, + { name = "tenacity" }, + { name = "toolz" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/09/3a/f11d45a514b8786349146dc03957a412fd839abac1d3e602b428dd383a39/cubed-0.21.0.tar.gz", hash = "sha256:91a1c2a499f853d963d27750835b75b7bd01fc099bbfbfa65c11e6f963f09705", size = 158280 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/c4/836840cbc87b9087aadc7d83ef53299acd87c4df4451eabddbb741ad5deb/cubed-0.21.0-py3-none-any.whl", hash = "sha256:4ac5144d14498ac8dbbf8e6b8f1c9b3c3be9390137300a49fa3b6698304e141f", size = 202434 }, +] + +[[package]] +name = "cubed-xarray" +version = "0.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cubed" }, + { name = "numpy" }, + { name = "xarray" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/01/3c/b5dd75d70fb05e50771148296c20d415e7f20e1c9d86e90e106677ea4388/cubed-xarray-0.0.7.tar.gz", hash = "sha256:b08a969656c9c05c7168f9eee78911b73d6ab31781c317984b490c8e9d984eac", size = 19906 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/bf/d3e75275497bc0a84f3420c15952dd63beb0b2b6cb9fedbad32a640f0750/cubed_xarray-0.0.7-py3-none-any.whl", hash = "sha256:83aad6439c4ab5b58601f2ef806e45aac64adc43a84ddec21c5507ec13c8af35", size = 16511 }, +] + +[[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 = "debugpy" +version = "1.8.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, + { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676 }, + { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514 }, + { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756 }, + { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119 }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, +] + +[[package]] +name = "decorator" +version = "5.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, +] + +[[package]] +name = "defusedxml" +version = "0.7.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, +] + +[[package]] +name = "deprecated" +version = "1.2.18" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wrapt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, +] + +[[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 = "donfig" +version = "0.8.1.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, +] + +[[package]] +name = "examples" +version = "1.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, +] + +[[package]] +name = "executing" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, +] + +[[package]] +name = "fastjsonschema" +version = "2.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, +] + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, +] + +[[package]] +name = "fiona" +version = "1.10.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "certifi" }, + { name = "click" }, + { name = "click-plugins" }, + { name = "cligj" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293 }, + { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213 }, + { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183 }, + { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398 }, + { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589 }, + { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603 }, + { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639 }, + { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921 }, + { url = "https://files.pythonhosted.org/packages/c5/e0/665ce969cab6339c19527318534236e5e4184ee03b38cd474497ebd22f4d/fiona-1.10.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:a00b05935c9900678b2ca660026b39efc4e4b916983915d595964eb381763ae7", size = 16106571 }, + { url = "https://files.pythonhosted.org/packages/23/c8/150094fbc4220d22217f480cc67b6ee4c2f4324b4b58cd25527cd5905937/fiona-1.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f78b781d5bcbbeeddf1d52712f33458775dbb9fd1b2a39882c83618348dd730f", size = 14738178 }, + { url = "https://files.pythonhosted.org/packages/20/83/63da54032c0c03d4921b854111e33d3a1dadec5d2b7e741fba6c8c6486a6/fiona-1.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29ceeb38e3cd30d91d68858d0817a1bb0c4f96340d334db4b16a99edb0902d35", size = 17221414 }, + { url = "https://files.pythonhosted.org/packages/60/14/5ef47002ef19bd5cfbc7a74b21c30ef83f22beb80609314ce0328989ceda/fiona-1.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:15751c90e29cee1e01fcfedf42ab85987e32f0b593cf98d88ed52199ef5ca623", size = 24461486 }, +] + +[[package]] +name = "fonttools" +version = "4.57.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392 }, + { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609 }, + { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292 }, + { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503 }, + { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351 }, + { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067 }, + { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263 }, + { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968 }, + { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824 }, + { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072 }, + { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020 }, + { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096 }, + { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356 }, + { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546 }, + { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776 }, + { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956 }, + { url = "https://files.pythonhosted.org/packages/e9/2f/11439f3af51e4bb75ac9598c29f8601aa501902dcedf034bdc41f47dd799/fonttools-4.57.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:408ce299696012d503b714778d89aa476f032414ae57e57b42e4b92363e0b8ef", size = 2739175 }, + { url = "https://files.pythonhosted.org/packages/25/52/677b55a4c0972dc3820c8dba20a29c358197a78229daa2ea219fdb19e5d5/fonttools-4.57.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bbceffc80aa02d9e8b99f2a7491ed8c4a783b2fc4020119dc405ca14fb5c758c", size = 2276583 }, + { url = "https://files.pythonhosted.org/packages/64/79/184555f8fa77b827b9460a4acdbbc0b5952bb6915332b84c615c3a236826/fonttools-4.57.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f022601f3ee9e1f6658ed6d184ce27fa5216cee5b82d279e0f0bde5deebece72", size = 4766437 }, + { url = "https://files.pythonhosted.org/packages/f8/ad/c25116352f456c0d1287545a7aa24e98987b6d99c5b0456c4bd14321f20f/fonttools-4.57.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dea5893b58d4637ffa925536462ba626f8a1b9ffbe2f5c272cdf2c6ebadb817", size = 4838431 }, + { url = "https://files.pythonhosted.org/packages/53/ae/398b2a833897297797a44f519c9af911c2136eb7aa27d3f1352c6d1129fa/fonttools-4.57.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dff02c5c8423a657c550b48231d0a48d7e2b2e131088e55983cfe74ccc2c7cc9", size = 4951011 }, + { url = "https://files.pythonhosted.org/packages/b7/5d/7cb31c4bc9ffb9a2bbe8b08f8f53bad94aeb158efad75da645b40b62cb73/fonttools-4.57.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:767604f244dc17c68d3e2dbf98e038d11a18abc078f2d0f84b6c24571d9c0b13", size = 5205679 }, + { url = "https://files.pythonhosted.org/packages/4c/e4/6934513ec2c4d3d69ca1bc3bd34d5c69dafcbf68c15388dd3bb062daf345/fonttools-4.57.0-cp313-cp313-win32.whl", hash = "sha256:8e2e12d0d862f43d51e5afb8b9751c77e6bec7d2dc00aad80641364e9df5b199", size = 2144833 }, + { url = "https://files.pythonhosted.org/packages/c4/0d/2177b7fdd23d017bcfb702fd41e47d4573766b9114da2fddbac20dcc4957/fonttools-4.57.0-cp313-cp313-win_amd64.whl", hash = "sha256:f1d6bc9c23356908db712d282acb3eebd4ae5ec6d8b696aa40342b1d84f8e9e3", size = 2190799 }, + { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, +] + +[[package]] +name = "fqdn" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, +] + +[[package]] +name = "frozenlist" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, + { url = "https://files.pythonhosted.org/packages/6f/e5/04c7090c514d96ca00887932417f04343ab94904a56ab7f57861bf63652d/frozenlist-1.6.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1d7fb014fe0fbfee3efd6a94fc635aeaa68e5e1720fe9e57357f2e2c6e1a647e", size = 158182 }, + { url = "https://files.pythonhosted.org/packages/e9/8f/60d0555c61eec855783a6356268314d204137f5e0c53b59ae2fc28938c99/frozenlist-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01bcaa305a0fdad12745502bfd16a1c75b14558dabae226852f9159364573117", size = 122838 }, + { url = "https://files.pythonhosted.org/packages/5a/a7/d0ec890e3665b4b3b7c05dc80e477ed8dc2e2e77719368e78e2cd9fec9c8/frozenlist-1.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b314faa3051a6d45da196a2c495e922f987dc848e967d8cfeaee8a0328b1cd4", size = 120980 }, + { url = "https://files.pythonhosted.org/packages/cc/19/9b355a5e7a8eba903a008579964192c3e427444752f20b2144b10bb336df/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da62fecac21a3ee10463d153549d8db87549a5e77eefb8c91ac84bb42bb1e4e3", size = 305463 }, + { url = "https://files.pythonhosted.org/packages/9c/8d/5b4c758c2550131d66935ef2fa700ada2461c08866aef4229ae1554b93ca/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1eb89bf3454e2132e046f9599fbcf0a4483ed43b40f545551a39316d0201cd1", size = 297985 }, + { url = "https://files.pythonhosted.org/packages/48/2c/537ec09e032b5865715726b2d1d9813e6589b571d34d01550c7aeaad7e53/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18689b40cb3936acd971f663ccb8e2589c45db5e2c5f07e0ec6207664029a9c", size = 311188 }, + { url = "https://files.pythonhosted.org/packages/31/2f/1aa74b33f74d54817055de9a4961eff798f066cdc6f67591905d4fc82a84/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e67ddb0749ed066b1a03fba812e2dcae791dd50e5da03be50b6a14d0c1a9ee45", size = 311874 }, + { url = "https://files.pythonhosted.org/packages/bf/f0/cfec18838f13ebf4b37cfebc8649db5ea71a1b25dacd691444a10729776c/frozenlist-1.6.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc5e64626e6682638d6e44398c9baf1d6ce6bc236d40b4b57255c9d3f9761f1f", size = 291897 }, + { url = "https://files.pythonhosted.org/packages/ea/a5/deb39325cbbea6cd0a46db8ccd76150ae2fcbe60d63243d9df4a0b8c3205/frozenlist-1.6.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:437cfd39564744ae32ad5929e55b18ebd88817f9180e4cc05e7d53b75f79ce85", size = 305799 }, + { url = "https://files.pythonhosted.org/packages/78/22/6ddec55c5243a59f605e4280f10cee8c95a449f81e40117163383829c241/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:62dd7df78e74d924952e2feb7357d826af8d2f307557a779d14ddf94d7311be8", size = 302804 }, + { url = "https://files.pythonhosted.org/packages/5d/b7/d9ca9bab87f28855063c4d202936800219e39db9e46f9fb004d521152623/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a66781d7e4cddcbbcfd64de3d41a61d6bdde370fc2e38623f30b2bd539e84a9f", size = 316404 }, + { url = "https://files.pythonhosted.org/packages/a6/3a/1255305db7874d0b9eddb4fe4a27469e1fb63720f1fc6d325a5118492d18/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:482fe06e9a3fffbcd41950f9d890034b4a54395c60b5e61fae875d37a699813f", size = 295572 }, + { url = "https://files.pythonhosted.org/packages/2a/f2/8d38eeee39a0e3a91b75867cc102159ecccf441deb6ddf67be96d3410b84/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e4f9373c500dfc02feea39f7a56e4f543e670212102cc2eeb51d3a99c7ffbde6", size = 307601 }, + { url = "https://files.pythonhosted.org/packages/38/04/80ec8e6b92f61ef085422d7b196822820404f940950dde5b2e367bede8bc/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e69bb81de06827147b7bfbaeb284d85219fa92d9f097e32cc73675f279d70188", size = 314232 }, + { url = "https://files.pythonhosted.org/packages/3a/58/93b41fb23e75f38f453ae92a2f987274c64637c450285577bd81c599b715/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7613d9977d2ab4a9141dde4a149f4357e4065949674c5649f920fec86ecb393e", size = 308187 }, + { url = "https://files.pythonhosted.org/packages/6a/a2/e64df5c5aa36ab3dee5a40d254f3e471bb0603c225f81664267281c46a2d/frozenlist-1.6.0-cp313-cp313-win32.whl", hash = "sha256:4def87ef6d90429f777c9d9de3961679abf938cb6b7b63d4a7eb8a268babfce4", size = 114772 }, + { url = "https://files.pythonhosted.org/packages/a0/77/fead27441e749b2d574bb73d693530d59d520d4b9e9679b8e3cb779d37f2/frozenlist-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:37a8a52c3dfff01515e9bbbee0e6063181362f9de3db2ccf9bc96189b557cbfd", size = 119847 }, + { url = "https://files.pythonhosted.org/packages/df/bd/cc6d934991c1e5d9cafda83dfdc52f987c7b28343686aef2e58a9cf89f20/frozenlist-1.6.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:46138f5a0773d064ff663d273b309b696293d7a7c00a0994c5c13a5078134b64", size = 174937 }, + { url = "https://files.pythonhosted.org/packages/f2/a2/daf945f335abdbfdd5993e9dc348ef4507436936ab3c26d7cfe72f4843bf/frozenlist-1.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f88bc0a2b9c2a835cb888b32246c27cdab5740059fb3688852bf91e915399b91", size = 136029 }, + { url = "https://files.pythonhosted.org/packages/51/65/4c3145f237a31247c3429e1c94c384d053f69b52110a0d04bfc8afc55fb2/frozenlist-1.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:777704c1d7655b802c7850255639672e90e81ad6fa42b99ce5ed3fbf45e338dd", size = 134831 }, + { url = "https://files.pythonhosted.org/packages/77/38/03d316507d8dea84dfb99bdd515ea245628af964b2bf57759e3c9205cc5e/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85ef8d41764c7de0dcdaf64f733a27352248493a85a80661f3c678acd27e31f2", size = 392981 }, + { url = "https://files.pythonhosted.org/packages/37/02/46285ef9828f318ba400a51d5bb616ded38db8466836a9cfa39f3903260b/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:da5cb36623f2b846fb25009d9d9215322318ff1c63403075f812b3b2876c8506", size = 371999 }, + { url = "https://files.pythonhosted.org/packages/0d/64/1212fea37a112c3c5c05bfb5f0a81af4836ce349e69be75af93f99644da9/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbb56587a16cf0fb8acd19e90ff9924979ac1431baea8681712716a8337577b0", size = 392200 }, + { url = "https://files.pythonhosted.org/packages/81/ce/9a6ea1763e3366e44a5208f76bf37c76c5da570772375e4d0be85180e588/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6154c3ba59cda3f954c6333025369e42c3acd0c6e8b6ce31eb5c5b8116c07e0", size = 390134 }, + { url = "https://files.pythonhosted.org/packages/bc/36/939738b0b495b2c6d0c39ba51563e453232813042a8d908b8f9544296c29/frozenlist-1.6.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e8246877afa3f1ae5c979fe85f567d220f86a50dc6c493b9b7d8191181ae01e", size = 365208 }, + { url = "https://files.pythonhosted.org/packages/b4/8b/939e62e93c63409949c25220d1ba8e88e3960f8ef6a8d9ede8f94b459d27/frozenlist-1.6.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0f6cce16306d2e117cf9db71ab3a9e8878a28176aeaf0dbe35248d97b28d0c", size = 385548 }, + { url = "https://files.pythonhosted.org/packages/62/38/22d2873c90102e06a7c5a3a5b82ca47e393c6079413e8a75c72bff067fa8/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1b8e8cd8032ba266f91136d7105706ad57770f3522eac4a111d77ac126a25a9b", size = 391123 }, + { url = "https://files.pythonhosted.org/packages/44/78/63aaaf533ee0701549500f6d819be092c6065cb5c577edb70c09df74d5d0/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e2ada1d8515d3ea5378c018a5f6d14b4994d4036591a52ceaf1a1549dec8e1ad", size = 394199 }, + { url = "https://files.pythonhosted.org/packages/54/45/71a6b48981d429e8fbcc08454dc99c4c2639865a646d549812883e9c9dd3/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:cdb2c7f071e4026c19a3e32b93a09e59b12000751fc9b0b7758da899e657d215", size = 373854 }, + { url = "https://files.pythonhosted.org/packages/3f/f3/dbf2a5e11736ea81a66e37288bf9f881143a7822b288a992579ba1b4204d/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:03572933a1969a6d6ab509d509e5af82ef80d4a5d4e1e9f2e1cdd22c77a3f4d2", size = 395412 }, + { url = "https://files.pythonhosted.org/packages/b3/f1/c63166806b331f05104d8ea385c4acd511598568b1f3e4e8297ca54f2676/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:77effc978947548b676c54bbd6a08992759ea6f410d4987d69feea9cd0919911", size = 394936 }, + { url = "https://files.pythonhosted.org/packages/ef/ea/4f3e69e179a430473eaa1a75ff986526571215fefc6b9281cdc1f09a4eb8/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a2bda8be77660ad4089caf2223fdbd6db1858462c4b85b67fbfa22102021e497", size = 391459 }, + { url = "https://files.pythonhosted.org/packages/d3/c3/0fc2c97dea550df9afd072a37c1e95421652e3206bbeaa02378b24c2b480/frozenlist-1.6.0-cp313-cp313t-win32.whl", hash = "sha256:a4d96dc5bcdbd834ec6b0f91027817214216b5b30316494d2b1aebffb87c534f", size = 128797 }, + { url = "https://files.pythonhosted.org/packages/ae/f5/79c9320c5656b1965634fe4be9c82b12a3305bdbc58ad9cb941131107b20/frozenlist-1.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e18036cb4caa17ea151fd5f3d70be9d354c99eb8cf817a3ccde8a7873b074348", size = 134709 }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, +] + +[[package]] +name = "fsspec" +version = "2025.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435 }, +] + +[[package]] +name = "geopandas" +version = "1.0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, + { name = "pyogrio" }, + { name = "pyproj" }, + { name = "shapely" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, +] + +[[package]] +name = "ghp-import" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + +[[package]] +name = "gitdb" +version = "4.0.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "smmap" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, +] + +[[package]] +name = "gitpython" +version = "3.1.44" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "gitdb" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, +] + +[[package]] +name = "greenlet" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609 }, + { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776 }, + { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827 }, + { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752 }, + { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993 }, + { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927 }, + { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891 }, + { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318 }, + { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407 }, + { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381 }, + { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195 }, + { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381 }, + { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110 }, + { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070 }, + { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816 }, + { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, + { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, + { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, + { url = "https://files.pythonhosted.org/packages/77/2a/581b3808afec55b2db838742527c40b4ce68b9b64feedff0fd0123f4b19a/greenlet-3.2.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:e1967882f0c42eaf42282a87579685c8673c51153b845fde1ee81be720ae27ac", size = 269119 }, + { url = "https://files.pythonhosted.org/packages/b0/f3/1c4e27fbdc84e13f05afc2baf605e704668ffa26e73a43eca93e1120813e/greenlet-3.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e77ae69032a95640a5fe8c857ec7bee569a0997e809570f4c92048691ce4b437", size = 637314 }, + { url = "https://files.pythonhosted.org/packages/fc/1a/9fc43cb0044f425f7252da9847893b6de4e3b20c0a748bce7ab3f063d5bc/greenlet-3.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3227c6ec1149d4520bc99edac3b9bc8358d0034825f3ca7572165cb502d8f29a", size = 651421 }, + { url = "https://files.pythonhosted.org/packages/8a/65/d47c03cdc62c6680206b7420c4a98363ee997e87a5e9da1e83bd7eeb57a8/greenlet-3.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ddda0197c5b46eedb5628d33dad034c455ae77708c7bf192686e760e26d6a0c", size = 645789 }, + { url = "https://files.pythonhosted.org/packages/2f/40/0faf8bee1b106c241780f377b9951dd4564ef0972de1942ef74687aa6bba/greenlet-3.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de62b542e5dcf0b6116c310dec17b82bb06ef2ceb696156ff7bf74a7a498d982", size = 648262 }, + { url = "https://files.pythonhosted.org/packages/e0/a8/73305f713183c2cb08f3ddd32eaa20a6854ba9c37061d682192db9b021c3/greenlet-3.2.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c07a0c01010df42f1f058b3973decc69c4d82e036a951c3deaf89ab114054c07", size = 606770 }, + { url = "https://files.pythonhosted.org/packages/c3/05/7d726e1fb7f8a6ac55ff212a54238a36c57db83446523c763e20cd30b837/greenlet-3.2.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2530bfb0abcd451ea81068e6d0a1aac6dabf3f4c23c8bd8e2a8f579c2dd60d95", size = 1117960 }, + { url = "https://files.pythonhosted.org/packages/bf/9f/2b6cb1bd9f1537e7b08c08705c4a1d7bd4f64489c67d102225c4fd262bda/greenlet-3.2.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c472adfca310f849903295c351d297559462067f618944ce2650a1878b84123", size = 1145500 }, + { url = "https://files.pythonhosted.org/packages/e4/f6/339c6e707062319546598eb9827d3ca8942a3eccc610d4a54c1da7b62527/greenlet-3.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:24a496479bc8bd01c39aa6516a43c717b4cee7196573c47b1f8e1011f7c12495", size = 295994 }, + { url = "https://files.pythonhosted.org/packages/f1/72/2a251d74a596af7bb1717e891ad4275a3fd5ac06152319d7ad8c77f876af/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:175d583f7d5ee57845591fc30d852b75b144eb44b05f38b67966ed6df05c8526", size = 629889 }, + { url = "https://files.pythonhosted.org/packages/29/2e/d7ed8bf97641bf704b6a43907c0e082cdf44d5bc026eb8e1b79283e7a719/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ecc9d33ca9428e4536ea53e79d781792cee114d2fa2695b173092bdbd8cd6d5", size = 635261 }, + { url = "https://files.pythonhosted.org/packages/1e/75/802aa27848a6fcb5e566f69c64534f572e310f0f12d41e9201a81e741551/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f56382ac4df3860ebed8ed838f268f03ddf4e459b954415534130062b16bc32", size = 632523 }, + { url = "https://files.pythonhosted.org/packages/56/09/f7c1c3bab9b4c589ad356503dd71be00935e9c4db4db516ed88fc80f1187/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc45a7189c91c0f89aaf9d69da428ce8301b0fd66c914a499199cfb0c28420fc", size = 628816 }, + { url = "https://files.pythonhosted.org/packages/79/e0/1bb90d30b5450eac2dffeaac6b692857c4bd642c21883b79faa8fa056cf2/greenlet-3.2.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51a2f49da08cff79ee42eb22f1658a2aed60c72792f0a0a95f5f0ca6d101b1fb", size = 593687 }, + { url = "https://files.pythonhosted.org/packages/c5/b5/adbe03c8b4c178add20cc716021183ae6b0326d56ba8793d7828c94286f6/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:0c68bbc639359493420282d2f34fa114e992a8724481d700da0b10d10a7611b8", size = 1105754 }, + { url = "https://files.pythonhosted.org/packages/39/93/84582d7ef38dec009543ccadec6ab41079a6cbc2b8c0566bcd07bf1aaf6c/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:e775176b5c203a1fa4be19f91da00fd3bff536868b77b237da3f4daa5971ae5d", size = 1125160 }, + { url = "https://files.pythonhosted.org/packages/01/e6/f9d759788518a6248684e3afeb3691f3ab0276d769b6217a1533362298c8/greenlet-3.2.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d6668caf15f181c1b82fb6406f3911696975cc4c37d782e19cb7ba499e556189", size = 269897 }, +] + +[[package]] +name = "h11" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, +] + +[[package]] +name = "httpcore" +version = "1.0.9" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, +] + +[[package]] +name = "httpx" +version = "0.28.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "certifi" }, + { name = "httpcore" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, +] + +[[package]] +name = "icefabric" +version = "0.1.0" +source = { virtual = "." } + +[package.optional-dependencies] +docs = [ + { name = "cairosvg" }, + { name = "mkdocs-git-authors-plugin" }, + { name = "mkdocs-git-committers-plugin" }, + { name = "mkdocs-git-revision-date-localized-plugin" }, + { name = "mkdocs-material" }, + { name = "mkdocs-material-extensions" }, + { name = "pillow" }, +] + +[package.dev-dependencies] +dev = [ + { name = "black" }, + { name = "examples" }, + { name = "icefabric-manage" }, + { name = "icefabric-tools" }, + { name = "ipykernel" }, + { name = "jupyterlab" }, + { name = "mypy" }, + { name = "pre-commit" }, + { name = "pytest" }, + { name = "ruff" }, +] + +[package.metadata] +requires-dist = [ + { name = "cairosvg", marker = "extra == 'docs'" }, + { name = "mkdocs-git-authors-plugin", marker = "extra == 'docs'" }, + { name = "mkdocs-git-committers-plugin", marker = "extra == 'docs'" }, + { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'" }, + { name = "mkdocs-material", marker = "extra == 'docs'" }, + { name = "mkdocs-material-extensions", marker = "extra == 'docs'" }, + { name = "pillow", marker = "extra == 'docs'" }, +] +provides-extras = ["docs"] + +[package.metadata.requires-dev] +dev = [ + { name = "black" }, + { name = "examples" }, + { name = "icefabric-manage", editable = "src/icefabric_manage" }, + { name = "icefabric-tools", editable = "src/icefabric_tools" }, + { name = "ipykernel", specifier = ">=6.29.5" }, + { name = "jupyterlab" }, + { name = "mypy" }, + { name = "pre-commit", specifier = ">=3.8.0" }, + { name = "pytest", specifier = ">=8.3.2" }, + { name = "ruff" }, +] + +[[package]] +name = "icefabric-manage" +version = "0.1.0" +source = { editable = "src/icefabric_manage" } +dependencies = [ + { name = "cubed-xarray" }, + { name = "fiona" }, + { name = "geopandas" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "python-dotenv" }, + { name = "s3fs" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "sympy" }, + { name = "tqdm" }, + { name = "xarray" }, + { name = "zarr" }, +] + +[package.metadata] +requires-dist = [ + { name = "cubed-xarray", specifier = "==0.0.7" }, + { name = "fiona", specifier = "==1.10.1" }, + { name = "geopandas", specifier = "==1.0.1" }, + { name = "matplotlib", specifier = "==3.10.0" }, + { name = "numpy", specifier = "==2.2.5" }, + { name = "pandas", specifier = "==2.2.3" }, + { name = "pyarrow", specifier = "==19.0.1" }, + { name = "pydantic", specifier = "==2.10.6" }, + { name = "pyiceberg", extras = ["sql-sqlite"] }, + { name = "python-dotenv", specifier = "==1.1.0" }, + { name = "s3fs", specifier = "==2025.3.2" }, + { name = "scikit-learn", specifier = "==1.6.1" }, + { name = "scipy", specifier = "==1.15.1" }, + { name = "sympy", specifier = "==1.13.1" }, + { name = "tqdm", specifier = "==4.67.1" }, + { name = "xarray", specifier = "==2025.3.1" }, + { name = "zarr", specifier = "==3.0.7" }, +] + +[[package]] +name = "icefabric-tools" +version = "0.1.0" +source = { editable = "src/icefabric_tools" } +dependencies = [ + { name = "cubed-xarray" }, + { name = "fiona" }, + { name = "geopandas" }, + { name = "matplotlib" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "pyarrow" }, + { name = "pydantic" }, + { name = "pyiceberg" }, + { name = "s3fs" }, + { name = "scikit-learn" }, + { name = "scipy" }, + { name = "sympy" }, + { name = "tqdm" }, + { name = "xarray" }, + { name = "zarr" }, +] + +[package.metadata] +requires-dist = [ + { name = "cubed-xarray", specifier = "==0.0.7" }, + { name = "fiona", specifier = "==1.10.1" }, + { name = "geopandas", specifier = "==1.0.1" }, + { name = "matplotlib", specifier = "==3.10.0" }, + { name = "numpy", specifier = "==2.2.5" }, + { name = "pandas", specifier = "==2.2.3" }, + { name = "pyarrow", specifier = "==19.0.1" }, + { name = "pydantic", specifier = "==2.10.6" }, + { name = "pyiceberg", specifier = "==0.9.0" }, + { name = "s3fs", specifier = "==2025.3.2" }, + { name = "scikit-learn", specifier = "==1.6.1" }, + { name = "scipy", specifier = "==1.15.1" }, + { name = "sympy", specifier = "==1.13.1" }, + { name = "tqdm", specifier = "==4.67.1" }, + { name = "xarray", specifier = "==2025.3.1" }, + { name = "zarr", specifier = "==3.0.7" }, +] + +[[package]] +name = "identify" +version = "2.6.10" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101 }, +] + +[[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 = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, +] + +[[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 = "9.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { 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/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, +] + +[[package]] +name = "ipython-pygments-lexers" +version = "1.1.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pygments" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, +] + +[[package]] +name = "isoduration" +version = "20.11.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "arrow" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, +] + +[[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.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markupsafe" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, +] + +[[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 = "joblib" +version = "1.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/64/33/60135848598c076ce4b231e1b1895170f45fbcaeaa2c9d5e38b04db70c35/joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e", size = 2116621 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 }, +] + +[[package]] +name = "json5" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, +] + +[[package]] +name = "jsonpointer" +version = "3.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, +] + +[[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.optional-dependencies] +format-nongpl = [ + { name = "fqdn" }, + { name = "idna" }, + { name = "isoduration" }, + { name = "jsonpointer" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "uri-template" }, + { name = "webcolors" }, +] + +[[package]] +name = "jsonschema-specifications" +version = "2025.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "referencing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, +] + +[[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 = "jupyter-events" +version = "0.12.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema", extra = ["format-nongpl"] }, + { name = "packaging" }, + { name = "python-json-logger" }, + { name = "pyyaml" }, + { name = "referencing" }, + { name = "rfc3339-validator" }, + { name = "rfc3986-validator" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, +] + +[[package]] +name = "jupyter-lsp" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, +] + +[[package]] +name = "jupyter-server" +version = "2.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "argon2-cffi" }, + { name = "jinja2" }, + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "jupyter-events" }, + { name = "jupyter-server-terminals" }, + { name = "nbconvert" }, + { name = "nbformat" }, + { name = "overrides" }, + { name = "packaging" }, + { name = "prometheus-client" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "pyzmq" }, + { name = "send2trash" }, + { name = "terminado" }, + { name = "tornado" }, + { name = "traitlets" }, + { name = "websocket-client" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, +] + +[[package]] +name = "jupyter-server-terminals" +version = "0.5.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "terminado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, +] + +[[package]] +name = "jupyterlab" +version = "4.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "async-lru" }, + { name = "httpx" }, + { name = "ipykernel" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyter-lsp" }, + { name = "jupyter-server" }, + { name = "jupyterlab-server" }, + { name = "notebook-shim" }, + { name = "packaging" }, + { name = "setuptools" }, + { name = "tornado" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/55/3ef7e6bfe988d7df3d453cc27912846d50590c90790848594f7228c89569/jupyterlab-4.4.1.tar.gz", hash = "sha256:c75c4f33056fbd84f0b31eb44622a00c7a5f981b85adfeb198a83721f0465808", size = 23028447 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/29/82/c8784597c5a03426c1ef20c48aff37e8cfe050ab5ca87f0d51069f02b362/jupyterlab-4.4.1-py3-none-any.whl", hash = "sha256:989bca3f9cf2d04b2022e7e657e2df6d4aca808b364810d31c4865edd968a5f7", size = 12292928 }, +] + +[[package]] +name = "jupyterlab-pygments" +version = "0.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, +] + +[[package]] +name = "jupyterlab-server" +version = "2.27.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "jinja2" }, + { name = "json5" }, + { name = "jsonschema" }, + { name = "jupyter-server" }, + { name = "packaging" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, +] + +[[package]] +name = "kiwisolver" +version = "1.4.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, + { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 }, + { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 }, + { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 }, + { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 }, + { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 }, + { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 }, + { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 }, + { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 }, + { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 }, + { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 }, + { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 }, + { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 }, + { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 }, + { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 }, + { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 }, + { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 }, + { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 }, + { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 }, + { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 }, + { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 }, + { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 }, + { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 }, + { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 }, + { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 }, + { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, + { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, + { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, +] + +[[package]] +name = "markdown" +version = "3.8" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, +] + +[[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 = "mergedeep" +version = "1.3.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, +] + +[[package]] +name = "mistune" +version = "3.1.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, +] + +[[package]] +name = "mkdocs" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "ghp-import" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "markupsafe" }, + { name = "mergedeep" }, + { name = "mkdocs-get-deps" }, + { name = "packaging" }, + { name = "pathspec" }, + { name = "pyyaml" }, + { name = "pyyaml-env-tag" }, + { name = "watchdog" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, +] + +[[package]] +name = "mkdocs-get-deps" +version = "0.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mergedeep" }, + { name = "platformdirs" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, +] + +[[package]] +name = "mkdocs-git-authors-plugin" +version = "0.9.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906 }, +] + +[[package]] +name = "mkdocs-git-committers-plugin" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mkdocs" }, + { name = "pygithub" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, +] + +[[package]] +name = "mkdocs-git-revision-date-localized-plugin" +version = "1.4.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "gitpython" }, + { name = "mkdocs" }, + { name = "pytz" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284 }, +] + +[[package]] +name = "mkdocs-material" +version = "9.6.12" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "babel" }, + { name = "backrefs" }, + { name = "colorama" }, + { name = "jinja2" }, + { name = "markdown" }, + { name = "mkdocs" }, + { name = "mkdocs-material-extensions" }, + { name = "paginate" }, + { name = "pygments" }, + { name = "pymdown-extensions" }, + { name = "requests" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654 }, +] + +[[package]] +name = "mkdocs-material-extensions" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, +] + +[[package]] +name = "mmh3" +version = "5.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, + { url = "https://files.pythonhosted.org/packages/05/06/a098a42870db16c0a54a82c56a5bdc873de3165218cd5b3ca59dbc0d31a7/mmh3-5.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a523899ca29cfb8a5239618474a435f3d892b22004b91779fcb83504c0d5b8c", size = 56165 }, + { url = "https://files.pythonhosted.org/packages/5a/65/eaada79a67fde1f43e1156d9630e2fb70655e1d3f4e8f33d7ffa31eeacfd/mmh3-5.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:17cef2c3a6ca2391ca7171a35ed574b5dab8398163129a3e3a4c05ab85a4ff40", size = 40569 }, + { url = "https://files.pythonhosted.org/packages/36/7e/2b6c43ed48be583acd68e34d16f19209a9f210e4669421b0321e326d8554/mmh3-5.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:52e12895b30110f3d89dae59a888683cc886ed0472dd2eca77497edef6161997", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/11/2b/1f9e962fdde8e41b0f43d22c8ba719588de8952f9376df7d73a434827590/mmh3-5.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d6719045cda75c3f40397fc24ab67b18e0cb8f69d3429ab4c39763c4c608dd", size = 102497 }, + { url = "https://files.pythonhosted.org/packages/46/94/d6c5c3465387ba077cccdc028ab3eec0d86eed1eebe60dcf4d15294056be/mmh3-5.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d19fa07d303a91f8858982c37e6939834cb11893cb3ff20e6ee6fa2a7563826a", size = 108834 }, + { url = "https://files.pythonhosted.org/packages/34/1e/92c212bb81796b69dddfd50a8a8f4b26ab0d38fdaf1d3e8628a67850543b/mmh3-5.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31b47a620d622fbde8ca1ca0435c5d25de0ac57ab507209245e918128e38e676", size = 106936 }, + { url = "https://files.pythonhosted.org/packages/f4/41/f2f494bbff3aad5ffd2085506255049de76cde51ddac84058e32768acc79/mmh3-5.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f810647c22c179b6821079f7aa306d51953ac893587ee09cf1afb35adf87cb", size = 93709 }, + { url = "https://files.pythonhosted.org/packages/9e/a9/a2cc4a756d73d9edf4fb85c76e16fd56b0300f8120fd760c76b28f457730/mmh3-5.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6128b610b577eed1e89ac7177ab0c33d06ade2aba93f5c89306032306b5f1c6", size = 101623 }, + { url = "https://files.pythonhosted.org/packages/5e/6f/b9d735533b6a56b2d56333ff89be6a55ac08ba7ff33465feb131992e33eb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1e550a45d2ff87a1c11b42015107f1778c93f4c6f8e731bf1b8fa770321b8cc4", size = 98521 }, + { url = "https://files.pythonhosted.org/packages/99/47/dff2b54fac0d421c1e6ecbd2d9c85b2d0e6f6ee0d10b115d9364116a511e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:785ae09276342f79fd8092633e2d52c0f7c44d56e8cfda8274ccc9b76612dba2", size = 96696 }, + { url = "https://files.pythonhosted.org/packages/be/43/9e205310f47c43ddf1575bb3a1769c36688f30f1ac105e0f0c878a29d2cd/mmh3-5.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0f4be3703a867ef976434afd3661a33884abe73ceb4ee436cac49d3b4c2aaa7b", size = 105234 }, + { url = "https://files.pythonhosted.org/packages/6b/44/90b11fd2b67dcb513f5bfe9b476eb6ca2d5a221c79b49884dc859100905e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e513983830c4ff1f205ab97152a0050cf7164f1b4783d702256d39c637b9d107", size = 98449 }, + { url = "https://files.pythonhosted.org/packages/f0/d0/25c4b0c7b8e49836541059b28e034a4cccd0936202800d43a1cc48495ecb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9135c300535c828c0bae311b659f33a31c941572eae278568d1a953c4a57b59", size = 97796 }, + { url = "https://files.pythonhosted.org/packages/23/fa/cbbb7fcd0e287a715f1cd28a10de94c0535bd94164e38b852abc18da28c6/mmh3-5.1.0-cp313-cp313-win32.whl", hash = "sha256:c65dbd12885a5598b70140d24de5839551af5a99b29f9804bb2484b29ef07692", size = 40828 }, + { url = "https://files.pythonhosted.org/packages/09/33/9fb90ef822f7b734955a63851907cf72f8a3f9d8eb3c5706bfa6772a2a77/mmh3-5.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:10db7765201fc65003fa998faa067417ef6283eb5f9bba8f323c48fd9c33e91f", size = 41504 }, + { url = "https://files.pythonhosted.org/packages/16/71/4ad9a42f2772793a03cb698f0fc42499f04e6e8d2560ba2f7da0fb059a8e/mmh3-5.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:b22fe2e54be81f6c07dcb36b96fa250fb72effe08aa52fbb83eade6e1e2d5fd7", size = 38890 }, +] + +[[package]] +name = "mpmath" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 }, +] + +[[package]] +name = "multidict" +version = "6.4.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259 }, + { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451 }, + { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706 }, + { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669 }, + { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182 }, + { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025 }, + { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481 }, + { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492 }, + { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279 }, + { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733 }, + { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089 }, + { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257 }, + { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728 }, + { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087 }, + { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137 }, + { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959 }, + { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541 }, + { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019 }, + { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925 }, + { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008 }, + { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374 }, + { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869 }, + { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949 }, + { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032 }, + { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517 }, + { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291 }, + { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982 }, + { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823 }, + { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714 }, + { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739 }, + { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809 }, + { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, + { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, + { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, + { url = "https://files.pythonhosted.org/packages/6c/4b/86fd786d03915c6f49998cf10cd5fe6b6ac9e9a071cb40885d2e080fb90d/multidict-6.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a76534263d03ae0cfa721fea40fd2b5b9d17a6f85e98025931d41dc49504474", size = 63831 }, + { url = "https://files.pythonhosted.org/packages/45/05/9b51fdf7aef2563340a93be0a663acba2c428c4daeaf3960d92d53a4a930/multidict-6.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:805031c2f599eee62ac579843555ed1ce389ae00c7e9f74c2a1b45e0564a88dd", size = 37888 }, + { url = "https://files.pythonhosted.org/packages/0b/43/53fc25394386c911822419b522181227ca450cf57fea76e6188772a1bd91/multidict-6.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c56c179839d5dcf51d565132185409d1d5dd8e614ba501eb79023a6cab25576b", size = 36852 }, + { url = "https://files.pythonhosted.org/packages/8a/68/7b99c751e822467c94a235b810a2fd4047d4ecb91caef6b5c60116991c4b/multidict-6.4.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c64f4ddb3886dd8ab71b68a7431ad4aa01a8fa5be5b11543b29674f29ca0ba3", size = 223644 }, + { url = "https://files.pythonhosted.org/packages/80/1b/d458d791e4dd0f7e92596667784fbf99e5c8ba040affe1ca04f06b93ae92/multidict-6.4.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3002a856367c0b41cad6784f5b8d3ab008eda194ed7864aaa58f65312e2abcac", size = 230446 }, + { url = "https://files.pythonhosted.org/packages/e2/46/9793378d988905491a7806d8987862dc5a0bae8a622dd896c4008c7b226b/multidict-6.4.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d75e621e7d887d539d6e1d789f0c64271c250276c333480a9e1de089611f790", size = 231070 }, + { url = "https://files.pythonhosted.org/packages/a7/b8/b127d3e1f8dd2a5bf286b47b24567ae6363017292dc6dec44656e6246498/multidict-6.4.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:995015cf4a3c0d72cbf453b10a999b92c5629eaf3a0c3e1efb4b5c1f602253bb", size = 229956 }, + { url = "https://files.pythonhosted.org/packages/0c/93/f70a4c35b103fcfe1443059a2bb7f66e5c35f2aea7804105ff214f566009/multidict-6.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b0fabae7939d09d7d16a711468c385272fa1b9b7fb0d37e51143585d8e72e0", size = 222599 }, + { url = "https://files.pythonhosted.org/packages/63/8c/e28e0eb2fe34921d6aa32bfc4ac75b09570b4d6818cc95d25499fe08dc1d/multidict-6.4.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61ed4d82f8a1e67eb9eb04f8587970d78fe7cddb4e4d6230b77eda23d27938f9", size = 216136 }, + { url = "https://files.pythonhosted.org/packages/72/f5/fbc81f866585b05f89f99d108be5d6ad170e3b6c4d0723d1a2f6ba5fa918/multidict-6.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:062428944a8dc69df9fdc5d5fc6279421e5f9c75a9ee3f586f274ba7b05ab3c8", size = 228139 }, + { url = "https://files.pythonhosted.org/packages/bb/ba/7d196bad6b85af2307d81f6979c36ed9665f49626f66d883d6c64d156f78/multidict-6.4.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b90e27b4674e6c405ad6c64e515a505c6d113b832df52fdacb6b1ffd1fa9a1d1", size = 226251 }, + { url = "https://files.pythonhosted.org/packages/cc/e2/fae46a370dce79d08b672422a33df721ec8b80105e0ea8d87215ff6b090d/multidict-6.4.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7d50d4abf6729921e9613d98344b74241572b751c6b37feed75fb0c37bd5a817", size = 221868 }, + { url = "https://files.pythonhosted.org/packages/26/20/bbc9a3dec19d5492f54a167f08546656e7aef75d181d3d82541463450e88/multidict-6.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:43fe10524fb0a0514be3954be53258e61d87341008ce4914f8e8b92bee6f875d", size = 233106 }, + { url = "https://files.pythonhosted.org/packages/ee/8d/f30ae8f5ff7a2461177f4d8eb0d8f69f27fb6cfe276b54ec4fd5a282d918/multidict-6.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:236966ca6c472ea4e2d3f02f6673ebfd36ba3f23159c323f5a496869bc8e47c9", size = 230163 }, + { url = "https://files.pythonhosted.org/packages/15/e9/2833f3c218d3c2179f3093f766940ded6b81a49d2e2f9c46ab240d23dfec/multidict-6.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:422a5ec315018e606473ba1f5431e064cf8b2a7468019233dcf8082fabad64c8", size = 225906 }, + { url = "https://files.pythonhosted.org/packages/f1/31/6edab296ac369fd286b845fa5dd4c409e63bc4655ed8c9510fcb477e9ae9/multidict-6.4.3-cp313-cp313-win32.whl", hash = "sha256:f901a5aace8e8c25d78960dcc24c870c8d356660d3b49b93a78bf38eb682aac3", size = 35238 }, + { url = "https://files.pythonhosted.org/packages/23/57/2c0167a1bffa30d9a1383c3dab99d8caae985defc8636934b5668830d2ef/multidict-6.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:1c152c49e42277bc9a2f7b78bd5fa10b13e88d1b0328221e7aef89d5c60a99a5", size = 38799 }, + { url = "https://files.pythonhosted.org/packages/c9/13/2ead63b9ab0d2b3080819268acb297bd66e238070aa8d42af12b08cbee1c/multidict-6.4.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:be8751869e28b9c0d368d94f5afcb4234db66fe8496144547b4b6d6a0645cfc6", size = 68642 }, + { url = "https://files.pythonhosted.org/packages/85/45/f1a751e1eede30c23951e2ae274ce8fad738e8a3d5714be73e0a41b27b16/multidict-6.4.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0d4b31f8a68dccbcd2c0ea04f0e014f1defc6b78f0eb8b35f2265e8716a6df0c", size = 40028 }, + { url = "https://files.pythonhosted.org/packages/a7/29/fcc53e886a2cc5595cc4560df333cb9630257bda65003a7eb4e4e0d8f9c1/multidict-6.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:032efeab3049e37eef2ff91271884303becc9e54d740b492a93b7e7266e23756", size = 39424 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/056c81119d8b88703971f937b371795cab1407cd3c751482de5bfe1a04a9/multidict-6.4.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e78006af1a7c8a8007e4f56629d7252668344442f66982368ac06522445e375", size = 226178 }, + { url = "https://files.pythonhosted.org/packages/a3/79/3b7e5fea0aa80583d3a69c9d98b7913dfd4fbc341fb10bb2fb48d35a9c21/multidict-6.4.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:daeac9dd30cda8703c417e4fddccd7c4dc0c73421a0b54a7da2713be125846be", size = 222617 }, + { url = "https://files.pythonhosted.org/packages/06/db/3ed012b163e376fc461e1d6a67de69b408339bc31dc83d39ae9ec3bf9578/multidict-6.4.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f6f90700881438953eae443a9c6f8a509808bc3b185246992c4233ccee37fea", size = 227919 }, + { url = "https://files.pythonhosted.org/packages/b1/db/0433c104bca380989bc04d3b841fc83e95ce0c89f680e9ea4251118b52b6/multidict-6.4.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f84627997008390dd15762128dcf73c3365f4ec0106739cde6c20a07ed198ec8", size = 226097 }, + { url = "https://files.pythonhosted.org/packages/c2/95/910db2618175724dd254b7ae635b6cd8d2947a8b76b0376de7b96d814dab/multidict-6.4.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3307b48cd156153b117c0ea54890a3bdbf858a5b296ddd40dc3852e5f16e9b02", size = 220706 }, + { url = "https://files.pythonhosted.org/packages/d1/af/aa176c6f5f1d901aac957d5258d5e22897fe13948d1e69063ae3d5d0ca01/multidict-6.4.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ead46b0fa1dcf5af503a46e9f1c2e80b5d95c6011526352fa5f42ea201526124", size = 211728 }, + { url = "https://files.pythonhosted.org/packages/e7/42/d51cc5fc1527c3717d7f85137d6c79bb7a93cd214c26f1fc57523774dbb5/multidict-6.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1748cb2743bedc339d63eb1bca314061568793acd603a6e37b09a326334c9f44", size = 226276 }, + { url = "https://files.pythonhosted.org/packages/28/6b/d836dea45e0b8432343ba4acf9a8ecaa245da4c0960fb7ab45088a5e568a/multidict-6.4.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:acc9fa606f76fc111b4569348cc23a771cb52c61516dcc6bcef46d612edb483b", size = 212069 }, + { url = "https://files.pythonhosted.org/packages/55/34/0ee1a7adb3560e18ee9289c6e5f7db54edc312b13e5c8263e88ea373d12c/multidict-6.4.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:31469d5832b5885adeb70982e531ce86f8c992334edd2f2254a10fa3182ac504", size = 217858 }, + { url = "https://files.pythonhosted.org/packages/04/08/586d652c2f5acefe0cf4e658eedb4d71d4ba6dfd4f189bd81b400fc1bc6b/multidict-6.4.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ba46b51b6e51b4ef7bfb84b82f5db0dc5e300fb222a8a13b8cd4111898a869cf", size = 226988 }, + { url = "https://files.pythonhosted.org/packages/82/e3/cc59c7e2bc49d7f906fb4ffb6d9c3a3cf21b9f2dd9c96d05bef89c2b1fd1/multidict-6.4.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:389cfefb599edf3fcfd5f64c0410da686f90f5f5e2c4d84e14f6797a5a337af4", size = 220435 }, + { url = "https://files.pythonhosted.org/packages/e0/32/5c3a556118aca9981d883f38c4b1bfae646f3627157f70f4068e5a648955/multidict-6.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:64bc2bbc5fba7b9db5c2c8d750824f41c6994e3882e6d73c903c2afa78d091e4", size = 221494 }, + { url = "https://files.pythonhosted.org/packages/b9/3b/1599631f59024b75c4d6e3069f4502409970a336647502aaf6b62fb7ac98/multidict-6.4.3-cp313-cp313t-win32.whl", hash = "sha256:0ecdc12ea44bab2807d6b4a7e5eef25109ab1c82a8240d86d3c1fc9f3b72efd5", size = 41775 }, + { url = "https://files.pythonhosted.org/packages/e8/4e/09301668d675d02ca8e8e1a3e6be046619e30403f5ada2ed5b080ae28d02/multidict-6.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7146a8742ea71b5d7d955bffcef58a9e6e04efba704b52a460134fefd10a8208", size = 45946 }, + { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, +] + +[[package]] +name = "mypy" +version = "1.15.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mypy-extensions" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, + { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, + { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, + { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, + { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, + { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +] + +[[package]] +name = "mypy-extensions" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, +] + +[[package]] +name = "nbclient" +version = "0.10.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-client" }, + { name = "jupyter-core" }, + { name = "nbformat" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, +] + +[[package]] +name = "nbconvert" +version = "7.16.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "beautifulsoup4" }, + { name = "bleach", extra = ["css"] }, + { name = "defusedxml" }, + { name = "jinja2" }, + { name = "jupyter-core" }, + { name = "jupyterlab-pygments" }, + { name = "markupsafe" }, + { name = "mistune" }, + { name = "nbclient" }, + { name = "nbformat" }, + { name = "packaging" }, + { name = "pandocfilters" }, + { name = "pygments" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, +] + +[[package]] +name = "nbformat" +version = "5.10.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fastjsonschema" }, + { name = "jsonschema" }, + { name = "jupyter-core" }, + { name = "traitlets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, +] + +[[package]] +name = "ndindex" +version = "1.9.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2c/f9/f8d491c18f16ffcb1a8abf78345e54879fd1fe6b61dcc8a9b471285cd27e/ndindex-1.9.2.tar.gz", hash = "sha256:b8658a06e52d6c47445c2ec11d292e1d52c3af259214c8b52e3a1aab733daa72", size = 243001 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/6d/f272dbbe0a23575e57773272f02a237b51f4e4f33317bf28b2b8be47ac3d/ndindex-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1fa2e521a872870d55fa6fa85399f16c1c20bbe4e3e315bbfc80e3ea92561334", size = 163453 }, + { url = "https://files.pythonhosted.org/packages/77/f6/8ff749841f6f8f4096184e8e158e48d572358d4ad0ba1055728e4f7e0f44/ndindex-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b0ef52d15fa8755d00a6868c799ff4227f1f453901a6f4de395586f9a435b7a", size = 161947 }, + { url = "https://files.pythonhosted.org/packages/51/2d/bfc284ecc9b24acb916f5d04a69357ae56e0b6073286eaa71cf54bf0b136/ndindex-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f647eda61cae68a260017118ad8daac4d580ad221ff922bbaa1526e30e350feb", size = 506119 }, + { url = "https://files.pythonhosted.org/packages/5d/6b/83e328c3dc41ff244d7e79cd24ac62fff96405a3ea948810b2fa883c14f5/ndindex-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:384520b4d9f52cb2fd1d324e6f278ec422b2cc2885e95a00587394bf6f56a798", size = 485492 }, + { url = "https://files.pythonhosted.org/packages/87/f4/8a3a3c0d541d96a6cd39026a1211647d0fcbf047f8bac4332e4b95f54e8b/ndindex-1.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e2dd75a6e25269b66607f1722acd72e8f086837b2c58275d31b3bdfdf8a095bf", size = 489557 }, + { url = "https://files.pythonhosted.org/packages/0f/5c/5e96422400fad72762e85e3cc3a4bd52b11476b990c4e7df25836e8e9c0c/ndindex-1.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8634be005b18034846163067bce78a0209fab65e4bc77e0bc333aa160ef12b7a", size = 506268 }, + { url = "https://files.pythonhosted.org/packages/f8/8b/5948067de44c5484aa8a4db640b8b5dc5cc9b394e9f547a23fd694edf399/ndindex-1.9.2-cp311-cp311-win32.whl", hash = "sha256:89172e90e56a409197cbbe12a49aa16c83879274ca4f61fd8a03b30c6c90e3ca", size = 151566 }, + { url = "https://files.pythonhosted.org/packages/b0/f6/b2fde7ec7880d51f7280bb5e974e400bb716e3054048c409ba35ba509823/ndindex-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:d23f07831d28bb3c04c234936b6038078cd7c0c4966d2e2e37738edad6435f9f", size = 159516 }, + { url = "https://files.pythonhosted.org/packages/a3/a5/c3775c1a7279517027b86dc0c1a6a74f9a1fc7e0c298c960ed170fcf585e/ndindex-1.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:466d2e30a3c2afac6dac64e5ada19db30d23164befa7f69d29f209fb512b3d2f", size = 164104 }, + { url = "https://files.pythonhosted.org/packages/de/81/edb7ba51dae8d5a2879d39eb56651eeea4927f8292fc6286fae8b1cda0f1/ndindex-1.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e87eefa75af0f974cf2c5af14a488ee97dfdc7fb6da67f19f9dc600da5ae041", size = 161991 }, + { url = "https://files.pythonhosted.org/packages/f2/9e/79342047dd441fdcf25c776370c2b09ef8fad30bf06d7920b09278d93260/ndindex-1.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d98a41ff276fc623f3e068d40381ee06289644b530c3535bc00a8cbc5526c6", size = 521201 }, + { url = "https://files.pythonhosted.org/packages/fc/bd/834e4bb7054accc8bbf63c73f7c9f0bcbdc326fec0f560f375dd6637c63a/ndindex-1.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05d42c5cd86d923f1606c3a9defbaeb3ece8f7b444f95a46ec6f1fb511e971f7", size = 498251 }, + { url = "https://files.pythonhosted.org/packages/35/1b/fe4d51e07f18596abd53b3b63dd1d4a8617af3896193418a86b7a7a95fa7/ndindex-1.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:959f8babfc3055933079296a33449e02c24074027c39ce974cf73757c7d5ea21", size = 501804 }, + { url = "https://files.pythonhosted.org/packages/ae/e5/95d5dd5a628c41db959e07ddc7212ed45844865d10375efe4fc0aa5c905b/ndindex-1.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d68d8285f3ab8a78b0db990fb25eddc637df4b00467fbf36a4656c7ee46ddc5d", size = 518095 }, + { url = "https://files.pythonhosted.org/packages/bc/49/ca6155435bb408173c3d07f07aac6e6c4a30cefec31c4dd2af75c44774d7/ndindex-1.9.2-cp312-cp312-win32.whl", hash = "sha256:c87aa8218b6eaaa9eacb2f68f1ce71be0e368280ef926d0ed9ad71d2fbe24fe6", size = 151487 }, + { url = "https://files.pythonhosted.org/packages/01/e3/c87442ba34a76e3d778135e967b625e5bb2217773a8c0be751e1537231b7/ndindex-1.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:d15f3a8566910ec25898e3d77b3b7c258b37f84a235d49cb17dfddc9036127b4", size = 159655 }, + { url = "https://files.pythonhosted.org/packages/88/41/250efa5a033b66043d18eca87d044f733ca017bd12767ddf0b9468120bb1/ndindex-1.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a33452b4a7b8510f809f8b59dbac5b1d7b3d8a68c9e42dee2c28c5131bbbfbc6", size = 162133 }, + { url = "https://files.pythonhosted.org/packages/b0/df/87f329590e807460cbd4cea47aaaadea9a5cf5e70854712eb89489d03c89/ndindex-1.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19d70a304f942c0aee89418d9c487de9c2dcfcda9073976a590c7fed587bd674", size = 160045 }, + { url = "https://files.pythonhosted.org/packages/4e/e3/407f31902bfdd6d991e8ce62307877afc23e39b8a7c93fd17ab8316a5415/ndindex-1.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0bba0f387d1d8204378e82b886c19f46ae39347ee7113c9028317270c0060be", size = 505012 }, + { url = "https://files.pythonhosted.org/packages/91/dc/4e335d8631939f267be7b16308246671c02123e28f693f544076dda8615b/ndindex-1.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876dcd82d6d1cbc9c2e6819bc7a5ca3686a5430f0a07520b94f78ff78097d2d", size = 484122 }, + { url = "https://files.pythonhosted.org/packages/c0/ed/007faa12149a21893ec64f0dcab36c70a4cd43825dcd11bd7090ef8d1c29/ndindex-1.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3c564768ffa7228d1768eb6df1a77d03d39efc9c98746d8c1b511ffcc23d5f9f", size = 486035 }, + { url = "https://files.pythonhosted.org/packages/2c/81/67d8a37aca8997d8e93554f3c39bca200a16685e84e03e2cc84cf0c93276/ndindex-1.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ddbdfee4560c3f7823de88257680c8fd6d0220a7b23bfd27b0f3fc7afa27bee1", size = 500916 }, + { url = "https://files.pythonhosted.org/packages/6e/ff/277768997fa82a865ff564a6bd91bb42f574662945e58b26c0eb3d690aba/ndindex-1.9.2-cp313-cp313-win32.whl", hash = "sha256:6274886f1348128fc4e10aef925272f904ac467175af52338d56f1cb763caf1a", size = 150906 }, + { url = "https://files.pythonhosted.org/packages/3c/4d/e121d109bf6f71bcb00c6198549152fa16358a031796c6a7aa9662191529/ndindex-1.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:98be658c00ec0827e398b0fe5c13d207ff70b027187d728cb22155cce3bf6fbe", size = 158778 }, +] + +[[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 = "notebook-shim" +version = "0.2.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, +] + +[[package]] +name = "numcodecs" +version = "0.16.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bd/3d/54b07213c1c3b489f3be23e11f4d2c81d2e682852fc93b2bf37d5efd5664/numcodecs-0.16.0.tar.gz", hash = "sha256:f71229a951c4991ab226df4147f3780c988d1cecf1309e388d9e57bcba827387", size = 6268216 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/62/7c5153d09bc73055fc70380eb0caf168b3a1ed92fca8d8c9b3c7004586e6/numcodecs-0.16.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:fc95417135c90a353df219c47386dd30f11003ae673a006c869ddb0264430976", size = 1640160 }, + { url = "https://files.pythonhosted.org/packages/a7/23/fc64c96ec80221f235ca6b2e9fd90da75f6129e4444e2a44881a8dc96338/numcodecs-0.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27aab34e2fc4c3d2f4d504d9f5de154a822657f1950d1ed21801a0780e442a89", size = 1174884 }, + { url = "https://files.pythonhosted.org/packages/da/df/f3252143587dab354bd279fd60b69dd11a0cdbba6dcc08a2feefa12ca210/numcodecs-0.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9924e52cae325faef4b2642f8cc1b88f79c71d97dea028357d7cc5be51f183ad", size = 8255074 }, + { url = "https://files.pythonhosted.org/packages/a9/1b/ca2684a58de6ba981d549d70c814fa56ddfdd9ed20796daa3365493bf552/numcodecs-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7bab983b6eca0803ba678cb1cf00c6d7dfb095ff3041671ff7286555da3c016", size = 8803112 }, + { url = "https://files.pythonhosted.org/packages/bd/ee/34d119420bd807d96f13d701ced7bc515af493ff1f4fc2b114d827c36b68/numcodecs-0.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:6f2d0e3b7020cf564eca9b442fa136337a71b0cdb1d67467903cde0bf4cf7a4d", size = 818574 }, + { url = "https://files.pythonhosted.org/packages/aa/80/5574105bb739c13a7e95d8f0a0eeea90a2170e4af8cf2616baf3fc1694cb/numcodecs-0.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8f8c39fa0faf5c9f57270c6fd2dcbfe0549250483b80449cf97dd82eacaf627b", size = 1676208 }, + { url = "https://files.pythonhosted.org/packages/93/bf/c7b26ae2650e82d0e565c3d18134a63631244a6f0014056433cae2cbea90/numcodecs-0.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:357360c14783b954065619da47f0e968bfbafb4c4914348864a6223f88428256", size = 1178856 }, + { url = "https://files.pythonhosted.org/packages/71/43/6f734e2c0c1f313b2e47c9833279e2b87dfc7c7c623e089f9297a6e0ca41/numcodecs-0.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4895e6fffe3abcfbec476c7fda59d3255ac5d40d9c3e292cd6a204e75ba9c0", size = 8236239 }, + { url = "https://files.pythonhosted.org/packages/e1/12/fdf9e90a6e6e30f1dafb26da0a96ed2a0db0fafd499dfa0a11f64e830ec5/numcodecs-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b85cd0a6be21faba23b0d2d6c7ce4c1a48b5a523edf3bef4dee04aaba74a56", size = 8798365 }, + { url = "https://files.pythonhosted.org/packages/71/1f/8ed7a822c17dd17d63bbb70f74e09a033c9d9a1a85a06ec4a0a29f3e4d1c/numcodecs-0.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:9c28660642466ad6d1e2d5c6fab08c70ff58197cc94f7517e79088142b8f7731", size = 816025 }, + { url = "https://files.pythonhosted.org/packages/e6/81/eaf0eb5f60123840e31081ed4226d326eb035d0284e49596331b9f76995f/numcodecs-0.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a28f3f2c1aab21417bec52932d453eedb8323a07088be72edc2a440426d823ae", size = 1672497 }, + { url = "https://files.pythonhosted.org/packages/da/b8/e15f3dc5c5763efbfceed34100bc045d397dc02f277bc128845ac2e751f2/numcodecs-0.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f5203b86e57bc6d0dad8f0719f10404fcadeabb5f112205d4e926075a4e1388", size = 1170472 }, + { url = "https://files.pythonhosted.org/packages/e3/16/773ae1edb0e63e16c539a06b30d3d117fa0de475400576da2b0cfa682831/numcodecs-0.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881b1650938feb395b7157fd46bde683aa6cfde0616a31fe47972f1d0ea8ba37", size = 8188333 }, + { url = "https://files.pythonhosted.org/packages/25/df/6cbdd9842f9da811367773bdcbc12b196aaf4ad84bf3395b366931b32130/numcodecs-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271d07bfa230e02dec7ba93d5776b5032aecf1d4c20d52a93858e957d44ae722", size = 8752531 }, + { url = "https://files.pythonhosted.org/packages/52/e7/a8df8fc7e7ee574a66ca706916e486448c1f1f90cc3dcc660b3d6d846e72/numcodecs-0.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:7e6f501d7ac78107d80a2f4798e81b38584929cab1d2c7c03789610b9a39826a", size = 811488 }, +] + +[package.optional-dependencies] +crc32c = [ + { name = "crc32c" }, +] + +[[package]] +name = "numpy" +version = "2.2.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/fb/e4e4c254ba40e8f0c78218f9e86304628c75b6900509b601c8433bdb5da7/numpy-2.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c42365005c7a6c42436a54d28c43fe0e01ca11eb2ac3cefe796c25a5f98e5e9b", size = 21256475 }, + { url = "https://files.pythonhosted.org/packages/81/32/dd1f7084f5c10b2caad778258fdaeedd7fbd8afcd2510672811e6138dfac/numpy-2.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:498815b96f67dc347e03b719ef49c772589fb74b8ee9ea2c37feae915ad6ebda", size = 14461474 }, + { url = "https://files.pythonhosted.org/packages/0e/65/937cdf238ef6ac54ff749c0f66d9ee2b03646034c205cea9b6c51f2f3ad1/numpy-2.2.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6411f744f7f20081b1b4e7112e0f4c9c5b08f94b9f086e6f0adf3645f85d3a4d", size = 5426875 }, + { url = "https://files.pythonhosted.org/packages/25/17/814515fdd545b07306eaee552b65c765035ea302d17de1b9cb50852d2452/numpy-2.2.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9de6832228f617c9ef45d948ec1cd8949c482238d68b2477e6f642c33a7b0a54", size = 6969176 }, + { url = "https://files.pythonhosted.org/packages/e5/32/a66db7a5c8b5301ec329ab36d0ecca23f5e18907f43dbd593c8ec326d57c/numpy-2.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:369e0d4647c17c9363244f3468f2227d557a74b6781cb62ce57cf3ef5cc7c610", size = 14374850 }, + { url = "https://files.pythonhosted.org/packages/ad/c9/1bf6ada582eebcbe8978f5feb26584cd2b39f94ededeea034ca8f84af8c8/numpy-2.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262d23f383170f99cd9191a7c85b9a50970fe9069b2f8ab5d786eca8a675d60b", size = 16430306 }, + { url = "https://files.pythonhosted.org/packages/6a/f0/3f741863f29e128f4fcfdb99253cc971406b402b4584663710ee07f5f7eb/numpy-2.2.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:aa70fdbdc3b169d69e8c59e65c07a1c9351ceb438e627f0fdcd471015cd956be", size = 15884767 }, + { url = "https://files.pythonhosted.org/packages/98/d9/4ccd8fd6410f7bf2d312cbc98892e0e43c2fcdd1deae293aeb0a93b18071/numpy-2.2.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37e32e985f03c06206582a7323ef926b4e78bdaa6915095ef08070471865b906", size = 18219515 }, + { url = "https://files.pythonhosted.org/packages/b1/56/783237243d4395c6dd741cf16eeb1a9035ee3d4310900e6b17e875d1b201/numpy-2.2.5-cp311-cp311-win32.whl", hash = "sha256:f5045039100ed58fa817a6227a356240ea1b9a1bc141018864c306c1a16d4175", size = 6607842 }, + { url = "https://files.pythonhosted.org/packages/98/89/0c93baaf0094bdaaaa0536fe61a27b1dce8a505fa262a865ec142208cfe9/numpy-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b13f04968b46ad705f7c8a80122a42ae8f620536ea38cf4bdd374302926424dd", size = 12949071 }, + { url = "https://files.pythonhosted.org/packages/e2/f7/1fd4ff108cd9d7ef929b8882692e23665dc9c23feecafbb9c6b80f4ec583/numpy-2.2.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051", size = 20948633 }, + { url = "https://files.pythonhosted.org/packages/12/03/d443c278348371b20d830af155ff2079acad6a9e60279fac2b41dbbb73d8/numpy-2.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc", size = 14176123 }, + { url = "https://files.pythonhosted.org/packages/2b/0b/5ca264641d0e7b14393313304da48b225d15d471250376f3fbdb1a2be603/numpy-2.2.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e", size = 5163817 }, + { url = "https://files.pythonhosted.org/packages/04/b3/d522672b9e3d28e26e1613de7675b441bbd1eaca75db95680635dd158c67/numpy-2.2.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa", size = 6698066 }, + { url = "https://files.pythonhosted.org/packages/a0/93/0f7a75c1ff02d4b76df35079676b3b2719fcdfb39abdf44c8b33f43ef37d/numpy-2.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571", size = 14087277 }, + { url = "https://files.pythonhosted.org/packages/b0/d9/7c338b923c53d431bc837b5b787052fef9ae68a56fe91e325aac0d48226e/numpy-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073", size = 16135742 }, + { url = "https://files.pythonhosted.org/packages/2d/10/4dec9184a5d74ba9867c6f7d1e9f2e0fb5fe96ff2bf50bb6f342d64f2003/numpy-2.2.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8", size = 15581825 }, + { url = "https://files.pythonhosted.org/packages/80/1f/2b6fcd636e848053f5b57712a7d1880b1565eec35a637fdfd0a30d5e738d/numpy-2.2.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae", size = 17899600 }, + { url = "https://files.pythonhosted.org/packages/ec/87/36801f4dc2623d76a0a3835975524a84bd2b18fe0f8835d45c8eae2f9ff2/numpy-2.2.5-cp312-cp312-win32.whl", hash = "sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb", size = 6312626 }, + { url = "https://files.pythonhosted.org/packages/8b/09/4ffb4d6cfe7ca6707336187951992bd8a8b9142cf345d87ab858d2d7636a/numpy-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282", size = 12645715 }, + { url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102 }, + { url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709 }, + { url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173 }, + { url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502 }, + { url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417 }, + { url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807 }, + { url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611 }, + { url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747 }, + { url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594 }, + { url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356 }, + { url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778 }, + { url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279 }, + { url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247 }, + { url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087 }, + { url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964 }, + { url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214 }, + { url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788 }, + { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 }, + { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 }, + { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 }, +] + +[[package]] +name = "overrides" +version = "7.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, +] + +[[package]] +name = "paginate" +version = "0.5.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, +] + +[[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 = "pandocfilters" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, +] + +[[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 = "pathspec" +version = "0.12.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, +] + +[[package]] +name = "pexpect" +version = "4.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +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.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, + { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098 }, + { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166 }, + { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674 }, + { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005 }, + { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707 }, + { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008 }, + { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420 }, + { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655 }, + { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329 }, + { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388 }, + { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950 }, + { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759 }, + { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284 }, + { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826 }, + { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329 }, + { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049 }, + { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408 }, + { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863 }, + { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938 }, + { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774 }, + { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895 }, + { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234 }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, +] + +[[package]] +name = "platformdirs" +version = "4.3.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, +] + +[[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 = "pre-commit" +version = "4.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cfgv" }, + { name = "identify" }, + { name = "nodeenv" }, + { name = "pyyaml" }, + { name = "virtualenv" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, +] + +[[package]] +name = "prometheus-client" +version = "0.21.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, +] + +[[package]] +name = "prompt-toolkit" +version = "3.0.51" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, +] + +[[package]] +name = "propcache" +version = "0.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, + { url = "https://files.pythonhosted.org/packages/58/60/f645cc8b570f99be3cf46714170c2de4b4c9d6b827b912811eff1eb8a412/propcache-0.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f1528ec4374617a7a753f90f20e2f551121bb558fcb35926f99e3c42367164b8", size = 77865 }, + { url = "https://files.pythonhosted.org/packages/6f/d4/c1adbf3901537582e65cf90fd9c26fde1298fde5a2c593f987112c0d0798/propcache-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc1915ec523b3b494933b5424980831b636fe483d7d543f7afb7b3bf00f0c10f", size = 45452 }, + { url = "https://files.pythonhosted.org/packages/d1/b5/fe752b2e63f49f727c6c1c224175d21b7d1727ce1d4873ef1c24c9216830/propcache-0.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a110205022d077da24e60b3df8bcee73971be9575dec5573dd17ae5d81751111", size = 44800 }, + { url = "https://files.pythonhosted.org/packages/62/37/fc357e345bc1971e21f76597028b059c3d795c5ca7690d7a8d9a03c9708a/propcache-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d249609e547c04d190e820d0d4c8ca03ed4582bcf8e4e160a6969ddfb57b62e5", size = 225804 }, + { url = "https://files.pythonhosted.org/packages/0d/f1/16e12c33e3dbe7f8b737809bad05719cff1dccb8df4dafbcff5575002c0e/propcache-0.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ced33d827625d0a589e831126ccb4f5c29dfdf6766cac441d23995a65825dcb", size = 230650 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/018b9f2ed876bf5091e60153f727e8f9073d97573f790ff7cdf6bc1d1fb8/propcache-0.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4114c4ada8f3181af20808bedb250da6bae56660e4b8dfd9cd95d4549c0962f7", size = 234235 }, + { url = "https://files.pythonhosted.org/packages/45/5f/3faee66fc930dfb5da509e34c6ac7128870631c0e3582987fad161fcb4b1/propcache-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:975af16f406ce48f1333ec5e912fe11064605d5c5b3f6746969077cc3adeb120", size = 228249 }, + { url = "https://files.pythonhosted.org/packages/62/1e/a0d5ebda5da7ff34d2f5259a3e171a94be83c41eb1e7cd21a2105a84a02e/propcache-0.3.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a34aa3a1abc50740be6ac0ab9d594e274f59960d3ad253cd318af76b996dd654", size = 214964 }, + { url = "https://files.pythonhosted.org/packages/db/a0/d72da3f61ceab126e9be1f3bc7844b4e98c6e61c985097474668e7e52152/propcache-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9cec3239c85ed15bfaded997773fdad9fb5662b0a7cbc854a43f291eb183179e", size = 222501 }, + { url = "https://files.pythonhosted.org/packages/18/6d/a008e07ad7b905011253adbbd97e5b5375c33f0b961355ca0a30377504ac/propcache-0.3.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:05543250deac8e61084234d5fc54f8ebd254e8f2b39a16b1dce48904f45b744b", size = 217917 }, + { url = "https://files.pythonhosted.org/packages/98/37/02c9343ffe59e590e0e56dc5c97d0da2b8b19fa747ebacf158310f97a79a/propcache-0.3.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5cb5918253912e088edbf023788de539219718d3b10aef334476b62d2b53de53", size = 217089 }, + { url = "https://files.pythonhosted.org/packages/53/1b/d3406629a2c8a5666d4674c50f757a77be119b113eedd47b0375afdf1b42/propcache-0.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3bbecd2f34d0e6d3c543fdb3b15d6b60dd69970c2b4c822379e5ec8f6f621d5", size = 228102 }, + { url = "https://files.pythonhosted.org/packages/cd/a7/3664756cf50ce739e5f3abd48febc0be1a713b1f389a502ca819791a6b69/propcache-0.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aca63103895c7d960a5b9b044a83f544b233c95e0dcff114389d64d762017af7", size = 230122 }, + { url = "https://files.pythonhosted.org/packages/35/36/0bbabaacdcc26dac4f8139625e930f4311864251276033a52fd52ff2a274/propcache-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a0a9898fdb99bf11786265468571e628ba60af80dc3f6eb89a3545540c6b0ef", size = 226818 }, + { url = "https://files.pythonhosted.org/packages/cc/27/4e0ef21084b53bd35d4dae1634b6d0bad35e9c58ed4f032511acca9d4d26/propcache-0.3.1-cp313-cp313-win32.whl", hash = "sha256:3a02a28095b5e63128bcae98eb59025924f121f048a62393db682f049bf4ac24", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/a6/2c/a54614d61895ba6dd7ac8f107e2b2a0347259ab29cbf2ecc7b94fa38c4dc/propcache-0.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:813fbb8b6aea2fc9659815e585e548fe706d6f663fa73dff59a1677d4595a037", size = 44034 }, + { url = "https://files.pythonhosted.org/packages/5a/a8/0a4fd2f664fc6acc66438370905124ce62e84e2e860f2557015ee4a61c7e/propcache-0.3.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a444192f20f5ce8a5e52761a031b90f5ea6288b1eef42ad4c7e64fef33540b8f", size = 82613 }, + { url = "https://files.pythonhosted.org/packages/4d/e5/5ef30eb2cd81576256d7b6caaa0ce33cd1d2c2c92c8903cccb1af1a4ff2f/propcache-0.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0fbe94666e62ebe36cd652f5fc012abfbc2342de99b523f8267a678e4dfdee3c", size = 47763 }, + { url = "https://files.pythonhosted.org/packages/87/9a/87091ceb048efeba4d28e903c0b15bcc84b7c0bf27dc0261e62335d9b7b8/propcache-0.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f011f104db880f4e2166bcdcf7f58250f7a465bc6b068dc84c824a3d4a5c94dc", size = 47175 }, + { url = "https://files.pythonhosted.org/packages/3e/2f/854e653c96ad1161f96194c6678a41bbb38c7947d17768e8811a77635a08/propcache-0.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e584b6d388aeb0001d6d5c2bd86b26304adde6d9bb9bfa9c4889805021b96de", size = 292265 }, + { url = "https://files.pythonhosted.org/packages/40/8d/090955e13ed06bc3496ba4a9fb26c62e209ac41973cb0d6222de20c6868f/propcache-0.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a17583515a04358b034e241f952f1715243482fc2c2945fd99a1b03a0bd77d6", size = 294412 }, + { url = "https://files.pythonhosted.org/packages/39/e6/d51601342e53cc7582449e6a3c14a0479fab2f0750c1f4d22302e34219c6/propcache-0.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5aed8d8308215089c0734a2af4f2e95eeb360660184ad3912686c181e500b2e7", size = 294290 }, + { url = "https://files.pythonhosted.org/packages/3b/4d/be5f1a90abc1881884aa5878989a1acdafd379a91d9c7e5e12cef37ec0d7/propcache-0.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8e309ff9a0503ef70dc9a0ebd3e69cf7b3894c9ae2ae81fc10943c37762458", size = 282926 }, + { url = "https://files.pythonhosted.org/packages/57/2b/8f61b998c7ea93a2b7eca79e53f3e903db1787fca9373af9e2cf8dc22f9d/propcache-0.3.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b655032b202028a582d27aeedc2e813299f82cb232f969f87a4fde491a233f11", size = 267808 }, + { url = "https://files.pythonhosted.org/packages/11/1c/311326c3dfce59c58a6098388ba984b0e5fb0381ef2279ec458ef99bd547/propcache-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f64d91b751df77931336b5ff7bafbe8845c5770b06630e27acd5dbb71e1931c", size = 290916 }, + { url = "https://files.pythonhosted.org/packages/4b/74/91939924b0385e54dc48eb2e4edd1e4903ffd053cf1916ebc5347ac227f7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:19a06db789a4bd896ee91ebc50d059e23b3639c25d58eb35be3ca1cbe967c3bf", size = 262661 }, + { url = "https://files.pythonhosted.org/packages/c2/d7/e6079af45136ad325c5337f5dd9ef97ab5dc349e0ff362fe5c5db95e2454/propcache-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bef100c88d8692864651b5f98e871fb090bd65c8a41a1cb0ff2322db39c96c27", size = 264384 }, + { url = "https://files.pythonhosted.org/packages/b7/d5/ba91702207ac61ae6f1c2da81c5d0d6bf6ce89e08a2b4d44e411c0bbe867/propcache-0.3.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:87380fb1f3089d2a0b8b00f006ed12bd41bd858fabfa7330c954c70f50ed8757", size = 291420 }, + { url = "https://files.pythonhosted.org/packages/58/70/2117780ed7edcd7ba6b8134cb7802aada90b894a9810ec56b7bb6018bee7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e474fc718e73ba5ec5180358aa07f6aded0ff5f2abe700e3115c37d75c947e18", size = 290880 }, + { url = "https://files.pythonhosted.org/packages/4a/1f/ecd9ce27710021ae623631c0146719280a929d895a095f6d85efb6a0be2e/propcache-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:17d1c688a443355234f3c031349da69444be052613483f3e4158eef751abcd8a", size = 287407 }, + { url = "https://files.pythonhosted.org/packages/3e/66/2e90547d6b60180fb29e23dc87bd8c116517d4255240ec6d3f7dc23d1926/propcache-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:359e81a949a7619802eb601d66d37072b79b79c2505e6d3fd8b945538411400d", size = 42573 }, + { url = "https://files.pythonhosted.org/packages/cb/8f/50ad8599399d1861b4d2b6b45271f0ef6af1b09b0a2386a46dbaf19c9535/propcache-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e7fb9a84c9abbf2b2683fa3e7b0d7da4d8ecf139a1c635732a8bda29c5214b0e", size = 46757 }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, +] + +[[package]] +name = "psutil" +version = "7.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, +] + +[[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 = "pyarrow" +version = "19.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987 }, + { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613 }, + { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147 }, + { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045 }, + { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998 }, + { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055 }, + { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133 }, + { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749 }, + { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007 }, + { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566 }, + { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991 }, + { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986 }, + { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026 }, + { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108 }, + { url = "https://files.pythonhosted.org/packages/2b/8d/275c58d4b00781bd36579501a259eacc5c6dfb369be4ddeb672ceb551d2d/pyarrow-19.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e45274b20e524ae5c39d7fc1ca2aa923aab494776d2d4b316b49ec7572ca324c", size = 30653552 }, + { url = "https://files.pythonhosted.org/packages/a0/9e/e6aca5cc4ef0c7aec5f8db93feb0bde08dbad8c56b9014216205d271101b/pyarrow-19.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d9dedeaf19097a143ed6da37f04f4051aba353c95ef507764d344229b2b740ae", size = 32103413 }, + { url = "https://files.pythonhosted.org/packages/6a/fa/a7033f66e5d4f1308c7eb0dfcd2ccd70f881724eb6fd1776657fdf65458f/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ebfb5171bb5f4a52319344ebbbecc731af3f021e49318c74f33d520d31ae0c4", size = 41134869 }, + { url = "https://files.pythonhosted.org/packages/2d/92/34d2569be8e7abdc9d145c98dc410db0071ac579b92ebc30da35f500d630/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a21d39fbdb948857f67eacb5bbaaf36802de044ec36fbef7a1c8f0dd3a4ab2", size = 42192626 }, + { url = "https://files.pythonhosted.org/packages/0a/1f/80c617b1084fc833804dc3309aa9d8daacd46f9ec8d736df733f15aebe2c/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:99bc1bec6d234359743b01e70d4310d0ab240c3d6b0da7e2a93663b0158616f6", size = 40496708 }, + { url = "https://files.pythonhosted.org/packages/e6/90/83698fcecf939a611c8d9a78e38e7fed7792dcc4317e29e72cf8135526fb/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1b93ef2c93e77c442c979b0d596af45e4665d8b96da598db145b0fec014b9136", size = 42075728 }, + { url = "https://files.pythonhosted.org/packages/40/49/2325f5c9e7a1c125c01ba0c509d400b152c972a47958768e4e35e04d13d8/pyarrow-19.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d9d46e06846a41ba906ab25302cf0fd522f81aa2a85a71021826f34639ad31ef", size = 25242568 }, + { url = "https://files.pythonhosted.org/packages/3f/72/135088d995a759d4d916ec4824cb19e066585b4909ebad4ab196177aa825/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c0fe3dbbf054a00d1f162fda94ce236a899ca01123a798c561ba307ca38af5f0", size = 30702371 }, + { url = "https://files.pythonhosted.org/packages/2e/01/00beeebd33d6bac701f20816a29d2018eba463616bbc07397fdf99ac4ce3/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:96606c3ba57944d128e8a8399da4812f56c7f61de8c647e3470b417f795d0ef9", size = 32116046 }, + { url = "https://files.pythonhosted.org/packages/1f/c9/23b1ea718dfe967cbd986d16cf2a31fe59d015874258baae16d7ea0ccabc/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f04d49a6b64cf24719c080b3c2029a3a5b16417fd5fd7c4041f94233af732f3", size = 41091183 }, + { url = "https://files.pythonhosted.org/packages/3a/d4/b4a3aa781a2c715520aa8ab4fe2e7fa49d33a1d4e71c8fc6ab7b5de7a3f8/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9137cf7e1640dce4c190551ee69d478f7121b5c6f323553b319cac936395f6", size = 42171896 }, + { url = "https://files.pythonhosted.org/packages/23/1b/716d4cd5a3cbc387c6e6745d2704c4b46654ba2668260d25c402626c5ddb/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:7c1bca1897c28013db5e4c83944a2ab53231f541b9e0c3f4791206d0c0de389a", size = 40464851 }, + { url = "https://files.pythonhosted.org/packages/ed/bd/54907846383dcc7ee28772d7e646f6c34276a17da740002a5cefe90f04f7/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:58d9397b2e273ef76264b45531e9d552d8ec8a6688b7390b5be44c02a37aade8", size = 42085744 }, +] + +[[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.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "annotated-types" }, + { name = "pydantic-core" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, +] + +[[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 = "pygithub" +version = "2.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "deprecated" }, + { name = "pyjwt", extra = ["crypto"] }, + { name = "pynacl" }, + { name = "requests" }, + { name = "typing-extensions" }, + { name = "urllib3" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451 }, +] + +[[package]] +name = "pygments" +version = "2.19.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, +] + +[[package]] +name = "pyiceberg" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cachetools" }, + { name = "click" }, + { name = "fsspec" }, + { name = "mmh3" }, + { name = "pydantic" }, + { name = "pyparsing" }, + { name = "requests" }, + { name = "rich" }, + { name = "sortedcontainers" }, + { name = "strictyaml" }, + { name = "tenacity" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, +] + +[package.optional-dependencies] +sql-sqlite = [ + { name = "sqlalchemy" }, +] + +[[package]] +name = "pyjwt" +version = "2.10.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, +] + +[package.optional-dependencies] +crypto = [ + { name = "cryptography" }, +] + +[[package]] +name = "pymdown-extensions" +version = "10.15" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "markdown" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, +] + +[[package]] +name = "pynacl" +version = "1.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, +] + +[[package]] +name = "pyogrio" +version = "0.10.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "numpy" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526 }, + { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867 }, + { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332 }, + { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693 }, + { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952 }, + { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573 }, + { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211 }, + { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782 }, + { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832 }, + { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469 }, + { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758 }, + { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294 }, + { url = "https://files.pythonhosted.org/packages/14/4a/4c8e4f5b9edbca46e0f8d6c1c0b56c0d4af0900c29f4bea22d37853c07f3/pyogrio-0.10.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:c90478209537a31dcc65664a87a04c094bb0e08efe502908a6682b8cec0259bf", size = 15076879 }, + { url = "https://files.pythonhosted.org/packages/5f/be/7db0644eef9ef3382518399aaf3332827c43018112d2a74f78784fd496ec/pyogrio-0.10.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:fec45e1963b7058e5a1aa98598aed07c0858512c833d6aad2c672c3ec98bbf04", size = 16440405 }, + { url = "https://files.pythonhosted.org/packages/96/77/f199230ba86fe88b1f57e71428c169ed982de68a32d6082cd7c12d0f5d55/pyogrio-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28cb139f8a5d0365ede602230104b407ae52bb6b55173c8d5a35424d28c4a2c5", size = 23871511 }, + { url = "https://files.pythonhosted.org/packages/25/ac/ca483bec408b59c54f7129b0244cc9de21d8461aefe89ece7bd74ad33807/pyogrio-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:cea0187fcc2d574e52af8cfab041fa0a7ad71d5ef6b94b49a3f3d2a04534a27e", size = 23048830 }, + { url = "https://files.pythonhosted.org/packages/d7/3e/c35f2d8dad95b24e568c468f09ff60fb61945065465e0ec7868400596566/pyogrio-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:7c02b207ea8cf09c501ea3e95d29152781a00d3c32267286bc36fa457c332205", size = 23996873 }, + { url = "https://files.pythonhosted.org/packages/27/5d/0deb16d228362a097ee3258d0a887c9c0add4b9678bb4847b08a241e124d/pyogrio-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:02e54bcfb305af75f829044b0045f74de31b77c2d6546f7aaf96822066147848", size = 16158260 }, +] + +[[package]] +name = "pyparsing" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, +] + +[[package]] +name = "pyproj" +version = "3.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, + { url = "https://files.pythonhosted.org/packages/ef/01/984828464c9960036c602753fc0f21f24f0aa9043c18fa3f2f2b66a86340/pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d", size = 6253062 }, + { url = "https://files.pythonhosted.org/packages/68/65/6ecdcdc829811a2c160cdfe2f068a009fc572fd4349664f758ccb0853a7c/pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0", size = 4660548 }, + { url = "https://files.pythonhosted.org/packages/67/da/dda94c4490803679230ba4c17a12f151b307a0d58e8110820405ca2d98db/pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4", size = 9662464 }, + { url = "https://files.pythonhosted.org/packages/6f/57/f61b7d22c91ae1d12ee00ac4c0038714e774ebcd851b9133e5f4f930dd40/pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528", size = 9497461 }, + { url = "https://files.pythonhosted.org/packages/b7/f6/932128236f79d2ac7d39fe1a19667fdf7155d9a81d31fb9472a7a497790f/pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f", size = 10708869 }, + { url = "https://files.pythonhosted.org/packages/1d/0d/07ac7712994454a254c383c0d08aff9916a2851e6512d59da8dc369b1b02/pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc", size = 10729260 }, + { url = "https://files.pythonhosted.org/packages/b0/d0/9c604bc72c37ba69b867b6df724d6a5af6789e8c375022c952f65b2af558/pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e", size = 5855462 }, + { url = "https://files.pythonhosted.org/packages/98/df/68a2b7f5fb6400c64aad82d72bcc4bc531775e62eedff993a77c780defd0/pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e", size = 6266573 }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +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/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, +] + +[[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-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, +] + +[[package]] +name = "python-json-logger" +version = "3.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, +] + +[[package]] +name = "pytz" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, +] + +[[package]] +name = "pywin32" +version = "310" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, + { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, + { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, +] + +[[package]] +name = "pywinpty" +version = "2.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, + { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020 }, + { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151 }, +] + +[[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 = "pyyaml-env-tag" +version = "0.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, +] + +[[package]] +name = "pyzmq" +version = "26.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "cffi", marker = "implementation_name == 'pypy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, + { url = "https://files.pythonhosted.org/packages/d7/20/fb2c92542488db70f833b92893769a569458311a76474bda89dc4264bd18/pyzmq-26.4.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:c43fac689880f5174d6fc864857d1247fe5cfa22b09ed058a344ca92bf5301e3", size = 1339484 }, + { url = "https://files.pythonhosted.org/packages/58/29/2f06b9cabda3a6ea2c10f43e67ded3e47fc25c54822e2506dfb8325155d4/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902aca7eba477657c5fb81c808318460328758e8367ecdd1964b6330c73cae43", size = 666106 }, + { url = "https://files.pythonhosted.org/packages/77/e4/dcf62bd29e5e190bd21bfccaa4f3386e01bf40d948c239239c2f1e726729/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e48a830bfd152fe17fbdeaf99ac5271aa4122521bf0d275b6b24e52ef35eb6", size = 902056 }, + { url = "https://files.pythonhosted.org/packages/1a/cf/b36b3d7aea236087d20189bec1a87eeb2b66009731d7055e5c65f845cdba/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31be2b6de98c824c06f5574331f805707c667dc8f60cb18580b7de078479891e", size = 860148 }, + { url = "https://files.pythonhosted.org/packages/18/a6/f048826bc87528c208e90604c3bf573801e54bd91e390cbd2dfa860e82dc/pyzmq-26.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6332452034be001bbf3206ac59c0d2a7713de5f25bb38b06519fc6967b7cf771", size = 855983 }, + { url = "https://files.pythonhosted.org/packages/0a/27/454d34ab6a1d9772a36add22f17f6b85baf7c16e14325fa29e7202ca8ee8/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:da8c0f5dd352136853e6a09b1b986ee5278dfddfebd30515e16eae425c872b30", size = 1197274 }, + { url = "https://files.pythonhosted.org/packages/f4/3d/7abfeab6b83ad38aa34cbd57c6fc29752c391e3954fd12848bd8d2ec0df6/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f4ccc1a0a2c9806dda2a2dd118a3b7b681e448f3bb354056cad44a65169f6d86", size = 1507120 }, + { url = "https://files.pythonhosted.org/packages/13/ff/bc8d21dbb9bc8705126e875438a1969c4f77e03fc8565d6901c7933a3d01/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c0b5fceadbab461578daf8d1dcc918ebe7ddd2952f748cf30c7cf2de5d51101", size = 1406738 }, + { url = "https://files.pythonhosted.org/packages/f5/5d/d4cd85b24de71d84d81229e3bbb13392b2698432cf8fdcea5afda253d587/pyzmq-26.4.0-cp313-cp313-win32.whl", hash = "sha256:28e2b0ff5ba4b3dd11062d905682bad33385cfa3cc03e81abd7f0822263e6637", size = 577826 }, + { url = "https://files.pythonhosted.org/packages/c6/6c/f289c1789d7bb6e5a3b3bef7b2a55089b8561d17132be7d960d3ff33b14e/pyzmq-26.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:23ecc9d241004c10e8b4f49d12ac064cd7000e1643343944a10df98e57bc544b", size = 640406 }, + { url = "https://files.pythonhosted.org/packages/b3/99/676b8851cb955eb5236a0c1e9ec679ea5ede092bf8bf2c8a68d7e965cac3/pyzmq-26.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:1edb0385c7f025045d6e0f759d4d3afe43c17a3d898914ec6582e6f464203c08", size = 556216 }, + { url = "https://files.pythonhosted.org/packages/65/c2/1fac340de9d7df71efc59d9c50fc7a635a77b103392d1842898dd023afcb/pyzmq-26.4.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:93a29e882b2ba1db86ba5dd5e88e18e0ac6b627026c5cfbec9983422011b82d4", size = 1333769 }, + { url = "https://files.pythonhosted.org/packages/5c/c7/6c03637e8d742c3b00bec4f5e4cd9d1c01b2f3694c6f140742e93ca637ed/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45684f276f57110bb89e4300c00f1233ca631f08f5f42528a5c408a79efc4a", size = 658826 }, + { url = "https://files.pythonhosted.org/packages/a5/97/a8dca65913c0f78e0545af2bb5078aebfc142ca7d91cdaffa1fbc73e5dbd/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72073e75260cb301aad4258ad6150fa7f57c719b3f498cb91e31df16784d89b", size = 891650 }, + { url = "https://files.pythonhosted.org/packages/7d/7e/f63af1031eb060bf02d033732b910fe48548dcfdbe9c785e9f74a6cc6ae4/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be37e24b13026cfedd233bcbbccd8c0bcd2fdd186216094d095f60076201538d", size = 849776 }, + { url = "https://files.pythonhosted.org/packages/f6/fa/1a009ce582802a895c0d5fe9413f029c940a0a8ee828657a3bb0acffd88b/pyzmq-26.4.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:237b283044934d26f1eeff4075f751b05d2f3ed42a257fc44386d00df6a270cf", size = 842516 }, + { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183 }, + { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501 }, + { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540 }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, +] + +[[package]] +name = "referencing" +version = "0.36.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "attrs" }, + { name = "rpds-py" }, + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, +] + +[[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 = "rfc3339-validator" +version = "0.1.4" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, +] + +[[package]] +name = "rfc3986-validator" +version = "0.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, +] + +[[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.24.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679 }, + { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571 }, + { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012 }, + { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730 }, + { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264 }, + { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813 }, + { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416 }, + { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236 }, + { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016 }, + { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123 }, + { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256 }, + { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718 }, + { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945 }, + { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935 }, + { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817 }, + { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983 }, + { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719 }, + { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546 }, + { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695 }, + { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218 }, + { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062 }, + { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262 }, + { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, + { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, + { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, + { url = "https://files.pythonhosted.org/packages/9d/c3/3607abc770395bc6d5a00cb66385a5479fb8cd7416ddef90393b17ef4340/rpds_py-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2d8e4508e15fc05b31285c4b00ddf2e0eb94259c2dc896771966a163122a0c", size = 367072 }, + { url = "https://files.pythonhosted.org/packages/d8/35/8c7ee0fe465793e3af3298dc5a9f3013bd63e7a69df04ccfded8293a4982/rpds_py-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f00c16e089282ad68a3820fd0c831c35d3194b7cdc31d6e469511d9bffc535c", size = 351919 }, + { url = "https://files.pythonhosted.org/packages/91/d3/7e1b972501eb5466b9aca46a9c31bcbbdc3ea5a076e9ab33f4438c1d069d/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951cc481c0c395c4a08639a469d53b7d4afa252529a085418b82a6b43c45c240", size = 390360 }, + { url = "https://files.pythonhosted.org/packages/a2/a8/ccabb50d3c91c26ad01f9b09a6a3b03e4502ce51a33867c38446df9f896b/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9ca89938dff18828a328af41ffdf3902405a19f4131c88e22e776a8e228c5a8", size = 400704 }, + { url = "https://files.pythonhosted.org/packages/53/ae/5fa5bf0f3bc6ce21b5ea88fc0ecd3a439e7cb09dd5f9ffb3dbe1b6894fc5/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0ef550042a8dbcd657dfb284a8ee00f0ba269d3f2286b0493b15a5694f9fe8", size = 450839 }, + { url = "https://files.pythonhosted.org/packages/e3/ac/c4e18b36d9938247e2b54f6a03746f3183ca20e1edd7d3654796867f5100/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2356688e5d958c4d5cb964af865bea84db29971d3e563fb78e46e20fe1848b", size = 441494 }, + { url = "https://files.pythonhosted.org/packages/bf/08/b543969c12a8f44db6c0f08ced009abf8f519191ca6985509e7c44102e3c/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78884d155fd15d9f64f5d6124b486f3d3f7fd7cd71a78e9670a0f6f6ca06fb2d", size = 393185 }, + { url = "https://files.pythonhosted.org/packages/da/7e/f6eb6a7042ce708f9dfc781832a86063cea8a125bbe451d663697b51944f/rpds_py-0.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4a535013aeeef13c5532f802708cecae8d66c282babb5cd916379b72110cf7", size = 426168 }, + { url = "https://files.pythonhosted.org/packages/38/b0/6cd2bb0509ac0b51af4bb138e145b7c4c902bb4b724d6fd143689d6e0383/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:84e0566f15cf4d769dade9b366b7b87c959be472c92dffb70462dd0844d7cbad", size = 567622 }, + { url = "https://files.pythonhosted.org/packages/64/b0/c401f4f077547d98e8b4c2ec6526a80e7cb04f519d416430ec1421ee9e0b/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:823e74ab6fbaa028ec89615ff6acb409e90ff45580c45920d4dfdddb069f2120", size = 595435 }, + { url = "https://files.pythonhosted.org/packages/9f/ec/7993b6e803294c87b61c85bd63e11142ccfb2373cf88a61ec602abcbf9d6/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c61a2cb0085c8783906b2f8b1f16a7e65777823c7f4d0a6aaffe26dc0d358dd9", size = 563762 }, + { url = "https://files.pythonhosted.org/packages/1f/29/4508003204cb2f461dc2b83dd85f8aa2b915bc98fe6046b9d50d4aa05401/rpds_py-0.24.0-cp313-cp313-win32.whl", hash = "sha256:60d9b630c8025b9458a9d114e3af579a2c54bd32df601c4581bd054e85258143", size = 223510 }, + { url = "https://files.pythonhosted.org/packages/f9/12/09e048d1814195e01f354155fb772fb0854bd3450b5f5a82224b3a319f0e/rpds_py-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:6eea559077d29486c68218178ea946263b87f1c41ae7f996b1f30a983c476a5a", size = 239075 }, + { url = "https://files.pythonhosted.org/packages/d2/03/5027cde39bb2408d61e4dd0cf81f815949bb629932a6c8df1701d0257fc4/rpds_py-0.24.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:d09dc82af2d3c17e7dd17120b202a79b578d79f2b5424bda209d9966efeed114", size = 362974 }, + { url = "https://files.pythonhosted.org/packages/bf/10/24d374a2131b1ffafb783e436e770e42dfdb74b69a2cd25eba8c8b29d861/rpds_py-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5fc13b44de6419d1e7a7e592a4885b323fbc2f46e1f22151e3a8ed3b8b920405", size = 348730 }, + { url = "https://files.pythonhosted.org/packages/7a/d1/1ef88d0516d46cd8df12e5916966dbf716d5ec79b265eda56ba1b173398c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c347a20d79cedc0a7bd51c4d4b7dbc613ca4e65a756b5c3e57ec84bd43505b47", size = 387627 }, + { url = "https://files.pythonhosted.org/packages/4e/35/07339051b8b901ecefd449ebf8e5522e92bcb95e1078818cbfd9db8e573c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20f2712bd1cc26a3cc16c5a1bfee9ed1abc33d4cdf1aabd297fe0eb724df4272", size = 394094 }, + { url = "https://files.pythonhosted.org/packages/dc/62/ee89ece19e0ba322b08734e95441952062391065c157bbd4f8802316b4f1/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad911555286884be1e427ef0dc0ba3929e6821cbeca2194b13dc415a462c7fd", size = 449639 }, + { url = "https://files.pythonhosted.org/packages/15/24/b30e9f9e71baa0b9dada3a4ab43d567c6b04a36d1cb531045f7a8a0a7439/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aeb3329c1721c43c58cae274d7d2ca85c1690d89485d9c63a006cb79a85771a", size = 438584 }, + { url = "https://files.pythonhosted.org/packages/28/d9/49f7b8f3b4147db13961e19d5e30077cd0854ccc08487026d2cb2142aa4a/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0f156e9509cee987283abd2296ec816225145a13ed0391df8f71bf1d789e2d", size = 391047 }, + { url = "https://files.pythonhosted.org/packages/49/b0/e66918d0972c33a259ba3cd7b7ff10ed8bd91dbcfcbec6367b21f026db75/rpds_py-0.24.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa6800adc8204ce898c8a424303969b7aa6a5e4ad2789c13f8648739830323b7", size = 418085 }, + { url = "https://files.pythonhosted.org/packages/e1/6b/99ed7ea0a94c7ae5520a21be77a82306aac9e4e715d4435076ead07d05c6/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a18fc371e900a21d7392517c6f60fe859e802547309e94313cd8181ad9db004d", size = 564498 }, + { url = "https://files.pythonhosted.org/packages/28/26/1cacfee6b800e6fb5f91acecc2e52f17dbf8b0796a7c984b4568b6d70e38/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9168764133fd919f8dcca2ead66de0105f4ef5659cbb4fa044f7014bed9a1797", size = 590202 }, + { url = "https://files.pythonhosted.org/packages/a9/9e/57bd2f9fba04a37cef673f9a66b11ca8c43ccdd50d386c455cd4380fe461/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c", size = 561771 }, + { url = "https://files.pythonhosted.org/packages/9f/cf/b719120f375ab970d1c297dbf8de1e3c9edd26fe92c0ed7178dd94b45992/rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba", size = 221195 }, + { url = "https://files.pythonhosted.org/packages/2d/e5/22865285789f3412ad0c3d7ec4dc0a3e86483b794be8a5d9ed5a19390900/rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350", size = 237354 }, + { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386 }, + { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440 }, + { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816 }, + { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058 }, + { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692 }, + { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462 }, + { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460 }, + { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609 }, + { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818 }, + { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627 }, + { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885 }, +] + +[[package]] +name = "ruff" +version = "0.11.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/89/6f9c9674818ac2e9cc2f2b35b704b7768656e6b7c139064fc7ba8fbc99f1/ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4", size = 4054861 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b4/ec/21927cb906c5614b786d1621dba405e3d44f6e473872e6df5d1a6bca0455/ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c", size = 10245403 }, + { url = "https://files.pythonhosted.org/packages/e2/af/fec85b6c2c725bcb062a354dd7cbc1eed53c33ff3aa665165871c9c16ddf/ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee", size = 11007166 }, + { url = "https://files.pythonhosted.org/packages/31/9a/2d0d260a58e81f388800343a45898fd8df73c608b8261c370058b675319a/ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada", size = 10378076 }, + { url = "https://files.pythonhosted.org/packages/c2/c4/9b09b45051404d2e7dd6d9dbcbabaa5ab0093f9febcae664876a77b9ad53/ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64", size = 10557138 }, + { url = "https://files.pythonhosted.org/packages/5e/5e/f62a1b6669870a591ed7db771c332fabb30f83c967f376b05e7c91bccd14/ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201", size = 10095726 }, + { url = "https://files.pythonhosted.org/packages/45/59/a7aa8e716f4cbe07c3500a391e58c52caf665bb242bf8be42c62adef649c/ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6", size = 11672265 }, + { url = "https://files.pythonhosted.org/packages/dd/e3/101a8b707481f37aca5f0fcc3e42932fa38b51add87bfbd8e41ab14adb24/ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4", size = 12331418 }, + { url = "https://files.pythonhosted.org/packages/dd/71/037f76cbe712f5cbc7b852e4916cd3cf32301a30351818d32ab71580d1c0/ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e", size = 11794506 }, + { url = "https://files.pythonhosted.org/packages/ca/de/e450b6bab1fc60ef263ef8fcda077fb4977601184877dce1c59109356084/ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63", size = 13939084 }, + { url = "https://files.pythonhosted.org/packages/0e/2c/1e364cc92970075d7d04c69c928430b23e43a433f044474f57e425cbed37/ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502", size = 11450441 }, + { url = "https://files.pythonhosted.org/packages/9d/7d/1b048eb460517ff9accd78bca0fa6ae61df2b276010538e586f834f5e402/ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92", size = 10441060 }, + { url = "https://files.pythonhosted.org/packages/3a/57/8dc6ccfd8380e5ca3d13ff7591e8ba46a3b330323515a4996b991b10bd5d/ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94", size = 10058689 }, + { url = "https://files.pythonhosted.org/packages/23/bf/20487561ed72654147817885559ba2aa705272d8b5dee7654d3ef2dbf912/ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6", size = 11073703 }, + { url = "https://files.pythonhosted.org/packages/9d/27/04f2db95f4ef73dccedd0c21daf9991cc3b7f29901a4362057b132075aa4/ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6", size = 11532822 }, + { url = "https://files.pythonhosted.org/packages/e1/72/43b123e4db52144c8add336581de52185097545981ff6e9e58a21861c250/ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26", size = 10362436 }, + { url = "https://files.pythonhosted.org/packages/c5/a0/3e58cd76fdee53d5c8ce7a56d84540833f924ccdf2c7d657cb009e604d82/ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a", size = 11566676 }, + { url = "https://files.pythonhosted.org/packages/68/ca/69d7c7752bce162d1516e5592b1cc6b6668e9328c0d270609ddbeeadd7cf/ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177", size = 10677936 }, +] + +[[package]] +name = "s3fs" +version = "2025.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "aiobotocore" }, + { name = "aiohttp" }, + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/72/df/559dc6d796c38f1b8a09a5f6dcf62a467a84f3c87a837ee07c59f60a26ad/s3fs-2025.3.2.tar.gz", hash = "sha256:6798f896ec76dd3bfd8beb89f0bb7c5263cb2760e038bae0978505cd172a307c", size = 77280 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/e1/4db0388df5655de92ce5f9b60d2bef220a58dde130e0453e5433c579986e/s3fs-2025.3.2-py3-none-any.whl", hash = "sha256:81eae3f37b4b04bcc08845d7bcc607c6ca45878813ef7e6a28d77b2688417130", size = 30485 }, +] + +[[package]] +name = "scikit-learn" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9e/a5/4ae3b3a0755f7b35a280ac90b28817d1f380318973cff14075ab41ef50d9/scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e", size = 7068312 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6c/2a/e291c29670795406a824567d1dfc91db7b699799a002fdaa452bceea8f6e/scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33", size = 12102620 }, + { url = "https://files.pythonhosted.org/packages/25/92/ee1d7a00bb6b8c55755d4984fd82608603a3cc59959245068ce32e7fb808/scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d", size = 11116234 }, + { url = "https://files.pythonhosted.org/packages/30/cd/ed4399485ef364bb25f388ab438e3724e60dc218c547a407b6e90ccccaef/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2", size = 12592155 }, + { url = "https://files.pythonhosted.org/packages/a8/f3/62fc9a5a659bb58a03cdd7e258956a5824bdc9b4bb3c5d932f55880be569/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8", size = 13497069 }, + { url = "https://files.pythonhosted.org/packages/a1/a6/c5b78606743a1f28eae8f11973de6613a5ee87366796583fb74c67d54939/scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415", size = 11139809 }, + { url = "https://files.pythonhosted.org/packages/0a/18/c797c9b8c10380d05616db3bfb48e2a3358c767affd0857d56c2eb501caa/scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b", size = 12104516 }, + { url = "https://files.pythonhosted.org/packages/c4/b7/2e35f8e289ab70108f8cbb2e7a2208f0575dc704749721286519dcf35f6f/scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2", size = 11167837 }, + { url = "https://files.pythonhosted.org/packages/a4/f6/ff7beaeb644bcad72bcfd5a03ff36d32ee4e53a8b29a639f11bcb65d06cd/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f", size = 12253728 }, + { url = "https://files.pythonhosted.org/packages/29/7a/8bce8968883e9465de20be15542f4c7e221952441727c4dad24d534c6d99/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86", size = 13147700 }, + { url = "https://files.pythonhosted.org/packages/62/27/585859e72e117fe861c2079bcba35591a84f801e21bc1ab85bce6ce60305/scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52", size = 11110613 }, + { url = "https://files.pythonhosted.org/packages/2e/59/8eb1872ca87009bdcdb7f3cdc679ad557b992c12f4b61f9250659e592c63/scikit_learn-1.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ffa1e9e25b3d93990e74a4be2c2fc61ee5af85811562f1288d5d055880c4322", size = 12010001 }, + { url = "https://files.pythonhosted.org/packages/9d/05/f2fc4effc5b32e525408524c982c468c29d22f828834f0625c5ef3d601be/scikit_learn-1.6.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dc5cf3d68c5a20ad6d571584c0750ec641cc46aeef1c1507be51300e6003a7e1", size = 11096360 }, + { url = "https://files.pythonhosted.org/packages/c8/e4/4195d52cf4f113573fb8ebc44ed5a81bd511a92c0228889125fac2f4c3d1/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c06beb2e839ecc641366000ca84f3cf6fa9faa1777e29cf0c04be6e4d096a348", size = 12209004 }, + { url = "https://files.pythonhosted.org/packages/94/be/47e16cdd1e7fcf97d95b3cb08bde1abb13e627861af427a3651fcb80b517/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8ca8cb270fee8f1f76fa9bfd5c3507d60c6438bbee5687f81042e2bb98e5a97", size = 13171776 }, + { url = "https://files.pythonhosted.org/packages/34/b0/ca92b90859070a1487827dbc672f998da95ce83edce1270fc23f96f1f61a/scikit_learn-1.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:7a1c43c8ec9fde528d664d947dc4c0789be4077a3647f232869f41d9bf50e0fb", size = 11071865 }, + { url = "https://files.pythonhosted.org/packages/12/ae/993b0fb24a356e71e9a894e42b8a9eec528d4c70217353a1cd7a48bc25d4/scikit_learn-1.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a17c1dea1d56dcda2fac315712f3651a1fea86565b64b48fa1bc090249cbf236", size = 11955804 }, + { url = "https://files.pythonhosted.org/packages/d6/54/32fa2ee591af44507eac86406fa6bba968d1eb22831494470d0a2e4a1eb1/scikit_learn-1.6.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a7aa5f9908f0f28f4edaa6963c0a6183f1911e63a69aa03782f0d924c830a35", size = 11100530 }, + { url = "https://files.pythonhosted.org/packages/3f/58/55856da1adec655bdce77b502e94a267bf40a8c0b89f8622837f89503b5a/scikit_learn-1.6.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0650e730afb87402baa88afbf31c07b84c98272622aaba002559b614600ca691", size = 12433852 }, + { url = "https://files.pythonhosted.org/packages/ff/4f/c83853af13901a574f8f13b645467285a48940f185b690936bb700a50863/scikit_learn-1.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:3f59fe08dc03ea158605170eb52b22a105f238a5d512c4470ddeca71feae8e5f", size = 11337256 }, +] + +[[package]] +name = "scipy" +version = "1.15.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/c6/8eb0654ba0c7d0bb1bf67bf8fbace101a8e4f250f7722371105e8b6f68fc/scipy-1.15.1.tar.gz", hash = "sha256:033a75ddad1463970c96a88063a1df87ccfddd526437136b6ee81ff0312ebdf6", size = 59407493 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8e/2e/7b71312da9c2dabff53e7c9a9d08231bc34d9d8fdabe88a6f1155b44591c/scipy-1.15.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5bd8d27d44e2c13d0c1124e6a556454f52cd3f704742985f6b09e75e163d20d2", size = 41424362 }, + { url = "https://files.pythonhosted.org/packages/81/8c/ab85f1aa1cc200c796532a385b6ebf6a81089747adc1da7482a062acc46c/scipy-1.15.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:be3deeb32844c27599347faa077b359584ba96664c5c79d71a354b80a0ad0ce0", size = 32535910 }, + { url = "https://files.pythonhosted.org/packages/3b/9c/6f4b787058daa8d8da21ddff881b4320e28de4704a65ec147adb50cb2230/scipy-1.15.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:5eb0ca35d4b08e95da99a9f9c400dc9f6c21c424298a0ba876fdc69c7afacedf", size = 24809398 }, + { url = "https://files.pythonhosted.org/packages/16/2b/949460a796df75fc7a1ee1becea202cf072edbe325ebe29f6d2029947aa7/scipy-1.15.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:74bb864ff7640dea310a1377d8567dc2cb7599c26a79ca852fc184cc851954ac", size = 27918045 }, + { url = "https://files.pythonhosted.org/packages/5f/36/67fe249dd7ccfcd2a38b25a640e3af7e59d9169c802478b6035ba91dfd6d/scipy-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:667f950bf8b7c3a23b4199db24cb9bf7512e27e86d0e3813f015b74ec2c6e3df", size = 38332074 }, + { url = "https://files.pythonhosted.org/packages/fc/da/452e1119e6f720df3feb588cce3c42c5e3d628d4bfd4aec097bd30b7de0c/scipy-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395be70220d1189756068b3173853029a013d8c8dd5fd3d1361d505b2aa58fa7", size = 40588469 }, + { url = "https://files.pythonhosted.org/packages/7f/71/5f94aceeac99a4941478af94fe9f459c6752d497035b6b0761a700f5f9ff/scipy-1.15.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ce3a000cd28b4430426db2ca44d96636f701ed12e2b3ca1f2b1dd7abdd84b39a", size = 42965214 }, + { url = "https://files.pythonhosted.org/packages/af/25/caa430865749d504271757cafd24066d596217e83326155993980bc22f97/scipy-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:3fe1d95944f9cf6ba77aa28b82dd6bb2a5b52f2026beb39ecf05304b8392864b", size = 43896034 }, + { url = "https://files.pythonhosted.org/packages/d8/6e/a9c42d0d39e09ed7fd203d0ac17adfea759cba61ab457671fe66e523dbec/scipy-1.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c09aa9d90f3500ea4c9b393ee96f96b0ccb27f2f350d09a47f533293c78ea776", size = 41478318 }, + { url = "https://files.pythonhosted.org/packages/04/ee/e3e535c81828618878a7433992fecc92fa4df79393f31a8fea1d05615091/scipy-1.15.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0ac102ce99934b162914b1e4a6b94ca7da0f4058b6d6fd65b0cef330c0f3346f", size = 32596696 }, + { url = "https://files.pythonhosted.org/packages/c4/5e/b1b0124be8e76f87115f16b8915003eec4b7060298117715baf13f51942c/scipy-1.15.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:09c52320c42d7f5c7748b69e9f0389266fd4f82cf34c38485c14ee976cb8cb04", size = 24870366 }, + { url = "https://files.pythonhosted.org/packages/14/36/c00cb73eefda85946172c27913ab995c6ad4eee00fa4f007572e8c50cd51/scipy-1.15.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:cdde8414154054763b42b74fe8ce89d7f3d17a7ac5dd77204f0e142cdc9239e9", size = 28007461 }, + { url = "https://files.pythonhosted.org/packages/68/94/aff5c51b3799349a9d1e67a056772a0f8a47db371e83b498d43467806557/scipy-1.15.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c9d8fc81d6a3b6844235e6fd175ee1d4c060163905a2becce8e74cb0d7554ce", size = 38068174 }, + { url = "https://files.pythonhosted.org/packages/b0/3c/0de11ca154e24a57b579fb648151d901326d3102115bc4f9a7a86526ce54/scipy-1.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb57b30f0017d4afa5fe5f5b150b8f807618819287c21cbe51130de7ccdaed2", size = 40249869 }, + { url = "https://files.pythonhosted.org/packages/15/09/472e8d0a6b33199d1bb95e49bedcabc0976c3724edd9b0ef7602ccacf41e/scipy-1.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491d57fe89927fa1aafbe260f4cfa5ffa20ab9f1435025045a5315006a91b8f5", size = 42629068 }, + { url = "https://files.pythonhosted.org/packages/ff/ba/31c7a8131152822b3a2cdeba76398ffb404d81d640de98287d236da90c49/scipy-1.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:900f3fa3db87257510f011c292a5779eb627043dd89731b9c461cd16ef76ab3d", size = 43621992 }, + { url = "https://files.pythonhosted.org/packages/2b/bf/dd68965a4c5138a630eeed0baec9ae96e5d598887835bdde96cdd2fe4780/scipy-1.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:100193bb72fbff37dbd0bf14322314fc7cbe08b7ff3137f11a34d06dc0ee6b85", size = 41441136 }, + { url = "https://files.pythonhosted.org/packages/ef/5e/4928581312922d7e4d416d74c416a660addec4dd5ea185401df2269ba5a0/scipy-1.15.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:2114a08daec64980e4b4cbdf5bee90935af66d750146b1d2feb0d3ac30613692", size = 32533699 }, + { url = "https://files.pythonhosted.org/packages/32/90/03f99c43041852837686898c66767787cd41c5843d7a1509c39ffef683e9/scipy-1.15.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:6b3e71893c6687fc5e29208d518900c24ea372a862854c9888368c0b267387ab", size = 24807289 }, + { url = "https://files.pythonhosted.org/packages/9d/52/bfe82b42ae112eaba1af2f3e556275b8727d55ac6e4932e7aef337a9d9d4/scipy-1.15.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:837299eec3d19b7e042923448d17d95a86e43941104d33f00da7e31a0f715d3c", size = 27929844 }, + { url = "https://files.pythonhosted.org/packages/f6/77/54ff610bad600462c313326acdb035783accc6a3d5f566d22757ad297564/scipy-1.15.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82add84e8a9fb12af5c2c1a3a3f1cb51849d27a580cb9e6bd66226195142be6e", size = 38031272 }, + { url = "https://files.pythonhosted.org/packages/f1/26/98585cbf04c7cf503d7eb0a1966df8a268154b5d923c5fe0c1ed13154c49/scipy-1.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070d10654f0cb6abd295bc96c12656f948e623ec5f9a4eab0ddb1466c000716e", size = 40210217 }, + { url = "https://files.pythonhosted.org/packages/fd/3f/3d2285eb6fece8bc5dbb2f9f94d61157d61d155e854fd5fea825b8218f12/scipy-1.15.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55cc79ce4085c702ac31e49b1e69b27ef41111f22beafb9b49fea67142b696c4", size = 42587785 }, + { url = "https://files.pythonhosted.org/packages/48/7d/5b5251984bf0160d6533695a74a5fddb1fa36edd6f26ffa8c871fbd4782a/scipy-1.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:c352c1b6d7cac452534517e022f8f7b8d139cd9f27e6fbd9f3cbd0bfd39f5bef", size = 43640439 }, + { url = "https://files.pythonhosted.org/packages/e7/b8/0e092f592d280496de52e152582030f8a270b194f87f890e1a97c5599b81/scipy-1.15.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0458839c9f873062db69a03de9a9765ae2e694352c76a16be44f93ea45c28d2b", size = 41619862 }, + { url = "https://files.pythonhosted.org/packages/f6/19/0b6e1173aba4db9e0b7aa27fe45019857fb90d6904038b83927cbe0a6c1d/scipy-1.15.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:af0b61c1de46d0565b4b39c6417373304c1d4f5220004058bdad3061c9fa8a95", size = 32610387 }, + { url = "https://files.pythonhosted.org/packages/e7/02/754aae3bd1fa0f2479ade3cfdf1732ecd6b05853f63eee6066a32684563a/scipy-1.15.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:71ba9a76c2390eca6e359be81a3e879614af3a71dfdabb96d1d7ab33da6f2364", size = 24883814 }, + { url = "https://files.pythonhosted.org/packages/1f/ac/d7906201604a2ea3b143bb0de51b3966f66441ba50b7dc182c4505b3edf9/scipy-1.15.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14eaa373c89eaf553be73c3affb11ec6c37493b7eaaf31cf9ac5dffae700c2e0", size = 27944865 }, + { url = "https://files.pythonhosted.org/packages/84/9d/8f539002b5e203723af6a6f513a45e0a7671e9dabeedb08f417ac17e4edc/scipy-1.15.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f735bc41bd1c792c96bc426dece66c8723283695f02df61dcc4d0a707a42fc54", size = 39883261 }, + { url = "https://files.pythonhosted.org/packages/97/c0/62fd3bab828bcccc9b864c5997645a3b86372a35941cdaf677565c25c98d/scipy-1.15.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2722a021a7929d21168830790202a75dbb20b468a8133c74a2c0230c72626b6c", size = 42093299 }, + { url = "https://files.pythonhosted.org/packages/e4/1f/5d46a8d94e9f6d2c913cbb109e57e7eed914de38ea99e2c4d69a9fc93140/scipy-1.15.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc7136626261ac1ed988dca56cfc4ab5180f75e0ee52e58f1e6aa74b5f3eacd5", size = 43181730 }, +] + +[[package]] +name = "send2trash" +version = "1.8.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, +] + +[[package]] +name = "setuptools" +version = "80.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907 }, +] + +[[package]] +name = "shapely" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974 }, + { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137 }, + { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161 }, + { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530 }, + { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208 }, + { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863 }, + { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488 }, + { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311 }, + { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732 }, + { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404 }, + { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316 }, + { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099 }, + { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873 }, + { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, + { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, + { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, + { url = "https://files.pythonhosted.org/packages/8d/77/4e368704b2193e74498473db4461d697cc6083c96f8039367e59009d78bd/shapely-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b64423295b563f43a043eb786e7a03200ebe68698e36d2b4b1c39f31dfb50dfb", size = 1830029 }, + { url = "https://files.pythonhosted.org/packages/71/3c/d888597bda680e4de987316b05ca9db07416fa29523beff64f846503302f/shapely-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1b5578f45adc25b235b22d1ccb9a0348c8dc36f31983e57ea129a88f96f7b870", size = 1637999 }, + { url = "https://files.pythonhosted.org/packages/03/8d/ee0e23b7ef88fba353c63a81f1f329c77f5703835db7b165e7c0b8b7f839/shapely-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a7e83d383b27f02b684e50ab7f34e511c92e33b6ca164a6a9065705dd64bcb", size = 2929348 }, + { url = "https://files.pythonhosted.org/packages/d1/a7/5c9cb413e4e2ce52c16be717e94abd40ce91b1f8974624d5d56154c5d40b/shapely-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:942031eb4d8f7b3b22f43ba42c09c7aa3d843aa10d5cc1619fe816e923b66e55", size = 3048973 }, + { url = "https://files.pythonhosted.org/packages/84/23/45b90c0bd2157b238490ca56ef2eedf959d3514c7d05475f497a2c88b6d9/shapely-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2843c456a2e5627ee6271800f07277c0d2652fb287bf66464571a057dbc00b3", size = 3873148 }, + { url = "https://files.pythonhosted.org/packages/c0/bc/ed7d5d37f5395166042576f0c55a12d7e56102799464ba7ea3a72a38c769/shapely-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8c4b17469b7f39a5e6a7cfea79f38ae08a275427f41fe8b48c372e1449147908", size = 4052655 }, + { url = "https://files.pythonhosted.org/packages/c0/8f/a1dafbb10d20d1c569f2db3fb1235488f624dafe8469e8ce65356800ba31/shapely-2.1.0-cp313-cp313-win32.whl", hash = "sha256:30e967abd08fce49513d4187c01b19f139084019f33bec0673e8dbeb557c45e4", size = 1526600 }, + { url = "https://files.pythonhosted.org/packages/e3/f0/9f8cdf2258d7aed742459cea51c70d184de92f5d2d6f5f7f1ded90a18c31/shapely-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:1dc8d4364483a14aba4c844b7bd16a6fa3728887e2c33dfa1afa34a3cf4d08a5", size = 1707115 }, + { url = "https://files.pythonhosted.org/packages/75/ed/32952df461753a65b3e5d24c8efb361d3a80aafaef0b70d419063f6f2c11/shapely-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:673e073fea099d1c82f666fb7ab0a00a77eff2999130a69357ce11941260d855", size = 1824847 }, + { url = "https://files.pythonhosted.org/packages/ff/b9/2284de512af30b02f93ddcdd2e5c79834a3cf47fa3ca11b0f74396feb046/shapely-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6d1513f915a56de67659fe2047c1ad5ff0f8cbff3519d1e74fced69c9cb0e7da", size = 1631035 }, + { url = "https://files.pythonhosted.org/packages/35/16/a59f252a7e736b73008f10d0950ffeeb0d5953be7c0bdffd39a02a6ba310/shapely-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d6a7043178890b9e028d80496ff4c79dc7629bff4d78a2f25323b661756bab8", size = 2968639 }, + { url = "https://files.pythonhosted.org/packages/a5/0a/6a20eca7b0092cfa243117e8e145a58631a4833a0a519ec9b445172e83a0/shapely-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb638378dc3d76f7e85b67d7e2bb1366811912430ac9247ac00c127c2b444cdc", size = 3055713 }, + { url = "https://files.pythonhosted.org/packages/fb/44/eeb0c7583b1453d1cf7a319a1d738e08f98a5dc993fa1ef3c372983e4cb5/shapely-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:737124e87d91d616acf9a911f74ac55e05db02a43a6a7245b3d663817b876055", size = 3890478 }, + { url = "https://files.pythonhosted.org/packages/5d/6e/37ff3c6af1d408cacb0a7d7bfea7b8ab163a5486e35acb08997eae9d8756/shapely-2.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e6c229e7bb87aae5df82fa00b6718987a43ec168cc5affe095cca59d233f314", size = 4036148 }, + { url = "https://files.pythonhosted.org/packages/c8/6a/8c0b7de3aeb5014a23f06c5e9d3c7852ebcf0d6b00fe660b93261e310e24/shapely-2.1.0-cp313-cp313t-win32.whl", hash = "sha256:a9580bda119b1f42f955aa8e52382d5c73f7957e0203bc0c0c60084846f3db94", size = 1535993 }, + { url = "https://files.pythonhosted.org/packages/a8/91/ae80359a58409d52e4d62c7eacc7eb3ddee4b9135f1db884b6a43cf2e174/shapely-2.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e8ff4e5cfd799ba5b6f37b5d5527dbd85b4a47c65b6d459a03d0962d2a9d4d10", size = 1717777 }, +] + +[[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 = "smmap" +version = "5.0.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, +] + +[[package]] +name = "sniffio" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, +] + +[[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 = "soupsieve" +version = "2.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.40" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025 }, + { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419 }, + { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720 }, + { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682 }, + { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542 }, + { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864 }, + { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675 }, + { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099 }, + { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620 }, + { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004 }, + { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440 }, + { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277 }, + { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591 }, + { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199 }, + { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526 }, + { url = "https://files.pythonhosted.org/packages/8c/18/4e3a86cc0232377bc48c373a9ba6a1b3fb79ba32dbb4eda0b357f5a2c59d/sqlalchemy-2.0.40-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:915866fd50dd868fdcc18d61d8258db1bf9ed7fbd6dfec960ba43365952f3b01", size = 2107887 }, + { url = "https://files.pythonhosted.org/packages/cb/60/9fa692b1d2ffc4cbd5f47753731fd332afed30137115d862d6e9a1e962c7/sqlalchemy-2.0.40-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a4c5a2905a9ccdc67a8963e24abd2f7afcd4348829412483695c59e0af9a705", size = 2098367 }, + { url = "https://files.pythonhosted.org/packages/4c/9f/84b78357ca641714a439eb3fbbddb17297dacfa05d951dbf24f28d7b5c08/sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55028d7a3ebdf7ace492fab9895cbc5270153f75442a0472d8516e03159ab364", size = 3184806 }, + { url = "https://files.pythonhosted.org/packages/4b/7d/e06164161b6bfce04c01bfa01518a20cccbd4100d5c951e5a7422189191a/sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cfedff6878b0e0d1d0a50666a817ecd85051d12d56b43d9d425455e608b5ba0", size = 3198131 }, + { url = "https://files.pythonhosted.org/packages/6d/51/354af20da42d7ec7b5c9de99edafbb7663a1d75686d1999ceb2c15811302/sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bb19e30fdae77d357ce92192a3504579abe48a66877f476880238a962e5b96db", size = 3131364 }, + { url = "https://files.pythonhosted.org/packages/7a/2f/48a41ff4e6e10549d83fcc551ab85c268bde7c03cf77afb36303c6594d11/sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:16d325ea898f74b26ffcd1cf8c593b0beed8714f0317df2bed0d8d1de05a8f26", size = 3159482 }, + { url = "https://files.pythonhosted.org/packages/33/ac/e5e0a807163652a35be878c0ad5cfd8b1d29605edcadfb5df3c512cdf9f3/sqlalchemy-2.0.40-cp313-cp313-win32.whl", hash = "sha256:a669cbe5be3c63f75bcbee0b266779706f1a54bcb1000f302685b87d1b8c1500", size = 2080704 }, + { url = "https://files.pythonhosted.org/packages/1c/cb/f38c61f7f2fd4d10494c1c135ff6a6ddb63508d0b47bccccd93670637309/sqlalchemy-2.0.40-cp313-cp313-win_amd64.whl", hash = "sha256:641ee2e0834812d657862f3a7de95e0048bdcb6c55496f39c6fa3d435f6ac6ad", size = 2104564 }, + { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894 }, +] + +[[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 = "strictyaml" +version = "1.7.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "python-dateutil" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, +] + +[[package]] +name = "sympy" +version = "1.13.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mpmath" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ca/99/5a5b6f19ff9f083671ddf7b9632028436167cd3d33e11015754e41b249a4/sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f", size = 7533040 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 }, +] + +[[package]] +name = "tenacity" +version = "9.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, +] + +[[package]] +name = "terminado" +version = "0.18.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ptyprocess", marker = "os_name != 'nt'" }, + { name = "pywinpty", marker = "os_name == 'nt'" }, + { name = "tornado" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, +] + +[[package]] +name = "tinycss2" +version = "1.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "webencodings" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, +] + +[[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 = "types-python-dateutil" +version = "2.9.0.20241206" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, +] + +[[package]] +name = "tzdata" +version = "2025.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, +] + +[[package]] +name = "uri-template" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, +] + +[[package]] +name = "urllib3" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, +] + +[[package]] +name = "virtualenv" +version = "20.30.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "distlib" }, + { name = "filelock" }, + { name = "platformdirs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461 }, +] + +[[package]] +name = "watchdog" +version = "6.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, + { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, + { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +] + +[[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 = "webcolors" +version = "24.11.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, +] + +[[package]] +name = "webencodings" +version = "0.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, +] + +[[package]] +name = "websocket-client" +version = "1.8.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, +] + +[[package]] +name = "wrapt" +version = "1.17.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, + { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, + { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, + { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, + { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, + { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, + { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, + { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, + { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, + { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, + { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, + { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, + { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, + { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, + { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, + { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, + { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, + { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, + { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, + { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, + { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, + { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +] + +[[package]] +name = "xarray" +version = "2025.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/7c/c4/6931c37cd418658d596e78794bdd1bcb67efec0aac3cdb720e37e03c1ea1/xarray-2025.3.1.tar.gz", hash = "sha256:0252c96a73528b29d1ed7f0ab28d928d2ec00ad809e47369803b184dece1e447", size = 3300778 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/fd/973deafd9f87085136a58573600646b408ae7af47859f35151f0d83d5090/xarray-2025.3.1-py3-none-any.whl", hash = "sha256:3404e313930c226db70a945377441ea3c957225d8ba2d429e764c099bb91a546", size = 1279327 }, +] + +[[package]] +name = "yarl" +version = "1.20.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "idna" }, + { name = "multidict" }, + { name = "propcache" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, + { url = "https://files.pythonhosted.org/packages/0f/6f/514c9bff2900c22a4f10e06297714dbaf98707143b37ff0bcba65a956221/yarl-1.20.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2137810a20b933b1b1b7e5cf06a64c3ed3b4747b0e5d79c9447c00db0e2f752f", size = 145030 }, + { url = "https://files.pythonhosted.org/packages/4e/9d/f88da3fa319b8c9c813389bfb3463e8d777c62654c7168e580a13fadff05/yarl-1.20.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:447c5eadd750db8389804030d15f43d30435ed47af1313303ed82a62388176d3", size = 96894 }, + { url = "https://files.pythonhosted.org/packages/cd/57/92e83538580a6968b2451d6c89c5579938a7309d4785748e8ad42ddafdce/yarl-1.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42fbe577272c203528d402eec8bf4b2d14fd49ecfec92272334270b850e9cd7d", size = 94457 }, + { url = "https://files.pythonhosted.org/packages/e9/ee/7ee43bd4cf82dddd5da97fcaddb6fa541ab81f3ed564c42f146c83ae17ce/yarl-1.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18e321617de4ab170226cd15006a565d0fa0d908f11f724a2c9142d6b2812ab0", size = 343070 }, + { url = "https://files.pythonhosted.org/packages/4a/12/b5eccd1109e2097bcc494ba7dc5de156e41cf8309fab437ebb7c2b296ce3/yarl-1.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4345f58719825bba29895011e8e3b545e6e00257abb984f9f27fe923afca2501", size = 337739 }, + { url = "https://files.pythonhosted.org/packages/7d/6b/0eade8e49af9fc2585552f63c76fa59ef469c724cc05b29519b19aa3a6d5/yarl-1.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d9b980d7234614bc4674468ab173ed77d678349c860c3af83b1fffb6a837ddc", size = 351338 }, + { url = "https://files.pythonhosted.org/packages/45/cb/aaaa75d30087b5183c7b8a07b4fb16ae0682dd149a1719b3a28f54061754/yarl-1.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af4baa8a445977831cbaa91a9a84cc09debb10bc8391f128da2f7bd070fc351d", size = 353636 }, + { url = "https://files.pythonhosted.org/packages/98/9d/d9cb39ec68a91ba6e66fa86d97003f58570327d6713833edf7ad6ce9dde5/yarl-1.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:123393db7420e71d6ce40d24885a9e65eb1edefc7a5228db2d62bcab3386a5c0", size = 348061 }, + { url = "https://files.pythonhosted.org/packages/72/6b/103940aae893d0cc770b4c36ce80e2ed86fcb863d48ea80a752b8bda9303/yarl-1.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab47acc9332f3de1b39e9b702d9c916af7f02656b2a86a474d9db4e53ef8fd7a", size = 334150 }, + { url = "https://files.pythonhosted.org/packages/ef/b2/986bd82aa222c3e6b211a69c9081ba46484cffa9fab2a5235e8d18ca7a27/yarl-1.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4a34c52ed158f89876cba9c600b2c964dfc1ca52ba7b3ab6deb722d1d8be6df2", size = 362207 }, + { url = "https://files.pythonhosted.org/packages/14/7c/63f5922437b873795d9422cbe7eb2509d4b540c37ae5548a4bb68fd2c546/yarl-1.20.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:04d8cfb12714158abf2618f792c77bc5c3d8c5f37353e79509608be4f18705c9", size = 361277 }, + { url = "https://files.pythonhosted.org/packages/81/83/450938cccf732466953406570bdb42c62b5ffb0ac7ac75a1f267773ab5c8/yarl-1.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7dc63ad0d541c38b6ae2255aaa794434293964677d5c1ec5d0116b0e308031f5", size = 364990 }, + { url = "https://files.pythonhosted.org/packages/b4/de/af47d3a47e4a833693b9ec8e87debb20f09d9fdc9139b207b09a3e6cbd5a/yarl-1.20.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d02b591a64e4e6ca18c5e3d925f11b559c763b950184a64cf47d74d7e41877", size = 374684 }, + { url = "https://files.pythonhosted.org/packages/62/0b/078bcc2d539f1faffdc7d32cb29a2d7caa65f1a6f7e40795d8485db21851/yarl-1.20.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:95fc9876f917cac7f757df80a5dda9de59d423568460fe75d128c813b9af558e", size = 382599 }, + { url = "https://files.pythonhosted.org/packages/74/a9/4fdb1a7899f1fb47fd1371e7ba9e94bff73439ce87099d5dd26d285fffe0/yarl-1.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bb769ae5760cd1c6a712135ee7915f9d43f11d9ef769cb3f75a23e398a92d384", size = 378573 }, + { url = "https://files.pythonhosted.org/packages/fd/be/29f5156b7a319e4d2e5b51ce622b4dfb3aa8d8204cd2a8a339340fbfad40/yarl-1.20.0-cp313-cp313-win32.whl", hash = "sha256:70e0c580a0292c7414a1cead1e076c9786f685c1fc4757573d2967689b370e62", size = 86051 }, + { url = "https://files.pythonhosted.org/packages/52/56/05fa52c32c301da77ec0b5f63d2d9605946fe29defacb2a7ebd473c23b81/yarl-1.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:4c43030e4b0af775a85be1fa0433119b1565673266a70bf87ef68a9d5ba3174c", size = 92742 }, + { url = "https://files.pythonhosted.org/packages/d4/2f/422546794196519152fc2e2f475f0e1d4d094a11995c81a465faf5673ffd/yarl-1.20.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b6c4c3d0d6a0ae9b281e492b1465c72de433b782e6b5001c8e7249e085b69051", size = 163575 }, + { url = "https://files.pythonhosted.org/packages/90/fc/67c64ddab6c0b4a169d03c637fb2d2a212b536e1989dec8e7e2c92211b7f/yarl-1.20.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8681700f4e4df891eafa4f69a439a6e7d480d64e52bf460918f58e443bd3da7d", size = 106121 }, + { url = "https://files.pythonhosted.org/packages/6d/00/29366b9eba7b6f6baed7d749f12add209b987c4cfbfa418404dbadc0f97c/yarl-1.20.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:84aeb556cb06c00652dbf87c17838eb6d92cfd317799a8092cee0e570ee11229", size = 103815 }, + { url = "https://files.pythonhosted.org/packages/28/f4/a2a4c967c8323c03689383dff73396281ced3b35d0ed140580825c826af7/yarl-1.20.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f166eafa78810ddb383e930d62e623d288fb04ec566d1b4790099ae0f31485f1", size = 408231 }, + { url = "https://files.pythonhosted.org/packages/0f/a1/66f7ffc0915877d726b70cc7a896ac30b6ac5d1d2760613603b022173635/yarl-1.20.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5d3d6d14754aefc7a458261027a562f024d4f6b8a798adb472277f675857b1eb", size = 390221 }, + { url = "https://files.pythonhosted.org/packages/41/15/cc248f0504610283271615e85bf38bc014224122498c2016d13a3a1b8426/yarl-1.20.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a8f64df8ed5d04c51260dbae3cc82e5649834eebea9eadfd829837b8093eb00", size = 411400 }, + { url = "https://files.pythonhosted.org/packages/5c/af/f0823d7e092bfb97d24fce6c7269d67fcd1aefade97d0a8189c4452e4d5e/yarl-1.20.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d9949eaf05b4d30e93e4034a7790634bbb41b8be2d07edd26754f2e38e491de", size = 411714 }, + { url = "https://files.pythonhosted.org/packages/83/70/be418329eae64b9f1b20ecdaac75d53aef098797d4c2299d82ae6f8e4663/yarl-1.20.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c366b254082d21cc4f08f522ac201d0d83a8b8447ab562732931d31d80eb2a5", size = 404279 }, + { url = "https://files.pythonhosted.org/packages/19/f5/52e02f0075f65b4914eb890eea1ba97e6fd91dd821cc33a623aa707b2f67/yarl-1.20.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91bc450c80a2e9685b10e34e41aef3d44ddf99b3a498717938926d05ca493f6a", size = 384044 }, + { url = "https://files.pythonhosted.org/packages/6a/36/b0fa25226b03d3f769c68d46170b3e92b00ab3853d73127273ba22474697/yarl-1.20.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c2aa4387de4bc3a5fe158080757748d16567119bef215bec643716b4fbf53f9", size = 416236 }, + { url = "https://files.pythonhosted.org/packages/cb/3a/54c828dd35f6831dfdd5a79e6c6b4302ae2c5feca24232a83cb75132b205/yarl-1.20.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d2cbca6760a541189cf87ee54ff891e1d9ea6406079c66341008f7ef6ab61145", size = 402034 }, + { url = "https://files.pythonhosted.org/packages/10/97/c7bf5fba488f7e049f9ad69c1b8fdfe3daa2e8916b3d321aa049e361a55a/yarl-1.20.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:798a5074e656f06b9fad1a162be5a32da45237ce19d07884d0b67a0aa9d5fdda", size = 407943 }, + { url = "https://files.pythonhosted.org/packages/fd/a4/022d2555c1e8fcff08ad7f0f43e4df3aba34f135bff04dd35d5526ce54ab/yarl-1.20.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f106e75c454288472dbe615accef8248c686958c2e7dd3b8d8ee2669770d020f", size = 423058 }, + { url = "https://files.pythonhosted.org/packages/4c/f6/0873a05563e5df29ccf35345a6ae0ac9e66588b41fdb7043a65848f03139/yarl-1.20.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:3b60a86551669c23dc5445010534d2c5d8a4e012163218fc9114e857c0586fdd", size = 423792 }, + { url = "https://files.pythonhosted.org/packages/9e/35/43fbbd082708fa42e923f314c24f8277a28483d219e049552e5007a9aaca/yarl-1.20.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3e429857e341d5e8e15806118e0294f8073ba9c4580637e59ab7b238afca836f", size = 422242 }, + { url = "https://files.pythonhosted.org/packages/ed/f7/f0f2500cf0c469beb2050b522c7815c575811627e6d3eb9ec7550ddd0bfe/yarl-1.20.0-cp313-cp313t-win32.whl", hash = "sha256:65a4053580fe88a63e8e4056b427224cd01edfb5f951498bfefca4052f0ce0ac", size = 93816 }, + { url = "https://files.pythonhosted.org/packages/3f/93/f73b61353b2a699d489e782c3f5998b59f974ec3156a2050a52dfd7e8946/yarl-1.20.0-cp313-cp313t-win_amd64.whl", hash = "sha256:53b2da3a6ca0a541c1ae799c349788d480e5144cac47dba0266c7cb6c76151fe", size = 101093 }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, +] + +[[package]] +name = "zarr" +version = "3.0.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "donfig" }, + { name = "numcodecs", extra = ["crc32c"] }, + { name = "numpy" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e3/83/ab85d1517a5a08693751fb04919f270757219c6071ae12a8c4588c7e815e/zarr-3.0.7.tar.gz", hash = "sha256:c06da406e08da9565ba368ac0337a4466d7743f643acac2873beee4458b6e5e1", size = 253194 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/67/971d9a661b66cc1c2fe2472e38085f5025a393ee1c1822b0155cc3f357b7/zarr-3.0.7-py3-none-any.whl", hash = "sha256:db0ca28f12a59be681813ac719e4d5436591e2b315e89c5ae6e2d255715be960", size = 203937 }, +] From 0d0db9c675e15ba8cf590c31e607ccd5e6a041b0 Mon Sep 17 00:00:00 2001 From: taddyb Date: Mon, 28 Apr 2025 14:09:39 -0400 Subject: [PATCH 10/97] updating the example notebook and internal workspace repos so we can properly query the HF --- examples/__build.ipynb | 730 ------------------ examples/build.ipynb | 99 --- examples/build_hf_catalog.ipynb | 366 +++++++++ src/icefabric_manage/README.md | 3 + src/icefabric_manage/pyproject.toml | 5 +- .../src/icefabric_manage/__init__.py | 4 +- .../src/icefabric_manage/_api.py | 37 +- src/icefabric_tools/README.md | 3 + src/icefabric_tools/pyproject.toml | 5 +- .../src/icefabric_tools/__init__.py | 4 +- .../src/icefabric_tools/_api.py | 72 +- uv.lock | 6 +- 12 files changed, 456 insertions(+), 878 deletions(-) delete mode 100644 examples/__build.ipynb delete mode 100644 examples/build.ipynb create mode 100644 examples/build_hf_catalog.ipynb diff --git a/examples/__build.ipynb b/examples/__build.ipynb deleted file mode 100644 index 30d6379..0000000 --- a/examples/__build.ipynb +++ /dev/null @@ -1,730 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from pyiceberg.catalog import load_catalog\n", - "import pyarrow.parquet as pq\n", - "import os\n", - "from pathlib import Path\n", - "import geopandas as gpd\n", - "from shapely import wkb\n", - "import numpy as np\n", - "import networkx as nx\n", - "from tqdm import tqdm" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "from pyiceberg.catalog import load_catalog\n", - "\n", - "warehouse_path = \"../data/warehouse\"\n", - "catalog = load_catalog(\n", - " \"default\",\n", - " **{\n", - " \"type\": \"sql\",\n", - " \"uri\": f\"sqlite:///{warehouse_path}/icefabric_catalog.db\",\n", - " \"warehouse\": f\"file://{warehouse_path}\",\n", - " },\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "def add_parquet_to_catalog(file_path, table_name):\n", - " # Check if table already exists\n", - " if catalog.table_exists(f\"hydrofabric.{table_name}\"):\n", - " print(f\"Table {table_name} already exists, loading it\")\n", - " return catalog.load_table(f\"hydrofabric.{table_name}\")\n", - "\n", - " # Read the parquet file\n", - " arrow_table = pq.read_table(file_path)\n", - "\n", - " # Create the table in the catalog\n", - " iceberg_table = catalog.create_table(\n", - " f\"hydrofabric.{table_name}\",\n", - " schema=arrow_table.schema,\n", - " )\n", - "\n", - " # Append the data to the table\n", - " iceberg_table.append(arrow_table)\n", - "\n", - " print(f\"Added {file_path} as table {table_name}\")\n", - " return iceberg_table" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Table network already exists, loading it\n", - "Table nexus already exists, loading it\n", - "Table flowpath-attributes already exists, loading it\n", - "Table divides already exists, loading it\n", - "Table pois already exists, loading it\n", - "Table flowpath-attributes-ml already exists, loading it\n", - "Table divide-attributes already exists, loading it\n", - "Table flowpaths already exists, loading it\n", - "Table hydrolocations already exists, loading it\n", - "Table lakes already exists, loading it\n" - ] - } - ], - "source": [ - "# Get all parquet files from the directory\n", - "parquet_dir = \"../data/parquet\"\n", - "parquet_files = list(Path(parquet_dir).glob(\"*.parquet\"))\n", - "\n", - "# Dictionary to store all tables\n", - "tables = {}\n", - "\n", - "# Add each parquet file to the catalog\n", - "for parquet_file in parquet_files:\n", - " table_name = parquet_file.stem # Get filename without extension\n", - " tables[table_name] = add_parquet_to_catalog(str(parquet_file), table_name)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "ename": "NoSuchTableError", - "evalue": "Table does not exist: hydrofabric.d", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mNoSuchTableError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mcatalog\u001b[49m\u001b[43m.\u001b[49m\u001b[43mload_table\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mhydrofabric.d\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.13/site-packages/pyiceberg/catalog/sql.py:300\u001b[39m, in \u001b[36mSqlCatalog.load_table\u001b[39m\u001b[34m(self, identifier)\u001b[39m\n\u001b[32m 298\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m result:\n\u001b[32m 299\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._convert_orm_to_iceberg(result)\n\u001b[32m--> \u001b[39m\u001b[32m300\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NoSuchTableError(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mTable does not exist: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mnamespace\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m.\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mtable_name\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", - "\u001b[31mNoSuchTableError\u001b[39m: Table does not exist: hydrofabric.d" - ] - } - ], - "source": [ - "catalog.load_table(\"hydrofabric.d\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "network(\n", - " 1: id: optional string,\n", - " 2: toid: optional string,\n", - " 3: divide_id: optional string,\n", - " 4: ds_id: optional double,\n", - " 5: mainstem: optional double,\n", - " 6: hydroseq: optional double,\n", - " 7: hf_source: optional string,\n", - " 8: hf_id: optional double,\n", - " 9: lengthkm: optional double,\n", - " 10: areasqkm: optional double,\n", - " 11: tot_drainage_areasqkm: optional double,\n", - " 12: type: optional string,\n", - " 13: vpuid: optional string,\n", - " 14: hf_hydroseq: optional double,\n", - " 15: hf_lengthkm: optional double,\n", - " 16: hf_mainstem: optional double,\n", - " 17: topo: optional string,\n", - " 18: poi_id: optional double,\n", - " 19: hl_uri: optional string\n", - "),\n", - "partition by: [],\n", - "sort order: [],\n", - "snapshot: Operation.APPEND: id=3803992390522077902, schema_id=0" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "tables[\"network\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Tables in the catalog:\n", - "- ('hydrofabric', 'divide-attributes')\n", - "- ('hydrofabric', 'divides')\n", - "- ('hydrofabric', 'flowpath-attributes')\n", - "- ('hydrofabric', 'flowpath-attributes-ml')\n", - "- ('hydrofabric', 'flowpaths')\n", - "- ('hydrofabric', 'hydrolocations')\n", - "- ('hydrofabric', 'lakes')\n", - "- ('hydrofabric', 'network')\n", - "- ('hydrofabric', 'nexus')\n", - "- ('hydrofabric', 'pois')\n" - ] - } - ], - "source": [ - "print(\"Tables in the catalog:\")\n", - "for table_id in catalog.list_tables(\"hydrofabric\"):\n", - " print(f\"- {table_id}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 40, - "metadata": {}, - "outputs": [], - "source": [ - "def create_geodataframe(df):\n", - " if \"geometry\" in df.columns:\n", - " df[\"geometry\"] = df[\"geometry\"].apply(lambda x: wkb.loads(x) if x is not None else None)\n", - " return gpd.GeoDataFrame(df, geometry=\"geometry\", crs=\"EPSG:5070\")\n", - " return df" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "def find_origin(network_table, identifier, id_type=\"hl_uri\"):\n", - " \"\"\"Find an origin point in the hydrofabric network.\n", - "\n", - " This function handles the case where multiple records match the identifier.\n", - " It follows the R implementation to select a single origin point based on\n", - " the minimum hydroseq value.\n", - " \"\"\"\n", - " # Filter network table by the identifier\n", - " if id_type == \"hl_uri\":\n", - " row_filter = f\"{id_type} == '{identifier}'\"\n", - " # elif id_type == \"comid\":\n", - " # row_filter = f\"hf_id == {identifier}\"\n", - " # elif id_type == \"id\":\n", - " # row_filter = f\"id == '{identifier}'\"\n", - " # elif id_type == \"poi_id\":\n", - " # row_filter = f\"poi_id == '{identifier}'\"\n", - " else:\n", - " raise ValueError(f\"Identifier type {id_type} not supported\")\n", - "\n", - " # Get all matching records\n", - " origin_candidates = network_table.scan(row_filter=row_filter).to_pandas()\n", - "\n", - " if len(origin_candidates) == 0:\n", - " raise ValueError(f\"No origin found for {id_type}='{identifier}'\")\n", - "\n", - " # Select relevant columns for the origin\n", - " origin_cols = [\"id\", \"toid\", \"vpuid\", \"topo\", \"hydroseq\"]\n", - " available_cols = [col for col in origin_cols if col in origin_candidates.columns]\n", - "\n", - " # Select only the relevant columns and drop duplicates\n", - " origin = origin_candidates[available_cols].drop_duplicates()\n", - "\n", - " # Find the record with minimum hydroseq\n", - " if \"hydroseq\" in origin.columns:\n", - " # For consistency with R, check if there are unique hydroseq values\n", - " if len(origin[\"hydroseq\"].unique()) > 1:\n", - " # Sort by hydroseq and take the minimum\n", - " origin = origin.sort_values(\"hydroseq\").iloc[0:1]\n", - "\n", - " # If we still have multiple records, it's a problem\n", - " if len(origin) > 1:\n", - " raise ValueError(f\"Multiple origins found: {origin['id'].tolist()}\")\n", - "\n", - " return origin" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtoidvpuidtopohydroseq
1wb-87646nex-8740402fl-nex26923.0
\n", - "
" - ], - "text/plain": [ - " id toid vpuid topo hydroseq\n", - "1 wb-87646 nex-87404 02 fl-nex 26923.0" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "identifier = \"gages-01563500\"\n", - "id_type = \"hl_uri\"\n", - "origin = find_origin(network_table, identifier, id_type)\n", - "origin" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": {}, - "outputs": [], - "source": [ - "network_df = tables[\"network\"].scan().to_pandas()\n", - "nexus_df = tables[\"nexus\"].scan().to_pandas()\n", - "flowpaths_df = tables[\"flowpaths\"].scan().to_pandas()\n", - "\n", - "terminal_id = origin[\"id\"].iloc[0]\n", - "terminal_nexus = origin[\"toid\"].iloc[0]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
84513nex-1000wb-1000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84514nex-10000wb-10000NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84515nex-10004wb-10004NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84516nex-10008wb-10008NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
84517nex-1001wb-1001NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNnexus01NaNNaNNaNfl-nexNaNNone
............................................................
3461032tnx-1000014142wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461033tnx-1000014143wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461034tnx-1000014144wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461035tnx-1000014145wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
3461036tnx-1000014146wb-0NoneNaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNterminal18NaNNaNNaNfl-nexNaNNone
\n", - "

404808 rows × 19 columns

\n", - "
" - ], - "text/plain": [ - " id toid divide_id ds_id mainstem hydroseq \\\n", - "84513 nex-1000 wb-1000 None NaN NaN NaN \n", - "84514 nex-10000 wb-10000 None NaN NaN NaN \n", - "84515 nex-10004 wb-10004 None NaN NaN NaN \n", - "84516 nex-10008 wb-10008 None NaN NaN NaN \n", - "84517 nex-1001 wb-1001 None NaN NaN NaN \n", - "... ... ... ... ... ... ... \n", - "3461032 tnx-1000014142 wb-0 None NaN NaN NaN \n", - "3461033 tnx-1000014143 wb-0 None NaN NaN NaN \n", - "3461034 tnx-1000014144 wb-0 None NaN NaN NaN \n", - "3461035 tnx-1000014145 wb-0 None NaN NaN NaN \n", - "3461036 tnx-1000014146 wb-0 None NaN NaN NaN \n", - "\n", - " hf_source hf_id lengthkm areasqkm \\\n", - "84513 NOAA Reference Fabric NaN NaN NaN \n", - "84514 NOAA Reference Fabric NaN NaN NaN \n", - "84515 NOAA Reference Fabric NaN NaN NaN \n", - "84516 NOAA Reference Fabric NaN NaN NaN \n", - "84517 NOAA Reference Fabric NaN NaN NaN \n", - "... ... ... ... ... \n", - "3461032 NOAA Reference Fabric NaN NaN NaN \n", - "3461033 NOAA Reference Fabric NaN NaN NaN \n", - "3461034 NOAA Reference Fabric NaN NaN NaN \n", - "3461035 NOAA Reference Fabric NaN NaN NaN \n", - "3461036 NOAA Reference Fabric NaN NaN NaN \n", - "\n", - " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", - "84513 NaN nexus 01 NaN NaN \n", - "84514 NaN nexus 01 NaN NaN \n", - "84515 NaN nexus 01 NaN NaN \n", - "84516 NaN nexus 01 NaN NaN \n", - "84517 NaN nexus 01 NaN NaN \n", - "... ... ... ... ... ... \n", - "3461032 NaN terminal 18 NaN NaN \n", - "3461033 NaN terminal 18 NaN NaN \n", - "3461034 NaN terminal 18 NaN NaN \n", - "3461035 NaN terminal 18 NaN NaN \n", - "3461036 NaN terminal 18 NaN NaN \n", - "\n", - " hf_mainstem topo poi_id hl_uri \n", - "84513 NaN fl-nex NaN None \n", - "84514 NaN fl-nex NaN None \n", - "84515 NaN fl-nex NaN None \n", - "84516 NaN fl-nex NaN None \n", - "84517 NaN fl-nex NaN None \n", - "... ... ... ... ... \n", - "3461032 NaN fl-nex NaN None \n", - "3461033 NaN fl-nex NaN None \n", - "3461034 NaN fl-nex NaN None \n", - "3461035 NaN fl-nex NaN None \n", - "3461036 NaN fl-nex NaN None \n", - "\n", - "[404808 rows x 19 columns]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "wb_rows = network_df[network_df[\"toid\"].str.contains(\"wb-\", na=False)]\n", - "nex_rows = network_df[network_df[\"toid\"].str.contains(\"nex-\", na=False)]\n", - "wb_rows" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/build.ipynb b/examples/build.ipynb deleted file mode 100644 index 1ee57e7..0000000 --- a/examples/build.ipynb +++ /dev/null @@ -1,99 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "from icefabric_manage import build, load_table_from_catalog\n", - "from icefabric_tools import to_geopandas" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Table network already exists, loading it\n", - "Table nexus already exists, loading it\n", - "Table flowpath-attributes already exists, loading it\n", - "Table divides already exists, loading it\n", - "Table pois already exists, loading it\n", - "Table flowpath-attributes-ml already exists, loading it\n", - "Table divide-attributes already exists, loading it\n", - "Table flowpaths already exists, loading it\n", - "Table hydrolocations already exists, loading it\n", - "Table lakes already exists, loading it\n" - ] - } - ], - "source": [ - "warehouse_path = \"../data/warehouse\"\n", - "catalog = build(\n", - " Path(\"/Users/taddbindas/projects/NGWPC/icefabric/data/parquet\"),\n", - " catalog_settings = {\n", - " 'type': 'sql',\n", - " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", - " \"warehouse\": f\"file://{warehouse_path}\",\n", - " },\n", - ")" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "ename": "AttributeError", - "evalue": "'NoneType' object has no attribute 'load_table'", - "output_type": "error", - "traceback": [ - "\u001b[31m---------------------------------------------------------------------------\u001b[39m", - "\u001b[31mAttributeError\u001b[39m Traceback (most recent call last)", - "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[5]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m \u001b[43mload_table_from_catalog\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcatalog\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mnetwork\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/src/icefabric_manage/src/icefabric_manage/_api.py:91\u001b[39m, in \u001b[36mload_table_from_catalog\u001b[39m\u001b[34m(catalog, identifier)\u001b[39m\n\u001b[32m 71\u001b[39m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34mload_table_from_catalog\u001b[39m(catalog: Catalog, identifier: \u001b[38;5;28mstr\u001b[39m) -> Table:\n\u001b[32m 72\u001b[39m \u001b[38;5;250m \u001b[39m\u001b[33;03m\"\"\"_summary_\u001b[39;00m\n\u001b[32m 73\u001b[39m \n\u001b[32m 74\u001b[39m \u001b[33;03m Parameters\u001b[39;00m\n\u001b[32m (...)\u001b[39m\u001b[32m 89\u001b[39m \u001b[33;03m The table does not exist in the catalog\u001b[39;00m\n\u001b[32m 90\u001b[39m \u001b[33;03m \"\"\"\u001b[39;00m\n\u001b[32m---> \u001b[39m\u001b[32m91\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m 92\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m catalog.load_table(identifier)\n\u001b[32m 93\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m NoSuchTableError \u001b[38;5;28;01mas\u001b[39;00m e:\n", - "\u001b[31mAttributeError\u001b[39m: 'NoneType' object has no attribute 'load_table'" - ] - } - ], - "source": [ - "load_table_from_catalog(catalog, \"network\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/build_hf_catalog.ipynb b/examples/build_hf_catalog.ipynb new file mode 100644 index 0000000..fe712df --- /dev/null +++ b/examples/build_hf_catalog.ipynb @@ -0,0 +1,366 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### How to build your own catalog\n", + "Author: Tadd Bindas" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric_manage import build\n", + "from icefabric_tools import find_origin" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, you will need to define where your local data warehouse will live. This file will be located on disk and requires you to already have some geoparquet files to load" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table network already exists. Skipping build\n", + "Table nexus already exists. Skipping build\n", + "Table flowpath-attributes already exists. Skipping build\n", + "Table divides already exists. Skipping build\n", + "Table pois already exists. Skipping build\n", + "Table flowpath-attributes-ml already exists. Skipping build\n", + "Table divide-attributes already exists. Skipping build\n", + "Table flowpaths already exists. Skipping build\n", + "Table hydrolocations already exists. Skipping build\n", + "Table lakes already exists. Skipping build\n" + ] + } + ], + "source": [ + "warehouse_path = Path(\"../data/warehouse\")\n", + "warehouse_path.mkdir(exist_ok=True)\n", + "\n", + "catalog_settings = {\n", + " 'type': 'sql',\n", + " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", + " \"warehouse\": f\"file://{warehouse_path}\",\n", + "}\n", + "\n", + "catalog = load_catalog(\"hydrofabric\", **catalog_settings)\n", + "build(catalog, Path(\"/Users/taddbindas/projects/NGWPC/icefabric/data/parquet\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once the catalog is created, you can load the table into memory, scan the file based on a query, then return the object via pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
0wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196253.07.00682113.9666572.707401terminal012613576.07.0068212613576.0fl-nexNaNNone
1wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196257.07.00682113.9666572.707401terminal012613602.00.9921072613601.0fl-nexNaNNone
2wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196256.07.00682113.9666572.707401terminal012613601.00.9404322613601.0fl-nexNaNNone
3wb-20479tnx-1000000697cat-20479NaN2613603.020277.0NOAA Reference Fabric4599061.01.4451385.8873542.698700terminal012613604.00.7932822613603.0fl-nexNaNNone
4wb-20479tnx-1000000697cat-20479NaN2613603.020277.0NOAA Reference Fabric4599715.01.4451385.8873542.698700terminal012613605.00.2051912613603.0fl-nexNaNNone
\n", + "
" + ], + "text/plain": [ + " id toid divide_id ds_id mainstem hydroseq \\\n", + "0 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "1 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "2 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "3 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", + "4 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", + "\n", + " hf_source hf_id lengthkm areasqkm \\\n", + "0 NOAA Reference Fabric 166196253.0 7.006821 13.96665 \n", + "1 NOAA Reference Fabric 166196257.0 7.006821 13.96665 \n", + "2 NOAA Reference Fabric 166196256.0 7.006821 13.96665 \n", + "3 NOAA Reference Fabric 4599061.0 1.445138 5.88735 \n", + "4 NOAA Reference Fabric 4599715.0 1.445138 5.88735 \n", + "\n", + " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", + "0 72.707401 terminal 01 2613576.0 7.006821 \n", + "1 72.707401 terminal 01 2613602.0 0.992107 \n", + "2 72.707401 terminal 01 2613601.0 0.940432 \n", + "3 42.698700 terminal 01 2613604.0 0.793282 \n", + "4 42.698700 terminal 01 2613605.0 0.205191 \n", + "\n", + " hf_mainstem topo poi_id hl_uri \n", + "0 2613576.0 fl-nex NaN None \n", + "1 2613601.0 fl-nex NaN None \n", + "2 2613601.0 fl-nex NaN None \n", + "3 2613603.0 fl-nex NaN None \n", + "4 2613603.0 fl-nex NaN None " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "network = catalog.load_table(\"hydrofabric.network\")\n", + "network.scan().to_pandas().head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that we have these tables in memory, we can use predefined functions/services to get more insight from our data/methods" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoidvpuidtopohydroseq
0wb-1795006nex-179500710Ufl-nex84196.0
\n", + "
" + ], + "text/plain": [ + " id toid vpuid topo hydroseq\n", + "0 wb-1795006 nex-1795007 10U fl-nex 84196.0" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "find_origin(network_table=network, identifier=7226556, id_type=\"comid\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/src/icefabric_manage/README.md b/src/icefabric_manage/README.md index e69de29..e0d26b6 100644 --- a/src/icefabric_manage/README.md +++ b/src/icefabric_manage/README.md @@ -0,0 +1,3 @@ +# Icefabric Manage + +A repo which contains scripts for building the icefabric from scratch diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 8cb240f..47e0ef7 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -22,13 +22,10 @@ dependencies = [ "matplotlib==3.10.0", "s3fs==2025.3.2", "pyarrow==19.0.1", - "pyiceberg[sql-sqlite]", + "pyiceberg[sql-sqlite]==0.9.0", "python-dotenv==1.1.0" ] -[project.scripts] -icefabric_manage = "icefabric_manage._api:build" - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/src/icefabric_manage/src/icefabric_manage/__init__.py b/src/icefabric_manage/src/icefabric_manage/__init__.py index 45625fb..3803004 100644 --- a/src/icefabric_manage/src/icefabric_manage/__init__.py +++ b/src/icefabric_manage/src/icefabric_manage/__init__.py @@ -1,3 +1,3 @@ -from icefabric_manage._api import build, load_table_from_catalog +from icefabric_manage._api import build -__all__ = ["build", "load_table_from_catalog"] +__all__ = ["build"] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index c8fe044..9c14e54 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -3,7 +3,7 @@ from pathlib import Path import pyarrow.parquet as pq -from pyiceberg.catalog import Catalog, load_catalog +from pyiceberg.catalog import Catalog from pyiceberg.exceptions import NoSuchTableError from pyiceberg.table import Table @@ -41,18 +41,16 @@ def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str): raise FileNotFoundError(f"Cannot find file: {file_path}") -def build(file_dir: Path, catalog_settings: dict[str, str]) -> Catalog: +def build(catalog: Catalog, file_dir: Path) -> None: """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. Parameters ---------- + catalog: Catalog + The Apache Iceberg Catalog file_dir : Path The path to the parquet files to add into the iceberg catalog - catalog_settings : dict[str, str] - The settings for the catalog entry """ - catalog = load_catalog("hydrofabric", **catalog_settings) - if not any(ns == ('hydrofabric',) for ns in catalog.list_namespaces()): catalog.create_namespace('hydrofabric') print("Created 'hydrofabric' namespace") @@ -65,30 +63,3 @@ def build(file_dir: Path, catalog_settings: dict[str, str]) -> Catalog: print(f"Table {table_name} already exists. Skipping build") else: _add_parquet_to_catalog(catalog, parquet_file, table_name) - return catalog - - -def load_table_from_catalog(catalog: Catalog, identifier: str) -> Table: - """_summary_ - - Parameters - ---------- - catalog : Catalog - The Iceberg catalog - identifier : str - The catalog name and table. Ex: hydrofabric.network - - Returns - ------- - Table - The requested table - - Raises - ------ - NoSuchTableError - The table does not exist in the catalog - """ - try: - return catalog.load_table(identifier) - except NoSuchTableError as e: - raise NoSuchTableError from e diff --git a/src/icefabric_tools/README.md b/src/icefabric_tools/README.md index e69de29..c522fc6 100644 --- a/src/icefabric_tools/README.md +++ b/src/icefabric_tools/README.md @@ -0,0 +1,3 @@ +# Icefabric tools + +A collection of compute functions/services build on top of existing Iceberg data diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index abf3353..175a8db 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -22,12 +22,9 @@ dependencies = [ "matplotlib==3.10.0", "s3fs==2025.3.2", "pyarrow==19.0.1", - "pyiceberg==0.9.0", + "pyiceberg[sql-sqlite]==0.9.0", ] -[project.scripts] -icefabric_manage = "icefabric_manage._api:build" - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index 1b90e20..792b227 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -1,3 +1,3 @@ -from icefabric_tools._api import to_geopandas +from icefabric_tools._api import find_origin, to_geopandas -__all__ = ["to_geopandas"] +__all__ = ["find_origin", "to_geopandas"] diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/_api.py index a25974b..165d8a7 100644 --- a/src/icefabric_tools/src/icefabric_tools/_api.py +++ b/src/icefabric_tools/src/icefabric_tools/_api.py @@ -1,6 +1,7 @@ """Contains all api functions that can be called outside of the icefabric_tools package""" import geopandas as gpd +import pandas as pd from pyiceberg.table import Table from shapely import wkb @@ -11,7 +12,7 @@ def to_geopandas( case_sensitive: bool | None = True, snapshot_id: int | None = None, limit: int | None = None -) -> gpd.DataFrame: +) -> gpd.GeoDataFrame: """Converts a table to a geopandas dataframe Parameters @@ -51,3 +52,72 @@ def to_geopandas( else: raise ValueError("The provided table does not have a geometery column.") return df + + +def find_origin(network_table: Table, identifier: str, id_type: str ="hl_uri") -> pd.DataFrame: + """Find an origin point in the hydrofabric network. + + This function handles the case where multiple records match the identifier. + It follows the R implementation to select a single origin point based on + the minimum hydroseq value. + + Parameters + ---------- + network_table : Table + The HF network table from the hydrofabric catalog + identifier : str + The unique identifier you want to find the origin of + id_type : str, optional + The network table column you can query from, by default "hl_uri" + + Returns + ------- + pd.DataFrame + The origin row from the network table + + Raises + ------ + ValueError + The provided identifier is not supported + ValueError + No origin for the point is found + ValueError + Multiple origins for the point are found + """ + # Filter network table by the identifier + if id_type == "hl_uri": + row_filter = f"{id_type} == '{identifier}'" + elif id_type == "comid": + row_filter = f"hf_id == {identifier}" + elif id_type == "id": + row_filter = f"id == '{identifier}'" + elif id_type == "poi_id": + row_filter = f"poi_id == '{identifier}'" + else: + raise ValueError(f"Identifier {id_type} not supported") + + # Get all matching records + origin_candidates = network_table.scan(row_filter=row_filter).to_pandas() + + if len(origin_candidates) == 0: + raise ValueError(f"No origin found for {id_type}='{identifier}'") + + # Select relevant columns for the origin + origin_cols = ["id", "toid", "vpuid", "topo", "hydroseq"] + available_cols = [col for col in origin_cols if col in origin_candidates.columns] + + # Select only the relevant columns and drop duplicates + origin = origin_candidates[available_cols].drop_duplicates() + + # Find the record with minimum hydroseq + if "hydroseq" in origin.columns: + # For consistency with R, check if there are unique hydroseq values + if len(origin["hydroseq"].unique()) > 1: + # Sort by hydroseq and take the minimum + origin = origin.sort_values("hydroseq").iloc[0:1] + + # If we still have multiple records, it's a problem + if len(origin) > 1: + raise ValueError(f"Multiple origins found: {origin['id'].tolist()}") + + return origin diff --git a/uv.lock b/uv.lock index 58a72f3..50fde3b 100644 --- a/uv.lock +++ b/uv.lock @@ -1254,7 +1254,7 @@ requires-dist = [ { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==19.0.1" }, { name = "pydantic", specifier = "==2.10.6" }, - { name = "pyiceberg", extras = ["sql-sqlite"] }, + { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, { name = "python-dotenv", specifier = "==1.1.0" }, { name = "s3fs", specifier = "==2025.3.2" }, { name = "scikit-learn", specifier = "==1.6.1" }, @@ -1278,7 +1278,7 @@ dependencies = [ { name = "pandas" }, { name = "pyarrow" }, { name = "pydantic" }, - { name = "pyiceberg" }, + { name = "pyiceberg", extra = ["sql-sqlite"] }, { name = "s3fs" }, { name = "scikit-learn" }, { name = "scipy" }, @@ -1298,7 +1298,7 @@ requires-dist = [ { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==19.0.1" }, { name = "pydantic", specifier = "==2.10.6" }, - { name = "pyiceberg", specifier = "==0.9.0" }, + { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, { name = "s3fs", specifier = "==2025.3.2" }, { name = "scikit-learn", specifier = "==1.6.1" }, { name = "scipy", specifier = "==1.15.1" }, From b0abf1187c68dd0c69f483bd1613548410c70828 Mon Sep 17 00:00:00 2001 From: taddyb Date: Mon, 28 Apr 2025 15:11:38 -0400 Subject: [PATCH 11/97] fixed the geopandas function as there was a missing default value for scans --- examples/build_hf_catalog.ipynb | 523 ++++++++++++++++-- .../src/icefabric_tools/_api.py | 5 +- 2 files changed, 489 insertions(+), 39 deletions(-) diff --git a/examples/build_hf_catalog.ipynb b/examples/build_hf_catalog.ipynb index fe712df..d1fdeeb 100644 --- a/examples/build_hf_catalog.ipynb +++ b/examples/build_hf_catalog.ipynb @@ -19,7 +19,7 @@ "from pyiceberg.catalog import load_catalog\n", "\n", "from icefabric_manage import build\n", - "from icefabric_tools import find_origin" + "from icefabric_tools import find_origin, to_geopandas" ] }, { @@ -74,7 +74,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -230,48 +230,207 @@ " NaN\n", " None\n", " \n", + " \n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " ...\n", + " \n", + " \n", + " 3461362\n", + " None\n", + " cnx-3299511\n", + " cat-3299511\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NOAA Reference Fabric\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " None\n", + " None\n", + " NaN\n", + " NaN\n", + " NaN\n", + " fl-nex\n", + " NaN\n", + " None\n", + " \n", + " \n", + " 3461363\n", + " None\n", + " cnx-3299510\n", + " cat-3299510\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NOAA Reference Fabric\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " None\n", + " None\n", + " NaN\n", + " NaN\n", + " NaN\n", + " fl-nex\n", + " NaN\n", + " None\n", + " \n", + " \n", + " 3461364\n", + " None\n", + " cnx-3299509\n", + " cat-3299509\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NOAA Reference Fabric\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " None\n", + " None\n", + " NaN\n", + " NaN\n", + " NaN\n", + " fl-nex\n", + " NaN\n", + " None\n", + " \n", + " \n", + " 3461365\n", + " None\n", + " cnx-3299508\n", + " cat-3299508\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NOAA Reference Fabric\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " None\n", + " None\n", + " NaN\n", + " NaN\n", + " NaN\n", + " fl-nex\n", + " NaN\n", + " None\n", + " \n", + " \n", + " 3461366\n", + " None\n", + " cnx-3299507\n", + " cat-3299507\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NOAA Reference Fabric\n", + " NaN\n", + " NaN\n", + " NaN\n", + " NaN\n", + " None\n", + " None\n", + " NaN\n", + " NaN\n", + " NaN\n", + " fl-nex\n", + " NaN\n", + " None\n", + " \n", " \n", "\n", + "

3461367 rows × 19 columns

\n", "" ], "text/plain": [ - " id toid divide_id ds_id mainstem hydroseq \\\n", - "0 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "1 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "2 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "3 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", - "4 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", + " id toid divide_id ds_id mainstem hydroseq \\\n", + "0 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "1 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "2 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", + "3 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", + "4 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", + "... ... ... ... ... ... ... \n", + "3461362 None cnx-3299511 cat-3299511 NaN NaN NaN \n", + "3461363 None cnx-3299510 cat-3299510 NaN NaN NaN \n", + "3461364 None cnx-3299509 cat-3299509 NaN NaN NaN \n", + "3461365 None cnx-3299508 cat-3299508 NaN NaN NaN \n", + "3461366 None cnx-3299507 cat-3299507 NaN NaN NaN \n", + "\n", + " hf_source hf_id lengthkm areasqkm \\\n", + "0 NOAA Reference Fabric 166196253.0 7.006821 13.96665 \n", + "1 NOAA Reference Fabric 166196257.0 7.006821 13.96665 \n", + "2 NOAA Reference Fabric 166196256.0 7.006821 13.96665 \n", + "3 NOAA Reference Fabric 4599061.0 1.445138 5.88735 \n", + "4 NOAA Reference Fabric 4599715.0 1.445138 5.88735 \n", + "... ... ... ... ... \n", + "3461362 NOAA Reference Fabric NaN NaN NaN \n", + "3461363 NOAA Reference Fabric NaN NaN NaN \n", + "3461364 NOAA Reference Fabric NaN NaN NaN \n", + "3461365 NOAA Reference Fabric NaN NaN NaN \n", + "3461366 NOAA Reference Fabric NaN NaN NaN \n", "\n", - " hf_source hf_id lengthkm areasqkm \\\n", - "0 NOAA Reference Fabric 166196253.0 7.006821 13.96665 \n", - "1 NOAA Reference Fabric 166196257.0 7.006821 13.96665 \n", - "2 NOAA Reference Fabric 166196256.0 7.006821 13.96665 \n", - "3 NOAA Reference Fabric 4599061.0 1.445138 5.88735 \n", - "4 NOAA Reference Fabric 4599715.0 1.445138 5.88735 \n", + " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", + "0 72.707401 terminal 01 2613576.0 7.006821 \n", + "1 72.707401 terminal 01 2613602.0 0.992107 \n", + "2 72.707401 terminal 01 2613601.0 0.940432 \n", + "3 42.698700 terminal 01 2613604.0 0.793282 \n", + "4 42.698700 terminal 01 2613605.0 0.205191 \n", + "... ... ... ... ... ... \n", + "3461362 NaN None None NaN NaN \n", + "3461363 NaN None None NaN NaN \n", + "3461364 NaN None None NaN NaN \n", + "3461365 NaN None None NaN NaN \n", + "3461366 NaN None None NaN NaN \n", "\n", - " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", - "0 72.707401 terminal 01 2613576.0 7.006821 \n", - "1 72.707401 terminal 01 2613602.0 0.992107 \n", - "2 72.707401 terminal 01 2613601.0 0.940432 \n", - "3 42.698700 terminal 01 2613604.0 0.793282 \n", - "4 42.698700 terminal 01 2613605.0 0.205191 \n", + " hf_mainstem topo poi_id hl_uri \n", + "0 2613576.0 fl-nex NaN None \n", + "1 2613601.0 fl-nex NaN None \n", + "2 2613601.0 fl-nex NaN None \n", + "3 2613603.0 fl-nex NaN None \n", + "4 2613603.0 fl-nex NaN None \n", + "... ... ... ... ... \n", + "3461362 NaN fl-nex NaN None \n", + "3461363 NaN fl-nex NaN None \n", + "3461364 NaN fl-nex NaN None \n", + "3461365 NaN fl-nex NaN None \n", + "3461366 NaN fl-nex NaN None \n", "\n", - " hf_mainstem topo poi_id hl_uri \n", - "0 2613576.0 fl-nex NaN None \n", - "1 2613601.0 fl-nex NaN None \n", - "2 2613601.0 fl-nex NaN None \n", - "3 2613603.0 fl-nex NaN None \n", - "4 2613603.0 fl-nex NaN None " + "[3461367 rows x 19 columns]" ] }, - "execution_count": 4, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "network = catalog.load_table(\"hydrofabric.network\")\n", - "network.scan().to_pandas().head()" + "network.scan().to_pandas()" ] }, { @@ -281,9 +440,16 @@ "Now that we have these tables in memory, we can use predefined functions/services to get more insight from our data/methods" ] }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Finding an Origin point" + ] + }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -317,28 +483,311 @@ " \n", " \n", " 0\n", - " wb-1795006\n", - " nex-1795007\n", - " 10U\n", + " wb-824123\n", + " nex-824124\n", + " 05\n", " fl-nex\n", - " 84196.0\n", + " 3565.0\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id toid vpuid topo hydroseq\n", - "0 wb-1795006 nex-1795007 10U fl-nex 84196.0" + " id toid vpuid topo hydroseq\n", + "0 wb-824123 nex-824124 05 fl-nex 3565.0" ] }, - "execution_count": 5, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "find_origin(network_table=network, identifier=18471000, id_type=\"comid\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Converting tables into geopandas dataframes" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoidmainstemorderhydroseqlengthkmareasqkmtot_drainage_areasqkmhas_dividedivide_idpoi_idvpuidgeometry
0wb-20466nex-204672613576.01.0202922.4437934.3042504.304250Truecat-204661953401MULTILINESTRING ((1873700.565 2684810.523, 187...
1wb-20474nex-204752613597.01.0202913.9825184.8294004.829400Truecat-20474None01MULTILINESTRING ((1875378.459 2678583.977, 187...
2wb-20475nex-204682613597.01.0202901.0066456.71310111.542501Truecat-20475None01MULTILINESTRING ((1875781.183 2682056.744, 187...
3wb-20473nex-204672613587.01.0202891.8927814.4860504.486050Truecat-20473None01MULTILINESTRING ((1875252.558 2684695.906, 187...
4wb-20467nex-204682613576.02.0202881.6164632.58390022.916701Truecat-20467119301MULTILINESTRING ((1875278.618 2683667.5, 18754...
..........................................
828283wb-3054945nex-30549462523667.02.02363.5152879.33569984.047850Truecat-3054945None17MULTILINESTRING ((-2219263.794 2463211.731, -2...
828284wb-3054946nex-30549472523667.02.02354.36558713.30650097.354350Truecat-3054946None17MULTILINESTRING ((-2222330.448 2464615.711, -2...
828285wb-3054961nex-30549582523700.01.02342.0321945.2357505.235750Truecat-3054961None17MULTILINESTRING ((-2218810.457 2467656.224, -2...
828286wb-3054958nex-30549592523693.01.02336.46621210.67085015.906600Truecat-3054958None17MULTILINESTRING ((-2217798.39 2468518.649, -22...
828287wb-3054960nex-30549592523698.01.02322.2424243.6405003.640500Truecat-3054960None17MULTILINESTRING ((-2220749.538 2467137.344, -2...
\n", + "

828288 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " id toid mainstem order hydroseq lengthkm \\\n", + "0 wb-20466 nex-20467 2613576.0 1.0 20292 2.443793 \n", + "1 wb-20474 nex-20475 2613597.0 1.0 20291 3.982518 \n", + "2 wb-20475 nex-20468 2613597.0 1.0 20290 1.006645 \n", + "3 wb-20473 nex-20467 2613587.0 1.0 20289 1.892781 \n", + "4 wb-20467 nex-20468 2613576.0 2.0 20288 1.616463 \n", + "... ... ... ... ... ... ... \n", + "828283 wb-3054945 nex-3054946 2523667.0 2.0 236 3.515287 \n", + "828284 wb-3054946 nex-3054947 2523667.0 2.0 235 4.365587 \n", + "828285 wb-3054961 nex-3054958 2523700.0 1.0 234 2.032194 \n", + "828286 wb-3054958 nex-3054959 2523693.0 1.0 233 6.466212 \n", + "828287 wb-3054960 nex-3054959 2523698.0 1.0 232 2.242424 \n", + "\n", + " areasqkm tot_drainage_areasqkm has_divide divide_id poi_id \\\n", + "0 4.304250 4.304250 True cat-20466 19534 \n", + "1 4.829400 4.829400 True cat-20474 None \n", + "2 6.713101 11.542501 True cat-20475 None \n", + "3 4.486050 4.486050 True cat-20473 None \n", + "4 2.583900 22.916701 True cat-20467 1193 \n", + "... ... ... ... ... ... \n", + "828283 9.335699 84.047850 True cat-3054945 None \n", + "828284 13.306500 97.354350 True cat-3054946 None \n", + "828285 5.235750 5.235750 True cat-3054961 None \n", + "828286 10.670850 15.906600 True cat-3054958 None \n", + "828287 3.640500 3.640500 True cat-3054960 None \n", + "\n", + " vpuid geometry \n", + "0 01 MULTILINESTRING ((1873700.565 2684810.523, 187... \n", + "1 01 MULTILINESTRING ((1875378.459 2678583.977, 187... \n", + "2 01 MULTILINESTRING ((1875781.183 2682056.744, 187... \n", + "3 01 MULTILINESTRING ((1875252.558 2684695.906, 187... \n", + "4 01 MULTILINESTRING ((1875278.618 2683667.5, 18754... \n", + "... ... ... \n", + "828283 17 MULTILINESTRING ((-2219263.794 2463211.731, -2... \n", + "828284 17 MULTILINESTRING ((-2222330.448 2464615.711, -2... \n", + "828285 17 MULTILINESTRING ((-2218810.457 2467656.224, -2... \n", + "828286 17 MULTILINESTRING ((-2217798.39 2468518.649, -22... \n", + "828287 17 MULTILINESTRING ((-2220749.538 2467137.344, -2... \n", + "\n", + "[828288 rows x 13 columns]" + ] + }, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "find_origin(network_table=network, identifier=7226556, id_type=\"comid\")" + "flowpaths = catalog.load_table(\"hydrofabric.flowpaths\")\n", + "to_geopandas(flowpaths)" ] } ], diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/_api.py index 165d8a7..a6f32ed 100644 --- a/src/icefabric_tools/src/icefabric_tools/_api.py +++ b/src/icefabric_tools/src/icefabric_tools/_api.py @@ -2,13 +2,14 @@ import geopandas as gpd import pandas as pd -from pyiceberg.table import Table +from pyiceberg.expressions import BooleanExpression +from pyiceberg.table import ALWAYS_TRUE, Table from shapely import wkb def to_geopandas( table: Table, - row_filter: str | None = "", + row_filter: str | BooleanExpression = ALWAYS_TRUE, case_sensitive: bool | None = True, snapshot_id: int | None = None, limit: int | None = None From f462d2fa7e373f866f8cd392c832b0c41a2b1f97 Mon Sep 17 00:00:00 2001 From: taddyb Date: Tue, 29 Apr 2025 15:01:31 -0400 Subject: [PATCH 12/97] created the rnr.py file for replace and route hydrofabric functionality --- ...ild_hf_catalog.ipynb => quick_start.ipynb} | 358 ++++-------------- .../src/icefabric_manage/_api.py | 2 - .../src/icefabric_tools/__init__.py | 4 +- .../src/icefabric_tools/_api.py | 60 ++- .../src/icefabric_tools/rnr.py | 83 ++++ 5 files changed, 197 insertions(+), 310 deletions(-) rename examples/{build_hf_catalog.ipynb => quick_start.ipynb} (60%) create mode 100644 src/icefabric_tools/src/icefabric_tools/rnr.py diff --git a/examples/build_hf_catalog.ipynb b/examples/quick_start.ipynb similarity index 60% rename from examples/build_hf_catalog.ipynb rename to examples/quick_start.ipynb index d1fdeeb..a5475d0 100644 --- a/examples/build_hf_catalog.ipynb +++ b/examples/quick_start.ipynb @@ -4,13 +4,13 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### How to build your own catalog\n", + "### Icefabric QuickStart\n", "Author: Tadd Bindas" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -19,7 +19,7 @@ "from pyiceberg.catalog import load_catalog\n", "\n", "from icefabric_manage import build\n", - "from icefabric_tools import find_origin, to_geopandas" + "from icefabric_tools import find_origin, table_to_geopandas" ] }, { @@ -31,26 +31,9 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Table network already exists. Skipping build\n", - "Table nexus already exists. Skipping build\n", - "Table flowpath-attributes already exists. Skipping build\n", - "Table divides already exists. Skipping build\n", - "Table pois already exists. Skipping build\n", - "Table flowpath-attributes-ml already exists. Skipping build\n", - "Table divide-attributes already exists. Skipping build\n", - "Table flowpaths already exists. Skipping build\n", - "Table hydrolocations already exists. Skipping build\n", - "Table lakes already exists. Skipping build\n" - ] - } - ], + "outputs": [], "source": [ "warehouse_path = Path(\"../data/warehouse\")\n", "warehouse_path.mkdir(exist_ok=True)\n", @@ -65,6 +48,26 @@ "build(catalog, Path(\"/Users/taddbindas/projects/NGWPC/icefabric/data/parquet\"))" ] }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "hydrofabric ()" + ] + }, + "execution_count": 76, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "catalog" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -449,7 +452,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -498,7 +501,7 @@ "0 wb-824123 nex-824124 05 fl-nex 3565.0" ] }, - "execution_count": 6, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -511,284 +514,51 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Converting tables into geopandas dataframes" + "### Reading a geopandas dataframe" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
idtoidmainstemorderhydroseqlengthkmareasqkmtot_drainage_areasqkmhas_dividedivide_idpoi_idvpuidgeometry
0wb-20466nex-204672613576.01.0202922.4437934.3042504.304250Truecat-204661953401MULTILINESTRING ((1873700.565 2684810.523, 187...
1wb-20474nex-204752613597.01.0202913.9825184.8294004.829400Truecat-20474None01MULTILINESTRING ((1875378.459 2678583.977, 187...
2wb-20475nex-204682613597.01.0202901.0066456.71310111.542501Truecat-20475None01MULTILINESTRING ((1875781.183 2682056.744, 187...
3wb-20473nex-204672613587.01.0202891.8927814.4860504.486050Truecat-20473None01MULTILINESTRING ((1875252.558 2684695.906, 187...
4wb-20467nex-204682613576.02.0202881.6164632.58390022.916701Truecat-20467119301MULTILINESTRING ((1875278.618 2683667.5, 18754...
..........................................
828283wb-3054945nex-30549462523667.02.02363.5152879.33569984.047850Truecat-3054945None17MULTILINESTRING ((-2219263.794 2463211.731, -2...
828284wb-3054946nex-30549472523667.02.02354.36558713.30650097.354350Truecat-3054946None17MULTILINESTRING ((-2222330.448 2464615.711, -2...
828285wb-3054961nex-30549582523700.01.02342.0321945.2357505.235750Truecat-3054961None17MULTILINESTRING ((-2218810.457 2467656.224, -2...
828286wb-3054958nex-30549592523693.01.02336.46621210.67085015.906600Truecat-3054958None17MULTILINESTRING ((-2217798.39 2468518.649, -22...
828287wb-3054960nex-30549592523698.01.02322.2424243.6405003.640500Truecat-3054960None17MULTILINESTRING ((-2220749.538 2467137.344, -2...
\n", - "

828288 rows × 13 columns

\n", - "
" - ], - "text/plain": [ - " id toid mainstem order hydroseq lengthkm \\\n", - "0 wb-20466 nex-20467 2613576.0 1.0 20292 2.443793 \n", - "1 wb-20474 nex-20475 2613597.0 1.0 20291 3.982518 \n", - "2 wb-20475 nex-20468 2613597.0 1.0 20290 1.006645 \n", - "3 wb-20473 nex-20467 2613587.0 1.0 20289 1.892781 \n", - "4 wb-20467 nex-20468 2613576.0 2.0 20288 1.616463 \n", - "... ... ... ... ... ... ... \n", - "828283 wb-3054945 nex-3054946 2523667.0 2.0 236 3.515287 \n", - "828284 wb-3054946 nex-3054947 2523667.0 2.0 235 4.365587 \n", - "828285 wb-3054961 nex-3054958 2523700.0 1.0 234 2.032194 \n", - "828286 wb-3054958 nex-3054959 2523693.0 1.0 233 6.466212 \n", - "828287 wb-3054960 nex-3054959 2523698.0 1.0 232 2.242424 \n", - "\n", - " areasqkm tot_drainage_areasqkm has_divide divide_id poi_id \\\n", - "0 4.304250 4.304250 True cat-20466 19534 \n", - "1 4.829400 4.829400 True cat-20474 None \n", - "2 6.713101 11.542501 True cat-20475 None \n", - "3 4.486050 4.486050 True cat-20473 None \n", - "4 2.583900 22.916701 True cat-20467 1193 \n", - "... ... ... ... ... ... \n", - "828283 9.335699 84.047850 True cat-3054945 None \n", - "828284 13.306500 97.354350 True cat-3054946 None \n", - "828285 5.235750 5.235750 True cat-3054961 None \n", - "828286 10.670850 15.906600 True cat-3054958 None \n", - "828287 3.640500 3.640500 True cat-3054960 None \n", - "\n", - " vpuid geometry \n", - "0 01 MULTILINESTRING ((1873700.565 2684810.523, 187... \n", - "1 01 MULTILINESTRING ((1875378.459 2678583.977, 187... \n", - "2 01 MULTILINESTRING ((1875781.183 2682056.744, 187... \n", - "3 01 MULTILINESTRING ((1875252.558 2684695.906, 187... \n", - "4 01 MULTILINESTRING ((1875278.618 2683667.5, 18754... \n", - "... ... ... \n", - "828283 17 MULTILINESTRING ((-2219263.794 2463211.731, -2... \n", - "828284 17 MULTILINESTRING ((-2222330.448 2464615.711, -2... \n", - "828285 17 MULTILINESTRING ((-2218810.457 2467656.224, -2... \n", - "828286 17 MULTILINESTRING ((-2217798.39 2468518.649, -22... \n", - "828287 17 MULTILINESTRING ((-2220749.538 2467137.344, -2... \n", - "\n", - "[828288 rows x 13 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "flowpaths = catalog.load_table(\"hydrofabric.flowpaths\")\n", - "to_geopandas(flowpaths)" + "flowpaths.scan().to_pandas()\n", + "table_to_geopandas(flowpaths)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Getting a Replace and Route Segment Geopackage" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from icefabric_tools import load_hydrofabric\n", + "from icefabric_tools.rnr import get_rnr_segment\n", + "\n", + "catalog_settings = {\n", + " 'type': 'sql',\n", + " \"uri\": \"sqlite:///../data/warehouse/pyiceberg_catalog.db\",\n", + " \"warehouse\": \"file://../data/warehouse\",\n", + "}\n", + "catalog = load_hydrofabric(catalog_settings)\n", + "get_rnr_segment(catalog, 18471000, \"../data/test_rnr.gpkg\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index 9c14e54..4aa8600 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -4,8 +4,6 @@ import pyarrow.parquet as pq from pyiceberg.catalog import Catalog -from pyiceberg.exceptions import NoSuchTableError -from pyiceberg.table import Table def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str): diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index 792b227..0451357 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -1,3 +1,3 @@ -from icefabric_tools._api import find_origin, to_geopandas +from icefabric_tools._api import find_origin, load_hydrofabric, table_to_geopandas, to_geopandas -__all__ = ["find_origin", "to_geopandas"] +__all__ = ["find_origin", "load_hydrofabric", "to_geopandas", "table_to_geopandas"] diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/_api.py index a6f32ed..cefb45f 100644 --- a/src/icefabric_tools/src/icefabric_tools/_api.py +++ b/src/icefabric_tools/src/icefabric_tools/_api.py @@ -2,12 +2,28 @@ import geopandas as gpd import pandas as pd +from pyiceberg.catalog import Catalog, load_catalog from pyiceberg.expressions import BooleanExpression from pyiceberg.table import ALWAYS_TRUE, Table from shapely import wkb -def to_geopandas( +def load_hydrofabric(catalog_settings: dict[str, str]) -> Catalog: + """A function to read in the hydrofabric catalog + + Parameters + ---------- + catalog_settings : dict[str, str] + The settings to read the hydrofabric catalog + + Returns + ------- + Catalog + The Iceberg catalog + """ + return load_catalog("hydrofabric", **catalog_settings) + +def table_to_geopandas( table: Table, row_filter: str | BooleanExpression = ALWAYS_TRUE, case_sensitive: bool | None = True, @@ -35,11 +51,6 @@ def to_geopandas( ------- gpd.DataFrame The resulting queried row, but in a geodataframe - - Raises - ------ - ValueError - Raised if the table does not have a geometry column """ df = table.scan( row_filter=row_filter, @@ -47,12 +58,37 @@ def to_geopandas( snapshot_id=snapshot_id, limit=limit, ).to_pandas() - if "geometry" in df.columns: - df["geometry"] = df["geometry"].apply(lambda x: wkb.loads(x) if x is not None else None) - return gpd.GeoDataFrame(df, geometry="geometry", crs="EPSG:5070") - else: - raise ValueError("The provided table does not have a geometery column.") - return df + return to_geopandas(df) + + +def to_geopandas( + df: pd.DataFrame, + crs: str = "EPSG:5070" +) -> gpd.GeoDataFrame: + """Converts the geometries in a pandas df to a geopandas dataframe + + Parameters + ---------- + df: pd.DataFrame + The iceberg table you are trying to read from + crs: str, optional + A string representing the CRS to set in the gdf, by default "EPSG:5070" + + Returns + ------- + gpd.DataFrame + The resulting queried row, but in a geodataframe + + Raises + ------ + ValueError + Raised if the table does not have a geometry column + """ + if "geometry" not in df.columns: + raise ValueError("The provided table does not have a geometry column.") + + geometry = df["geometry"].apply(lambda x: wkb.loads(x) if x is not None else None) + return gpd.GeoDataFrame(df, geometry=geometry, crs=crs) def find_origin(network_table: Table, identifier: str, id_type: str ="hl_uri") -> pd.DataFrame: diff --git a/src/icefabric_tools/src/icefabric_tools/rnr.py b/src/icefabric_tools/src/icefabric_tools/rnr.py new file mode 100644 index 0000000..7fca089 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/rnr.py @@ -0,0 +1,83 @@ +"""A file to hold all replace and route (RnR) geospatial scripts""" + +import geopandas as gpd +import numpy as np +import pandas as pd +from pyiceberg.catalog import Catalog +from pyiceberg.expressions import And, EqualTo, In, LessThanOrEqual + +from icefabric_tools import table_to_geopandas, to_geopandas + + +def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.GeoDataFrame: + """Returns a geopackage subset from the hydrofabric based on RnR rules + + Parameters + ---------- + catalog : Catalog + The iceberg catalog of the hydrofabric + reach_id : str + The reach_id, or hf_id, from the NWPS API + output_file : str + The output file where we want to save the geopackage + + Returns + ------- + gpd.GeoDataFrame + _description_ + """ + network = catalog.load_table("hydrofabric.network") + divides = catalog.load_table("hydrofabric.divides") + flowpaths = catalog.load_table("hydrofabric.flowpaths") + divides_attr = catalog.load_table("hydrofabric.divide-attributes") + flowpaths = catalog.load_table("hydrofabric.flowpaths") + flowpath_attr = catalog.load_table("hydrofabric.flowpath-attributes") + flowpath_attr_ml = catalog.load_table("hydrofabric.flowpath-attributes-ml") + nexus = catalog.load_table("hydrofabric.nexus") + pois = catalog.load_table("hydrofabric.pois") + hydrolocations = catalog.load_table("hydrofabric.hydrolocations") + + origin_row = network.scan(row_filter=f"hf_id = {reach_id}").to_pandas() + mainstem_expression = EqualTo("hf_mainstem", origin_row['hf_mainstem'].values[0]) + hydroseq_expression = LessThanOrEqual("hydroseq", origin_row['hydroseq'].values[0]) + combined_filter = And(mainstem_expression, hydroseq_expression) + + # Find all streams with the same stream order + # TODO Determine lakes to break segments + mainstem_features = network.scan(row_filter=combined_filter).to_pandas() + segment_flowpaths = flowpaths.scan(row_filter=In("divide_id", mainstem_features["divide_id"].drop_duplicates().values)).to_pandas() + joined_df = pd.merge( + mainstem_features, + segment_flowpaths, + on="divide_id", + how="outer" + ) + stream_order = joined_df[joined_df["hf_id"] == reach_id]["order"].values[0] + filtered_flowpaths = segment_flowpaths[segment_flowpaths["order"] == stream_order] + filtered_poi_list = [int(_id) for _id in segment_flowpaths[segment_flowpaths["order"] == stream_order]["poi_id"].values if _id is not None] + + # Get full river network + filtered_nexus_points = table_to_geopandas(table=nexus, row_filter=In("id", filtered_flowpaths["toid"])) + filtered_divides = table_to_geopandas(table=divides, row_filter=In("divide_id", filtered_flowpaths["divide_id"])) + filtered_network = network.scan(row_filter=In("id", np.concat([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() + filtered_divide_attr = divides_attr.scan(row_filter=In("divide_id", filtered_flowpaths["divide_id"])).to_pandas() + filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() + filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() + filtered_pois = pois.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() + filtered_hydrolocations = hydrolocations.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() + filtered_flowpaths = to_geopandas(filtered_flowpaths) + + layers = { + "flowpaths": filtered_flowpaths, + "nexus": filtered_nexus_points, + "divides": filtered_divides, + "divide-attributes": filtered_divide_attr, + "network": filtered_network, + "pois": filtered_pois, + "flowpath-attributes-ml": filtered_flowpath_attr_ml, + "flowpath-attributes": filtered_flowpath_attr, + # "lakes": filtered_water_bodies, + "hydrolocations": filtered_hydrolocations, + } + for table, layer in layers.items(): + gpd.GeoDataFrame(layer).to_file(output_file, layer=table, driver='GPKG') From 67ab989e7a20e99ab9f2c306feb157cbcf97904c Mon Sep 17 00:00:00 2001 From: taddyb Date: Tue, 29 Apr 2025 21:55:23 -0400 Subject: [PATCH 13/97] updated pyproject.toml to reduce python version --- examples/quick_start.ipynb | 2 +- pyproject.toml | 2 +- src/icefabric_manage/pyproject.toml | 1 - src/icefabric_tools/pyproject.toml | 1 - 4 files changed, 2 insertions(+), 4 deletions(-) diff --git a/examples/quick_start.ipynb b/examples/quick_start.ipynb index a5475d0..0726b38 100644 --- a/examples/quick_start.ipynb +++ b/examples/quick_start.ipynb @@ -532,7 +532,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Getting a Replace and Route Segment Geopackage" + "### Getting a Replace and Route Segment as a Geopackage" ] }, { diff --git a/pyproject.toml b/pyproject.toml index b7d9c9a..3883d48 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "icefabric" version = "0.1.0" description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" -requires-python = ">=3.11" +requires-python = ">=3.10" license = { file = "LICENSE" } authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 47e0ef7..e1d73fb 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -4,7 +4,6 @@ version = "0.1.0" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -requires-python = ">=3.11" readme = "README.md" dependencies = [ "numpy==2.2.5", diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 175a8db..b0a2267 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -4,7 +4,6 @@ version = "0.1.0" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -requires-python = ">=3.11" readme = "README.md" dependencies = [ "numpy==2.2.5", From cb76842e29719554141237bc455bb3a36c85e119 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 29 Apr 2025 21:57:26 -0400 Subject: [PATCH 14/97] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 3883d48..9947498 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,7 +27,8 @@ icefabric_manage = { workspace = true } [tool.uv.workspace] members = [ - "src/*" + "src/icefabric_manage", + "src/icefabric_tools", ] [tool.uv] From 1c28decdc591e77db4828225f6b2d9939b893278 Mon Sep 17 00:00:00 2001 From: taddyb Date: Wed, 30 Apr 2025 17:15:27 -0400 Subject: [PATCH 15/97] removed dependencies --- src/icefabric_manage/pyproject.toml | 10 - src/icefabric_tools/pyproject.toml | 8 - uv.lock | 940 +++++++++++++++------------- 3 files changed, 513 insertions(+), 445 deletions(-) diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index e1d73fb..b1e5a93 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -9,20 +9,10 @@ dependencies = [ "numpy==2.2.5", "fiona==1.10.1", "pandas==2.2.3", - "cubed-xarray==0.0.7", "geopandas==1.0.1", - "pydantic==2.10.6", - "xarray==2025.3.1", - "scipy==1.15.1", - "tqdm==4.67.1", - "zarr==3.0.7", - "sympy==1.13.1", - "scikit-learn==1.6.1", - "matplotlib==3.10.0", "s3fs==2025.3.2", "pyarrow==19.0.1", "pyiceberg[sql-sqlite]==0.9.0", - "python-dotenv==1.1.0" ] [build-system] diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index b0a2267..17ff640 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -9,15 +9,7 @@ dependencies = [ "numpy==2.2.5", "fiona==1.10.1", "pandas==2.2.3", - "cubed-xarray==0.0.7", "geopandas==1.0.1", - "pydantic==2.10.6", - "xarray==2025.3.1", - "scipy==1.15.1", - "tqdm==4.67.1", - "zarr==3.0.7", - "sympy==1.13.1", - "scikit-learn==1.6.1", "matplotlib==3.10.0", "s3fs==2025.3.2", "pyarrow==19.0.1", diff --git a/uv.lock b/uv.lock index 50fde3b..c1b4409 100644 --- a/uv.lock +++ b/uv.lock @@ -1,9 +1,10 @@ version = 1 revision = 1 -requires-python = ">=3.11" +requires-python = ">=3.10" resolution-markers = [ "python_full_version >= '3.12'", - "python_full_version < '3.12'", + "python_full_version == '3.11.*'", + "python_full_version < '3.11'", ] [manifest] @@ -47,6 +48,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, { name = "aiosignal" }, + { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "attrs" }, { name = "frozenlist" }, { name = "multidict" }, @@ -55,6 +57,22 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/c3/e5f64af7e97a02f547020e6ff861595766bb5ecb37c7492fac9fe3c14f6c/aiohttp-3.11.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96264854fedbea933a9ca4b7e0c745728f01380691687b7365d18d9e977179c4", size = 711703 }, + { url = "https://files.pythonhosted.org/packages/5f/2f/53c26e96efa5fd01ebcfe1fefdfb7811f482bb21f4fa103d85eca4dcf888/aiohttp-3.11.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9602044ff047043430452bc3a2089743fa85da829e6fc9ee0025351d66c332b6", size = 471348 }, + { url = "https://files.pythonhosted.org/packages/80/47/dcc248464c9b101532ee7d254a46f6ed2c1fd3f4f0f794cf1f2358c0d45b/aiohttp-3.11.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5691dc38750fcb96a33ceef89642f139aa315c8a193bbd42a0c33476fd4a1609", size = 457611 }, + { url = "https://files.pythonhosted.org/packages/4c/ca/67d816ef075e8ac834b5f1f6b18e8db7d170f7aebaf76f1be462ea10cab0/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554c918ec43f8480b47a5ca758e10e793bd7410b83701676a4782672d670da55", size = 1591976 }, + { url = "https://files.pythonhosted.org/packages/46/00/0c120287aa51c744438d99e9aae9f8c55ca5b9911c42706966c91c9d68d6/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a4076a2b3ba5b004b8cffca6afe18a3b2c5c9ef679b4d1e9859cf76295f8d4f", size = 1632819 }, + { url = "https://files.pythonhosted.org/packages/54/a3/3923c9040cd4927dfee1aa017513701e35adcfc35d10729909688ecaa465/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:767a97e6900edd11c762be96d82d13a1d7c4fc4b329f054e88b57cdc21fded94", size = 1666567 }, + { url = "https://files.pythonhosted.org/packages/e0/ab/40dacb15c0c58f7f17686ea67bc186e9f207341691bdb777d1d5ff4671d5/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ddc9337a0fb0e727785ad4f41163cc314376e82b31846d3835673786420ef1", size = 1594959 }, + { url = "https://files.pythonhosted.org/packages/0d/98/d40c2b7c4a5483f9a16ef0adffce279ced3cc44522e84b6ba9e906be5168/aiohttp-3.11.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f414f37b244f2a97e79b98d48c5ff0789a0b4b4609b17d64fa81771ad780e415", size = 1538516 }, + { url = "https://files.pythonhosted.org/packages/cf/10/e0bf3a03524faac45a710daa034e6f1878b24a1fef9c968ac8eb786ae657/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fdb239f47328581e2ec7744ab5911f97afb10752332a6dd3d98e14e429e1a9e7", size = 1529037 }, + { url = "https://files.pythonhosted.org/packages/ad/d6/5ff5282e00e4eb59c857844984cbc5628f933e2320792e19f93aff518f52/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f2c50bad73ed629cc326cc0f75aed8ecfb013f88c5af116f33df556ed47143eb", size = 1546813 }, + { url = "https://files.pythonhosted.org/packages/de/96/f1014f84101f9b9ad2d8acf3cc501426475f7f0cc62308ae5253e2fac9a7/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a8d8f20c39d3fa84d1c28cdb97f3111387e48209e224408e75f29c6f8e0861d", size = 1523852 }, + { url = "https://files.pythonhosted.org/packages/a5/86/ec772c6838dd6bae3229065af671891496ac1834b252f305cee8152584b2/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:106032eaf9e62fd6bc6578c8b9e6dc4f5ed9a5c1c7fb2231010a1b4304393421", size = 1603766 }, + { url = "https://files.pythonhosted.org/packages/84/38/31f85459c9402d409c1499284fc37a96f69afadce3cfac6a1b5ab048cbf1/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b491e42183e8fcc9901d8dcd8ae644ff785590f1727f76ca86e731c61bfe6643", size = 1620647 }, + { url = "https://files.pythonhosted.org/packages/31/2f/54aba0040764dd3d362fb37bd6aae9b3034fcae0b27f51b8a34864e48209/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad8c745ff9460a16b710e58e06a9dec11ebc0d8f4dd82091cefb579844d69868", size = 1559260 }, + { url = "https://files.pythonhosted.org/packages/ca/d2/a05c7dd9e1b6948c1c5d04f1a8bcfd7e131923fa809bb87477d5c76f1517/aiohttp-3.11.18-cp310-cp310-win32.whl", hash = "sha256:8e57da93e24303a883146510a434f0faf2f1e7e659f3041abc4e3fb3f6702a9f", size = 418051 }, + { url = "https://files.pythonhosted.org/packages/39/e2/796a6179e8abe267dfc84614a50291560a989d28acacbc5dab3bcd4cbec4/aiohttp-3.11.18-cp310-cp310-win_amd64.whl", hash = "sha256:cc93a4121d87d9f12739fc8fab0a95f78444e571ed63e40bfc78cd5abe700ac9", size = 442908 }, { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, @@ -126,18 +144,6 @@ 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 = "aiostream" -version = "0.6.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a5/fe/aa14603fcd5cc4333f81791bbdf58cd4cb8677c8e21e3cc691d27c00173f/aiostream-0.6.4.tar.gz", hash = "sha256:f99bc6b1b9cea3e70885dc235a233523597555fe4a585ed21d65264b3f1ff3d2", size = 67983 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/5c/639dc59441df1d5cec49a09c36eb89af651476760f950b7d018bdf0ec4a7/aiostream-0.6.4-py3-none-any.whl", hash = "sha256:bd8c6a8b90a52c0325a3b19406f0f2a131448e596c06398886f5be1c73b4cea9", size = 53665 }, -] - [[package]] name = "annotated-types" version = "0.7.0" @@ -152,6 +158,7 @@ name = "anyio" version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, { name = "typing-extensions", marker = "python_full_version < '3.13'" }, @@ -203,15 +210,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, ] -[[package]] -name = "array-api-compat" -version = "1.11.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/1e/d04312a19a67744298b7546885149488b8afbb965dfe693aa4964bb60586/array_api_compat-1.11.2.tar.gz", hash = "sha256:a3b7f7b6af18f4c42e79423b1b2479798998b6a74355069d77a01a5282755b5d", size = 50776 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d8/3388c7da49f522e51ab2f919797db28782216cadc9ecc9976160302cfcd6/array_api_compat-1.11.2-py3-none-any.whl", hash = "sha256:b1d0059714a4153b3ae37c989e47b07418f727be5b22908dd3cf9d19bdc2c547", size = 53149 }, -] - [[package]] name = "arrow" version = "1.3.0" @@ -238,11 +236,23 @@ wheels = [ name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } wheels = [ { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, ] +[[package]] +name = "async-timeout" +version = "5.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, +] + [[package]] name = "attrs" version = "25.3.0" @@ -297,9 +307,15 @@ dependencies = [ { name = "packaging" }, { name = "pathspec" }, { name = "platformdirs" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } wheels = [ + { url = "https://files.pythonhosted.org/packages/4d/3b/4ba3f93ac8d90410423fdd31d7541ada9bcee1df32fb90d26de41ed40e1d/black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", size = 1629419 }, + { url = "https://files.pythonhosted.org/packages/b4/02/0bde0485146a8a5e694daed47561785e8b77a0466ccc1f3e485d5ef2925e/black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", size = 1461080 }, + { url = "https://files.pythonhosted.org/packages/52/0e/abdf75183c830eaca7589144ff96d49bce73d7ec6ad12ef62185cc0f79a2/black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", size = 1766886 }, + { url = "https://files.pythonhosted.org/packages/dc/a6/97d8bb65b1d8a41f8a6736222ba0a334db7b7b77b8023ab4568288f23973/black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", size = 1419404 }, { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, @@ -401,6 +417,18 @@ dependencies = [ ] 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/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, { 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 }, @@ -452,6 +480,19 @@ version = "3.4.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, + { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, + { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, + { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, + { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, + { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, + { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, + { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, + { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, + { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, + { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, + { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, + { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, @@ -530,15 +571,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, ] -[[package]] -name = "cloudpickle" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, -] - [[package]] name = "colorama" version = "0.4.6" @@ -569,6 +601,16 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551 }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399 }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061 }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956 }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872 }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027 }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641 }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075 }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534 }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188 }, { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, @@ -609,63 +651,14 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 }, { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 }, { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681 }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101 }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599 }, { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, ] -[[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 = "cryptography" version = "44.0.2" @@ -699,6 +692,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, + { url = "https://files.pythonhosted.org/packages/99/10/173be140714d2ebaea8b641ff801cbcb3ef23101a2981cbf08057876f89e/cryptography-44.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:af4ff3e388f2fa7bff9f7f2b31b87d5651c45731d3e8cfa0944be43dff5cfbdb", size = 3396886 }, + { url = "https://files.pythonhosted.org/packages/2f/b4/424ea2d0fce08c24ede307cead3409ecbfc2f566725d4701b9754c0a1174/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0529b1d5a0105dd3731fa65680b45ce49da4d8115ea76e9da77a875396727b41", size = 3892387 }, + { url = "https://files.pythonhosted.org/packages/28/20/8eaa1a4f7c68a1cb15019dbaad59c812d4df4fac6fd5f7b0b9c5177f1edd/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7ca25849404be2f8e4b3c59483d9d3c51298a22c1c61a0e84415104dacaf5562", size = 4109922 }, + { url = "https://files.pythonhosted.org/packages/11/25/5ed9a17d532c32b3bc81cc294d21a36c772d053981c22bd678396bc4ae30/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:268e4e9b177c76d569e8a145a6939eca9a5fec658c932348598818acf31ae9a5", size = 3895715 }, + { url = "https://files.pythonhosted.org/packages/63/31/2aac03b19c6329b62c45ba4e091f9de0b8f687e1b0cd84f101401bece343/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9eb9d22b0a5d8fd9925a7764a054dca914000607dff201a24c791ff5c799e1fa", size = 4109876 }, + { url = "https://files.pythonhosted.org/packages/99/ec/6e560908349843718db1a782673f36852952d52a55ab14e46c42c8a7690a/cryptography-44.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2bf7bf75f7df9715f810d1b038870309342bff3069c5bd8c6b96128cb158668d", size = 3131719 }, { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, @@ -718,44 +717,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, ] -[[package]] -name = "cubed" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiostream" }, - { name = "array-api-compat" }, - { name = "cloudpickle" }, - { name = "donfig" }, - { name = "fsspec" }, - { name = "mypy-extensions" }, - { name = "ndindex" }, - { name = "networkx" }, - { name = "numpy" }, - { name = "psutil" }, - { name = "tenacity" }, - { name = "toolz" }, - { name = "zarr" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/09/3a/f11d45a514b8786349146dc03957a412fd839abac1d3e602b428dd383a39/cubed-0.21.0.tar.gz", hash = "sha256:91a1c2a499f853d963d27750835b75b7bd01fc099bbfbfa65c11e6f963f09705", size = 158280 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/c4/836840cbc87b9087aadc7d83ef53299acd87c4df4451eabddbb741ad5deb/cubed-0.21.0-py3-none-any.whl", hash = "sha256:4ac5144d14498ac8dbbf8e6b8f1c9b3c3be9390137300a49fa3b6698304e141f", size = 202434 }, -] - -[[package]] -name = "cubed-xarray" -version = "0.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cubed" }, - { name = "numpy" }, - { name = "xarray" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/01/3c/b5dd75d70fb05e50771148296c20d415e7f20e1c9d86e90e106677ea4388/cubed-xarray-0.0.7.tar.gz", hash = "sha256:b08a969656c9c05c7168f9eee78911b73d6ab31781c317984b490c8e9d984eac", size = 19906 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/bf/d3e75275497bc0a84f3420c15952dd63beb0b2b6cb9fedbad32a640f0750/cubed_xarray-0.0.7-py3-none-any.whl", hash = "sha256:83aad6439c4ab5b58601f2ef806e45aac64adc43a84ddec21c5507ec13c8af35", size = 16511 }, -] - [[package]] name = "cycler" version = "0.12.1" @@ -771,6 +732,10 @@ version = "1.8.14" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510 }, + { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614 }, + { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588 }, + { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043 }, { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, @@ -825,18 +790,6 @@ 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 = "donfig" -version = "0.8.1.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, -] - [[package]] name = "examples" version = "1.0.2" @@ -849,6 +802,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, ] +[[package]] +name = "exceptiongroup" +version = "1.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, +] + [[package]] name = "executing" version = "2.2.0" @@ -889,6 +851,10 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606 } wheels = [ + { url = "https://files.pythonhosted.org/packages/d0/34/c7e681703db8f8509907ebe6326c5b4fd933f8ae9a7d3ab7a51e507f230e/fiona-1.10.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6e2a94beebda24e5db8c3573fe36110d474d4a12fac0264a3e083c75e9d63829", size = 16143634 }, + { url = "https://files.pythonhosted.org/packages/3c/2c/7f1968ecc17350db3c87d0feb59852ea50e7d8688a63659879d92badf90a/fiona-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc7366f99bdc18ec99441b9e50246fdf5e72923dc9cbb00267b2bf28edd142ba", size = 14750325 }, + { url = "https://files.pythonhosted.org/packages/75/cb/73805030100447d40408c8a0f63ec146fb2b6e82692d0c194655c28b6783/fiona-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c32f424b0641c79f4036b96c2e80322fb181b4e415c8cd02d182baef55e6730", size = 17294868 }, + { url = "https://files.pythonhosted.org/packages/ca/a3/57d33c2f16a2a6b27911d83301a697ed1491dca48d2f1dd2ed3b58a66244/fiona-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:9a67bd88918e87d64168bc9c00d9816d8bb07353594b5ce6c57252979d5dc86e", size = 24480225 }, { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293 }, { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213 }, { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183 }, @@ -909,6 +875,14 @@ version = "4.57.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } wheels = [ + { url = "https://files.pythonhosted.org/packages/db/17/3ddfd1881878b3f856065130bb603f5922e81ae8a4eb53bce0ea78f765a8/fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41", size = 2756260 }, + { url = "https://files.pythonhosted.org/packages/26/2b/6957890c52c030b0bf9e0add53e5badab4682c6ff024fac9a332bb2ae063/fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02", size = 2284691 }, + { url = "https://files.pythonhosted.org/packages/cc/8e/c043b4081774e5eb06a834cedfdb7d432b4935bc8c4acf27207bdc34dfc4/fonttools-4.57.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e9618630edd1910ad4f07f60d77c184b2f572c8ee43305ea3265675cbbfe7e", size = 4566077 }, + { url = "https://files.pythonhosted.org/packages/59/bc/e16ae5d9eee6c70830ce11d1e0b23d6018ddfeb28025fda092cae7889c8b/fonttools-4.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34687a5d21f1d688d7d8d416cb4c5b9c87fca8a1797ec0d74b9fdebfa55c09ab", size = 4608729 }, + { url = "https://files.pythonhosted.org/packages/25/13/e557bf10bb38e4e4c436d3a9627aadf691bc7392ae460910447fda5fad2b/fonttools-4.57.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69ab81b66ebaa8d430ba56c7a5f9abe0183afefd3a2d6e483060343398b13fb1", size = 4759646 }, + { url = "https://files.pythonhosted.org/packages/bc/c9/5e2952214d4a8e31026bf80beb18187199b7001e60e99a6ce19773249124/fonttools-4.57.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d639397de852f2ccfb3134b152c741406752640a266d9c1365b0f23d7b88077f", size = 4941652 }, + { url = "https://files.pythonhosted.org/packages/df/04/e80242b3d9ec91a1f785d949edc277a13ecfdcfae744de4b170df9ed77d8/fonttools-4.57.0-cp310-cp310-win32.whl", hash = "sha256:cc066cb98b912f525ae901a24cd381a656f024f76203bc85f78fcc9e66ae5aec", size = 2159432 }, + { url = "https://files.pythonhosted.org/packages/33/ba/e858cdca275daf16e03c0362aa43734ea71104c3b356b2100b98543dba1b/fonttools-4.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a64edd3ff6a7f711a15bd70b4458611fb240176ec11ad8845ccbab4fe6745db", size = 2203869 }, { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392 }, { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609 }, { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292 }, @@ -951,6 +925,23 @@ version = "1.6.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } wheels = [ + { url = "https://files.pythonhosted.org/packages/44/03/22e4eb297981d48468c3d9982ab6076b10895106d3039302a943bb60fd70/frozenlist-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e6e558ea1e47fd6fa8ac9ccdad403e5dd5ecc6ed8dda94343056fa4277d5c65e", size = 160584 }, + { url = "https://files.pythonhosted.org/packages/2b/b8/c213e35bcf1c20502c6fd491240b08cdd6ceec212ea54873f4cae99a51e4/frozenlist-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4b3cd7334a4bbc0c472164f3744562cb72d05002cc6fcf58adb104630bbc352", size = 124099 }, + { url = "https://files.pythonhosted.org/packages/2b/33/df17b921c2e37b971407b4045deeca6f6de7caf0103c43958da5e1b85e40/frozenlist-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9799257237d0479736e2b4c01ff26b5c7f7694ac9692a426cb717f3dc02fff9b", size = 122106 }, + { url = "https://files.pythonhosted.org/packages/8e/09/93f0293e8a95c05eea7cf9277fef8929fb4d0a2234ad9394cd2a6b6a6bb4/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a7bb0fe1f7a70fb5c6f497dc32619db7d2cdd53164af30ade2f34673f8b1fc", size = 287205 }, + { url = "https://files.pythonhosted.org/packages/5e/34/35612f6f1b1ae0f66a4058599687d8b39352ade8ed329df0890fb553ea1e/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:36d2fc099229f1e4237f563b2a3e0ff7ccebc3999f729067ce4e64a97a7f2869", size = 295079 }, + { url = "https://files.pythonhosted.org/packages/e5/ca/51577ef6cc4ec818aab94a0034ef37808d9017c2e53158fef8834dbb3a07/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f27a9f9a86dcf00708be82359db8de86b80d029814e6693259befe82bb58a106", size = 308068 }, + { url = "https://files.pythonhosted.org/packages/36/27/c63a23863b9dcbd064560f0fea41b516bbbf4d2e8e7eec3ff880a96f0224/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ecee69073312951244f11b8627e3700ec2bfe07ed24e3a685a5979f0412d24", size = 305640 }, + { url = "https://files.pythonhosted.org/packages/33/c2/91720b3562a6073ba604547a417c8d3bf5d33e4c8f1231f3f8ff6719e05c/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2c7d5aa19714b1b01a0f515d078a629e445e667b9da869a3cd0e6fe7dec78bd", size = 278509 }, + { url = "https://files.pythonhosted.org/packages/d0/6e/1b64671ab2fca1ebf32c5b500205724ac14c98b9bc1574b2ef55853f4d71/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69bbd454f0fb23b51cadc9bdba616c9678e4114b6f9fa372d462ff2ed9323ec8", size = 287318 }, + { url = "https://files.pythonhosted.org/packages/66/30/589a8d8395d5ebe22a6b21262a4d32876df822c9a152e9f2919967bb8e1a/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7daa508e75613809c7a57136dec4871a21bca3080b3a8fc347c50b187df4f00c", size = 290923 }, + { url = "https://files.pythonhosted.org/packages/4d/e0/2bd0d2a4a7062b7e4b5aad621697cd3579e5d1c39d99f2833763d91e746d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:89ffdb799154fd4d7b85c56d5fa9d9ad48946619e0eb95755723fffa11022d75", size = 304847 }, + { url = "https://files.pythonhosted.org/packages/70/a0/a1a44204398a4b308c3ee1b7bf3bf56b9dcbcc4e61c890e038721d1498db/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:920b6bd77d209931e4c263223381d63f76828bec574440f29eb497cf3394c249", size = 285580 }, + { url = "https://files.pythonhosted.org/packages/78/ed/3862bc9abe05839a6a5f5bab8b6bbdf0fc9369505cb77cd15b8c8948f6a0/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d3ceb265249fb401702fce3792e6b44c1166b9319737d21495d3611028d95769", size = 304033 }, + { url = "https://files.pythonhosted.org/packages/2c/9c/1c48454a9e1daf810aa6d977626c894b406651ca79d722fce0f13c7424f1/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:52021b528f1571f98a7d4258c58aa8d4b1a96d4f01d00d51f1089f2e0323cb02", size = 307566 }, + { url = "https://files.pythonhosted.org/packages/35/ef/cb43655c21f1bad5c42bcd540095bba6af78bf1e474b19367f6fd67d029d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0f2ca7810b809ed0f1917293050163c7654cefc57a49f337d5cd9de717b8fad3", size = 295354 }, + { url = "https://files.pythonhosted.org/packages/9f/59/d8069a688a0f54a968c73300d6013e4786b029bfec308664094130dcea66/frozenlist-1.6.0-cp310-cp310-win32.whl", hash = "sha256:0e6f8653acb82e15e5443dba415fb62a8732b68fe09936bb6d388c725b57f812", size = 115586 }, + { url = "https://files.pythonhosted.org/packages/f9/a6/8f0cef021912ba7aa3b9920fe0a4557f6e85c41bbf71bb568cd744828df5/frozenlist-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f1a39819a5a3e84304cd286e3dc62a549fe60985415851b3337b6f5cc91907f1", size = 120845 }, { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, @@ -1090,6 +1081,15 @@ version = "3.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } wheels = [ + { url = "https://files.pythonhosted.org/packages/df/3e/6332bb2d1e43ec6270e0b97bf253cd704691ee55e4e52196cb7da8f774e9/greenlet-3.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:777c1281aa7c786738683e302db0f55eb4b0077c20f1dc53db8852ffaea0a6b0", size = 267364 }, + { url = "https://files.pythonhosted.org/packages/73/c1/c47cc96878c4eda993a2deaba15af3cfdc87cf8e2e3c4c20726dea541a8c/greenlet-3.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3059c6f286b53ea4711745146ffe5a5c5ff801f62f6c56949446e0f6461f8157", size = 625721 }, + { url = "https://files.pythonhosted.org/packages/c8/65/df1ff1a505a62b08d31da498ddc0c9992e9c536c01944f8b800a7cf17ac6/greenlet-3.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1a40a17e2c7348f5eee5d8e1b4fa6a937f0587eba89411885a36a8e1fc29bd2", size = 636983 }, + { url = "https://files.pythonhosted.org/packages/e8/1d/29944dcaaf5e482f7bff617de15f29e17cc0e74c7393888f8a43d7f6229e/greenlet-3.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5193135b3a8d0017cb438de0d49e92bf2f6c1c770331d24aa7500866f4db4017", size = 632880 }, + { url = "https://files.pythonhosted.org/packages/e4/c6/6c0891fd775b4fc5613593181526ba282771682dfe7bd0206d283403bcbb/greenlet-3.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639a94d001fe874675b553f28a9d44faed90f9864dc57ba0afef3f8d76a18b04", size = 631638 }, + { url = "https://files.pythonhosted.org/packages/c0/50/3d8cadd4dfab17ef72bf0476cc2dacab368273ed29a79bbe66c36c6007a4/greenlet-3.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fe303381e7e909e42fb23e191fc69659910909fdcd056b92f6473f80ef18543", size = 580577 }, + { url = "https://files.pythonhosted.org/packages/a5/fe/bb0fc421318c69a840e5b98fdeea29d8dcb38f43ffe8b49664aeb10cc3dc/greenlet-3.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:72c9b668454e816b5ece25daac1a42c94d1c116d5401399a11b77ce8d883110c", size = 1109788 }, + { url = "https://files.pythonhosted.org/packages/89/e9/db23a39effaef855deac9083a9054cbe34e1623dcbabed01e34a9d4174c7/greenlet-3.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6079ae990bbf944cf66bea64a09dcb56085815630955109ffa98984810d71565", size = 1133412 }, + { url = "https://files.pythonhosted.org/packages/6a/86/c33905264b43fe4806720f60124254a149857b42c1bf01bd6e136883c99f/greenlet-3.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e63cd2035f49376a23611fbb1643f78f8246e9d4dfd607534ec81b175ce582c2", size = 294958 }, { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609 }, { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776 }, { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827 }, @@ -1225,44 +1225,24 @@ name = "icefabric-manage" version = "0.1.0" source = { editable = "src/icefabric_manage" } dependencies = [ - { name = "cubed-xarray" }, { name = "fiona" }, { name = "geopandas" }, - { name = "matplotlib" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, - { name = "pydantic" }, { name = "pyiceberg", extra = ["sql-sqlite"] }, - { name = "python-dotenv" }, { name = "s3fs" }, - { name = "scikit-learn" }, - { name = "scipy" }, - { name = "sympy" }, - { name = "tqdm" }, - { name = "xarray" }, - { name = "zarr" }, ] [package.metadata] requires-dist = [ - { name = "cubed-xarray", specifier = "==0.0.7" }, { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, - { name = "matplotlib", specifier = "==3.10.0" }, { name = "numpy", specifier = "==2.2.5" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==19.0.1" }, - { name = "pydantic", specifier = "==2.10.6" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, - { name = "python-dotenv", specifier = "==1.1.0" }, { name = "s3fs", specifier = "==2025.3.2" }, - { name = "scikit-learn", specifier = "==1.6.1" }, - { name = "scipy", specifier = "==1.15.1" }, - { name = "sympy", specifier = "==1.13.1" }, - { name = "tqdm", specifier = "==4.67.1" }, - { name = "xarray", specifier = "==2025.3.1" }, - { name = "zarr", specifier = "==3.0.7" }, ] [[package]] @@ -1270,42 +1250,26 @@ name = "icefabric-tools" version = "0.1.0" source = { editable = "src/icefabric_tools" } dependencies = [ - { name = "cubed-xarray" }, { name = "fiona" }, { name = "geopandas" }, { name = "matplotlib" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, - { name = "pydantic" }, { name = "pyiceberg", extra = ["sql-sqlite"] }, { name = "s3fs" }, - { name = "scikit-learn" }, - { name = "scipy" }, - { name = "sympy" }, - { name = "tqdm" }, - { name = "xarray" }, - { name = "zarr" }, ] [package.metadata] requires-dist = [ - { name = "cubed-xarray", specifier = "==0.0.7" }, { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "matplotlib", specifier = "==3.10.0" }, { name = "numpy", specifier = "==2.2.5" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==19.0.1" }, - { name = "pydantic", specifier = "==2.10.6" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, { name = "s3fs", specifier = "==2025.3.2" }, - { name = "scikit-learn", specifier = "==1.6.1" }, - { name = "scipy", specifier = "==1.15.1" }, - { name = "sympy", specifier = "==1.13.1" }, - { name = "tqdm", specifier = "==4.67.1" }, - { name = "xarray", specifier = "==2025.3.1" }, - { name = "zarr", specifier = "==3.0.7" }, ] [[package]] @@ -1343,7 +1307,8 @@ dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, { name = "comm" }, { name = "debugpy" }, - { name = "ipython" }, + { name = "ipython", version = "8.36.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, + { name = "ipython", version = "9.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, @@ -1359,22 +1324,51 @@ 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.36.0" +source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version < '3.11'", +] +dependencies = [ + { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version < '3.11'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "jedi", marker = "python_full_version < '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, + { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, + { name = "pygments", marker = "python_full_version < '3.11'" }, + { name = "stack-data", marker = "python_full_version < '3.11'" }, + { name = "traitlets", marker = "python_full_version < '3.11'" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a2/9f/d9a73710df947b7804bd9d93509463fb3a89e0ddc99c9fcc67279cddbeb6/ipython-8.36.0.tar.gz", hash = "sha256:24658e9fe5c5c819455043235ba59cfffded4a35936eefceceab6b192f7092ff", size = 5604997 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d6/d7/c1c9f371790b3a181e343c4815a361e5a0cc7d90ef6642d64ba5d05de289/ipython-8.36.0-py3-none-any.whl", hash = "sha256:12b913914d010dcffa2711505ec8be4bf0180742d97f1e5175e51f22086428c1", size = 831074 }, +] + [[package]] name = "ipython" version = "9.2.0" source = { registry = "https://pypi.org/simple" } +resolution-markers = [ + "python_full_version >= '3.12'", + "python_full_version == '3.11.*'", +] dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "decorator" }, - { name = "ipython-pygments-lexers" }, - { 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'" }, + { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, + { name = "decorator", marker = "python_full_version >= '3.11'" }, + { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, + { name = "jedi", marker = "python_full_version >= '3.11'" }, + { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, + { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, + { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "stack-data", marker = "python_full_version >= '3.11'" }, + { name = "traitlets", marker = "python_full_version >= '3.11'" }, + { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } wheels = [ @@ -1386,7 +1380,7 @@ name = "ipython-pygments-lexers" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pygments" }, + { name = "pygments", marker = "python_full_version >= '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } wheels = [ @@ -1438,15 +1432,6 @@ 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 = "joblib" -version = "1.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/64/33/60135848598c076ce4b231e1b1895170f45fbcaeaa2c9d5e38b04db70c35/joblib-1.4.2.tar.gz", hash = "sha256:2382c5816b2636fbd20a09e0f4e9dad4736765fdfb7dca582943b9c1366b3f0e", size = 2116621 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/29/df4b9b42f2be0b623cbd5e2140cafcaa2bef0759a00b7b70104dcfe2fb51/joblib-1.4.2-py3-none-any.whl", hash = "sha256:06d478d5674cbc267e7496a410ee875abd68e4340feff4490bcb7afb88060ae6", size = 301817 }, -] - [[package]] name = "json5" version = "0.12.0" @@ -1624,6 +1609,7 @@ dependencies = [ { name = "notebook-shim" }, { name = "packaging" }, { name = "setuptools" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tornado" }, { name = "traitlets" }, ] @@ -1665,6 +1651,21 @@ version = "1.4.8" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } wheels = [ + { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623 }, + { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720 }, + { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826 }, + { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231 }, + { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938 }, + { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799 }, + { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362 }, + { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695 }, + { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802 }, + { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646 }, + { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260 }, + { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633 }, + { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885 }, + { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175 }, { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, @@ -1723,6 +1724,12 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, + { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403 }, + { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657 }, + { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948 }, + { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186 }, + { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279 }, + { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762 }, ] [[package]] @@ -1752,6 +1759,16 @@ 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/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, { 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 }, @@ -1811,6 +1828,12 @@ dependencies = [ ] 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/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551 }, + { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853 }, + { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724 }, + { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905 }, + { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223 }, + { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355 }, { 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 }, @@ -1835,6 +1858,9 @@ wheels = [ { 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 }, + { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500 }, + { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398 }, + { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361 }, ] [[package]] @@ -1871,6 +1897,9 @@ wheels = [ name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } wheels = [ { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, @@ -1991,6 +2020,22 @@ version = "5.1.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095 }, + { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512 }, + { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110 }, + { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151 }, + { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312 }, + { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232 }, + { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663 }, + { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166 }, + { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555 }, + { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813 }, + { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611 }, + { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515 }, + { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177 }, + { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815 }, + { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479 }, + { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883 }, { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, @@ -2041,21 +2086,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/16/71/4ad9a42f2772793a03cb698f0fc42499f04e6e8d2560ba2f7da0fb059a8e/mmh3-5.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:b22fe2e54be81f6c07dcb36b96fa250fb72effe08aa52fbb83eade6e1e2d5fd7", size = 38890 }, ] -[[package]] -name = "mpmath" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e0/47/dd32fa426cc72114383ac549964eecb20ecfd886d1e5ccf5340b55b02f57/mpmath-1.3.0.tar.gz", hash = "sha256:7a28eb2a9774d00c7bc92411c19a89209d5da7c4c9a9e227be8330a23a25b91f", size = 508106 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/e3/7d92a15f894aa0c9c4b49b8ee9ac9850d6e63b03c9c32c0367a13ae62209/mpmath-1.3.0-py3-none-any.whl", hash = "sha256:a0b2b9fe80bbcd81a6647ff13108738cfb482d481d826cc0e02f5b35e5c88d2c", size = 536198 }, -] - [[package]] name = "multidict" version = "6.4.3" source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, +] sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } wheels = [ + { url = "https://files.pythonhosted.org/packages/83/44/45e798d4cd1b5dfe41ddf36266c7aca6d954e3c7a8b0d599ad555ce2b4f8/multidict-6.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32a998bd8a64ca48616eac5a8c1cc4fa38fb244a3facf2eeb14abe186e0f6cc5", size = 65822 }, + { url = "https://files.pythonhosted.org/packages/10/fb/9ea024f928503f8c758f8463759d21958bf27b1f7a1103df73e5022e6a7c/multidict-6.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54ec568f1fc7f3c313c2f3b16e5db346bf3660e1309746e7fccbbfded856188", size = 38706 }, + { url = "https://files.pythonhosted.org/packages/6d/eb/7013316febca37414c0e1469fccadcb1a0e4315488f8f57ca5d29b384863/multidict-6.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a7be07e5df178430621c716a63151165684d3e9958f2bbfcb644246162007ab7", size = 37979 }, + { url = "https://files.pythonhosted.org/packages/64/28/5a7bf4e7422613ea80f9ebc529d3845b20a422cfa94d4355504ac98047ee/multidict-6.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b128dbf1c939674a50dd0b28f12c244d90e5015e751a4f339a96c54f7275e291", size = 220233 }, + { url = "https://files.pythonhosted.org/packages/52/05/b4c58850f71befde6a16548968b48331a155a80627750b150bb5962e4dea/multidict-6.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9cb19dfd83d35b6ff24a4022376ea6e45a2beba8ef3f0836b8a4b288b6ad685", size = 217762 }, + { url = "https://files.pythonhosted.org/packages/99/a3/393e23bba1e9a00f95b3957acd8f5e3ee3446e78c550f593be25f9de0483/multidict-6.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3cf62f8e447ea2c1395afa289b332e49e13d07435369b6f4e41f887db65b40bf", size = 230699 }, + { url = "https://files.pythonhosted.org/packages/9c/a7/52c63069eb1a079f824257bb8045d93e692fa2eb34d08323d1fdbdfc398a/multidict-6.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:909f7d43ff8f13d1adccb6a397094adc369d4da794407f8dd592c51cf0eae4b1", size = 226801 }, + { url = "https://files.pythonhosted.org/packages/2c/e9/40d2b73e7d6574d91074d83477a990e3701affbe8b596010d4f5e6c7a6fa/multidict-6.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb8f8302fbc7122033df959e25777b0b7659b1fd6bcb9cb6bed76b5de67afef", size = 219833 }, + { url = "https://files.pythonhosted.org/packages/e4/6a/0572b22fe63c632254f55a1c1cb7d29f644002b1d8731d6103a290edc754/multidict-6.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:224b79471b4f21169ea25ebc37ed6f058040c578e50ade532e2066562597b8a9", size = 212920 }, + { url = "https://files.pythonhosted.org/packages/33/fe/c63735db9dece0053868b2d808bcc2592a83ce1830bc98243852a2b34d42/multidict-6.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a7bd27f7ab3204f16967a6f899b3e8e9eb3362c0ab91f2ee659e0345445e0078", size = 225263 }, + { url = "https://files.pythonhosted.org/packages/47/c2/2db296d64d41525110c27ed38fadd5eb571c6b936233e75a5ea61b14e337/multidict-6.4.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:99592bd3162e9c664671fd14e578a33bfdba487ea64bcb41d281286d3c870ad7", size = 214249 }, + { url = "https://files.pythonhosted.org/packages/7e/74/8bc26e54c79f9a0f111350b1b28a9cacaaee53ecafccd53c90e59754d55a/multidict-6.4.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a62d78a1c9072949018cdb05d3c533924ef8ac9bcb06cbf96f6d14772c5cd451", size = 221650 }, + { url = "https://files.pythonhosted.org/packages/af/d7/2ce87606e3799d9a08a941f4c170930a9895886ea8bd0eca75c44baeebe3/multidict-6.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ccdde001578347e877ca4f629450973c510e88e8865d5aefbcb89b852ccc666", size = 231235 }, + { url = "https://files.pythonhosted.org/packages/07/e1/d191a7ad3b90c613fc4b130d07a41c380e249767586148709b54d006ca17/multidict-6.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:eccb67b0e78aa2e38a04c5ecc13bab325a43e5159a181a9d1a6723db913cbb3c", size = 226056 }, + { url = "https://files.pythonhosted.org/packages/24/05/a57490cf6a8d5854f4af2d17dfc54924f37fbb683986e133b76710a36079/multidict-6.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8b6fcf6054fc4114a27aa865f8840ef3d675f9316e81868e0ad5866184a6cba5", size = 220014 }, + { url = "https://files.pythonhosted.org/packages/5c/b1/be04fa9f08c684e9e27cca85b4ab94c10f017ec07c4c631af9c8c10bb275/multidict-6.4.3-cp310-cp310-win32.whl", hash = "sha256:f92c7f62d59373cd93bc9969d2da9b4b21f78283b1379ba012f7ee8127b3152e", size = 35042 }, + { url = "https://files.pythonhosted.org/packages/d9/ca/8888f99892513001fa900eef11bafbf38ff3485109510487de009da85748/multidict-6.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:b57e28dbc031d13916b946719f213c494a517b442d7b48b29443e79610acd887", size = 38506 }, { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259 }, { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451 }, { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706 }, @@ -2133,10 +2189,17 @@ version = "1.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } wheels = [ + { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433 }, + { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472 }, + { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424 }, + { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450 }, + { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765 }, + { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701 }, { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, @@ -2222,38 +2285,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, ] -[[package]] -name = "ndindex" -version = "1.9.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2c/f9/f8d491c18f16ffcb1a8abf78345e54879fd1fe6b61dcc8a9b471285cd27e/ndindex-1.9.2.tar.gz", hash = "sha256:b8658a06e52d6c47445c2ec11d292e1d52c3af259214c8b52e3a1aab733daa72", size = 243001 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/6d/f272dbbe0a23575e57773272f02a237b51f4e4f33317bf28b2b8be47ac3d/ndindex-1.9.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1fa2e521a872870d55fa6fa85399f16c1c20bbe4e3e315bbfc80e3ea92561334", size = 163453 }, - { url = "https://files.pythonhosted.org/packages/77/f6/8ff749841f6f8f4096184e8e158e48d572358d4ad0ba1055728e4f7e0f44/ndindex-1.9.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6b0ef52d15fa8755d00a6868c799ff4227f1f453901a6f4de395586f9a435b7a", size = 161947 }, - { url = "https://files.pythonhosted.org/packages/51/2d/bfc284ecc9b24acb916f5d04a69357ae56e0b6073286eaa71cf54bf0b136/ndindex-1.9.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f647eda61cae68a260017118ad8daac4d580ad221ff922bbaa1526e30e350feb", size = 506119 }, - { url = "https://files.pythonhosted.org/packages/5d/6b/83e328c3dc41ff244d7e79cd24ac62fff96405a3ea948810b2fa883c14f5/ndindex-1.9.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:384520b4d9f52cb2fd1d324e6f278ec422b2cc2885e95a00587394bf6f56a798", size = 485492 }, - { url = "https://files.pythonhosted.org/packages/87/f4/8a3a3c0d541d96a6cd39026a1211647d0fcbf047f8bac4332e4b95f54e8b/ndindex-1.9.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e2dd75a6e25269b66607f1722acd72e8f086837b2c58275d31b3bdfdf8a095bf", size = 489557 }, - { url = "https://files.pythonhosted.org/packages/0f/5c/5e96422400fad72762e85e3cc3a4bd52b11476b990c4e7df25836e8e9c0c/ndindex-1.9.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:8634be005b18034846163067bce78a0209fab65e4bc77e0bc333aa160ef12b7a", size = 506268 }, - { url = "https://files.pythonhosted.org/packages/f8/8b/5948067de44c5484aa8a4db640b8b5dc5cc9b394e9f547a23fd694edf399/ndindex-1.9.2-cp311-cp311-win32.whl", hash = "sha256:89172e90e56a409197cbbe12a49aa16c83879274ca4f61fd8a03b30c6c90e3ca", size = 151566 }, - { url = "https://files.pythonhosted.org/packages/b0/f6/b2fde7ec7880d51f7280bb5e974e400bb716e3054048c409ba35ba509823/ndindex-1.9.2-cp311-cp311-win_amd64.whl", hash = "sha256:d23f07831d28bb3c04c234936b6038078cd7c0c4966d2e2e37738edad6435f9f", size = 159516 }, - { url = "https://files.pythonhosted.org/packages/a3/a5/c3775c1a7279517027b86dc0c1a6a74f9a1fc7e0c298c960ed170fcf585e/ndindex-1.9.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:466d2e30a3c2afac6dac64e5ada19db30d23164befa7f69d29f209fb512b3d2f", size = 164104 }, - { url = "https://files.pythonhosted.org/packages/de/81/edb7ba51dae8d5a2879d39eb56651eeea4927f8292fc6286fae8b1cda0f1/ndindex-1.9.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3e87eefa75af0f974cf2c5af14a488ee97dfdc7fb6da67f19f9dc600da5ae041", size = 161991 }, - { url = "https://files.pythonhosted.org/packages/f2/9e/79342047dd441fdcf25c776370c2b09ef8fad30bf06d7920b09278d93260/ndindex-1.9.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9d98a41ff276fc623f3e068d40381ee06289644b530c3535bc00a8cbc5526c6", size = 521201 }, - { url = "https://files.pythonhosted.org/packages/fc/bd/834e4bb7054accc8bbf63c73f7c9f0bcbdc326fec0f560f375dd6637c63a/ndindex-1.9.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:05d42c5cd86d923f1606c3a9defbaeb3ece8f7b444f95a46ec6f1fb511e971f7", size = 498251 }, - { url = "https://files.pythonhosted.org/packages/35/1b/fe4d51e07f18596abd53b3b63dd1d4a8617af3896193418a86b7a7a95fa7/ndindex-1.9.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:959f8babfc3055933079296a33449e02c24074027c39ce974cf73757c7d5ea21", size = 501804 }, - { url = "https://files.pythonhosted.org/packages/ae/e5/95d5dd5a628c41db959e07ddc7212ed45844865d10375efe4fc0aa5c905b/ndindex-1.9.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:d68d8285f3ab8a78b0db990fb25eddc637df4b00467fbf36a4656c7ee46ddc5d", size = 518095 }, - { url = "https://files.pythonhosted.org/packages/bc/49/ca6155435bb408173c3d07f07aac6e6c4a30cefec31c4dd2af75c44774d7/ndindex-1.9.2-cp312-cp312-win32.whl", hash = "sha256:c87aa8218b6eaaa9eacb2f68f1ce71be0e368280ef926d0ed9ad71d2fbe24fe6", size = 151487 }, - { url = "https://files.pythonhosted.org/packages/01/e3/c87442ba34a76e3d778135e967b625e5bb2217773a8c0be751e1537231b7/ndindex-1.9.2-cp312-cp312-win_amd64.whl", hash = "sha256:d15f3a8566910ec25898e3d77b3b7c258b37f84a235d49cb17dfddc9036127b4", size = 159655 }, - { url = "https://files.pythonhosted.org/packages/88/41/250efa5a033b66043d18eca87d044f733ca017bd12767ddf0b9468120bb1/ndindex-1.9.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a33452b4a7b8510f809f8b59dbac5b1d7b3d8a68c9e42dee2c28c5131bbbfbc6", size = 162133 }, - { url = "https://files.pythonhosted.org/packages/b0/df/87f329590e807460cbd4cea47aaaadea9a5cf5e70854712eb89489d03c89/ndindex-1.9.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:19d70a304f942c0aee89418d9c487de9c2dcfcda9073976a590c7fed587bd674", size = 160045 }, - { url = "https://files.pythonhosted.org/packages/4e/e3/407f31902bfdd6d991e8ce62307877afc23e39b8a7c93fd17ab8316a5415/ndindex-1.9.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e0bba0f387d1d8204378e82b886c19f46ae39347ee7113c9028317270c0060be", size = 505012 }, - { url = "https://files.pythonhosted.org/packages/91/dc/4e335d8631939f267be7b16308246671c02123e28f693f544076dda8615b/ndindex-1.9.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1876dcd82d6d1cbc9c2e6819bc7a5ca3686a5430f0a07520b94f78ff78097d2d", size = 484122 }, - { url = "https://files.pythonhosted.org/packages/c0/ed/007faa12149a21893ec64f0dcab36c70a4cd43825dcd11bd7090ef8d1c29/ndindex-1.9.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3c564768ffa7228d1768eb6df1a77d03d39efc9c98746d8c1b511ffcc23d5f9f", size = 486035 }, - { url = "https://files.pythonhosted.org/packages/2c/81/67d8a37aca8997d8e93554f3c39bca200a16685e84e03e2cc84cf0c93276/ndindex-1.9.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:ddbdfee4560c3f7823de88257680c8fd6d0220a7b23bfd27b0f3fc7afa27bee1", size = 500916 }, - { url = "https://files.pythonhosted.org/packages/6e/ff/277768997fa82a865ff564a6bd91bb42f574662945e58b26c0eb3d690aba/ndindex-1.9.2-cp313-cp313-win32.whl", hash = "sha256:6274886f1348128fc4e10aef925272f904ac467175af52338d56f1cb763caf1a", size = 150906 }, - { url = "https://files.pythonhosted.org/packages/3c/4d/e121d109bf6f71bcb00c6198549152fa16358a031796c6a7aa9662191529/ndindex-1.9.2-cp313-cp313-win_amd64.whl", hash = "sha256:98be658c00ec0827e398b0fe5c13d207ff70b027187d728cb22155cce3bf6fbe", size = 158778 }, -] - [[package]] name = "nest-asyncio" version = "1.6.0" @@ -2263,15 +2294,6 @@ 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" @@ -2293,44 +2315,22 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, ] -[[package]] -name = "numcodecs" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bd/3d/54b07213c1c3b489f3be23e11f4d2c81d2e682852fc93b2bf37d5efd5664/numcodecs-0.16.0.tar.gz", hash = "sha256:f71229a951c4991ab226df4147f3780c988d1cecf1309e388d9e57bcba827387", size = 6268216 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/62/7c5153d09bc73055fc70380eb0caf168b3a1ed92fca8d8c9b3c7004586e6/numcodecs-0.16.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:fc95417135c90a353df219c47386dd30f11003ae673a006c869ddb0264430976", size = 1640160 }, - { url = "https://files.pythonhosted.org/packages/a7/23/fc64c96ec80221f235ca6b2e9fd90da75f6129e4444e2a44881a8dc96338/numcodecs-0.16.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:27aab34e2fc4c3d2f4d504d9f5de154a822657f1950d1ed21801a0780e442a89", size = 1174884 }, - { url = "https://files.pythonhosted.org/packages/da/df/f3252143587dab354bd279fd60b69dd11a0cdbba6dcc08a2feefa12ca210/numcodecs-0.16.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9924e52cae325faef4b2642f8cc1b88f79c71d97dea028357d7cc5be51f183ad", size = 8255074 }, - { url = "https://files.pythonhosted.org/packages/a9/1b/ca2684a58de6ba981d549d70c814fa56ddfdd9ed20796daa3365493bf552/numcodecs-0.16.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d7bab983b6eca0803ba678cb1cf00c6d7dfb095ff3041671ff7286555da3c016", size = 8803112 }, - { url = "https://files.pythonhosted.org/packages/bd/ee/34d119420bd807d96f13d701ced7bc515af493ff1f4fc2b114d827c36b68/numcodecs-0.16.0-cp311-cp311-win_amd64.whl", hash = "sha256:6f2d0e3b7020cf564eca9b442fa136337a71b0cdb1d67467903cde0bf4cf7a4d", size = 818574 }, - { url = "https://files.pythonhosted.org/packages/aa/80/5574105bb739c13a7e95d8f0a0eeea90a2170e4af8cf2616baf3fc1694cb/numcodecs-0.16.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:8f8c39fa0faf5c9f57270c6fd2dcbfe0549250483b80449cf97dd82eacaf627b", size = 1676208 }, - { url = "https://files.pythonhosted.org/packages/93/bf/c7b26ae2650e82d0e565c3d18134a63631244a6f0014056433cae2cbea90/numcodecs-0.16.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:357360c14783b954065619da47f0e968bfbafb4c4914348864a6223f88428256", size = 1178856 }, - { url = "https://files.pythonhosted.org/packages/71/43/6f734e2c0c1f313b2e47c9833279e2b87dfc7c7c623e089f9297a6e0ca41/numcodecs-0.16.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3f4895e6fffe3abcfbec476c7fda59d3255ac5d40d9c3e292cd6a204e75ba9c0", size = 8236239 }, - { url = "https://files.pythonhosted.org/packages/e1/12/fdf9e90a6e6e30f1dafb26da0a96ed2a0db0fafd499dfa0a11f64e830ec5/numcodecs-0.16.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:83b85cd0a6be21faba23b0d2d6c7ce4c1a48b5a523edf3bef4dee04aaba74a56", size = 8798365 }, - { url = "https://files.pythonhosted.org/packages/71/1f/8ed7a822c17dd17d63bbb70f74e09a033c9d9a1a85a06ec4a0a29f3e4d1c/numcodecs-0.16.0-cp312-cp312-win_amd64.whl", hash = "sha256:9c28660642466ad6d1e2d5c6fab08c70ff58197cc94f7517e79088142b8f7731", size = 816025 }, - { url = "https://files.pythonhosted.org/packages/e6/81/eaf0eb5f60123840e31081ed4226d326eb035d0284e49596331b9f76995f/numcodecs-0.16.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:a28f3f2c1aab21417bec52932d453eedb8323a07088be72edc2a440426d823ae", size = 1672497 }, - { url = "https://files.pythonhosted.org/packages/da/b8/e15f3dc5c5763efbfceed34100bc045d397dc02f277bc128845ac2e751f2/numcodecs-0.16.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f5203b86e57bc6d0dad8f0719f10404fcadeabb5f112205d4e926075a4e1388", size = 1170472 }, - { url = "https://files.pythonhosted.org/packages/e3/16/773ae1edb0e63e16c539a06b30d3d117fa0de475400576da2b0cfa682831/numcodecs-0.16.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:881b1650938feb395b7157fd46bde683aa6cfde0616a31fe47972f1d0ea8ba37", size = 8188333 }, - { url = "https://files.pythonhosted.org/packages/25/df/6cbdd9842f9da811367773bdcbc12b196aaf4ad84bf3395b366931b32130/numcodecs-0.16.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271d07bfa230e02dec7ba93d5776b5032aecf1d4c20d52a93858e957d44ae722", size = 8752531 }, - { url = "https://files.pythonhosted.org/packages/52/e7/a8df8fc7e7ee574a66ca706916e486448c1f1f90cc3dcc660b3d6d846e72/numcodecs-0.16.0-cp313-cp313-win_amd64.whl", hash = "sha256:7e6f501d7ac78107d80a2f4798e81b38584929cab1d2c7c03789610b9a39826a", size = 811488 }, -] - -[package.optional-dependencies] -crc32c = [ - { name = "crc32c" }, -] - [[package]] name = "numpy" version = "2.2.5" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 } wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/4e/3d9e6d16237c2aa5485695f0626cbba82f6481efca2e9132368dea3b885e/numpy-2.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f4a922da1729f4c40932b2af4fe84909c7a6e167e6e99f71838ce3a29f3fe26", size = 21252117 }, + { url = "https://files.pythonhosted.org/packages/38/e4/db91349d4079cd15c02ff3b4b8882a529991d6aca077db198a2f2a670406/numpy-2.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6f91524d31b34f4a5fee24f5bc16dcd1491b668798b6d85585d836c1e633a6a", size = 14424615 }, + { url = "https://files.pythonhosted.org/packages/f8/59/6e5b011f553c37b008bd115c7ba7106a18f372588fbb1b430b7a5d2c41ce/numpy-2.2.5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:19f4718c9012e3baea91a7dba661dcab2451cda2550678dc30d53acb91a7290f", size = 5428691 }, + { url = "https://files.pythonhosted.org/packages/a2/58/d5d70ebdac82b3a6ddf409b3749ca5786636e50fd64d60edb46442af6838/numpy-2.2.5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:eb7fd5b184e5d277afa9ec0ad5e4eb562ecff541e7f60e69ee69c8d59e9aeaba", size = 6965010 }, + { url = "https://files.pythonhosted.org/packages/dc/a8/c290394be346d4e7b48a40baf292626fd96ec56a6398ace4c25d9079bc6a/numpy-2.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6413d48a9be53e183eb06495d8e3b006ef8f87c324af68241bbe7a39e8ff54c3", size = 14369885 }, + { url = "https://files.pythonhosted.org/packages/c2/70/fed13c70aabe7049368553e81d7ca40f305f305800a007a956d7cd2e5476/numpy-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7451f92eddf8503c9b8aa4fe6aa7e87fd51a29c2cfc5f7dbd72efde6c65acf57", size = 16418372 }, + { url = "https://files.pythonhosted.org/packages/04/ab/c3c14f25ddaecd6fc58a34858f6a93a21eea6c266ba162fa99f3d0de12ac/numpy-2.2.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0bcb1d057b7571334139129b7f941588f69ce7c4ed15a9d6162b2ea54ded700c", size = 15883173 }, + { url = "https://files.pythonhosted.org/packages/50/18/f53710a19042911c7aca824afe97c203728a34b8cf123e2d94621a12edc3/numpy-2.2.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36ab5b23915887543441efd0417e6a3baa08634308894316f446027611b53bf1", size = 18206881 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/5b407bab82f10c65af5a5fe754728df03f960fd44d27c036b61f7b3ef255/numpy-2.2.5-cp310-cp310-win32.whl", hash = "sha256:422cc684f17bc963da5f59a31530b3936f57c95a29743056ef7a7903a5dbdf88", size = 6609852 }, + { url = "https://files.pythonhosted.org/packages/b6/f5/467ca8675c7e6c567f571d8db942cc10a87588bd9e20a909d8af4171edda/numpy-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:e4f0b035d9d0ed519c813ee23e0a733db81ec37d2e9503afbb6e54ccfdee0fa7", size = 12944922 }, { url = "https://files.pythonhosted.org/packages/f5/fb/e4e4c254ba40e8f0c78218f9e86304628c75b6900509b601c8433bdb5da7/numpy-2.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c42365005c7a6c42436a54d28c43fe0e01ca11eb2ac3cefe796c25a5f98e5e9b", size = 21256475 }, { url = "https://files.pythonhosted.org/packages/81/32/dd1f7084f5c10b2caad778258fdaeedd7fbd8afcd2510672811e6138dfac/numpy-2.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:498815b96f67dc347e03b719ef49c772589fb74b8ee9ea2c37feae915ad6ebda", size = 14461474 }, { url = "https://files.pythonhosted.org/packages/0e/65/937cdf238ef6ac54ff749c0f66d9ee2b03646034c205cea9b6c51f2f3ad1/numpy-2.2.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6411f744f7f20081b1b4e7112e0f4c9c5b08f94b9f086e6f0adf3645f85d3a4d", size = 5426875 }, @@ -2371,6 +2371,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 }, { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 }, { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 }, + { url = "https://files.pythonhosted.org/packages/35/e4/5ef5ef1d4308f96961198b2323bfc7c7afb0ccc0d623b01c79bc87ab496d/numpy-2.2.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b4ea7e1cff6784e58fe281ce7e7f05036b3e1c89c6f922a6bfbc0a7e8768adbe", size = 21083404 }, + { url = "https://files.pythonhosted.org/packages/a3/5f/bde9238e8e977652a16a4b114ed8aa8bb093d718c706eeecb5f7bfa59572/numpy-2.2.5-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d7543263084a85fbc09c704b515395398d31d6395518446237eac219eab9e55e", size = 6828578 }, + { url = "https://files.pythonhosted.org/packages/ef/7f/813f51ed86e559ab2afb6a6f33aa6baf8a560097e25e4882a938986c76c2/numpy-2.2.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0255732338c4fdd00996c0421884ea8a3651eea555c3a56b84892b66f696eb70", size = 16234796 }, + { url = "https://files.pythonhosted.org/packages/68/67/1175790323026d3337cc285cc9c50eca637d70472b5e622529df74bb8f37/numpy-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d2e3bdadaba0e040d1e7ab39db73e0afe2c74ae277f5614dad53eadbecbbb169", size = 12859001 }, ] [[package]] @@ -2412,6 +2416,13 @@ dependencies = [ ] 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/aa/70/c853aec59839bceed032d52010ff5f1b8d87dc3114b762e4ba2727661a3b/pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5", size = 12580827 }, + { url = "https://files.pythonhosted.org/packages/99/f2/c4527768739ffa4469b2b4fff05aa3768a478aed89a2f271a79a40eee984/pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348", size = 11303897 }, + { url = "https://files.pythonhosted.org/packages/ed/12/86c1747ea27989d7a4064f806ce2bae2c6d575b950be087837bdfcabacc9/pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed", size = 66480908 }, + { url = "https://files.pythonhosted.org/packages/44/50/7db2cd5e6373ae796f0ddad3675268c8d59fb6076e66f0c339d61cea886b/pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57", size = 13064210 }, + { url = "https://files.pythonhosted.org/packages/61/61/a89015a6d5536cb0d6c3ba02cebed51a95538cf83472975275e28ebf7d0c/pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42", size = 16754292 }, + { url = "https://files.pythonhosted.org/packages/ce/0d/4cc7b69ce37fac07645a94e1d4b0880b15999494372c1523508511b09e40/pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f", size = 14416379 }, + { url = "https://files.pythonhosted.org/packages/31/9e/6ebb433de864a6cd45716af52a4d7a8c3c9aaf3a98368e61db9e69e69a9c/pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645", size = 11598471 }, { 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 }, @@ -2486,6 +2497,17 @@ version = "11.2.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442 }, + { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553 }, + { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503 }, + { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648 }, + { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937 }, + { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802 }, + { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717 }, + { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874 }, + { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717 }, + { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204 }, + { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767 }, { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, @@ -2530,6 +2552,13 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774 }, { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895 }, { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234 }, + { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727 }, + { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833 }, + { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472 }, + { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976 }, + { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133 }, + { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555 }, + { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713 }, { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, @@ -2600,6 +2629,22 @@ version = "0.3.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } wheels = [ + { url = "https://files.pythonhosted.org/packages/20/56/e27c136101addf877c8291dbda1b3b86ae848f3837ce758510a0d806c92f/propcache-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f27785888d2fdd918bc36de8b8739f2d6c791399552333721b58193f68ea3e98", size = 80224 }, + { url = "https://files.pythonhosted.org/packages/63/bd/88e98836544c4f04db97eefd23b037c2002fa173dd2772301c61cd3085f9/propcache-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4e89cde74154c7b5957f87a355bb9c8ec929c167b59c83d90654ea36aeb6180", size = 46491 }, + { url = "https://files.pythonhosted.org/packages/15/43/0b8eb2a55753c4a574fc0899885da504b521068d3b08ca56774cad0bea2b/propcache-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:730178f476ef03d3d4d255f0c9fa186cb1d13fd33ffe89d39f2cda4da90ceb71", size = 45927 }, + { url = "https://files.pythonhosted.org/packages/ad/6c/d01f9dfbbdc613305e0a831016844987a1fb4861dd221cd4c69b1216b43f/propcache-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967a8eec513dbe08330f10137eacb427b2ca52118769e82ebcfcab0fba92a649", size = 206135 }, + { url = "https://files.pythonhosted.org/packages/9a/8a/e6e1c77394088f4cfdace4a91a7328e398ebed745d59c2f6764135c5342d/propcache-0.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b9145c35cc87313b5fd480144f8078716007656093d23059e8993d3a8fa730f", size = 220517 }, + { url = "https://files.pythonhosted.org/packages/19/3b/6c44fa59d6418f4239d5db8b1ece757351e85d6f3ca126dfe37d427020c8/propcache-0.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e64e948ab41411958670f1093c0a57acfdc3bee5cf5b935671bbd5313bcf229", size = 218952 }, + { url = "https://files.pythonhosted.org/packages/7c/e4/4aeb95a1cd085e0558ab0de95abfc5187329616193a1012a6c4c930e9f7a/propcache-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:319fa8765bfd6a265e5fa661547556da381e53274bc05094fc9ea50da51bfd46", size = 206593 }, + { url = "https://files.pythonhosted.org/packages/da/6a/29fa75de1cbbb302f1e1d684009b969976ca603ee162282ae702287b6621/propcache-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66d8ccbc902ad548312b96ed8d5d266d0d2c6d006fd0f66323e9d8f2dd49be7", size = 196745 }, + { url = "https://files.pythonhosted.org/packages/19/7e/2237dad1dbffdd2162de470599fa1a1d55df493b16b71e5d25a0ac1c1543/propcache-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2d219b0dbabe75e15e581fc1ae796109b07c8ba7d25b9ae8d650da582bed01b0", size = 203369 }, + { url = "https://files.pythonhosted.org/packages/a4/bc/a82c5878eb3afb5c88da86e2cf06e1fe78b7875b26198dbb70fe50a010dc/propcache-0.3.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:cd6a55f65241c551eb53f8cf4d2f4af33512c39da5d9777694e9d9c60872f519", size = 198723 }, + { url = "https://files.pythonhosted.org/packages/17/76/9632254479c55516f51644ddbf747a45f813031af5adcb8db91c0b824375/propcache-0.3.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9979643ffc69b799d50d3a7b72b5164a2e97e117009d7af6dfdd2ab906cb72cd", size = 200751 }, + { url = "https://files.pythonhosted.org/packages/3e/c3/a90b773cf639bd01d12a9e20c95be0ae978a5a8abe6d2d343900ae76cd71/propcache-0.3.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf9e93a81979f1424f1a3d155213dc928f1069d697e4353edb8a5eba67c6259", size = 210730 }, + { url = "https://files.pythonhosted.org/packages/ed/ec/ad5a952cdb9d65c351f88db7c46957edd3d65ffeee72a2f18bd6341433e0/propcache-0.3.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2fce1df66915909ff6c824bbb5eb403d2d15f98f1518e583074671a30fe0c21e", size = 213499 }, + { url = "https://files.pythonhosted.org/packages/83/c0/ea5133dda43e298cd2010ec05c2821b391e10980e64ee72c0a76cdbb813a/propcache-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4d0dfdd9a2ebc77b869a0b04423591ea8823f791293b527dc1bb896c1d6f1136", size = 207132 }, + { url = "https://files.pythonhosted.org/packages/79/dd/71aae9dec59333064cfdd7eb31a63fa09f64181b979802a67a90b2abfcba/propcache-0.3.1-cp310-cp310-win32.whl", hash = "sha256:1f6cc0ad7b4560e5637eb2c994e97b4fa41ba8226069c9277eb5ea7101845b42", size = 40952 }, + { url = "https://files.pythonhosted.org/packages/31/0a/49ff7e5056c17dfba62cbdcbb90a29daffd199c52f8e65e5cb09d5f53a57/propcache-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:47ef24aa6511e388e9894ec16f0fbf3313a53ee68402bc428744a367ec55b833", size = 45163 }, { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, @@ -2706,6 +2751,13 @@ version = "19.0.1" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437 } wheels = [ + { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914 }, + { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866 }, + { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682 }, + { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192 }, + { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272 }, + { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036 }, + { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951 }, { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987 }, { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613 }, { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147 }, @@ -2767,6 +2819,19 @@ dependencies = [ ] 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/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, { 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 }, @@ -2809,6 +2874,15 @@ wheels = [ { 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 }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, ] [[package]] @@ -2856,6 +2930,11 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } wheels = [ + { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475 }, + { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645 }, + { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989 }, + { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664 }, + { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952 }, { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, @@ -2866,6 +2945,10 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, + { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638 }, + { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812 }, + { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349 }, + { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880 }, ] [package.optional-dependencies] @@ -2931,6 +3014,12 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950 } wheels = [ + { url = "https://files.pythonhosted.org/packages/41/ea/cba24d241858a72b58d8fcd0ad2276f9631fd4528b3062157637e43581eb/pyogrio-0.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:046eeeae12a03a3ebc3dc5ff5a87664e4f5fc0a4fb1ea5d5c45d547fa941072b", size = 15083657 }, + { url = "https://files.pythonhosted.org/packages/90/f8/a58795a2aee415c612aac8b425681d932b8983330884207fd1915d234d36/pyogrio-0.10.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:44380f4d9245c776f432526e29ce4d29238aea26adad991803c4f453474f51d3", size = 16457115 }, + { url = "https://files.pythonhosted.org/packages/45/86/74c37e3d4d000bdcd91b25929fe4abc5ad6d93d5f5fbc59a4c7d4f0ed982/pyogrio-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fd3b72b4e2dc59e264607b265c742b0c5ec2ea9e748b115f742381b28dd373", size = 23721911 }, + { url = "https://files.pythonhosted.org/packages/a6/07/35e4127a878ecdcbaaf46f0f2d068b385a454b5b0cab44ea901adc5888a0/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1fea7892f4633cab04d13563e47ec2e87dc2b5cd71b9546018d123184528c151", size = 22941003 }, + { url = "https://files.pythonhosted.org/packages/56/8b/67187ae03dce5cd6f5c5a2f41c405e77059f4cf498e0817b69cec094f022/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3539596a76eb8a9d166d6f9d3f36731a8c5bd5c43901209d89dc66b9dc00f079", size = 23861913 }, + { url = "https://files.pythonhosted.org/packages/75/ca/b31083da2e6c4b598b6609a98c655977189fe8982c36d98ea4789a938045/pyogrio-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:eac90b2501656892c63bc500c12e71f3dbf7d66ddc5a7fb05cd480d25d1b7022", size = 16171065 }, { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526 }, { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867 }, { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332 }, @@ -2969,6 +3058,14 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } wheels = [ + { url = "https://files.pythonhosted.org/packages/25/a3/c4cd4bba5b336075f145fe784fcaf4ef56ffbc979833303303e7a659dda2/pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e", size = 6262524 }, + { url = "https://files.pythonhosted.org/packages/40/45/4fdf18f4cc1995f1992771d2a51cf186a9d7a8ec973c9693f8453850c707/pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169", size = 4665102 }, + { url = "https://files.pythonhosted.org/packages/0c/d2/360eb127380106cee83569954ae696b88a891c804d7a93abe3fbc15f5976/pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b", size = 9432667 }, + { url = "https://files.pythonhosted.org/packages/76/a5/c6e11b9a99ce146741fb4d184d5c468446c6d6015b183cae82ac822a6cfa/pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee", size = 9259185 }, + { url = "https://files.pythonhosted.org/packages/41/56/a3c15c42145797a99363fa0fdb4e9805dccb8b4a76a6d7b2cdf36ebcc2a1/pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d", size = 10469103 }, + { url = "https://files.pythonhosted.org/packages/ef/73/c9194c2802fefe2a4fd4230bdd5ab083e7604e93c64d0356fa49c363bad6/pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb", size = 10401391 }, + { url = "https://files.pythonhosted.org/packages/c5/1d/ce8bb5b9251b04d7c22d63619bb3db3d2397f79000a9ae05b3fd86a5837e/pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158", size = 5869997 }, + { url = "https://files.pythonhosted.org/packages/09/6a/ca145467fd2e5b21e3d5b8c2b9645dcfb3b68f08b62417699a1f5689008e/pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3", size = 6278581 }, { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, @@ -3001,9 +3098,11 @@ version = "8.3.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ @@ -3022,15 +3121,6 @@ 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-dotenv" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, -] - [[package]] name = "python-json-logger" version = "3.3.0" @@ -3054,6 +3144,9 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ + { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240 }, + { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854 }, + { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963 }, { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, @@ -3071,6 +3164,7 @@ version = "2.0.15" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161 }, { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020 }, @@ -3083,6 +3177,15 @@ 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/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, { 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 }, @@ -3133,6 +3236,17 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } wheels = [ + { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238 }, + { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848 }, + { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299 }, + { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920 }, + { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514 }, + { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494 }, + { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525 }, + { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659 }, + { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348 }, + { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838 }, + { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565 }, { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, @@ -3174,6 +3288,11 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183 }, { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501 }, { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540 }, + { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408 }, + { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580 }, + { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250 }, + { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758 }, + { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371 }, { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, @@ -3238,6 +3357,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, + { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } wheels = [ @@ -3250,6 +3370,19 @@ version = "0.24.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/21/cbc43b220c9deb536b07fbd598c97d463bbb7afb788851891252fc920742/rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724", size = 377531 }, + { url = "https://files.pythonhosted.org/packages/42/15/cc4b09ef160483e49c3aab3b56f3d375eadf19c87c48718fb0147e86a446/rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b", size = 362273 }, + { url = "https://files.pythonhosted.org/packages/8c/a2/67718a188a88dbd5138d959bed6efe1cc7413a4caa8283bd46477ed0d1ad/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8acd55bd5b071156bae57b555f5d33697998752673b9de554dd82f5b5352727", size = 388111 }, + { url = "https://files.pythonhosted.org/packages/e5/e6/cbf1d3163405ad5f4a1a6d23f80245f2204d0c743b18525f34982dec7f4d/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7e80d375134ddb04231a53800503752093dbb65dad8dabacce2c84cccc78e964", size = 394447 }, + { url = "https://files.pythonhosted.org/packages/21/bb/4fe220ccc8a549b38b9e9cec66212dc3385a82a5ee9e37b54411cce4c898/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60748789e028d2a46fc1c70750454f83c6bdd0d05db50f5ae83e2db500b34da5", size = 448028 }, + { url = "https://files.pythonhosted.org/packages/a5/41/d2d6e0fd774818c4cadb94185d30cf3768de1c2a9e0143fc8bc6ce59389e/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1daf5bf6c2be39654beae83ee6b9a12347cb5aced9a29eecf12a2d25fff664", size = 447410 }, + { url = "https://files.pythonhosted.org/packages/a7/a7/6d04d438f53d8bb2356bb000bea9cf5c96a9315e405b577117e344cc7404/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b221c2457d92a1fb3c97bee9095c874144d196f47c038462ae6e4a14436f7bc", size = 389531 }, + { url = "https://files.pythonhosted.org/packages/23/be/72e6df39bd7ca5a66799762bf54d8e702483fdad246585af96723109d486/rpds_py-0.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66420986c9afff67ef0c5d1e4cdc2d0e5262f53ad11e4f90e5e22448df485bf0", size = 420099 }, + { url = "https://files.pythonhosted.org/packages/8c/c9/ca100cd4688ee0aa266197a5cb9f685231676dd7d573041ca53787b23f4e/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:43dba99f00f1d37b2a0265a259592d05fcc8e7c19d140fe51c6e6f16faabeb1f", size = 564950 }, + { url = "https://files.pythonhosted.org/packages/05/98/908cd95686d33b3ac8ac2e582d7ae38e2c3aa2c0377bf1f5663bafd1ffb2/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a88c0d17d039333a41d9bf4616bd062f0bd7aa0edeb6cafe00a2fc2a804e944f", size = 591778 }, + { url = "https://files.pythonhosted.org/packages/7b/ac/e143726f1dd3215efcb974b50b03bd08a8a1556b404a0a7872af6d197e57/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc31e13ce212e14a539d430428cd365e74f8b2d534f8bc22dd4c9c55b277b875", size = 560421 }, + { url = "https://files.pythonhosted.org/packages/60/28/add1c1d2fcd5aa354f7225d036d4492261759a22d449cff14841ef36a514/rpds_py-0.24.0-cp310-cp310-win32.whl", hash = "sha256:fc2c1e1b00f88317d9de6b2c2b39b012ebbfe35fe5e7bef980fd2a91f6100a07", size = 222089 }, + { url = "https://files.pythonhosted.org/packages/b0/ac/81f8066c6de44c507caca488ba336ae30d35d57f61fe10578824d1a70196/rpds_py-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0145295ca415668420ad142ee42189f78d27af806fcf1f32a18e51d47dd2052", size = 234622 }, { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679 }, { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571 }, { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012 }, @@ -3302,6 +3435,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/9e/57bd2f9fba04a37cef673f9a66b11ca8c43ccdd50d386c455cd4380fe461/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c", size = 561771 }, { url = "https://files.pythonhosted.org/packages/9f/cf/b719120f375ab970d1c297dbf8de1e3c9edd26fe92c0ed7178dd94b45992/rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba", size = 221195 }, { url = "https://files.pythonhosted.org/packages/2d/e5/22865285789f3412ad0c3d7ec4dc0a3e86483b794be8a5d9ed5a19390900/rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350", size = 237354 }, + { url = "https://files.pythonhosted.org/packages/99/48/11dae46d0c7f7e156ca0971a83f89c510af0316cd5d42c771b7cef945f0c/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a", size = 378224 }, + { url = "https://files.pythonhosted.org/packages/33/18/e8398d255369e35d312942f3bb8ecaff013c44968904891be2ab63b3aa94/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399", size = 363252 }, + { url = "https://files.pythonhosted.org/packages/17/39/dd73ba691f4df3e6834bf982de214086ac3359ab3ac035adfb30041570e3/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098", size = 388871 }, + { url = "https://files.pythonhosted.org/packages/2f/2e/da0530b25cabd0feca2a759b899d2df325069a94281eeea8ac44c6cfeff7/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:208b3a70a98cf3710e97cabdc308a51cd4f28aa6e7bb11de3d56cd8b74bab98d", size = 394766 }, + { url = "https://files.pythonhosted.org/packages/4c/ee/dd1c5040a431beb40fad4a5d7868acf343444b0bc43e627c71df2506538b/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbc4362e06f950c62cad3d4abf1191021b2ffaf0b31ac230fbf0526453eee75e", size = 448712 }, + { url = "https://files.pythonhosted.org/packages/f5/ec/6b93ffbb686be948e4d91ec76f4e6757f8551034b2a8176dd848103a1e34/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebea2821cdb5f9fef44933617be76185b80150632736f3d76e54829ab4a3b4d1", size = 447150 }, + { url = "https://files.pythonhosted.org/packages/55/d5/a1c23760adad85b432df074ced6f910dd28f222b8c60aeace5aeb9a6654e/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4df06c35465ef4d81799999bba810c68d29972bf1c31db61bfdb81dd9d5bb", size = 390662 }, + { url = "https://files.pythonhosted.org/packages/a5/f3/419cb1f9bfbd3a48c256528c156e00f3349e3edce5ad50cbc141e71f66a5/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3aa13bdf38630da298f2e0d77aca967b200b8cc1473ea05248f6c5e9c9bdb44", size = 421351 }, + { url = "https://files.pythonhosted.org/packages/98/8e/62d1a55078e5ede0b3b09f35e751fa35924a34a0d44d7c760743383cd54a/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:041f00419e1da7a03c46042453598479f45be3d787eb837af382bfc169c0db33", size = 566074 }, + { url = "https://files.pythonhosted.org/packages/fc/69/b7d1003166d78685da032b3c4ff1599fa536a3cfe6e5ce2da87c9c431906/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8754d872a5dfc3c5bf9c0e059e8107451364a30d9fd50f1f1a85c4fb9481164", size = 592398 }, + { url = "https://files.pythonhosted.org/packages/ea/a8/1c98bc99338c37faadd28dd667d336df7409d77b4da999506a0b6b1c0aa2/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:896c41007931217a343eff197c34513c154267636c8056fb409eafd494c3dcdc", size = 561114 }, + { url = "https://files.pythonhosted.org/packages/2b/41/65c91443685a4c7b5f1dd271beadc4a3e063d57c3269221548dd9416e15c/rpds_py-0.24.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:92558d37d872e808944c3c96d0423b8604879a3d1c86fdad508d7ed91ea547d5", size = 235548 }, { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386 }, { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440 }, { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816 }, @@ -3354,81 +3499,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/66/e1/4db0388df5655de92ce5f9b60d2bef220a58dde130e0453e5433c579986e/s3fs-2025.3.2-py3-none-any.whl", hash = "sha256:81eae3f37b4b04bcc08845d7bcc607c6ca45878813ef7e6a28d77b2688417130", size = 30485 }, ] -[[package]] -name = "scikit-learn" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "joblib" }, - { name = "numpy" }, - { name = "scipy" }, - { name = "threadpoolctl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9e/a5/4ae3b3a0755f7b35a280ac90b28817d1f380318973cff14075ab41ef50d9/scikit_learn-1.6.1.tar.gz", hash = "sha256:b4fc2525eca2c69a59260f583c56a7557c6ccdf8deafdba6e060f94c1c59738e", size = 7068312 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/2a/e291c29670795406a824567d1dfc91db7b699799a002fdaa452bceea8f6e/scikit_learn-1.6.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:72abc587c75234935e97d09aa4913a82f7b03ee0b74111dcc2881cba3c5a7b33", size = 12102620 }, - { url = "https://files.pythonhosted.org/packages/25/92/ee1d7a00bb6b8c55755d4984fd82608603a3cc59959245068ce32e7fb808/scikit_learn-1.6.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:b3b00cdc8f1317b5f33191df1386c0befd16625f49d979fe77a8d44cae82410d", size = 11116234 }, - { url = "https://files.pythonhosted.org/packages/30/cd/ed4399485ef364bb25f388ab438e3724e60dc218c547a407b6e90ccccaef/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc4765af3386811c3ca21638f63b9cf5ecf66261cc4815c1db3f1e7dc7b79db2", size = 12592155 }, - { url = "https://files.pythonhosted.org/packages/a8/f3/62fc9a5a659bb58a03cdd7e258956a5824bdc9b4bb3c5d932f55880be569/scikit_learn-1.6.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:25fc636bdaf1cc2f4a124a116312d837148b5e10872147bdaf4887926b8c03d8", size = 13497069 }, - { url = "https://files.pythonhosted.org/packages/a1/a6/c5b78606743a1f28eae8f11973de6613a5ee87366796583fb74c67d54939/scikit_learn-1.6.1-cp311-cp311-win_amd64.whl", hash = "sha256:fa909b1a36e000a03c382aade0bd2063fd5680ff8b8e501660c0f59f021a6415", size = 11139809 }, - { url = "https://files.pythonhosted.org/packages/0a/18/c797c9b8c10380d05616db3bfb48e2a3358c767affd0857d56c2eb501caa/scikit_learn-1.6.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:926f207c804104677af4857b2c609940b743d04c4c35ce0ddc8ff4f053cddc1b", size = 12104516 }, - { url = "https://files.pythonhosted.org/packages/c4/b7/2e35f8e289ab70108f8cbb2e7a2208f0575dc704749721286519dcf35f6f/scikit_learn-1.6.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2c2cae262064e6a9b77eee1c8e768fc46aa0b8338c6a8297b9b6759720ec0ff2", size = 11167837 }, - { url = "https://files.pythonhosted.org/packages/a4/f6/ff7beaeb644bcad72bcfd5a03ff36d32ee4e53a8b29a639f11bcb65d06cd/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1061b7c028a8663fb9a1a1baf9317b64a257fcb036dae5c8752b2abef31d136f", size = 12253728 }, - { url = "https://files.pythonhosted.org/packages/29/7a/8bce8968883e9465de20be15542f4c7e221952441727c4dad24d534c6d99/scikit_learn-1.6.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2e69fab4ebfc9c9b580a7a80111b43d214ab06250f8a7ef590a4edf72464dd86", size = 13147700 }, - { url = "https://files.pythonhosted.org/packages/62/27/585859e72e117fe861c2079bcba35591a84f801e21bc1ab85bce6ce60305/scikit_learn-1.6.1-cp312-cp312-win_amd64.whl", hash = "sha256:70b1d7e85b1c96383f872a519b3375f92f14731e279a7b4c6cfd650cf5dffc52", size = 11110613 }, - { url = "https://files.pythonhosted.org/packages/2e/59/8eb1872ca87009bdcdb7f3cdc679ad557b992c12f4b61f9250659e592c63/scikit_learn-1.6.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2ffa1e9e25b3d93990e74a4be2c2fc61ee5af85811562f1288d5d055880c4322", size = 12010001 }, - { url = "https://files.pythonhosted.org/packages/9d/05/f2fc4effc5b32e525408524c982c468c29d22f828834f0625c5ef3d601be/scikit_learn-1.6.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:dc5cf3d68c5a20ad6d571584c0750ec641cc46aeef1c1507be51300e6003a7e1", size = 11096360 }, - { url = "https://files.pythonhosted.org/packages/c8/e4/4195d52cf4f113573fb8ebc44ed5a81bd511a92c0228889125fac2f4c3d1/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c06beb2e839ecc641366000ca84f3cf6fa9faa1777e29cf0c04be6e4d096a348", size = 12209004 }, - { url = "https://files.pythonhosted.org/packages/94/be/47e16cdd1e7fcf97d95b3cb08bde1abb13e627861af427a3651fcb80b517/scikit_learn-1.6.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e8ca8cb270fee8f1f76fa9bfd5c3507d60c6438bbee5687f81042e2bb98e5a97", size = 13171776 }, - { url = "https://files.pythonhosted.org/packages/34/b0/ca92b90859070a1487827dbc672f998da95ce83edce1270fc23f96f1f61a/scikit_learn-1.6.1-cp313-cp313-win_amd64.whl", hash = "sha256:7a1c43c8ec9fde528d664d947dc4c0789be4077a3647f232869f41d9bf50e0fb", size = 11071865 }, - { url = "https://files.pythonhosted.org/packages/12/ae/993b0fb24a356e71e9a894e42b8a9eec528d4c70217353a1cd7a48bc25d4/scikit_learn-1.6.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:a17c1dea1d56dcda2fac315712f3651a1fea86565b64b48fa1bc090249cbf236", size = 11955804 }, - { url = "https://files.pythonhosted.org/packages/d6/54/32fa2ee591af44507eac86406fa6bba968d1eb22831494470d0a2e4a1eb1/scikit_learn-1.6.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:6a7aa5f9908f0f28f4edaa6963c0a6183f1911e63a69aa03782f0d924c830a35", size = 11100530 }, - { url = "https://files.pythonhosted.org/packages/3f/58/55856da1adec655bdce77b502e94a267bf40a8c0b89f8622837f89503b5a/scikit_learn-1.6.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0650e730afb87402baa88afbf31c07b84c98272622aaba002559b614600ca691", size = 12433852 }, - { url = "https://files.pythonhosted.org/packages/ff/4f/c83853af13901a574f8f13b645467285a48940f185b690936bb700a50863/scikit_learn-1.6.1-cp313-cp313t-win_amd64.whl", hash = "sha256:3f59fe08dc03ea158605170eb52b22a105f238a5d512c4470ddeca71feae8e5f", size = 11337256 }, -] - -[[package]] -name = "scipy" -version = "1.15.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/c6/8eb0654ba0c7d0bb1bf67bf8fbace101a8e4f250f7722371105e8b6f68fc/scipy-1.15.1.tar.gz", hash = "sha256:033a75ddad1463970c96a88063a1df87ccfddd526437136b6ee81ff0312ebdf6", size = 59407493 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/2e/7b71312da9c2dabff53e7c9a9d08231bc34d9d8fdabe88a6f1155b44591c/scipy-1.15.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5bd8d27d44e2c13d0c1124e6a556454f52cd3f704742985f6b09e75e163d20d2", size = 41424362 }, - { url = "https://files.pythonhosted.org/packages/81/8c/ab85f1aa1cc200c796532a385b6ebf6a81089747adc1da7482a062acc46c/scipy-1.15.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:be3deeb32844c27599347faa077b359584ba96664c5c79d71a354b80a0ad0ce0", size = 32535910 }, - { url = "https://files.pythonhosted.org/packages/3b/9c/6f4b787058daa8d8da21ddff881b4320e28de4704a65ec147adb50cb2230/scipy-1.15.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:5eb0ca35d4b08e95da99a9f9c400dc9f6c21c424298a0ba876fdc69c7afacedf", size = 24809398 }, - { url = "https://files.pythonhosted.org/packages/16/2b/949460a796df75fc7a1ee1becea202cf072edbe325ebe29f6d2029947aa7/scipy-1.15.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:74bb864ff7640dea310a1377d8567dc2cb7599c26a79ca852fc184cc851954ac", size = 27918045 }, - { url = "https://files.pythonhosted.org/packages/5f/36/67fe249dd7ccfcd2a38b25a640e3af7e59d9169c802478b6035ba91dfd6d/scipy-1.15.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:667f950bf8b7c3a23b4199db24cb9bf7512e27e86d0e3813f015b74ec2c6e3df", size = 38332074 }, - { url = "https://files.pythonhosted.org/packages/fc/da/452e1119e6f720df3feb588cce3c42c5e3d628d4bfd4aec097bd30b7de0c/scipy-1.15.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:395be70220d1189756068b3173853029a013d8c8dd5fd3d1361d505b2aa58fa7", size = 40588469 }, - { url = "https://files.pythonhosted.org/packages/7f/71/5f94aceeac99a4941478af94fe9f459c6752d497035b6b0761a700f5f9ff/scipy-1.15.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ce3a000cd28b4430426db2ca44d96636f701ed12e2b3ca1f2b1dd7abdd84b39a", size = 42965214 }, - { url = "https://files.pythonhosted.org/packages/af/25/caa430865749d504271757cafd24066d596217e83326155993980bc22f97/scipy-1.15.1-cp311-cp311-win_amd64.whl", hash = "sha256:3fe1d95944f9cf6ba77aa28b82dd6bb2a5b52f2026beb39ecf05304b8392864b", size = 43896034 }, - { url = "https://files.pythonhosted.org/packages/d8/6e/a9c42d0d39e09ed7fd203d0ac17adfea759cba61ab457671fe66e523dbec/scipy-1.15.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c09aa9d90f3500ea4c9b393ee96f96b0ccb27f2f350d09a47f533293c78ea776", size = 41478318 }, - { url = "https://files.pythonhosted.org/packages/04/ee/e3e535c81828618878a7433992fecc92fa4df79393f31a8fea1d05615091/scipy-1.15.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:0ac102ce99934b162914b1e4a6b94ca7da0f4058b6d6fd65b0cef330c0f3346f", size = 32596696 }, - { url = "https://files.pythonhosted.org/packages/c4/5e/b1b0124be8e76f87115f16b8915003eec4b7060298117715baf13f51942c/scipy-1.15.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:09c52320c42d7f5c7748b69e9f0389266fd4f82cf34c38485c14ee976cb8cb04", size = 24870366 }, - { url = "https://files.pythonhosted.org/packages/14/36/c00cb73eefda85946172c27913ab995c6ad4eee00fa4f007572e8c50cd51/scipy-1.15.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:cdde8414154054763b42b74fe8ce89d7f3d17a7ac5dd77204f0e142cdc9239e9", size = 28007461 }, - { url = "https://files.pythonhosted.org/packages/68/94/aff5c51b3799349a9d1e67a056772a0f8a47db371e83b498d43467806557/scipy-1.15.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4c9d8fc81d6a3b6844235e6fd175ee1d4c060163905a2becce8e74cb0d7554ce", size = 38068174 }, - { url = "https://files.pythonhosted.org/packages/b0/3c/0de11ca154e24a57b579fb648151d901326d3102115bc4f9a7a86526ce54/scipy-1.15.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0fb57b30f0017d4afa5fe5f5b150b8f807618819287c21cbe51130de7ccdaed2", size = 40249869 }, - { url = "https://files.pythonhosted.org/packages/15/09/472e8d0a6b33199d1bb95e49bedcabc0976c3724edd9b0ef7602ccacf41e/scipy-1.15.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:491d57fe89927fa1aafbe260f4cfa5ffa20ab9f1435025045a5315006a91b8f5", size = 42629068 }, - { url = "https://files.pythonhosted.org/packages/ff/ba/31c7a8131152822b3a2cdeba76398ffb404d81d640de98287d236da90c49/scipy-1.15.1-cp312-cp312-win_amd64.whl", hash = "sha256:900f3fa3db87257510f011c292a5779eb627043dd89731b9c461cd16ef76ab3d", size = 43621992 }, - { url = "https://files.pythonhosted.org/packages/2b/bf/dd68965a4c5138a630eeed0baec9ae96e5d598887835bdde96cdd2fe4780/scipy-1.15.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:100193bb72fbff37dbd0bf14322314fc7cbe08b7ff3137f11a34d06dc0ee6b85", size = 41441136 }, - { url = "https://files.pythonhosted.org/packages/ef/5e/4928581312922d7e4d416d74c416a660addec4dd5ea185401df2269ba5a0/scipy-1.15.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:2114a08daec64980e4b4cbdf5bee90935af66d750146b1d2feb0d3ac30613692", size = 32533699 }, - { url = "https://files.pythonhosted.org/packages/32/90/03f99c43041852837686898c66767787cd41c5843d7a1509c39ffef683e9/scipy-1.15.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:6b3e71893c6687fc5e29208d518900c24ea372a862854c9888368c0b267387ab", size = 24807289 }, - { url = "https://files.pythonhosted.org/packages/9d/52/bfe82b42ae112eaba1af2f3e556275b8727d55ac6e4932e7aef337a9d9d4/scipy-1.15.1-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:837299eec3d19b7e042923448d17d95a86e43941104d33f00da7e31a0f715d3c", size = 27929844 }, - { url = "https://files.pythonhosted.org/packages/f6/77/54ff610bad600462c313326acdb035783accc6a3d5f566d22757ad297564/scipy-1.15.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:82add84e8a9fb12af5c2c1a3a3f1cb51849d27a580cb9e6bd66226195142be6e", size = 38031272 }, - { url = "https://files.pythonhosted.org/packages/f1/26/98585cbf04c7cf503d7eb0a1966df8a268154b5d923c5fe0c1ed13154c49/scipy-1.15.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:070d10654f0cb6abd295bc96c12656f948e623ec5f9a4eab0ddb1466c000716e", size = 40210217 }, - { url = "https://files.pythonhosted.org/packages/fd/3f/3d2285eb6fece8bc5dbb2f9f94d61157d61d155e854fd5fea825b8218f12/scipy-1.15.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:55cc79ce4085c702ac31e49b1e69b27ef41111f22beafb9b49fea67142b696c4", size = 42587785 }, - { url = "https://files.pythonhosted.org/packages/48/7d/5b5251984bf0160d6533695a74a5fddb1fa36edd6f26ffa8c871fbd4782a/scipy-1.15.1-cp313-cp313-win_amd64.whl", hash = "sha256:c352c1b6d7cac452534517e022f8f7b8d139cd9f27e6fbd9f3cbd0bfd39f5bef", size = 43640439 }, - { url = "https://files.pythonhosted.org/packages/e7/b8/0e092f592d280496de52e152582030f8a270b194f87f890e1a97c5599b81/scipy-1.15.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0458839c9f873062db69a03de9a9765ae2e694352c76a16be44f93ea45c28d2b", size = 41619862 }, - { url = "https://files.pythonhosted.org/packages/f6/19/0b6e1173aba4db9e0b7aa27fe45019857fb90d6904038b83927cbe0a6c1d/scipy-1.15.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:af0b61c1de46d0565b4b39c6417373304c1d4f5220004058bdad3061c9fa8a95", size = 32610387 }, - { url = "https://files.pythonhosted.org/packages/e7/02/754aae3bd1fa0f2479ade3cfdf1732ecd6b05853f63eee6066a32684563a/scipy-1.15.1-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:71ba9a76c2390eca6e359be81a3e879614af3a71dfdabb96d1d7ab33da6f2364", size = 24883814 }, - { url = "https://files.pythonhosted.org/packages/1f/ac/d7906201604a2ea3b143bb0de51b3966f66441ba50b7dc182c4505b3edf9/scipy-1.15.1-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:14eaa373c89eaf553be73c3affb11ec6c37493b7eaaf31cf9ac5dffae700c2e0", size = 27944865 }, - { url = "https://files.pythonhosted.org/packages/84/9d/8f539002b5e203723af6a6f513a45e0a7671e9dabeedb08f417ac17e4edc/scipy-1.15.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f735bc41bd1c792c96bc426dece66c8723283695f02df61dcc4d0a707a42fc54", size = 39883261 }, - { url = "https://files.pythonhosted.org/packages/97/c0/62fd3bab828bcccc9b864c5997645a3b86372a35941cdaf677565c25c98d/scipy-1.15.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:2722a021a7929d21168830790202a75dbb20b468a8133c74a2c0230c72626b6c", size = 42093299 }, - { url = "https://files.pythonhosted.org/packages/e4/1f/5d46a8d94e9f6d2c913cbb109e57e7eed914de38ea99e2c4d69a9fc93140/scipy-1.15.1-cp313-cp313t-win_amd64.whl", hash = "sha256:bc7136626261ac1ed988dca56cfc4ab5180f75e0ee52e58f1e6aa74b5f3eacd5", size = 43181730 }, -] - [[package]] name = "send2trash" version = "1.8.3" @@ -3456,6 +3526,14 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } wheels = [ + { url = "https://files.pythonhosted.org/packages/98/97/7027722bec6fba6fbfdb36ff987bc368f6cd01ff91d3815bce93439ef3f5/shapely-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3e5c5e3864d4dc431dd85a8e5137ebd39c8ac287b009d3fa80a07017b29c940", size = 1826440 }, + { url = "https://files.pythonhosted.org/packages/7e/de/d2ee50a66fcff3786a00b59b99b5bf3a7ec7bb1805e1c409a1c9c1817749/shapely-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6eea89b16f5f3a064659126455d23fa3066bc3d6cd385c35214f06bf5871aa6", size = 1627651 }, + { url = "https://files.pythonhosted.org/packages/54/c9/e0ead09661f58fb9ef65826ff6af7fa4386f9e52dc25ddd36cdd019235e2/shapely-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:183174ad0b21a81ee661f05e7c47aa92ebfae01814cd3cbe54adea7a4213f5f4", size = 2891260 }, + { url = "https://files.pythonhosted.org/packages/16/6f/bcb800b2579b995bb61f429445b7328ae2336155964ca5f6c367ebd3fd17/shapely-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f239c1484af66bc14b81a76f2a8e0fada29d59010423253ff857d0ccefdaa93f", size = 3011154 }, + { url = "https://files.pythonhosted.org/packages/c5/a0/8eeaf01fff142f092b64b53c425bd11a2c2a1564a30df283d9e8eb719fcf/shapely-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6220a466d1475141dad0cd8065d2549a5c2ed3fa4e2e02fb8ea65d494cfd5b07", size = 3834153 }, + { url = "https://files.pythonhosted.org/packages/7c/45/4a0b7e55731a410f44c4f8fbc61f484e04ec78eb6490d05576ff98efec59/shapely-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4822d3ed3efb06145c34d29d5b56792f72b7d713300f603bfd5d825892c6f79f", size = 4017460 }, + { url = "https://files.pythonhosted.org/packages/bf/75/c3f3e6f5d40b9bf9390aa47d7ec56b8d56e61a30487d76d7aa06f87b3308/shapely-2.1.0-cp310-cp310-win32.whl", hash = "sha256:ea51ddf3d3c60866dca746081b56c75f34ff1b01acbd4d44269071a673c735b9", size = 1527812 }, + { url = "https://files.pythonhosted.org/packages/71/0a/2002b39da6935f361da9c6437e45e01f0ebac81f66c08c01da974227036c/shapely-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6f5e02e2cded9f4ec5709900a296c7f2cce5f8e9e9d80ba7d89ae2f4ed89d7b", size = 1707475 }, { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974 }, { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137 }, { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161 }, @@ -3545,6 +3623,14 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } wheels = [ + { url = "https://files.pythonhosted.org/packages/87/fa/8e8fd93684b04e65816be864bebf0000fe1602e5452d006f9acc5db14ce5/sqlalchemy-2.0.40-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7", size = 2112843 }, + { url = "https://files.pythonhosted.org/packages/ba/87/06992f78a9ce545dfd1fea3dd99262bec5221f6f9d2d2066c3e94662529f/sqlalchemy-2.0.40-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758", size = 2104032 }, + { url = "https://files.pythonhosted.org/packages/92/ee/57dc77282e8be22d686bd4681825299aa1069bbe090564868ea270ed5214/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af", size = 3086406 }, + { url = "https://files.pythonhosted.org/packages/94/3f/ceb9ab214b2e42d2e74a9209b3a2f2f073504eee16cddd2df81feeb67c2f/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1", size = 3094652 }, + { url = "https://files.pythonhosted.org/packages/00/0a/3401232a5b6d91a2df16c1dc39c6504c54575744c2faafa1e5a50de96621/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00", size = 3050503 }, + { url = "https://files.pythonhosted.org/packages/93/c2/ea7171415ab131397f71a2673645c2fe29ebe9a93063d458eb89e42bf051/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e", size = 3076011 }, + { url = "https://files.pythonhosted.org/packages/3d/ee/d8e229280d621bed8c51eebf1dd413aa09ca89e309b1fff40d881dd149af/sqlalchemy-2.0.40-cp310-cp310-win32.whl", hash = "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a", size = 2085136 }, + { url = "https://files.pythonhosted.org/packages/60/7f/ea1086136bc648cd4713a1e01869f7fc31979d67b3a8f973f5d9ab8de7e1/sqlalchemy-2.0.40-cp310-cp310-win_amd64.whl", hash = "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596", size = 2109421 }, { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025 }, { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419 }, { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720 }, @@ -3598,18 +3684,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, ] -[[package]] -name = "sympy" -version = "1.13.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mpmath" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ca/99/5a5b6f19ff9f083671ddf7b9632028436167cd3d33e11015754e41b249a4/sympy-1.13.1.tar.gz", hash = "sha256:9cebf7e04ff162015ce31c9c6c9144daa34a93bd082f54fd8f12deca4f47515f", size = 7533040 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fe/81695a1aa331a842b582453b605175f419fe8540355886031328089d840a/sympy-1.13.1-py3-none-any.whl", hash = "sha256:db36cdc64bf61b9b24578b6f7bab1ecdd2452cf008f34faa33776680c26d66f8", size = 6189177 }, -] - [[package]] name = "tenacity" version = "9.1.2" @@ -3633,15 +3707,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, ] -[[package]] -name = "threadpoolctl" -version = "3.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, -] - [[package]] name = "tinycss2" version = "1.4.0" @@ -3655,12 +3720,42 @@ wheels = [ ] [[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 }, +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] [[package]] @@ -3681,18 +3776,6 @@ wheels = [ { 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" @@ -3767,6 +3850,9 @@ version = "6.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390 }, + { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389 }, + { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020 }, { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, @@ -3776,6 +3862,8 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, + { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380 }, { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, @@ -3830,6 +3918,17 @@ version = "1.17.2" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307 }, + { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486 }, + { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777 }, + { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314 }, + { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947 }, + { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778 }, + { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716 }, + { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548 }, + { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334 }, + { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427 }, + { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774 }, { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, @@ -3877,20 +3976,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] -[[package]] -name = "xarray" -version = "2025.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "packaging" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/c4/6931c37cd418658d596e78794bdd1bcb67efec0aac3cdb720e37e03c1ea1/xarray-2025.3.1.tar.gz", hash = "sha256:0252c96a73528b29d1ed7f0ab28d928d2ec00ad809e47369803b184dece1e447", size = 3300778 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/fd/973deafd9f87085136a58573600646b408ae7af47859f35151f0d83d5090/xarray-2025.3.1-py3-none-any.whl", hash = "sha256:3404e313930c226db70a945377441ea3c957225d8ba2d429e764c099bb91a546", size = 1279327 }, -] - [[package]] name = "yarl" version = "1.20.0" @@ -3902,6 +3987,23 @@ dependencies = [ ] sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } wheels = [ + { url = "https://files.pythonhosted.org/packages/00/ab/66082639f99d7ef647a86b2ff4ca20f8ae13bd68a6237e6e166b8eb92edf/yarl-1.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f1f6670b9ae3daedb325fa55fbe31c22c8228f6e0b513772c2e1c623caa6ab22", size = 145054 }, + { url = "https://files.pythonhosted.org/packages/3d/c2/4e78185c453c3ca02bd11c7907394d0410d26215f9e4b7378648b3522a30/yarl-1.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85a231fa250dfa3308f3c7896cc007a47bc76e9e8e8595c20b7426cac4884c62", size = 96811 }, + { url = "https://files.pythonhosted.org/packages/c7/45/91e31dccdcf5b7232dcace78bd51a1bb2d7b4b96c65eece0078b620587d1/yarl-1.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a06701b647c9939d7019acdfa7ebbfbb78ba6aa05985bb195ad716ea759a569", size = 94566 }, + { url = "https://files.pythonhosted.org/packages/c8/21/e0aa650bcee881fb804331faa2c0f9a5d6be7609970b2b6e3cdd414e174b/yarl-1.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7595498d085becc8fb9203aa314b136ab0516c7abd97e7d74f7bb4eb95042abe", size = 327297 }, + { url = "https://files.pythonhosted.org/packages/1a/a4/58f10870f5c17595c5a37da4c6a0b321589b7d7976e10570088d445d0f47/yarl-1.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af5607159085dcdb055d5678fc2d34949bd75ae6ea6b4381e784bbab1c3aa195", size = 323578 }, + { url = "https://files.pythonhosted.org/packages/07/df/2506b1382cc0c4bb0d22a535dc3e7ccd53da9a59b411079013a7904ac35c/yarl-1.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95b50910e496567434cb77a577493c26bce0f31c8a305135f3bda6a2483b8e10", size = 343212 }, + { url = "https://files.pythonhosted.org/packages/ba/4a/d1c901d0e2158ad06bb0b9a92473e32d992f98673b93c8a06293e091bab0/yarl-1.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b594113a301ad537766b4e16a5a6750fcbb1497dcc1bc8a4daae889e6402a634", size = 337956 }, + { url = "https://files.pythonhosted.org/packages/8b/fd/10fcf7d86f49b1a11096d6846257485ef32e3d3d322e8a7fdea5b127880c/yarl-1.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:083ce0393ea173cd37834eb84df15b6853b555d20c52703e21fbababa8c129d2", size = 333889 }, + { url = "https://files.pythonhosted.org/packages/e2/cd/bae926a25154ba31c5fd15f2aa6e50a545c840e08d85e2e2e0807197946b/yarl-1.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1a350a652bbbe12f666109fbddfdf049b3ff43696d18c9ab1531fbba1c977a", size = 322282 }, + { url = "https://files.pythonhosted.org/packages/e2/c6/c3ac3597dfde746c63c637c5422cf3954ebf622a8de7f09892d20a68900d/yarl-1.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fb0caeac4a164aadce342f1597297ec0ce261ec4532bbc5a9ca8da5622f53867", size = 336270 }, + { url = "https://files.pythonhosted.org/packages/dd/42/417fd7b8da5846def29712370ea8916a4be2553de42a2c969815153717be/yarl-1.20.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d88cc43e923f324203f6ec14434fa33b85c06d18d59c167a0637164863b8e995", size = 335500 }, + { url = "https://files.pythonhosted.org/packages/37/aa/c2339683f8f05f4be16831b6ad58d04406cf1c7730e48a12f755da9f5ac5/yarl-1.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e52d6ed9ea8fd3abf4031325dc714aed5afcbfa19ee4a89898d663c9976eb487", size = 339672 }, + { url = "https://files.pythonhosted.org/packages/be/12/ab6c4df95f00d7bc9502bf07a92d5354f11d9d3cb855222a6a8d2bd6e8da/yarl-1.20.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce360ae48a5e9961d0c730cf891d40698a82804e85f6e74658fb175207a77cb2", size = 351840 }, + { url = "https://files.pythonhosted.org/packages/83/3c/08d58c51bbd3899be3e7e83cd7a691fdcf3b9f78b8699d663ecc2c090ab7/yarl-1.20.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:06d06c9d5b5bc3eb56542ceeba6658d31f54cf401e8468512447834856fb0e61", size = 359550 }, + { url = "https://files.pythonhosted.org/packages/8a/15/de7906c506f85fb476f0edac4bd74569f49e5ffdcf98e246a0313bf593b9/yarl-1.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c27d98f4e5c4060582f44e58309c1e55134880558f1add7a87c1bc36ecfade19", size = 351108 }, + { url = "https://files.pythonhosted.org/packages/25/04/c6754f5ae2cdf057ac094ac01137c17875b629b1c29ed75354626a755375/yarl-1.20.0-cp310-cp310-win32.whl", hash = "sha256:f4d3fa9b9f013f7050326e165c3279e22850d02ae544ace285674cb6174b5d6d", size = 86733 }, + { url = "https://files.pythonhosted.org/packages/db/1f/5c1952f3d983ac3f5fb079b5b13b62728f8a73fd27d03e1cef7e476addff/yarl-1.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc906b636239631d42eb8a07df8359905da02704a868983265603887ed68c076", size = 92916 }, { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, @@ -3972,19 +4074,3 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3f/93/f73b61353b2a699d489e782c3f5998b59f974ec3156a2050a52dfd7e8946/yarl-1.20.0-cp313-cp313t-win_amd64.whl", hash = "sha256:53b2da3a6ca0a541c1ae799c349788d480e5144cac47dba0266c7cb6c76151fe", size = 101093 }, { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] - -[[package]] -name = "zarr" -version = "3.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "donfig" }, - { name = "numcodecs", extra = ["crc32c"] }, - { name = "numpy" }, - { name = "packaging" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e3/83/ab85d1517a5a08693751fb04919f270757219c6071ae12a8c4588c7e815e/zarr-3.0.7.tar.gz", hash = "sha256:c06da406e08da9565ba368ac0337a4466d7743f643acac2873beee4458b6e5e1", size = 253194 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/67/971d9a661b66cc1c2fe2472e38085f5025a393ee1c1822b0155cc3f357b7/zarr-3.0.7-py3-none-any.whl", hash = "sha256:db0ca28f12a59be681813ac719e4d5436591e2b315e89c5ae6e2d255715be960", size = 203937 }, -] From dcda1c4ec2705c2522bf8d0844036ab813171124 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Sat, 3 May 2025 18:33:44 -0400 Subject: [PATCH 16/97] Update __init__.py --- src/icefabric_tools/src/icefabric_tools/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index 0451357..de371af 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -1,3 +1,4 @@ from icefabric_tools._api import find_origin, load_hydrofabric, table_to_geopandas, to_geopandas +from icefabric_tools import rnr -__all__ = ["find_origin", "load_hydrofabric", "to_geopandas", "table_to_geopandas"] +__all__ = ["find_origin", "load_hydrofabric", "rnr", "to_geopandas", "table_to_geopandas"] From 526a8041cd23f25e14090020d679063ce0796d7d Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Sat, 3 May 2025 21:41:24 -0400 Subject: [PATCH 17/97] Update pyproject.toml --- src/icefabric_tools/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 17ff640..e26c828 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -6,9 +6,9 @@ authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] readme = "README.md" dependencies = [ - "numpy==2.2.5", + "numpy==1.26.3", "fiona==1.10.1", - "pandas==2.2.3", + "pandas==2.2.0", "geopandas==1.0.1", "matplotlib==3.10.0", "s3fs==2025.3.2", From c953ccbad843ec1307a09be767d916471eccc9a3 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Sat, 3 May 2025 21:41:53 -0400 Subject: [PATCH 18/97] Update pyproject.toml --- src/icefabric_manage/pyproject.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index b1e5a93..8617b5c 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -6,9 +6,9 @@ authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] readme = "README.md" dependencies = [ - "numpy==2.2.5", + "numpy==1.26.3", "fiona==1.10.1", - "pandas==2.2.3", + "pandas==2.2.0", "geopandas==1.0.1", "s3fs==2025.3.2", "pyarrow==19.0.1", From 5917c305d1b9acd90d1381f4a184edf8bf0c1710 Mon Sep 17 00:00:00 2001 From: taddyb Date: Sat, 3 May 2025 22:09:47 -0400 Subject: [PATCH 19/97] lowered numpy versions due to t-route inconsistencies --- examples/quick_start.ipynb | 522 +++++++++++++++++- pyproject.toml | 2 +- src/icefabric_manage/pyproject.toml | 2 +- src/icefabric_tools/pyproject.toml | 2 +- .../src/icefabric_tools/rnr.py | 2 +- uv.lock | 155 ++---- 6 files changed, 571 insertions(+), 114 deletions(-) diff --git a/examples/quick_start.ipynb b/examples/quick_start.ipynb index 0726b38..6caaa00 100644 --- a/examples/quick_start.ipynb +++ b/examples/quick_start.ipynb @@ -10,10 +10,11 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ + "import os\n", "from pathlib import Path\n", "\n", "from pyiceberg.catalog import load_catalog\n", @@ -31,9 +32,26 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Table network already exists. Skipping build\n", + "Table nexus already exists. Skipping build\n", + "Table flowpath-attributes already exists. Skipping build\n", + "Table divides already exists. Skipping build\n", + "Table pois already exists. Skipping build\n", + "Table flowpath-attributes-ml already exists. Skipping build\n", + "Table divide-attributes already exists. Skipping build\n", + "Table flowpaths already exists. Skipping build\n", + "Table hydrolocations already exists. Skipping build\n", + "Table lakes already exists. Skipping build\n" + ] + } + ], "source": [ "warehouse_path = Path(\"../data/warehouse\")\n", "warehouse_path.mkdir(exist_ok=True)\n", @@ -50,7 +68,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -59,7 +77,7 @@ "hydrofabric ()" ] }, - "execution_count": 76, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } @@ -77,7 +95,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -426,7 +444,7 @@ "[3461367 rows x 19 columns]" ] }, - "execution_count": 3, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -452,7 +470,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -501,7 +519,7 @@ "0 wb-824123 nex-824124 05 fl-nex 3565.0" ] }, - "execution_count": 4, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" } @@ -519,9 +537,275 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoidmainstemorderhydroseqlengthkmareasqkmtot_drainage_areasqkmhas_dividedivide_idpoi_idvpuidgeometry
0wb-20466nex-204672613576.01.0202922.4437934.3042504.304250Truecat-204661953401MULTILINESTRING ((1873700.565 2684810.523, 187...
1wb-20474nex-204752613597.01.0202913.9825184.8294004.829400Truecat-20474None01MULTILINESTRING ((1875378.459 2678583.977, 187...
2wb-20475nex-204682613597.01.0202901.0066456.71310111.542501Truecat-20475None01MULTILINESTRING ((1875781.183 2682056.744, 187...
3wb-20473nex-204672613587.01.0202891.8927814.4860504.486050Truecat-20473None01MULTILINESTRING ((1875252.558 2684695.906, 187...
4wb-20467nex-204682613576.02.0202881.6164632.58390022.916701Truecat-20467119301MULTILINESTRING ((1875278.618 2683667.5, 18754...
..........................................
828283wb-3054945nex-30549462523667.02.02363.5152879.33569984.047850Truecat-3054945None17MULTILINESTRING ((-2219263.794 2463211.731, -2...
828284wb-3054946nex-30549472523667.02.02354.36558713.30650097.354350Truecat-3054946None17MULTILINESTRING ((-2222330.448 2464615.711, -2...
828285wb-3054961nex-30549582523700.01.02342.0321945.2357505.235750Truecat-3054961None17MULTILINESTRING ((-2218810.457 2467656.224, -2...
828286wb-3054958nex-30549592523693.01.02336.46621210.67085015.906600Truecat-3054958None17MULTILINESTRING ((-2217798.39 2468518.649, -22...
828287wb-3054960nex-30549592523698.01.02322.2424243.6405003.640500Truecat-3054960None17MULTILINESTRING ((-2220749.538 2467137.344, -2...
\n", + "

828288 rows × 13 columns

\n", + "
" + ], + "text/plain": [ + " id toid mainstem order hydroseq lengthkm \\\n", + "0 wb-20466 nex-20467 2613576.0 1.0 20292 2.443793 \n", + "1 wb-20474 nex-20475 2613597.0 1.0 20291 3.982518 \n", + "2 wb-20475 nex-20468 2613597.0 1.0 20290 1.006645 \n", + "3 wb-20473 nex-20467 2613587.0 1.0 20289 1.892781 \n", + "4 wb-20467 nex-20468 2613576.0 2.0 20288 1.616463 \n", + "... ... ... ... ... ... ... \n", + "828283 wb-3054945 nex-3054946 2523667.0 2.0 236 3.515287 \n", + "828284 wb-3054946 nex-3054947 2523667.0 2.0 235 4.365587 \n", + "828285 wb-3054961 nex-3054958 2523700.0 1.0 234 2.032194 \n", + "828286 wb-3054958 nex-3054959 2523693.0 1.0 233 6.466212 \n", + "828287 wb-3054960 nex-3054959 2523698.0 1.0 232 2.242424 \n", + "\n", + " areasqkm tot_drainage_areasqkm has_divide divide_id poi_id \\\n", + "0 4.304250 4.304250 True cat-20466 19534 \n", + "1 4.829400 4.829400 True cat-20474 None \n", + "2 6.713101 11.542501 True cat-20475 None \n", + "3 4.486050 4.486050 True cat-20473 None \n", + "4 2.583900 22.916701 True cat-20467 1193 \n", + "... ... ... ... ... ... \n", + "828283 9.335699 84.047850 True cat-3054945 None \n", + "828284 13.306500 97.354350 True cat-3054946 None \n", + "828285 5.235750 5.235750 True cat-3054961 None \n", + "828286 10.670850 15.906600 True cat-3054958 None \n", + "828287 3.640500 3.640500 True cat-3054960 None \n", + "\n", + " vpuid geometry \n", + "0 01 MULTILINESTRING ((1873700.565 2684810.523, 187... \n", + "1 01 MULTILINESTRING ((1875378.459 2678583.977, 187... \n", + "2 01 MULTILINESTRING ((1875781.183 2682056.744, 187... \n", + "3 01 MULTILINESTRING ((1875252.558 2684695.906, 187... \n", + "4 01 MULTILINESTRING ((1875278.618 2683667.5, 18754... \n", + "... ... ... \n", + "828283 17 MULTILINESTRING ((-2219263.794 2463211.731, -2... \n", + "828284 17 MULTILINESTRING ((-2222330.448 2464615.711, -2... \n", + "828285 17 MULTILINESTRING ((-2218810.457 2467656.224, -2... \n", + "828286 17 MULTILINESTRING ((-2217798.39 2468518.649, -22... \n", + "828287 17 MULTILINESTRING ((-2220749.538 2467137.344, -2... \n", + "\n", + "[828288 rows x 13 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "flowpaths = catalog.load_table(\"hydrofabric.flowpaths\")\n", "flowpaths.scan().to_pandas()\n", @@ -553,6 +837,222 @@ "get_rnr_segment(catalog, 18471000, \"../data/test_rnr.gpkg\")" ] }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
idtoidmainstemorderhydroseqlengthkmareasqkmtot_drainage_areasqkmhas_dividedivide_idpoi_idvpuidgeometry
0wb-824123nex-8241241547279.05.035659.51684417.66340012878.231399Truecat-824123None05MULTILINESTRING ((752258.435 1788547.25, 75221...
1wb-824124nex-8241251547279.05.035644.1863724.71015112997.003050Truecat-8241249386305MULTILINESTRING ((753323.441 1781497.25, 75323...
2wb-824125nex-8241261547279.05.035627.3358806.62985013098.629700Truecat-824125None05MULTILINESTRING ((751418.443 1779097.245, 7514...
3wb-824126nex-8241271547279.05.035617.16468320.93850013119.568200Truecat-8241267496405MULTILINESTRING ((751778.441 1774552.25, 75185...
4wb-824127nex-8241281547279.05.035581.7548895.89680113549.954953Truecat-824127None05MULTILINESTRING ((754178.441 1771642.252, 7542...
5wb-824128nex-8241291547279.05.035578.99334521.13290013571.087853Truecat-8241287314105MULTILINESTRING ((754396.812 1770074.121, 7543...
6wb-824129nex-8241301547279.05.035568.9034938.90055013680.138604Truecat-824129None05MULTILINESTRING ((754523.437 1764907.249, 7544...
7wb-824130nex-8241311547279.05.035422.3788091.03500013875.044853Truecat-824130None05MULTILINESTRING ((754338.731 1760185.448, 7544...
\n", + "
" + ], + "text/plain": [ + " id toid mainstem order hydroseq lengthkm areasqkm \\\n", + "0 wb-824123 nex-824124 1547279.0 5.0 3565 9.516844 17.663400 \n", + "1 wb-824124 nex-824125 1547279.0 5.0 3564 4.186372 4.710151 \n", + "2 wb-824125 nex-824126 1547279.0 5.0 3562 7.335880 6.629850 \n", + "3 wb-824126 nex-824127 1547279.0 5.0 3561 7.164683 20.938500 \n", + "4 wb-824127 nex-824128 1547279.0 5.0 3558 1.754889 5.896801 \n", + "5 wb-824128 nex-824129 1547279.0 5.0 3557 8.993345 21.132900 \n", + "6 wb-824129 nex-824130 1547279.0 5.0 3556 8.903493 8.900550 \n", + "7 wb-824130 nex-824131 1547279.0 5.0 3542 2.378809 1.035000 \n", + "\n", + " tot_drainage_areasqkm has_divide divide_id poi_id vpuid \\\n", + "0 12878.231399 True cat-824123 None 05 \n", + "1 12997.003050 True cat-824124 93863 05 \n", + "2 13098.629700 True cat-824125 None 05 \n", + "3 13119.568200 True cat-824126 74964 05 \n", + "4 13549.954953 True cat-824127 None 05 \n", + "5 13571.087853 True cat-824128 73141 05 \n", + "6 13680.138604 True cat-824129 None 05 \n", + "7 13875.044853 True cat-824130 None 05 \n", + "\n", + " geometry \n", + "0 MULTILINESTRING ((752258.435 1788547.25, 75221... \n", + "1 MULTILINESTRING ((753323.441 1781497.25, 75323... \n", + "2 MULTILINESTRING ((751418.443 1779097.245, 7514... \n", + "3 MULTILINESTRING ((751778.441 1774552.25, 75185... \n", + "4 MULTILINESTRING ((754178.441 1771642.252, 7542... \n", + "5 MULTILINESTRING ((754396.812 1770074.121, 7543... \n", + "6 MULTILINESTRING ((754523.437 1764907.249, 7544... \n", + "7 MULTILINESTRING ((754338.731 1760185.448, 7544... " + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import geopandas as gpd\n", + "gpd.read_file(\"../data/test_rnr.gpkg\", layer=\"flowpaths\")" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/pyproject.toml b/pyproject.toml index 9947498..bbe14f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -3,7 +3,7 @@ name = "icefabric" version = "0.1.0" description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" -requires-python = ">=3.10" +requires-python = ">3.10,<3.13" license = { file = "LICENSE" } authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 8617b5c..27e1557 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -6,7 +6,7 @@ authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] readme = "README.md" dependencies = [ - "numpy==1.26.3", + "numpy==1.26.4", "fiona==1.10.1", "pandas==2.2.0", "geopandas==1.0.1", diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index e26c828..1bfd306 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -6,7 +6,7 @@ authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] readme = "README.md" dependencies = [ - "numpy==1.26.3", + "numpy==1.26.4", "fiona==1.10.1", "pandas==2.2.0", "geopandas==1.0.1", diff --git a/src/icefabric_tools/src/icefabric_tools/rnr.py b/src/icefabric_tools/src/icefabric_tools/rnr.py index 7fca089..39b79ac 100644 --- a/src/icefabric_tools/src/icefabric_tools/rnr.py +++ b/src/icefabric_tools/src/icefabric_tools/rnr.py @@ -59,7 +59,7 @@ def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.Ge # Get full river network filtered_nexus_points = table_to_geopandas(table=nexus, row_filter=In("id", filtered_flowpaths["toid"])) filtered_divides = table_to_geopandas(table=divides, row_filter=In("divide_id", filtered_flowpaths["divide_id"])) - filtered_network = network.scan(row_filter=In("id", np.concat([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() + filtered_network = network.scan(row_filter=In("id", np.concatenate([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() filtered_divide_attr = divides_attr.scan(row_filter=In("divide_id", filtered_flowpaths["divide_id"])).to_pandas() filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() diff --git a/uv.lock b/uv.lock index c1b4409..56a2b66 100644 --- a/uv.lock +++ b/uv.lock @@ -1238,8 +1238,8 @@ dependencies = [ requires-dist = [ { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, - { name = "numpy", specifier = "==2.2.5" }, - { name = "pandas", specifier = "==2.2.3" }, + { name = "numpy", specifier = "==1.26.4" }, + { name = "pandas", specifier = "==2.2.0" }, { name = "pyarrow", specifier = "==19.0.1" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, { name = "s3fs", specifier = "==2025.3.2" }, @@ -1265,8 +1265,8 @@ requires-dist = [ { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "matplotlib", specifier = "==3.10.0" }, - { name = "numpy", specifier = "==2.2.5" }, - { name = "pandas", specifier = "==2.2.3" }, + { name = "numpy", specifier = "==1.26.4" }, + { name = "pandas", specifier = "==2.2.0" }, { name = "pyarrow", specifier = "==19.0.1" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, { name = "s3fs", specifier = "==2025.3.2" }, @@ -2317,64 +2317,34 @@ wheels = [ [[package]] name = "numpy" -version = "2.2.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/4e/3d9e6d16237c2aa5485695f0626cbba82f6481efca2e9132368dea3b885e/numpy-2.2.5-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1f4a922da1729f4c40932b2af4fe84909c7a6e167e6e99f71838ce3a29f3fe26", size = 21252117 }, - { url = "https://files.pythonhosted.org/packages/38/e4/db91349d4079cd15c02ff3b4b8882a529991d6aca077db198a2f2a670406/numpy-2.2.5-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:b6f91524d31b34f4a5fee24f5bc16dcd1491b668798b6d85585d836c1e633a6a", size = 14424615 }, - { url = "https://files.pythonhosted.org/packages/f8/59/6e5b011f553c37b008bd115c7ba7106a18f372588fbb1b430b7a5d2c41ce/numpy-2.2.5-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:19f4718c9012e3baea91a7dba661dcab2451cda2550678dc30d53acb91a7290f", size = 5428691 }, - { url = "https://files.pythonhosted.org/packages/a2/58/d5d70ebdac82b3a6ddf409b3749ca5786636e50fd64d60edb46442af6838/numpy-2.2.5-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:eb7fd5b184e5d277afa9ec0ad5e4eb562ecff541e7f60e69ee69c8d59e9aeaba", size = 6965010 }, - { url = "https://files.pythonhosted.org/packages/dc/a8/c290394be346d4e7b48a40baf292626fd96ec56a6398ace4c25d9079bc6a/numpy-2.2.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6413d48a9be53e183eb06495d8e3b006ef8f87c324af68241bbe7a39e8ff54c3", size = 14369885 }, - { url = "https://files.pythonhosted.org/packages/c2/70/fed13c70aabe7049368553e81d7ca40f305f305800a007a956d7cd2e5476/numpy-2.2.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7451f92eddf8503c9b8aa4fe6aa7e87fd51a29c2cfc5f7dbd72efde6c65acf57", size = 16418372 }, - { url = "https://files.pythonhosted.org/packages/04/ab/c3c14f25ddaecd6fc58a34858f6a93a21eea6c266ba162fa99f3d0de12ac/numpy-2.2.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0bcb1d057b7571334139129b7f941588f69ce7c4ed15a9d6162b2ea54ded700c", size = 15883173 }, - { url = "https://files.pythonhosted.org/packages/50/18/f53710a19042911c7aca824afe97c203728a34b8cf123e2d94621a12edc3/numpy-2.2.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:36ab5b23915887543441efd0417e6a3baa08634308894316f446027611b53bf1", size = 18206881 }, - { url = "https://files.pythonhosted.org/packages/6b/ec/5b407bab82f10c65af5a5fe754728df03f960fd44d27c036b61f7b3ef255/numpy-2.2.5-cp310-cp310-win32.whl", hash = "sha256:422cc684f17bc963da5f59a31530b3936f57c95a29743056ef7a7903a5dbdf88", size = 6609852 }, - { url = "https://files.pythonhosted.org/packages/b6/f5/467ca8675c7e6c567f571d8db942cc10a87588bd9e20a909d8af4171edda/numpy-2.2.5-cp310-cp310-win_amd64.whl", hash = "sha256:e4f0b035d9d0ed519c813ee23e0a733db81ec37d2e9503afbb6e54ccfdee0fa7", size = 12944922 }, - { url = "https://files.pythonhosted.org/packages/f5/fb/e4e4c254ba40e8f0c78218f9e86304628c75b6900509b601c8433bdb5da7/numpy-2.2.5-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c42365005c7a6c42436a54d28c43fe0e01ca11eb2ac3cefe796c25a5f98e5e9b", size = 21256475 }, - { url = "https://files.pythonhosted.org/packages/81/32/dd1f7084f5c10b2caad778258fdaeedd7fbd8afcd2510672811e6138dfac/numpy-2.2.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:498815b96f67dc347e03b719ef49c772589fb74b8ee9ea2c37feae915ad6ebda", size = 14461474 }, - { url = "https://files.pythonhosted.org/packages/0e/65/937cdf238ef6ac54ff749c0f66d9ee2b03646034c205cea9b6c51f2f3ad1/numpy-2.2.5-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:6411f744f7f20081b1b4e7112e0f4c9c5b08f94b9f086e6f0adf3645f85d3a4d", size = 5426875 }, - { url = "https://files.pythonhosted.org/packages/25/17/814515fdd545b07306eaee552b65c765035ea302d17de1b9cb50852d2452/numpy-2.2.5-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:9de6832228f617c9ef45d948ec1cd8949c482238d68b2477e6f642c33a7b0a54", size = 6969176 }, - { url = "https://files.pythonhosted.org/packages/e5/32/a66db7a5c8b5301ec329ab36d0ecca23f5e18907f43dbd593c8ec326d57c/numpy-2.2.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:369e0d4647c17c9363244f3468f2227d557a74b6781cb62ce57cf3ef5cc7c610", size = 14374850 }, - { url = "https://files.pythonhosted.org/packages/ad/c9/1bf6ada582eebcbe8978f5feb26584cd2b39f94ededeea034ca8f84af8c8/numpy-2.2.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:262d23f383170f99cd9191a7c85b9a50970fe9069b2f8ab5d786eca8a675d60b", size = 16430306 }, - { url = "https://files.pythonhosted.org/packages/6a/f0/3f741863f29e128f4fcfdb99253cc971406b402b4584663710ee07f5f7eb/numpy-2.2.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:aa70fdbdc3b169d69e8c59e65c07a1c9351ceb438e627f0fdcd471015cd956be", size = 15884767 }, - { url = "https://files.pythonhosted.org/packages/98/d9/4ccd8fd6410f7bf2d312cbc98892e0e43c2fcdd1deae293aeb0a93b18071/numpy-2.2.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37e32e985f03c06206582a7323ef926b4e78bdaa6915095ef08070471865b906", size = 18219515 }, - { url = "https://files.pythonhosted.org/packages/b1/56/783237243d4395c6dd741cf16eeb1a9035ee3d4310900e6b17e875d1b201/numpy-2.2.5-cp311-cp311-win32.whl", hash = "sha256:f5045039100ed58fa817a6227a356240ea1b9a1bc141018864c306c1a16d4175", size = 6607842 }, - { url = "https://files.pythonhosted.org/packages/98/89/0c93baaf0094bdaaaa0536fe61a27b1dce8a505fa262a865ec142208cfe9/numpy-2.2.5-cp311-cp311-win_amd64.whl", hash = "sha256:b13f04968b46ad705f7c8a80122a42ae8f620536ea38cf4bdd374302926424dd", size = 12949071 }, - { url = "https://files.pythonhosted.org/packages/e2/f7/1fd4ff108cd9d7ef929b8882692e23665dc9c23feecafbb9c6b80f4ec583/numpy-2.2.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051", size = 20948633 }, - { url = "https://files.pythonhosted.org/packages/12/03/d443c278348371b20d830af155ff2079acad6a9e60279fac2b41dbbb73d8/numpy-2.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc", size = 14176123 }, - { url = "https://files.pythonhosted.org/packages/2b/0b/5ca264641d0e7b14393313304da48b225d15d471250376f3fbdb1a2be603/numpy-2.2.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e", size = 5163817 }, - { url = "https://files.pythonhosted.org/packages/04/b3/d522672b9e3d28e26e1613de7675b441bbd1eaca75db95680635dd158c67/numpy-2.2.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa", size = 6698066 }, - { url = "https://files.pythonhosted.org/packages/a0/93/0f7a75c1ff02d4b76df35079676b3b2719fcdfb39abdf44c8b33f43ef37d/numpy-2.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571", size = 14087277 }, - { url = "https://files.pythonhosted.org/packages/b0/d9/7c338b923c53d431bc837b5b787052fef9ae68a56fe91e325aac0d48226e/numpy-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073", size = 16135742 }, - { url = "https://files.pythonhosted.org/packages/2d/10/4dec9184a5d74ba9867c6f7d1e9f2e0fb5fe96ff2bf50bb6f342d64f2003/numpy-2.2.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8", size = 15581825 }, - { url = "https://files.pythonhosted.org/packages/80/1f/2b6fcd636e848053f5b57712a7d1880b1565eec35a637fdfd0a30d5e738d/numpy-2.2.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae", size = 17899600 }, - { url = "https://files.pythonhosted.org/packages/ec/87/36801f4dc2623d76a0a3835975524a84bd2b18fe0f8835d45c8eae2f9ff2/numpy-2.2.5-cp312-cp312-win32.whl", hash = "sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb", size = 6312626 }, - { url = "https://files.pythonhosted.org/packages/8b/09/4ffb4d6cfe7ca6707336187951992bd8a8b9142cf345d87ab858d2d7636a/numpy-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282", size = 12645715 }, - { url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102 }, - { url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709 }, - { url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173 }, - { url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502 }, - { url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417 }, - { url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611 }, - { url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747 }, - { url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594 }, - { url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356 }, - { url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778 }, - { url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279 }, - { url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247 }, - { url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087 }, - { url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964 }, - { url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214 }, - { url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788 }, - { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 }, - { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 }, - { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 }, - { url = "https://files.pythonhosted.org/packages/35/e4/5ef5ef1d4308f96961198b2323bfc7c7afb0ccc0d623b01c79bc87ab496d/numpy-2.2.5-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:b4ea7e1cff6784e58fe281ce7e7f05036b3e1c89c6f922a6bfbc0a7e8768adbe", size = 21083404 }, - { url = "https://files.pythonhosted.org/packages/a3/5f/bde9238e8e977652a16a4b114ed8aa8bb093d718c706eeecb5f7bfa59572/numpy-2.2.5-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:d7543263084a85fbc09c704b515395398d31d6395518446237eac219eab9e55e", size = 6828578 }, - { url = "https://files.pythonhosted.org/packages/ef/7f/813f51ed86e559ab2afb6a6f33aa6baf8a560097e25e4882a938986c76c2/numpy-2.2.5-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0255732338c4fdd00996c0421884ea8a3651eea555c3a56b84892b66f696eb70", size = 16234796 }, - { url = "https://files.pythonhosted.org/packages/68/67/1175790323026d3337cc285cc9c50eca637d70472b5e622529df74bb8f37/numpy-2.2.5-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d2e3bdadaba0e040d1e7ab39db73e0afe2c74ae277f5614dad53eadbecbbb169", size = 12859001 }, +version = "1.26.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, + { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, + { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889 }, + { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746 }, + { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620 }, + { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659 }, + { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905 }, + { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554 }, + { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127 }, + { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994 }, + { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005 }, + { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297 }, + { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567 }, + { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812 }, + { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913 }, + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901 }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868 }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109 }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613 }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172 }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643 }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803 }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754 }, ] [[package]] @@ -2406,7 +2376,7 @@ wheels = [ [[package]] name = "pandas" -version = "2.2.3" +version = "2.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -2414,42 +2384,29 @@ dependencies = [ { 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/aa/70/c853aec59839bceed032d52010ff5f1b8d87dc3114b762e4ba2727661a3b/pandas-2.2.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:1948ddde24197a0f7add2bdc4ca83bf2b1ef84a1bc8ccffd95eda17fd836ecb5", size = 12580827 }, - { url = "https://files.pythonhosted.org/packages/99/f2/c4527768739ffa4469b2b4fff05aa3768a478aed89a2f271a79a40eee984/pandas-2.2.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:381175499d3802cde0eabbaf6324cce0c4f5d52ca6f8c377c29ad442f50f6348", size = 11303897 }, - { url = "https://files.pythonhosted.org/packages/ed/12/86c1747ea27989d7a4064f806ce2bae2c6d575b950be087837bdfcabacc9/pandas-2.2.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d9c45366def9a3dd85a6454c0e7908f2b3b8e9c138f5dc38fed7ce720d8453ed", size = 66480908 }, - { url = "https://files.pythonhosted.org/packages/44/50/7db2cd5e6373ae796f0ddad3675268c8d59fb6076e66f0c339d61cea886b/pandas-2.2.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86976a1c5b25ae3f8ccae3a5306e443569ee3c3faf444dfd0f41cda24667ad57", size = 13064210 }, - { url = "https://files.pythonhosted.org/packages/61/61/a89015a6d5536cb0d6c3ba02cebed51a95538cf83472975275e28ebf7d0c/pandas-2.2.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:b8661b0238a69d7aafe156b7fa86c44b881387509653fdf857bebc5e4008ad42", size = 16754292 }, - { url = "https://files.pythonhosted.org/packages/ce/0d/4cc7b69ce37fac07645a94e1d4b0880b15999494372c1523508511b09e40/pandas-2.2.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:37e0aced3e8f539eccf2e099f65cdb9c8aa85109b0be6e93e2baff94264bdc6f", size = 14416379 }, - { url = "https://files.pythonhosted.org/packages/31/9e/6ebb433de864a6cd45716af52a4d7a8c3c9aaf3a98368e61db9e69e69a9c/pandas-2.2.3-cp310-cp310-win_amd64.whl", hash = "sha256:56534ce0746a58afaf7942ba4863e0ef81c9c50d3f0ae93e9497d6a41a057645", size = 11598471 }, - { 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/03/d2/6fb05f20ee1b3961c7b283c1f8bafc6de752155d075c5db61c173de0de62/pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2", size = 4390211 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/8a/76a32ba459b4c376cc3780dca0f600bbbb63b3610249a068f7eb20991ee3/pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670", size = 12504200 }, + { url = "https://files.pythonhosted.org/packages/6f/3a/597311df6d41940e45ecc820edeae2e720c2077118dbb18038453986e16e/pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a", size = 11759337 }, + { url = "https://files.pythonhosted.org/packages/f8/26/79051bd18491263498f4c15b55ec80ba587f7fdf5c1472e6c9cd025ab6f5/pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18", size = 15617667 }, + { url = "https://files.pythonhosted.org/packages/b3/b3/3102c3a4abca1093e50cfec2213102a1c65c0b318a4431395d0121e6e690/pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e", size = 13010773 }, + { url = "https://files.pythonhosted.org/packages/61/4b/397ca9bcf2a9ec514360ae7fd9ab495c46de25055ecb37e518c088213ddb/pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5", size = 16275166 }, + { url = "https://files.pythonhosted.org/packages/24/1c/b6a4addfc3f04f4c36acfa74646601cf52160f8cf51fb2735c838889db1e/pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1", size = 13884784 }, + { url = "https://files.pythonhosted.org/packages/5a/f2/d079f4785d326e3868f4232108e622a307c2676023a274d9be2754dafc2a/pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430", size = 11566707 }, + { url = "https://files.pythonhosted.org/packages/ac/6b/11c0e4f5dec878a5eca77aa3b24215c49d2eda8d2cfd654a3f03a9f9d33a/pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5", size = 12523742 }, + { url = "https://files.pythonhosted.org/packages/6f/4e/63e6b79132e854a67df3d37a5c8560e45c79e2504fa57e032c1d61abb090/pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b", size = 11767486 }, + { url = "https://files.pythonhosted.org/packages/30/24/ec0412ad5297d22ad06732325cc222d10397d831b567e2b8e04cd4eda7cd/pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f", size = 15588196 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/9fd11ba8e86a8add8f2ff4e11c7111f65ec6fd1b547222160bb969e2bf5e/pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88", size = 13043435 }, + { url = "https://files.pythonhosted.org/packages/31/7f/017592099d0257847f9d8a706154a7d70689390cbcc5b58599a8a2a48fd6/pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3", size = 16240135 }, + { url = "https://files.pythonhosted.org/packages/c2/80/7465d8f2ca5837a2eb448de7942c19c52eaf5bc9c024926c2ea709c9c316/pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71", size = 13888619 }, + { url = "https://files.pythonhosted.org/packages/77/62/8e11962934e024a093758992bc82711e3e30efd5ea355cbfdc6e1ab5de76/pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9", size = 11583716 }, + { url = "https://files.pythonhosted.org/packages/e1/1e/d708cda584a2d70e6d3c930d102d07ee3d65bec3b2861f416b086cc518a8/pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc", size = 12458750 }, + { url = "https://files.pythonhosted.org/packages/72/33/e873f8bdeac9a954f93f33fb6fbdf3ded68e0096b154008855616559c64c/pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1", size = 11740624 }, + { url = "https://files.pythonhosted.org/packages/65/f9/1ff0f7dac2493f2c3a86cdb6106de8a7a6da75735f27e1c6a106b3d26e6e/pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440", size = 15185059 }, + { url = "https://files.pythonhosted.org/packages/b2/a5/7f14d11f5bb3ca5681f6827616ccfbb03ec9504322674e4f962a5e9e404b/pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106", size = 12723033 }, + { url = "https://files.pythonhosted.org/packages/dc/68/b42aea61273d47dbac1ba465739c90310e55081be4a33a0d44022194fb0a/pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e", size = 15855969 }, + { url = "https://files.pythonhosted.org/packages/dc/c3/0df8f14482f9edee3d23b55edfb1c9d94376e78e4a815e0b2f7cf2776fe7/pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042", size = 13381916 }, + { url = "https://files.pythonhosted.org/packages/87/03/fe50521919aa981f6a1c197037da4623a267b0e5f42246d69ba048e86da3/pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30", size = 11464015 }, ] [[package]] From bdc067dcbe1683e5740499ebf266cd4c7022f13a Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 6 May 2025 09:26:27 -0400 Subject: [PATCH 20/97] updated rnr-segments to fix missing flowpath attributes (#1) --- examples/quick_start.ipynb | 276 +++++----- .../src/icefabric_tools/rnr.py | 7 +- uv.lock | 503 +----------------- 3 files changed, 140 insertions(+), 646 deletions(-) diff --git a/examples/quick_start.ipynb b/examples/quick_start.ipynb index 6caaa00..6980cf7 100644 --- a/examples/quick_start.ipynb +++ b/examples/quick_start.ipynb @@ -17,6 +17,7 @@ "import os\n", "from pathlib import Path\n", "\n", + "import geopandas as gpd\n", "from pyiceberg.catalog import load_catalog\n", "\n", "from icefabric_manage import build\n", @@ -821,7 +822,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ @@ -865,182 +866,168 @@ " \n", " id\n", " toid\n", + " divide_id\n", + " ds_id\n", " mainstem\n", - " order\n", " hydroseq\n", + " hf_source\n", + " hf_id\n", " lengthkm\n", " areasqkm\n", " tot_drainage_areasqkm\n", - " has_divide\n", - " divide_id\n", - " poi_id\n", + " type\n", " vpuid\n", - " geometry\n", + " hf_hydroseq\n", + " hf_lengthkm\n", + " hf_mainstem\n", + " topo\n", + " poi_id\n", + " hl_uri\n", " \n", " \n", " \n", " \n", " 0\n", - " wb-824123\n", - " nex-824124\n", - " 1547279.0\n", - " 5.0\n", - " 3565\n", - " 9.516844\n", - " 17.663400\n", - " 12878.231399\n", - " True\n", - " cat-824123\n", + " wb-1321815\n", + " tnx-1000005117\n", + " cat-1321815\n", + " NaN\n", + " 473130.0\n", + " 9408.0\n", + " NOAA Reference Fabric\n", + " 22812067.0\n", + " 7.573456\n", + " 7.18740\n", + " 129645.996881\n", + " terminal\n", + " 08\n", + " 473132.0\n", + " 3.072944\n", + " 473130.0\n", + " fl-nex\n", + " NaN\n", " None\n", - " 05\n", - " MULTILINESTRING ((752258.435 1788547.25, 75221...\n", " \n", " \n", " 1\n", - " wb-824124\n", - " nex-824125\n", - " 1547279.0\n", - " 5.0\n", - " 3564\n", - " 4.186372\n", - " 4.710151\n", - " 12997.003050\n", - " True\n", - " cat-824124\n", - " 93863\n", - " 05\n", - " MULTILINESTRING ((753323.441 1781497.25, 75323...\n", + " wb-1321815\n", + " tnx-1000005117\n", + " cat-1321815\n", + " NaN\n", + " 473130.0\n", + " 9408.0\n", + " NOAA Reference Fabric\n", + " 22811613.0\n", + " 7.573456\n", + " 7.18740\n", + " 129645.996881\n", + " terminal\n", + " 08\n", + " 473131.0\n", + " 2.692083\n", + " 473130.0\n", + " fl-nex\n", + " NaN\n", + " None\n", " \n", " \n", " 2\n", - " wb-824125\n", - " nex-824126\n", - " 1547279.0\n", - " 5.0\n", - " 3562\n", - " 7.335880\n", - " 6.629850\n", - " 13098.629700\n", - " True\n", - " cat-824125\n", + " wb-1321815\n", + " tnx-1000005117\n", + " cat-1321815\n", + " NaN\n", + " 473130.0\n", + " 9408.0\n", + " NOAA Reference Fabric\n", + " 22811611.0\n", + " 7.573456\n", + " 7.18740\n", + " 129645.996881\n", + " terminal\n", + " 08\n", + " 473130.0\n", + " 1.808428\n", + " 473130.0\n", + " fl-nex\n", + " NaN\n", " None\n", - " 05\n", - " MULTILINESTRING ((751418.443 1779097.245, 7514...\n", " \n", " \n", " 3\n", - " wb-824126\n", - " nex-824127\n", - " 1547279.0\n", - " 5.0\n", - " 3561\n", - " 7.164683\n", - " 20.938500\n", - " 13119.568200\n", - " True\n", - " cat-824126\n", - " 74964\n", - " 05\n", - " MULTILINESTRING ((751778.441 1774552.25, 75185...\n", - " \n", - " \n", - " 4\n", - " wb-824127\n", - " nex-824128\n", - " 1547279.0\n", - " 5.0\n", - " 3558\n", - " 1.754889\n", - " 5.896801\n", - " 13549.954953\n", - " True\n", - " cat-824127\n", - " None\n", - " 05\n", - " MULTILINESTRING ((754178.441 1771642.252, 7542...\n", - " \n", - " \n", - " 5\n", - " wb-824128\n", - " nex-824129\n", - " 1547279.0\n", - " 5.0\n", - " 3557\n", - " 8.993345\n", - " 21.132900\n", - " 13571.087853\n", - " True\n", - " cat-824128\n", - " 73141\n", - " 05\n", - " MULTILINESTRING ((754396.812 1770074.121, 7543...\n", - " \n", - " \n", - " 6\n", - " wb-824129\n", - " nex-824130\n", - " 1547279.0\n", - " 5.0\n", - " 3556\n", - " 8.903493\n", - " 8.900550\n", - " 13680.138604\n", - " True\n", - " cat-824129\n", + " wb-1321754\n", + " nex-1321755\n", + " cat-1321754\n", + " NaN\n", + " 473130.0\n", + " 9562.0\n", + " NOAA Reference Fabric\n", + " 19269180.0\n", + " 5.946802\n", + " 9.06615\n", + " 127052.965484\n", + " nexus\n", + " 08\n", + " 473933.0\n", + " 0.149239\n", + " 473130.0\n", + " fl-nex\n", + " NaN\n", " None\n", - " 05\n", - " MULTILINESTRING ((754523.437 1764907.249, 7544...\n", " \n", " \n", - " 7\n", - " wb-824130\n", - " nex-824131\n", - " 1547279.0\n", - " 5.0\n", - " 3542\n", - " 2.378809\n", - " 1.035000\n", - " 13875.044853\n", - " True\n", - " cat-824130\n", + " 4\n", + " wb-1321754\n", + " nex-1321755\n", + " cat-1321754\n", + " NaN\n", + " 473130.0\n", + " 9562.0\n", + " NOAA Reference Fabric\n", + " 19269466.0\n", + " 5.946802\n", + " 9.06615\n", + " 127052.965484\n", + " nexus\n", + " 08\n", + " 473932.0\n", + " 2.638347\n", + " 473130.0\n", + " fl-nex\n", + " NaN\n", " None\n", - " 05\n", - " MULTILINESTRING ((754338.731 1760185.448, 7544...\n", " \n", " \n", "\n", "" ], "text/plain": [ - " id toid mainstem order hydroseq lengthkm areasqkm \\\n", - "0 wb-824123 nex-824124 1547279.0 5.0 3565 9.516844 17.663400 \n", - "1 wb-824124 nex-824125 1547279.0 5.0 3564 4.186372 4.710151 \n", - "2 wb-824125 nex-824126 1547279.0 5.0 3562 7.335880 6.629850 \n", - "3 wb-824126 nex-824127 1547279.0 5.0 3561 7.164683 20.938500 \n", - "4 wb-824127 nex-824128 1547279.0 5.0 3558 1.754889 5.896801 \n", - "5 wb-824128 nex-824129 1547279.0 5.0 3557 8.993345 21.132900 \n", - "6 wb-824129 nex-824130 1547279.0 5.0 3556 8.903493 8.900550 \n", - "7 wb-824130 nex-824131 1547279.0 5.0 3542 2.378809 1.035000 \n", + " id toid divide_id ds_id mainstem hydroseq \\\n", + "0 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", + "1 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", + "2 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", + "3 wb-1321754 nex-1321755 cat-1321754 NaN 473130.0 9562.0 \n", + "4 wb-1321754 nex-1321755 cat-1321754 NaN 473130.0 9562.0 \n", + "\n", + " hf_source hf_id lengthkm areasqkm \\\n", + "0 NOAA Reference Fabric 22812067.0 7.573456 7.18740 \n", + "1 NOAA Reference Fabric 22811613.0 7.573456 7.18740 \n", + "2 NOAA Reference Fabric 22811611.0 7.573456 7.18740 \n", + "3 NOAA Reference Fabric 19269180.0 5.946802 9.06615 \n", + "4 NOAA Reference Fabric 19269466.0 5.946802 9.06615 \n", "\n", - " tot_drainage_areasqkm has_divide divide_id poi_id vpuid \\\n", - "0 12878.231399 True cat-824123 None 05 \n", - "1 12997.003050 True cat-824124 93863 05 \n", - "2 13098.629700 True cat-824125 None 05 \n", - "3 13119.568200 True cat-824126 74964 05 \n", - "4 13549.954953 True cat-824127 None 05 \n", - "5 13571.087853 True cat-824128 73141 05 \n", - "6 13680.138604 True cat-824129 None 05 \n", - "7 13875.044853 True cat-824130 None 05 \n", + " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", + "0 129645.996881 terminal 08 473132.0 3.072944 \n", + "1 129645.996881 terminal 08 473131.0 2.692083 \n", + "2 129645.996881 terminal 08 473130.0 1.808428 \n", + "3 127052.965484 nexus 08 473933.0 0.149239 \n", + "4 127052.965484 nexus 08 473932.0 2.638347 \n", "\n", - " geometry \n", - "0 MULTILINESTRING ((752258.435 1788547.25, 75221... \n", - "1 MULTILINESTRING ((753323.441 1781497.25, 75323... \n", - "2 MULTILINESTRING ((751418.443 1779097.245, 7514... \n", - "3 MULTILINESTRING ((751778.441 1774552.25, 75185... \n", - "4 MULTILINESTRING ((754178.441 1771642.252, 7542... \n", - "5 MULTILINESTRING ((754396.812 1770074.121, 7543... \n", - "6 MULTILINESTRING ((754523.437 1764907.249, 7544... \n", - "7 MULTILINESTRING ((754338.731 1760185.448, 7544... " + " hf_mainstem topo poi_id hl_uri \n", + "0 473130.0 fl-nex NaN None \n", + "1 473130.0 fl-nex NaN None \n", + "2 473130.0 fl-nex NaN None \n", + "3 473130.0 fl-nex NaN None \n", + "4 473130.0 fl-nex NaN None " ] }, "execution_count": 8, @@ -1050,7 +1037,8 @@ ], "source": [ "import geopandas as gpd\n", - "gpd.read_file(\"../data/test_rnr.gpkg\", layer=\"flowpaths\")" + "gdf = gpd.read_file(\"../data/test_ds_rnr.gpkg\", layer=\"network\")\n", + "gdf.head()" ] }, { diff --git a/src/icefabric_tools/src/icefabric_tools/rnr.py b/src/icefabric_tools/src/icefabric_tools/rnr.py index 39b79ac..d9ae9e0 100644 --- a/src/icefabric_tools/src/icefabric_tools/rnr.py +++ b/src/icefabric_tools/src/icefabric_tools/rnr.py @@ -59,13 +59,14 @@ def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.Ge # Get full river network filtered_nexus_points = table_to_geopandas(table=nexus, row_filter=In("id", filtered_flowpaths["toid"])) filtered_divides = table_to_geopandas(table=divides, row_filter=In("divide_id", filtered_flowpaths["divide_id"])) - filtered_network = network.scan(row_filter=In("id", np.concatenate([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() filtered_divide_attr = divides_attr.scan(row_filter=In("divide_id", filtered_flowpaths["divide_id"])).to_pandas() - filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() - filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", filtered_flowpaths["toid"])).to_pandas() + filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", filtered_flowpaths["id"])).to_pandas() + filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", filtered_flowpaths["id"])).to_pandas() filtered_pois = pois.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() filtered_hydrolocations = hydrolocations.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() filtered_flowpaths = to_geopandas(filtered_flowpaths) + filtered_network = network.scan(row_filter=In("id", np.concatenate([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() + layers = { "flowpaths": filtered_flowpaths, diff --git a/uv.lock b/uv.lock index 56a2b66..5dd3bbe 100644 --- a/uv.lock +++ b/uv.lock @@ -1,6 +1,6 @@ version = 1 revision = 1 -requires-python = ">=3.10" +requires-python = ">3.10, <3.13" resolution-markers = [ "python_full_version >= '3.12'", "python_full_version == '3.11.*'", @@ -105,22 +105,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, - { url = "https://files.pythonhosted.org/packages/0a/18/be8b5dd6b9cf1b2172301dbed28e8e5e878ee687c21947a6c81d6ceaa15d/aiohttp-3.11.18-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:474215ec618974054cf5dc465497ae9708543cbfc312c65212325d4212525811", size = 699833 }, - { url = "https://files.pythonhosted.org/packages/0d/84/ecdc68e293110e6f6f6d7b57786a77555a85f70edd2b180fb1fafaff361a/aiohttp-3.11.18-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6ced70adf03920d4e67c373fd692123e34d3ac81dfa1c27e45904a628567d804", size = 462774 }, - { url = "https://files.pythonhosted.org/packages/d7/85/f07718cca55884dad83cc2433746384d267ee970e91f0dcc75c6d5544079/aiohttp-3.11.18-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2d9f6c0152f8d71361905aaf9ed979259537981f47ad099c8b3d81e0319814bd", size = 454429 }, - { url = "https://files.pythonhosted.org/packages/82/02/7f669c3d4d39810db8842c4e572ce4fe3b3a9b82945fdd64affea4c6947e/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a35197013ed929c0aed5c9096de1fc5a9d336914d73ab3f9df14741668c0616c", size = 1670283 }, - { url = "https://files.pythonhosted.org/packages/ec/79/b82a12f67009b377b6c07a26bdd1b81dab7409fc2902d669dbfa79e5ac02/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:540b8a1f3a424f1af63e0af2d2853a759242a1769f9f1ab053996a392bd70118", size = 1717231 }, - { url = "https://files.pythonhosted.org/packages/a6/38/d5a1f28c3904a840642b9a12c286ff41fc66dfa28b87e204b1f242dbd5e6/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f9e6710ebebfce2ba21cee6d91e7452d1125100f41b906fb5af3da8c78b764c1", size = 1769621 }, - { url = "https://files.pythonhosted.org/packages/53/2d/deb3749ba293e716b5714dda06e257f123c5b8679072346b1eb28b766a0b/aiohttp-3.11.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8af2ef3b4b652ff109f98087242e2ab974b2b2b496304063585e3d78de0b000", size = 1678667 }, - { url = "https://files.pythonhosted.org/packages/b8/a8/04b6e11683a54e104b984bd19a9790eb1ae5f50968b601bb202d0406f0ff/aiohttp-3.11.18-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:28c3f975e5ae3dbcbe95b7e3dcd30e51da561a0a0f2cfbcdea30fc1308d72137", size = 1601592 }, - { url = "https://files.pythonhosted.org/packages/5e/9d/c33305ae8370b789423623f0e073d09ac775cd9c831ac0f11338b81c16e0/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c28875e316c7b4c3e745172d882d8a5c835b11018e33432d281211af35794a93", size = 1621679 }, - { url = "https://files.pythonhosted.org/packages/56/45/8e9a27fff0538173d47ba60362823358f7a5f1653c6c30c613469f94150e/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:13cd38515568ae230e1ef6919e2e33da5d0f46862943fcda74e7e915096815f3", size = 1656878 }, - { url = "https://files.pythonhosted.org/packages/84/5b/8c5378f10d7a5a46b10cb9161a3aac3eeae6dba54ec0f627fc4ddc4f2e72/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:0e2a92101efb9f4c2942252c69c63ddb26d20f46f540c239ccfa5af865197bb8", size = 1620509 }, - { url = "https://files.pythonhosted.org/packages/9e/2f/99dee7bd91c62c5ff0aa3c55f4ae7e1bc99c6affef780d7777c60c5b3735/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e6d3e32b8753c8d45ac550b11a1090dd66d110d4ef805ffe60fa61495360b3b2", size = 1680263 }, - { url = "https://files.pythonhosted.org/packages/03/0a/378745e4ff88acb83e2d5c884a4fe993a6e9f04600a4560ce0e9b19936e3/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:ea4cf2488156e0f281f93cc2fd365025efcba3e2d217cbe3df2840f8c73db261", size = 1715014 }, - { url = "https://files.pythonhosted.org/packages/f6/0b/b5524b3bb4b01e91bc4323aad0c2fcaebdf2f1b4d2eb22743948ba364958/aiohttp-3.11.18-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9d4df95ad522c53f2b9ebc07f12ccd2cb15550941e11a5bbc5ddca2ca56316d7", size = 1666614 }, - { url = "https://files.pythonhosted.org/packages/c7/b7/3d7b036d5a4ed5a4c704e0754afe2eef24a824dfab08e6efbffb0f6dd36a/aiohttp-3.11.18-cp313-cp313-win32.whl", hash = "sha256:cdd1bbaf1e61f0d94aced116d6e95fe25942f7a5f42382195fd9501089db5d78", size = 411358 }, - { url = "https://files.pythonhosted.org/packages/1e/3c/143831b32cd23b5263a995b2a1794e10aa42f8a895aae5074c20fda36c07/aiohttp-3.11.18-cp313-cp313-win_amd64.whl", hash = "sha256:bdd619c27e44382cf642223f11cfd4d795161362a5a1fc1fa3940397bc89db01", size = 437658 }, ] [[package]] @@ -161,7 +145,7 @@ dependencies = [ { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } wheels = [ @@ -280,7 +264,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, - { url = "https://files.pythonhosted.org/packages/04/b8/60dcfb90eb03a06e883a92abbc2ab95c71f0d8c9dd0af76ab1d5ce0b1402/backrefs-5.8-py313-none-any.whl", hash = "sha256:e3a63b073867dbefd0536425f43db618578528e3896fb77be7141328642a1585", size = 399915 }, { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, ] @@ -324,10 +307,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/98/87/0edf98916640efa5d0696e1abb0a8357b52e69e82322628f25bf14d263d1/black-25.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8f0b18a02996a836cc9c9c78e5babec10930862827b1b724ddfe98ccf2f2fe4f", size = 1650673 }, - { url = "https://files.pythonhosted.org/packages/52/e5/f7bf17207cf87fa6e9b676576749c6b6ed0d70f179a3d812c997870291c3/black-25.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:afebb7098bfbc70037a053b91ae8437c3857482d3a690fefc03e9ff7aa9a5fd3", size = 1453190 }, - { url = "https://files.pythonhosted.org/packages/e3/ee/adda3d46d4a9120772fae6de454c8495603c37c4c3b9c60f25b1ab6401fe/black-25.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:030b9759066a4ee5e5aca28c3c77f9c64789cdd4de8ac1df642c40b708be6171", size = 1782926 }, - { url = "https://files.pythonhosted.org/packages/cc/64/94eb5f45dcb997d2082f097a3944cfc7fe87e071907f677e80788a2d7b7a/black-25.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:a22f402b410566e2d1c950708c77ebf5ebd5d0d88a6a2e87c86d9fb48afa0d18", size = 1442613 }, { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, ] @@ -452,17 +431,6 @@ wheels = [ { 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]] @@ -519,19 +487,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/38/94/ce8e6f63d18049672c76d07d119304e1e2d7c6098f0841b51c666e9f44a0/charset_normalizer-3.4.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:aabfa34badd18f1da5ec1bc2715cadc8dca465868a4e73a0173466b688f29dda", size = 195698 }, - { url = "https://files.pythonhosted.org/packages/24/2e/dfdd9770664aae179a96561cc6952ff08f9a8cd09a908f259a9dfa063568/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:22e14b5d70560b8dd51ec22863f370d1e595ac3d024cb8ad7d308b4cd95f8313", size = 140162 }, - { url = "https://files.pythonhosted.org/packages/24/4e/f646b9093cff8fc86f2d60af2de4dc17c759de9d554f130b140ea4738ca6/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8436c508b408b82d87dc5f62496973a1805cd46727c34440b0d29d8a2f50a6c9", size = 150263 }, - { url = "https://files.pythonhosted.org/packages/5e/67/2937f8d548c3ef6e2f9aab0f6e21001056f692d43282b165e7c56023e6dd/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d074908e1aecee37a7635990b2c6d504cd4766c7bc9fc86d63f9c09af3fa11b", size = 142966 }, - { url = "https://files.pythonhosted.org/packages/52/ed/b7f4f07de100bdb95c1756d3a4d17b90c1a3c53715c1a476f8738058e0fa/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:955f8851919303c92343d2f66165294848d57e9bba6cf6e3625485a70a038d11", size = 144992 }, - { url = "https://files.pythonhosted.org/packages/96/2c/d49710a6dbcd3776265f4c923bb73ebe83933dfbaa841c5da850fe0fd20b/charset_normalizer-3.4.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ecbf16649486d4aebafeaa7ec4c9fed8b88101f4dd612dcaf65d5e815f837f", size = 147162 }, - { url = "https://files.pythonhosted.org/packages/b4/41/35ff1f9a6bd380303dea55e44c4933b4cc3c4850988927d4082ada230273/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:0924e81d3d5e70f8126529951dac65c1010cdf117bb75eb02dd12339b57749dd", size = 140972 }, - { url = "https://files.pythonhosted.org/packages/fb/43/c6a0b685fe6910d08ba971f62cd9c3e862a85770395ba5d9cad4fede33ab/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:2967f74ad52c3b98de4c3b32e1a44e32975e008a9cd2a8cc8966d6a5218c5cb2", size = 149095 }, - { url = "https://files.pythonhosted.org/packages/4c/ff/a9a504662452e2d2878512115638966e75633519ec11f25fca3d2049a94a/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:c75cb2a3e389853835e84a2d8fb2b81a10645b503eca9bcb98df6b5a43eb8886", size = 152668 }, - { url = "https://files.pythonhosted.org/packages/6c/71/189996b6d9a4b932564701628af5cee6716733e9165af1d5e1b285c530ed/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:09b26ae6b1abf0d27570633b2b078a2a20419c99d66fb2823173d73f188ce601", size = 150073 }, - { url = "https://files.pythonhosted.org/packages/e4/93/946a86ce20790e11312c87c75ba68d5f6ad2208cfb52b2d6a2c32840d922/charset_normalizer-3.4.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fa88b843d6e211393a37219e6a1c1df99d35e8fd90446f1118f4216e307e48cd", size = 145732 }, - { url = "https://files.pythonhosted.org/packages/cd/e5/131d2fb1b0dddafc37be4f3a2fa79aa4c037368be9423061dccadfd90091/charset_normalizer-3.4.1-cp313-cp313-win32.whl", hash = "sha256:eb8178fe3dba6450a3e024e95ac49ed3400e506fd4e9e5c32d30adda88cbd407", size = 95391 }, - { url = "https://files.pythonhosted.org/packages/27/f2/4f9a69cc7712b9b5ad8fdb87039fd89abba997ad5cbe690d1835d40405b0/charset_normalizer-3.4.1-cp313-cp313-win_amd64.whl", hash = "sha256:b1ac5992a838106edb89654e0aebfc24f5848ae2547d22c2c3f66454daa11971", size = 102702 }, { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, ] @@ -631,26 +586,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, - { url = "https://files.pythonhosted.org/packages/2e/61/5673f7e364b31e4e7ef6f61a4b5121c5f170f941895912f773d95270f3a2/contourpy-1.3.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:de39db2604ae755316cb5967728f4bea92685884b1e767b7c24e983ef5f771cb", size = 271630 }, - { url = "https://files.pythonhosted.org/packages/ff/66/a40badddd1223822c95798c55292844b7e871e50f6bfd9f158cb25e0bd39/contourpy-1.3.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3f9e896f447c5c8618f1edb2bafa9a4030f22a575ec418ad70611450720b5b08", size = 255670 }, - { url = "https://files.pythonhosted.org/packages/1e/c7/cf9fdee8200805c9bc3b148f49cb9482a4e3ea2719e772602a425c9b09f8/contourpy-1.3.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:71e2bd4a1c4188f5c2b8d274da78faab884b59df20df63c34f74aa1813c4427c", size = 306694 }, - { url = "https://files.pythonhosted.org/packages/dd/e7/ccb9bec80e1ba121efbffad7f38021021cda5be87532ec16fd96533bb2e0/contourpy-1.3.2-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:de425af81b6cea33101ae95ece1f696af39446db9682a0b56daaa48cfc29f38f", size = 345986 }, - { url = "https://files.pythonhosted.org/packages/dc/49/ca13bb2da90391fa4219fdb23b078d6065ada886658ac7818e5441448b78/contourpy-1.3.2-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:977e98a0e0480d3fe292246417239d2d45435904afd6d7332d8455981c408b85", size = 318060 }, - { url = "https://files.pythonhosted.org/packages/c8/65/5245ce8c548a8422236c13ffcdcdada6a2a812c361e9e0c70548bb40b661/contourpy-1.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:434f0adf84911c924519d2b08fc10491dd282b20bdd3fa8f60fd816ea0b48841", size = 322747 }, - { url = "https://files.pythonhosted.org/packages/72/30/669b8eb48e0a01c660ead3752a25b44fdb2e5ebc13a55782f639170772f9/contourpy-1.3.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:c66c4906cdbc50e9cba65978823e6e00b45682eb09adbb78c9775b74eb222422", size = 1308895 }, - { url = "https://files.pythonhosted.org/packages/05/5a/b569f4250decee6e8d54498be7bdf29021a4c256e77fe8138c8319ef8eb3/contourpy-1.3.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8b7fc0cd78ba2f4695fd0a6ad81a19e7e3ab825c31b577f384aa9d7817dc3bef", size = 1379098 }, - { url = "https://files.pythonhosted.org/packages/19/ba/b227c3886d120e60e41b28740ac3617b2f2b971b9f601c835661194579f1/contourpy-1.3.2-cp313-cp313-win32.whl", hash = "sha256:15ce6ab60957ca74cff444fe66d9045c1fd3e92c8936894ebd1f3eef2fff075f", size = 178535 }, - { url = "https://files.pythonhosted.org/packages/12/6e/2fed56cd47ca739b43e892707ae9a13790a486a3173be063681ca67d2262/contourpy-1.3.2-cp313-cp313-win_amd64.whl", hash = "sha256:e1578f7eafce927b168752ed7e22646dad6cd9bca673c60bff55889fa236ebf9", size = 223096 }, - { url = "https://files.pythonhosted.org/packages/54/4c/e76fe2a03014a7c767d79ea35c86a747e9325537a8b7627e0e5b3ba266b4/contourpy-1.3.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0475b1f6604896bc7c53bb070e355e9321e1bc0d381735421a2d2068ec56531f", size = 285090 }, - { url = "https://files.pythonhosted.org/packages/7b/e2/5aba47debd55d668e00baf9651b721e7733975dc9fc27264a62b0dd26eb8/contourpy-1.3.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:c85bb486e9be652314bb5b9e2e3b0d1b2e643d5eec4992c0fbe8ac71775da739", size = 268643 }, - { url = "https://files.pythonhosted.org/packages/a1/37/cd45f1f051fe6230f751cc5cdd2728bb3a203f5619510ef11e732109593c/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:745b57db7758f3ffc05a10254edd3182a2a83402a89c00957a8e8a22f5582823", size = 310443 }, - { url = "https://files.pythonhosted.org/packages/8b/a2/36ea6140c306c9ff6dd38e3bcec80b3b018474ef4d17eb68ceecd26675f4/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:970e9173dbd7eba9b4e01aab19215a48ee5dd3f43cef736eebde064a171f89a5", size = 349865 }, - { url = "https://files.pythonhosted.org/packages/95/b7/2fc76bc539693180488f7b6cc518da7acbbb9e3b931fd9280504128bf956/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6c4639a9c22230276b7bffb6a850dfc8258a2521305e1faefe804d006b2e532", size = 321162 }, - { url = "https://files.pythonhosted.org/packages/f4/10/76d4f778458b0aa83f96e59d65ece72a060bacb20cfbee46cf6cd5ceba41/contourpy-1.3.2-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc829960f34ba36aad4302e78eabf3ef16a3a100863f0d4eeddf30e8a485a03b", size = 327355 }, - { url = "https://files.pythonhosted.org/packages/43/a3/10cf483ea683f9f8ab096c24bad3cce20e0d1dd9a4baa0e2093c1c962d9d/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:d32530b534e986374fc19eaa77fcb87e8a99e5431499949b828312bdcd20ac52", size = 1307935 }, - { url = "https://files.pythonhosted.org/packages/78/73/69dd9a024444489e22d86108e7b913f3528f56cfc312b5c5727a44188471/contourpy-1.3.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:e298e7e70cf4eb179cc1077be1c725b5fd131ebc81181bf0c03525c8abc297fd", size = 1372168 }, - { url = "https://files.pythonhosted.org/packages/0f/1b/96d586ccf1b1a9d2004dd519b25fbf104a11589abfd05484ff12199cca21/contourpy-1.3.2-cp313-cp313t-win32.whl", hash = "sha256:d0e589ae0d55204991450bb5c23f571c64fe43adaa53f93fc902a84c96f52fe1", size = 189550 }, - { url = "https://files.pythonhosted.org/packages/b0/e6/6000d0094e8a5e32ad62591c8609e269febb6e4db83a1c75ff8868b42731/contourpy-1.3.2-cp313-cp313t-win_amd64.whl", hash = "sha256:78e9253c3de756b3f6a5174d024c4835acd59eb3f8e2ca13e775dbffe1558f69", size = 238214 }, { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681 }, { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101 }, { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599 }, @@ -744,10 +679,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/4d/e4/395c792b243f2367d84202dc33689aa3d910fb9826a7491ba20fc9e261f5/debugpy-1.8.14-cp313-cp313-macosx_14_0_universal2.whl", hash = "sha256:329a15d0660ee09fec6786acdb6e0443d595f64f5d096fc3e3ccf09a4259033f", size = 2485676 }, - { url = "https://files.pythonhosted.org/packages/ba/f1/6f2ee3f991327ad9e4c2f8b82611a467052a0fb0e247390192580e89f7ff/debugpy-1.8.14-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0f920c7f9af409d90f5fd26e313e119d908b0dd2952c2393cd3247a462331f15", size = 4217514 }, - { url = "https://files.pythonhosted.org/packages/79/28/b9d146f8f2dc535c236ee09ad3e5ac899adb39d7a19b49f03ac95d216beb/debugpy-1.8.14-cp313-cp313-win32.whl", hash = "sha256:3784ec6e8600c66cbdd4ca2726c72d8ca781e94bce2f396cc606d458146f8f4e", size = 5254756 }, - { url = "https://files.pythonhosted.org/packages/e0/62/a7b4a57013eac4ccaef6977966e6bec5c63906dd25a86e35f155952e29a1/debugpy-1.8.14-cp313-cp313-win_amd64.whl", hash = "sha256:684eaf43c95a3ec39a96f1f5195a7ff3d4144e4a18d69bb66beeb1a6de605d6e", size = 5297119 }, { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, ] @@ -863,10 +794,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603 }, { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639 }, { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921 }, - { url = "https://files.pythonhosted.org/packages/c5/e0/665ce969cab6339c19527318534236e5e4184ee03b38cd474497ebd22f4d/fiona-1.10.1-cp313-cp313-macosx_10_15_x86_64.whl", hash = "sha256:a00b05935c9900678b2ca660026b39efc4e4b916983915d595964eb381763ae7", size = 16106571 }, - { url = "https://files.pythonhosted.org/packages/23/c8/150094fbc4220d22217f480cc67b6ee4c2f4324b4b58cd25527cd5905937/fiona-1.10.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:f78b781d5bcbbeeddf1d52712f33458775dbb9fd1b2a39882c83618348dd730f", size = 14738178 }, - { url = "https://files.pythonhosted.org/packages/20/83/63da54032c0c03d4921b854111e33d3a1dadec5d2b7e741fba6c8c6486a6/fiona-1.10.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:29ceeb38e3cd30d91d68858d0817a1bb0c4f96340d334db4b16a99edb0902d35", size = 17221414 }, - { url = "https://files.pythonhosted.org/packages/60/14/5ef47002ef19bd5cfbc7a74b21c30ef83f22beb80609314ce0328989ceda/fiona-1.10.1-cp313-cp313-win_amd64.whl", hash = "sha256:15751c90e29cee1e01fcfedf42ab85987e32f0b593cf98d88ed52199ef5ca623", size = 24461486 }, ] [[package]] @@ -899,14 +826,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546 }, { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776 }, { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956 }, - { url = "https://files.pythonhosted.org/packages/e9/2f/11439f3af51e4bb75ac9598c29f8601aa501902dcedf034bdc41f47dd799/fonttools-4.57.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:408ce299696012d503b714778d89aa476f032414ae57e57b42e4b92363e0b8ef", size = 2739175 }, - { url = "https://files.pythonhosted.org/packages/25/52/677b55a4c0972dc3820c8dba20a29c358197a78229daa2ea219fdb19e5d5/fonttools-4.57.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:bbceffc80aa02d9e8b99f2a7491ed8c4a783b2fc4020119dc405ca14fb5c758c", size = 2276583 }, - { url = "https://files.pythonhosted.org/packages/64/79/184555f8fa77b827b9460a4acdbbc0b5952bb6915332b84c615c3a236826/fonttools-4.57.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f022601f3ee9e1f6658ed6d184ce27fa5216cee5b82d279e0f0bde5deebece72", size = 4766437 }, - { url = "https://files.pythonhosted.org/packages/f8/ad/c25116352f456c0d1287545a7aa24e98987b6d99c5b0456c4bd14321f20f/fonttools-4.57.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4dea5893b58d4637ffa925536462ba626f8a1b9ffbe2f5c272cdf2c6ebadb817", size = 4838431 }, - { url = "https://files.pythonhosted.org/packages/53/ae/398b2a833897297797a44f519c9af911c2136eb7aa27d3f1352c6d1129fa/fonttools-4.57.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:dff02c5c8423a657c550b48231d0a48d7e2b2e131088e55983cfe74ccc2c7cc9", size = 4951011 }, - { url = "https://files.pythonhosted.org/packages/b7/5d/7cb31c4bc9ffb9a2bbe8b08f8f53bad94aeb158efad75da645b40b62cb73/fonttools-4.57.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:767604f244dc17c68d3e2dbf98e038d11a18abc078f2d0f84b6c24571d9c0b13", size = 5205679 }, - { url = "https://files.pythonhosted.org/packages/4c/e4/6934513ec2c4d3d69ca1bc3bd34d5c69dafcbf68c15388dd3bb062daf345/fonttools-4.57.0-cp313-cp313-win32.whl", hash = "sha256:8e2e12d0d862f43d51e5afb8b9751c77e6bec7d2dc00aad80641364e9df5b199", size = 2144833 }, - { url = "https://files.pythonhosted.org/packages/c4/0d/2177b7fdd23d017bcfb702fd41e47d4573766b9114da2fddbac20dcc4957/fonttools-4.57.0-cp313-cp313-win_amd64.whl", hash = "sha256:f1d6bc9c23356908db712d282acb3eebd4ae5ec6d8b696aa40342b1d84f8e9e3", size = 2190799 }, { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, ] @@ -976,40 +895,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, - { url = "https://files.pythonhosted.org/packages/6f/e5/04c7090c514d96ca00887932417f04343ab94904a56ab7f57861bf63652d/frozenlist-1.6.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1d7fb014fe0fbfee3efd6a94fc635aeaa68e5e1720fe9e57357f2e2c6e1a647e", size = 158182 }, - { url = "https://files.pythonhosted.org/packages/e9/8f/60d0555c61eec855783a6356268314d204137f5e0c53b59ae2fc28938c99/frozenlist-1.6.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:01bcaa305a0fdad12745502bfd16a1c75b14558dabae226852f9159364573117", size = 122838 }, - { url = "https://files.pythonhosted.org/packages/5a/a7/d0ec890e3665b4b3b7c05dc80e477ed8dc2e2e77719368e78e2cd9fec9c8/frozenlist-1.6.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8b314faa3051a6d45da196a2c495e922f987dc848e967d8cfeaee8a0328b1cd4", size = 120980 }, - { url = "https://files.pythonhosted.org/packages/cc/19/9b355a5e7a8eba903a008579964192c3e427444752f20b2144b10bb336df/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da62fecac21a3ee10463d153549d8db87549a5e77eefb8c91ac84bb42bb1e4e3", size = 305463 }, - { url = "https://files.pythonhosted.org/packages/9c/8d/5b4c758c2550131d66935ef2fa700ada2461c08866aef4229ae1554b93ca/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1eb89bf3454e2132e046f9599fbcf0a4483ed43b40f545551a39316d0201cd1", size = 297985 }, - { url = "https://files.pythonhosted.org/packages/48/2c/537ec09e032b5865715726b2d1d9813e6589b571d34d01550c7aeaad7e53/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d18689b40cb3936acd971f663ccb8e2589c45db5e2c5f07e0ec6207664029a9c", size = 311188 }, - { url = "https://files.pythonhosted.org/packages/31/2f/1aa74b33f74d54817055de9a4961eff798f066cdc6f67591905d4fc82a84/frozenlist-1.6.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e67ddb0749ed066b1a03fba812e2dcae791dd50e5da03be50b6a14d0c1a9ee45", size = 311874 }, - { url = "https://files.pythonhosted.org/packages/bf/f0/cfec18838f13ebf4b37cfebc8649db5ea71a1b25dacd691444a10729776c/frozenlist-1.6.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fc5e64626e6682638d6e44398c9baf1d6ce6bc236d40b4b57255c9d3f9761f1f", size = 291897 }, - { url = "https://files.pythonhosted.org/packages/ea/a5/deb39325cbbea6cd0a46db8ccd76150ae2fcbe60d63243d9df4a0b8c3205/frozenlist-1.6.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:437cfd39564744ae32ad5929e55b18ebd88817f9180e4cc05e7d53b75f79ce85", size = 305799 }, - { url = "https://files.pythonhosted.org/packages/78/22/6ddec55c5243a59f605e4280f10cee8c95a449f81e40117163383829c241/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:62dd7df78e74d924952e2feb7357d826af8d2f307557a779d14ddf94d7311be8", size = 302804 }, - { url = "https://files.pythonhosted.org/packages/5d/b7/d9ca9bab87f28855063c4d202936800219e39db9e46f9fb004d521152623/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:a66781d7e4cddcbbcfd64de3d41a61d6bdde370fc2e38623f30b2bd539e84a9f", size = 316404 }, - { url = "https://files.pythonhosted.org/packages/a6/3a/1255305db7874d0b9eddb4fe4a27469e1fb63720f1fc6d325a5118492d18/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:482fe06e9a3fffbcd41950f9d890034b4a54395c60b5e61fae875d37a699813f", size = 295572 }, - { url = "https://files.pythonhosted.org/packages/2a/f2/8d38eeee39a0e3a91b75867cc102159ecccf441deb6ddf67be96d3410b84/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:e4f9373c500dfc02feea39f7a56e4f543e670212102cc2eeb51d3a99c7ffbde6", size = 307601 }, - { url = "https://files.pythonhosted.org/packages/38/04/80ec8e6b92f61ef085422d7b196822820404f940950dde5b2e367bede8bc/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e69bb81de06827147b7bfbaeb284d85219fa92d9f097e32cc73675f279d70188", size = 314232 }, - { url = "https://files.pythonhosted.org/packages/3a/58/93b41fb23e75f38f453ae92a2f987274c64637c450285577bd81c599b715/frozenlist-1.6.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:7613d9977d2ab4a9141dde4a149f4357e4065949674c5649f920fec86ecb393e", size = 308187 }, - { url = "https://files.pythonhosted.org/packages/6a/a2/e64df5c5aa36ab3dee5a40d254f3e471bb0603c225f81664267281c46a2d/frozenlist-1.6.0-cp313-cp313-win32.whl", hash = "sha256:4def87ef6d90429f777c9d9de3961679abf938cb6b7b63d4a7eb8a268babfce4", size = 114772 }, - { url = "https://files.pythonhosted.org/packages/a0/77/fead27441e749b2d574bb73d693530d59d520d4b9e9679b8e3cb779d37f2/frozenlist-1.6.0-cp313-cp313-win_amd64.whl", hash = "sha256:37a8a52c3dfff01515e9bbbee0e6063181362f9de3db2ccf9bc96189b557cbfd", size = 119847 }, - { url = "https://files.pythonhosted.org/packages/df/bd/cc6d934991c1e5d9cafda83dfdc52f987c7b28343686aef2e58a9cf89f20/frozenlist-1.6.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:46138f5a0773d064ff663d273b309b696293d7a7c00a0994c5c13a5078134b64", size = 174937 }, - { url = "https://files.pythonhosted.org/packages/f2/a2/daf945f335abdbfdd5993e9dc348ef4507436936ab3c26d7cfe72f4843bf/frozenlist-1.6.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f88bc0a2b9c2a835cb888b32246c27cdab5740059fb3688852bf91e915399b91", size = 136029 }, - { url = "https://files.pythonhosted.org/packages/51/65/4c3145f237a31247c3429e1c94c384d053f69b52110a0d04bfc8afc55fb2/frozenlist-1.6.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:777704c1d7655b802c7850255639672e90e81ad6fa42b99ce5ed3fbf45e338dd", size = 134831 }, - { url = "https://files.pythonhosted.org/packages/77/38/03d316507d8dea84dfb99bdd515ea245628af964b2bf57759e3c9205cc5e/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:85ef8d41764c7de0dcdaf64f733a27352248493a85a80661f3c678acd27e31f2", size = 392981 }, - { url = "https://files.pythonhosted.org/packages/37/02/46285ef9828f318ba400a51d5bb616ded38db8466836a9cfa39f3903260b/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:da5cb36623f2b846fb25009d9d9215322318ff1c63403075f812b3b2876c8506", size = 371999 }, - { url = "https://files.pythonhosted.org/packages/0d/64/1212fea37a112c3c5c05bfb5f0a81af4836ce349e69be75af93f99644da9/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:cbb56587a16cf0fb8acd19e90ff9924979ac1431baea8681712716a8337577b0", size = 392200 }, - { url = "https://files.pythonhosted.org/packages/81/ce/9a6ea1763e3366e44a5208f76bf37c76c5da570772375e4d0be85180e588/frozenlist-1.6.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c6154c3ba59cda3f954c6333025369e42c3acd0c6e8b6ce31eb5c5b8116c07e0", size = 390134 }, - { url = "https://files.pythonhosted.org/packages/bc/36/939738b0b495b2c6d0c39ba51563e453232813042a8d908b8f9544296c29/frozenlist-1.6.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:2e8246877afa3f1ae5c979fe85f567d220f86a50dc6c493b9b7d8191181ae01e", size = 365208 }, - { url = "https://files.pythonhosted.org/packages/b4/8b/939e62e93c63409949c25220d1ba8e88e3960f8ef6a8d9ede8f94b459d27/frozenlist-1.6.0-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7b0f6cce16306d2e117cf9db71ab3a9e8878a28176aeaf0dbe35248d97b28d0c", size = 385548 }, - { url = "https://files.pythonhosted.org/packages/62/38/22d2873c90102e06a7c5a3a5b82ca47e393c6079413e8a75c72bff067fa8/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1b8e8cd8032ba266f91136d7105706ad57770f3522eac4a111d77ac126a25a9b", size = 391123 }, - { url = "https://files.pythonhosted.org/packages/44/78/63aaaf533ee0701549500f6d819be092c6065cb5c577edb70c09df74d5d0/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:e2ada1d8515d3ea5378c018a5f6d14b4994d4036591a52ceaf1a1549dec8e1ad", size = 394199 }, - { url = "https://files.pythonhosted.org/packages/54/45/71a6b48981d429e8fbcc08454dc99c4c2639865a646d549812883e9c9dd3/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:cdb2c7f071e4026c19a3e32b93a09e59b12000751fc9b0b7758da899e657d215", size = 373854 }, - { url = "https://files.pythonhosted.org/packages/3f/f3/dbf2a5e11736ea81a66e37288bf9f881143a7822b288a992579ba1b4204d/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:03572933a1969a6d6ab509d509e5af82ef80d4a5d4e1e9f2e1cdd22c77a3f4d2", size = 395412 }, - { url = "https://files.pythonhosted.org/packages/b3/f1/c63166806b331f05104d8ea385c4acd511598568b1f3e4e8297ca54f2676/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:77effc978947548b676c54bbd6a08992759ea6f410d4987d69feea9cd0919911", size = 394936 }, - { url = "https://files.pythonhosted.org/packages/ef/ea/4f3e69e179a430473eaa1a75ff986526571215fefc6b9281cdc1f09a4eb8/frozenlist-1.6.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:a2bda8be77660ad4089caf2223fdbd6db1858462c4b85b67fbfa22102021e497", size = 391459 }, - { url = "https://files.pythonhosted.org/packages/d3/c3/0fc2c97dea550df9afd072a37c1e95421652e3206bbeaa02378b24c2b480/frozenlist-1.6.0-cp313-cp313t-win32.whl", hash = "sha256:a4d96dc5bcdbd834ec6b0f91027817214216b5b30316494d2b1aebffb87c534f", size = 128797 }, - { url = "https://files.pythonhosted.org/packages/ae/f5/79c9320c5656b1965634fe4be9c82b12a3305bdbc58ad9cb941131107b20/frozenlist-1.6.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e18036cb4caa17ea151fd5f3d70be9d354c99eb8cf817a3ccde8a7873b074348", size = 134709 }, { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, ] @@ -1108,23 +993,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, - { url = "https://files.pythonhosted.org/packages/77/2a/581b3808afec55b2db838742527c40b4ce68b9b64feedff0fd0123f4b19a/greenlet-3.2.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:e1967882f0c42eaf42282a87579685c8673c51153b845fde1ee81be720ae27ac", size = 269119 }, - { url = "https://files.pythonhosted.org/packages/b0/f3/1c4e27fbdc84e13f05afc2baf605e704668ffa26e73a43eca93e1120813e/greenlet-3.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e77ae69032a95640a5fe8c857ec7bee569a0997e809570f4c92048691ce4b437", size = 637314 }, - { url = "https://files.pythonhosted.org/packages/fc/1a/9fc43cb0044f425f7252da9847893b6de4e3b20c0a748bce7ab3f063d5bc/greenlet-3.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3227c6ec1149d4520bc99edac3b9bc8358d0034825f3ca7572165cb502d8f29a", size = 651421 }, - { url = "https://files.pythonhosted.org/packages/8a/65/d47c03cdc62c6680206b7420c4a98363ee997e87a5e9da1e83bd7eeb57a8/greenlet-3.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ddda0197c5b46eedb5628d33dad034c455ae77708c7bf192686e760e26d6a0c", size = 645789 }, - { url = "https://files.pythonhosted.org/packages/2f/40/0faf8bee1b106c241780f377b9951dd4564ef0972de1942ef74687aa6bba/greenlet-3.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de62b542e5dcf0b6116c310dec17b82bb06ef2ceb696156ff7bf74a7a498d982", size = 648262 }, - { url = "https://files.pythonhosted.org/packages/e0/a8/73305f713183c2cb08f3ddd32eaa20a6854ba9c37061d682192db9b021c3/greenlet-3.2.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c07a0c01010df42f1f058b3973decc69c4d82e036a951c3deaf89ab114054c07", size = 606770 }, - { url = "https://files.pythonhosted.org/packages/c3/05/7d726e1fb7f8a6ac55ff212a54238a36c57db83446523c763e20cd30b837/greenlet-3.2.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2530bfb0abcd451ea81068e6d0a1aac6dabf3f4c23c8bd8e2a8f579c2dd60d95", size = 1117960 }, - { url = "https://files.pythonhosted.org/packages/bf/9f/2b6cb1bd9f1537e7b08c08705c4a1d7bd4f64489c67d102225c4fd262bda/greenlet-3.2.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c472adfca310f849903295c351d297559462067f618944ce2650a1878b84123", size = 1145500 }, - { url = "https://files.pythonhosted.org/packages/e4/f6/339c6e707062319546598eb9827d3ca8942a3eccc610d4a54c1da7b62527/greenlet-3.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:24a496479bc8bd01c39aa6516a43c717b4cee7196573c47b1f8e1011f7c12495", size = 295994 }, - { url = "https://files.pythonhosted.org/packages/f1/72/2a251d74a596af7bb1717e891ad4275a3fd5ac06152319d7ad8c77f876af/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:175d583f7d5ee57845591fc30d852b75b144eb44b05f38b67966ed6df05c8526", size = 629889 }, - { url = "https://files.pythonhosted.org/packages/29/2e/d7ed8bf97641bf704b6a43907c0e082cdf44d5bc026eb8e1b79283e7a719/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ecc9d33ca9428e4536ea53e79d781792cee114d2fa2695b173092bdbd8cd6d5", size = 635261 }, - { url = "https://files.pythonhosted.org/packages/1e/75/802aa27848a6fcb5e566f69c64534f572e310f0f12d41e9201a81e741551/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f56382ac4df3860ebed8ed838f268f03ddf4e459b954415534130062b16bc32", size = 632523 }, - { url = "https://files.pythonhosted.org/packages/56/09/f7c1c3bab9b4c589ad356503dd71be00935e9c4db4db516ed88fc80f1187/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc45a7189c91c0f89aaf9d69da428ce8301b0fd66c914a499199cfb0c28420fc", size = 628816 }, - { url = "https://files.pythonhosted.org/packages/79/e0/1bb90d30b5450eac2dffeaac6b692857c4bd642c21883b79faa8fa056cf2/greenlet-3.2.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51a2f49da08cff79ee42eb22f1658a2aed60c72792f0a0a95f5f0ca6d101b1fb", size = 593687 }, - { url = "https://files.pythonhosted.org/packages/c5/b5/adbe03c8b4c178add20cc716021183ae6b0326d56ba8793d7828c94286f6/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:0c68bbc639359493420282d2f34fa114e992a8724481d700da0b10d10a7611b8", size = 1105754 }, - { url = "https://files.pythonhosted.org/packages/39/93/84582d7ef38dec009543ccadec6ab41079a6cbc2b8c0566bcd07bf1aaf6c/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:e775176b5c203a1fa4be19f91da00fd3bff536868b77b237da3f4daa5971ae5d", size = 1125160 }, - { url = "https://files.pythonhosted.org/packages/01/e6/f9d759788518a6248684e3afeb3691f3ab0276d769b6217a1533362298c8/greenlet-3.2.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d6668caf15f181c1b82fb6406f3911696975cc4c37d782e19cb7ba499e556189", size = 269897 }, ] [[package]] @@ -1696,34 +1564,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, - { url = "https://files.pythonhosted.org/packages/79/b3/e62464a652f4f8cd9006e13d07abad844a47df1e6537f73ddfbf1bc997ec/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:1c8ceb754339793c24aee1c9fb2485b5b1f5bb1c2c214ff13368431e51fc9a09", size = 124156 }, - { url = "https://files.pythonhosted.org/packages/8d/2d/f13d06998b546a2ad4f48607a146e045bbe48030774de29f90bdc573df15/kiwisolver-1.4.8-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:54a62808ac74b5e55a04a408cda6156f986cefbcf0ada13572696b507cc92fa1", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/59/e3/b8bd14b0a54998a9fd1e8da591c60998dc003618cb19a3f94cb233ec1511/kiwisolver-1.4.8-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:68269e60ee4929893aad82666821aaacbd455284124817af45c11e50a4b42e3c", size = 65071 }, - { url = "https://files.pythonhosted.org/packages/f0/1c/6c86f6d85ffe4d0ce04228d976f00674f1df5dc893bf2dd4f1928748f187/kiwisolver-1.4.8-cp313-cp313-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:34d142fba9c464bc3bbfeff15c96eab0e7310343d6aefb62a79d51421fcc5f1b", size = 1378053 }, - { url = "https://files.pythonhosted.org/packages/4e/b9/1c6e9f6dcb103ac5cf87cb695845f5fa71379021500153566d8a8a9fc291/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3ddc373e0eef45b59197de815b1b28ef89ae3955e7722cc9710fb91cd77b7f47", size = 1472278 }, - { url = "https://files.pythonhosted.org/packages/ee/81/aca1eb176de671f8bda479b11acdc42c132b61a2ac861c883907dde6debb/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:77e6f57a20b9bd4e1e2cedda4d0b986ebd0216236f0106e55c28aea3d3d69b16", size = 1478139 }, - { url = "https://files.pythonhosted.org/packages/49/f4/e081522473671c97b2687d380e9e4c26f748a86363ce5af48b4a28e48d06/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:08e77738ed7538f036cd1170cbed942ef749137b1311fa2bbe2a7fda2f6bf3cc", size = 1413517 }, - { url = "https://files.pythonhosted.org/packages/8f/e9/6a7d025d8da8c4931522922cd706105aa32b3291d1add8c5427cdcd66e63/kiwisolver-1.4.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a5ce1e481a74b44dd5e92ff03ea0cb371ae7a0268318e202be06c8f04f4f1246", size = 1474952 }, - { url = "https://files.pythonhosted.org/packages/82/13/13fa685ae167bee5d94b415991c4fc7bb0a1b6ebea6e753a87044b209678/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:fc2ace710ba7c1dfd1a3b42530b62b9ceed115f19a1656adefce7b1782a37794", size = 2269132 }, - { url = "https://files.pythonhosted.org/packages/ef/92/bb7c9395489b99a6cb41d502d3686bac692586db2045adc19e45ee64ed23/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:3452046c37c7692bd52b0e752b87954ef86ee2224e624ef7ce6cb21e8c41cc1b", size = 2425997 }, - { url = "https://files.pythonhosted.org/packages/ed/12/87f0e9271e2b63d35d0d8524954145837dd1a6c15b62a2d8c1ebe0f182b4/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:7e9a60b50fe8b2ec6f448fe8d81b07e40141bfced7f896309df271a0b92f80f3", size = 2376060 }, - { url = "https://files.pythonhosted.org/packages/02/6e/c8af39288edbce8bf0fa35dee427b082758a4b71e9c91ef18fa667782138/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:918139571133f366e8362fa4a297aeba86c7816b7ecf0bc79168080e2bd79957", size = 2520471 }, - { url = "https://files.pythonhosted.org/packages/13/78/df381bc7b26e535c91469f77f16adcd073beb3e2dd25042efd064af82323/kiwisolver-1.4.8-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e063ef9f89885a1d68dd8b2e18f5ead48653176d10a0e324e3b0030e3a69adeb", size = 2338793 }, - { url = "https://files.pythonhosted.org/packages/d0/dc/c1abe38c37c071d0fc71c9a474fd0b9ede05d42f5a458d584619cfd2371a/kiwisolver-1.4.8-cp313-cp313-win_amd64.whl", hash = "sha256:a17b7c4f5b2c51bb68ed379defd608a03954a1845dfed7cc0117f1cc8a9b7fd2", size = 71855 }, - { url = "https://files.pythonhosted.org/packages/a0/b6/21529d595b126ac298fdd90b705d87d4c5693de60023e0efcb4f387ed99e/kiwisolver-1.4.8-cp313-cp313-win_arm64.whl", hash = "sha256:3cd3bc628b25f74aedc6d374d5babf0166a92ff1317f46267f12d2ed54bc1d30", size = 65430 }, - { url = "https://files.pythonhosted.org/packages/34/bd/b89380b7298e3af9b39f49334e3e2a4af0e04819789f04b43d560516c0c8/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:370fd2df41660ed4e26b8c9d6bbcad668fbe2560462cba151a721d49e5b6628c", size = 126294 }, - { url = "https://files.pythonhosted.org/packages/83/41/5857dc72e5e4148eaac5aa76e0703e594e4465f8ab7ec0fc60e3a9bb8fea/kiwisolver-1.4.8-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:84a2f830d42707de1d191b9490ac186bf7997a9495d4e9072210a1296345f7dc", size = 67736 }, - { url = "https://files.pythonhosted.org/packages/e1/d1/be059b8db56ac270489fb0b3297fd1e53d195ba76e9bbb30e5401fa6b759/kiwisolver-1.4.8-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:7a3ad337add5148cf51ce0b55642dc551c0b9d6248458a757f98796ca7348712", size = 66194 }, - { url = "https://files.pythonhosted.org/packages/e1/83/4b73975f149819eb7dcf9299ed467eba068ecb16439a98990dcb12e63fdd/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7506488470f41169b86d8c9aeff587293f530a23a23a49d6bc64dab66bedc71e", size = 1465942 }, - { url = "https://files.pythonhosted.org/packages/c7/2c/30a5cdde5102958e602c07466bce058b9d7cb48734aa7a4327261ac8e002/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f0121b07b356a22fb0414cec4666bbe36fd6d0d759db3d37228f496ed67c880", size = 1595341 }, - { url = "https://files.pythonhosted.org/packages/ff/9b/1e71db1c000385aa069704f5990574b8244cce854ecd83119c19e83c9586/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d6d6bd87df62c27d4185de7c511c6248040afae67028a8a22012b010bc7ad062", size = 1598455 }, - { url = "https://files.pythonhosted.org/packages/85/92/c8fec52ddf06231b31cbb779af77e99b8253cd96bd135250b9498144c78b/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:291331973c64bb9cce50bbe871fb2e675c4331dab4f31abe89f175ad7679a4d7", size = 1522138 }, - { url = "https://files.pythonhosted.org/packages/0b/51/9eb7e2cd07a15d8bdd976f6190c0164f92ce1904e5c0c79198c4972926b7/kiwisolver-1.4.8-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:893f5525bb92d3d735878ec00f781b2de998333659507d29ea4466208df37bed", size = 1582857 }, - { url = "https://files.pythonhosted.org/packages/0f/95/c5a00387a5405e68ba32cc64af65ce881a39b98d73cc394b24143bebc5b8/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:b47a465040146981dc9db8647981b8cb96366fbc8d452b031e4f8fdffec3f26d", size = 2293129 }, - { url = "https://files.pythonhosted.org/packages/44/83/eeb7af7d706b8347548313fa3a3a15931f404533cc54fe01f39e830dd231/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:99cea8b9dd34ff80c521aef46a1dddb0dcc0283cf18bde6d756f1e6f31772165", size = 2421538 }, - { url = "https://files.pythonhosted.org/packages/05/f9/27e94c1b3eb29e6933b6986ffc5fa1177d2cd1f0c8efc5f02c91c9ac61de/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:151dffc4865e5fe6dafce5480fab84f950d14566c480c08a53c663a0020504b6", size = 2390661 }, - { url = "https://files.pythonhosted.org/packages/d9/d4/3c9735faa36ac591a4afcc2980d2691000506050b7a7e80bcfe44048daa7/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:577facaa411c10421314598b50413aa1ebcf5126f704f1e5d72d7e4e9f020d90", size = 2546710 }, - { url = "https://files.pythonhosted.org/packages/4c/fa/be89a49c640930180657482a74970cdcf6f7072c8d2471e1babe17a222dc/kiwisolver-1.4.8-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:be4816dc51c8a471749d664161b434912eee82f2ea66bd7628bd14583a833e85", size = 2349213 }, { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403 }, { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657 }, { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948 }, @@ -1789,26 +1629,6 @@ wheels = [ { 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]] @@ -1846,18 +1666,6 @@ wheels = [ { 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 }, { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500 }, { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398 }, { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361 }, @@ -2068,22 +1876,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, - { url = "https://files.pythonhosted.org/packages/05/06/a098a42870db16c0a54a82c56a5bdc873de3165218cd5b3ca59dbc0d31a7/mmh3-5.1.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a523899ca29cfb8a5239618474a435f3d892b22004b91779fcb83504c0d5b8c", size = 56165 }, - { url = "https://files.pythonhosted.org/packages/5a/65/eaada79a67fde1f43e1156d9630e2fb70655e1d3f4e8f33d7ffa31eeacfd/mmh3-5.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:17cef2c3a6ca2391ca7171a35ed574b5dab8398163129a3e3a4c05ab85a4ff40", size = 40569 }, - { url = "https://files.pythonhosted.org/packages/36/7e/2b6c43ed48be583acd68e34d16f19209a9f210e4669421b0321e326d8554/mmh3-5.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:52e12895b30110f3d89dae59a888683cc886ed0472dd2eca77497edef6161997", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/11/2b/1f9e962fdde8e41b0f43d22c8ba719588de8952f9376df7d73a434827590/mmh3-5.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e0d6719045cda75c3f40397fc24ab67b18e0cb8f69d3429ab4c39763c4c608dd", size = 102497 }, - { url = "https://files.pythonhosted.org/packages/46/94/d6c5c3465387ba077cccdc028ab3eec0d86eed1eebe60dcf4d15294056be/mmh3-5.1.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d19fa07d303a91f8858982c37e6939834cb11893cb3ff20e6ee6fa2a7563826a", size = 108834 }, - { url = "https://files.pythonhosted.org/packages/34/1e/92c212bb81796b69dddfd50a8a8f4b26ab0d38fdaf1d3e8628a67850543b/mmh3-5.1.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:31b47a620d622fbde8ca1ca0435c5d25de0ac57ab507209245e918128e38e676", size = 106936 }, - { url = "https://files.pythonhosted.org/packages/f4/41/f2f494bbff3aad5ffd2085506255049de76cde51ddac84058e32768acc79/mmh3-5.1.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:00f810647c22c179b6821079f7aa306d51953ac893587ee09cf1afb35adf87cb", size = 93709 }, - { url = "https://files.pythonhosted.org/packages/9e/a9/a2cc4a756d73d9edf4fb85c76e16fd56b0300f8120fd760c76b28f457730/mmh3-5.1.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6128b610b577eed1e89ac7177ab0c33d06ade2aba93f5c89306032306b5f1c6", size = 101623 }, - { url = "https://files.pythonhosted.org/packages/5e/6f/b9d735533b6a56b2d56333ff89be6a55ac08ba7ff33465feb131992e33eb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1e550a45d2ff87a1c11b42015107f1778c93f4c6f8e731bf1b8fa770321b8cc4", size = 98521 }, - { url = "https://files.pythonhosted.org/packages/99/47/dff2b54fac0d421c1e6ecbd2d9c85b2d0e6f6ee0d10b115d9364116a511e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:785ae09276342f79fd8092633e2d52c0f7c44d56e8cfda8274ccc9b76612dba2", size = 96696 }, - { url = "https://files.pythonhosted.org/packages/be/43/9e205310f47c43ddf1575bb3a1769c36688f30f1ac105e0f0c878a29d2cd/mmh3-5.1.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:0f4be3703a867ef976434afd3661a33884abe73ceb4ee436cac49d3b4c2aaa7b", size = 105234 }, - { url = "https://files.pythonhosted.org/packages/6b/44/90b11fd2b67dcb513f5bfe9b476eb6ca2d5a221c79b49884dc859100905e/mmh3-5.1.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:e513983830c4ff1f205ab97152a0050cf7164f1b4783d702256d39c637b9d107", size = 98449 }, - { url = "https://files.pythonhosted.org/packages/f0/d0/25c4b0c7b8e49836541059b28e034a4cccd0936202800d43a1cc48495ecb/mmh3-5.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b9135c300535c828c0bae311b659f33a31c941572eae278568d1a953c4a57b59", size = 97796 }, - { url = "https://files.pythonhosted.org/packages/23/fa/cbbb7fcd0e287a715f1cd28a10de94c0535bd94164e38b852abc18da28c6/mmh3-5.1.0-cp313-cp313-win32.whl", hash = "sha256:c65dbd12885a5598b70140d24de5839551af5a99b29f9804bb2484b29ef07692", size = 40828 }, - { url = "https://files.pythonhosted.org/packages/09/33/9fb90ef822f7b734955a63851907cf72f8a3f9d8eb3c5706bfa6772a2a77/mmh3-5.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:10db7765201fc65003fa998faa067417ef6283eb5f9bba8f323c48fd9c33e91f", size = 41504 }, - { url = "https://files.pythonhosted.org/packages/16/71/4ad9a42f2772793a03cb698f0fc42499f04e6e8d2560ba2f7da0fb059a8e/mmh3-5.1.0-cp313-cp313-win_arm64.whl", hash = "sha256:b22fe2e54be81f6c07dcb36b96fa250fb72effe08aa52fbb83eade6e1e2d5fd7", size = 38890 }, ] [[package]] @@ -2146,40 +1938,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, - { url = "https://files.pythonhosted.org/packages/6c/4b/86fd786d03915c6f49998cf10cd5fe6b6ac9e9a071cb40885d2e080fb90d/multidict-6.4.3-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7a76534263d03ae0cfa721fea40fd2b5b9d17a6f85e98025931d41dc49504474", size = 63831 }, - { url = "https://files.pythonhosted.org/packages/45/05/9b51fdf7aef2563340a93be0a663acba2c428c4daeaf3960d92d53a4a930/multidict-6.4.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:805031c2f599eee62ac579843555ed1ce389ae00c7e9f74c2a1b45e0564a88dd", size = 37888 }, - { url = "https://files.pythonhosted.org/packages/0b/43/53fc25394386c911822419b522181227ca450cf57fea76e6188772a1bd91/multidict-6.4.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c56c179839d5dcf51d565132185409d1d5dd8e614ba501eb79023a6cab25576b", size = 36852 }, - { url = "https://files.pythonhosted.org/packages/8a/68/7b99c751e822467c94a235b810a2fd4047d4ecb91caef6b5c60116991c4b/multidict-6.4.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9c64f4ddb3886dd8ab71b68a7431ad4aa01a8fa5be5b11543b29674f29ca0ba3", size = 223644 }, - { url = "https://files.pythonhosted.org/packages/80/1b/d458d791e4dd0f7e92596667784fbf99e5c8ba040affe1ca04f06b93ae92/multidict-6.4.3-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3002a856367c0b41cad6784f5b8d3ab008eda194ed7864aaa58f65312e2abcac", size = 230446 }, - { url = "https://files.pythonhosted.org/packages/e2/46/9793378d988905491a7806d8987862dc5a0bae8a622dd896c4008c7b226b/multidict-6.4.3-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3d75e621e7d887d539d6e1d789f0c64271c250276c333480a9e1de089611f790", size = 231070 }, - { url = "https://files.pythonhosted.org/packages/a7/b8/b127d3e1f8dd2a5bf286b47b24567ae6363017292dc6dec44656e6246498/multidict-6.4.3-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:995015cf4a3c0d72cbf453b10a999b92c5629eaf3a0c3e1efb4b5c1f602253bb", size = 229956 }, - { url = "https://files.pythonhosted.org/packages/0c/93/f70a4c35b103fcfe1443059a2bb7f66e5c35f2aea7804105ff214f566009/multidict-6.4.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2b0fabae7939d09d7d16a711468c385272fa1b9b7fb0d37e51143585d8e72e0", size = 222599 }, - { url = "https://files.pythonhosted.org/packages/63/8c/e28e0eb2fe34921d6aa32bfc4ac75b09570b4d6818cc95d25499fe08dc1d/multidict-6.4.3-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61ed4d82f8a1e67eb9eb04f8587970d78fe7cddb4e4d6230b77eda23d27938f9", size = 216136 }, - { url = "https://files.pythonhosted.org/packages/72/f5/fbc81f866585b05f89f99d108be5d6ad170e3b6c4d0723d1a2f6ba5fa918/multidict-6.4.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:062428944a8dc69df9fdc5d5fc6279421e5f9c75a9ee3f586f274ba7b05ab3c8", size = 228139 }, - { url = "https://files.pythonhosted.org/packages/bb/ba/7d196bad6b85af2307d81f6979c36ed9665f49626f66d883d6c64d156f78/multidict-6.4.3-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:b90e27b4674e6c405ad6c64e515a505c6d113b832df52fdacb6b1ffd1fa9a1d1", size = 226251 }, - { url = "https://files.pythonhosted.org/packages/cc/e2/fae46a370dce79d08b672422a33df721ec8b80105e0ea8d87215ff6b090d/multidict-6.4.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7d50d4abf6729921e9613d98344b74241572b751c6b37feed75fb0c37bd5a817", size = 221868 }, - { url = "https://files.pythonhosted.org/packages/26/20/bbc9a3dec19d5492f54a167f08546656e7aef75d181d3d82541463450e88/multidict-6.4.3-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:43fe10524fb0a0514be3954be53258e61d87341008ce4914f8e8b92bee6f875d", size = 233106 }, - { url = "https://files.pythonhosted.org/packages/ee/8d/f30ae8f5ff7a2461177f4d8eb0d8f69f27fb6cfe276b54ec4fd5a282d918/multidict-6.4.3-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:236966ca6c472ea4e2d3f02f6673ebfd36ba3f23159c323f5a496869bc8e47c9", size = 230163 }, - { url = "https://files.pythonhosted.org/packages/15/e9/2833f3c218d3c2179f3093f766940ded6b81a49d2e2f9c46ab240d23dfec/multidict-6.4.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:422a5ec315018e606473ba1f5431e064cf8b2a7468019233dcf8082fabad64c8", size = 225906 }, - { url = "https://files.pythonhosted.org/packages/f1/31/6edab296ac369fd286b845fa5dd4c409e63bc4655ed8c9510fcb477e9ae9/multidict-6.4.3-cp313-cp313-win32.whl", hash = "sha256:f901a5aace8e8c25d78960dcc24c870c8d356660d3b49b93a78bf38eb682aac3", size = 35238 }, - { url = "https://files.pythonhosted.org/packages/23/57/2c0167a1bffa30d9a1383c3dab99d8caae985defc8636934b5668830d2ef/multidict-6.4.3-cp313-cp313-win_amd64.whl", hash = "sha256:1c152c49e42277bc9a2f7b78bd5fa10b13e88d1b0328221e7aef89d5c60a99a5", size = 38799 }, - { url = "https://files.pythonhosted.org/packages/c9/13/2ead63b9ab0d2b3080819268acb297bd66e238070aa8d42af12b08cbee1c/multidict-6.4.3-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:be8751869e28b9c0d368d94f5afcb4234db66fe8496144547b4b6d6a0645cfc6", size = 68642 }, - { url = "https://files.pythonhosted.org/packages/85/45/f1a751e1eede30c23951e2ae274ce8fad738e8a3d5714be73e0a41b27b16/multidict-6.4.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0d4b31f8a68dccbcd2c0ea04f0e014f1defc6b78f0eb8b35f2265e8716a6df0c", size = 40028 }, - { url = "https://files.pythonhosted.org/packages/a7/29/fcc53e886a2cc5595cc4560df333cb9630257bda65003a7eb4e4e0d8f9c1/multidict-6.4.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:032efeab3049e37eef2ff91271884303becc9e54d740b492a93b7e7266e23756", size = 39424 }, - { url = "https://files.pythonhosted.org/packages/f6/f0/056c81119d8b88703971f937b371795cab1407cd3c751482de5bfe1a04a9/multidict-6.4.3-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9e78006af1a7c8a8007e4f56629d7252668344442f66982368ac06522445e375", size = 226178 }, - { url = "https://files.pythonhosted.org/packages/a3/79/3b7e5fea0aa80583d3a69c9d98b7913dfd4fbc341fb10bb2fb48d35a9c21/multidict-6.4.3-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:daeac9dd30cda8703c417e4fddccd7c4dc0c73421a0b54a7da2713be125846be", size = 222617 }, - { url = "https://files.pythonhosted.org/packages/06/db/3ed012b163e376fc461e1d6a67de69b408339bc31dc83d39ae9ec3bf9578/multidict-6.4.3-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:1f6f90700881438953eae443a9c6f8a509808bc3b185246992c4233ccee37fea", size = 227919 }, - { url = "https://files.pythonhosted.org/packages/b1/db/0433c104bca380989bc04d3b841fc83e95ce0c89f680e9ea4251118b52b6/multidict-6.4.3-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f84627997008390dd15762128dcf73c3365f4ec0106739cde6c20a07ed198ec8", size = 226097 }, - { url = "https://files.pythonhosted.org/packages/c2/95/910db2618175724dd254b7ae635b6cd8d2947a8b76b0376de7b96d814dab/multidict-6.4.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3307b48cd156153b117c0ea54890a3bdbf858a5b296ddd40dc3852e5f16e9b02", size = 220706 }, - { url = "https://files.pythonhosted.org/packages/d1/af/aa176c6f5f1d901aac957d5258d5e22897fe13948d1e69063ae3d5d0ca01/multidict-6.4.3-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ead46b0fa1dcf5af503a46e9f1c2e80b5d95c6011526352fa5f42ea201526124", size = 211728 }, - { url = "https://files.pythonhosted.org/packages/e7/42/d51cc5fc1527c3717d7f85137d6c79bb7a93cd214c26f1fc57523774dbb5/multidict-6.4.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:1748cb2743bedc339d63eb1bca314061568793acd603a6e37b09a326334c9f44", size = 226276 }, - { url = "https://files.pythonhosted.org/packages/28/6b/d836dea45e0b8432343ba4acf9a8ecaa245da4c0960fb7ab45088a5e568a/multidict-6.4.3-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:acc9fa606f76fc111b4569348cc23a771cb52c61516dcc6bcef46d612edb483b", size = 212069 }, - { url = "https://files.pythonhosted.org/packages/55/34/0ee1a7adb3560e18ee9289c6e5f7db54edc312b13e5c8263e88ea373d12c/multidict-6.4.3-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:31469d5832b5885adeb70982e531ce86f8c992334edd2f2254a10fa3182ac504", size = 217858 }, - { url = "https://files.pythonhosted.org/packages/04/08/586d652c2f5acefe0cf4e658eedb4d71d4ba6dfd4f189bd81b400fc1bc6b/multidict-6.4.3-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:ba46b51b6e51b4ef7bfb84b82f5db0dc5e300fb222a8a13b8cd4111898a869cf", size = 226988 }, - { url = "https://files.pythonhosted.org/packages/82/e3/cc59c7e2bc49d7f906fb4ffb6d9c3a3cf21b9f2dd9c96d05bef89c2b1fd1/multidict-6.4.3-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:389cfefb599edf3fcfd5f64c0410da686f90f5f5e2c4d84e14f6797a5a337af4", size = 220435 }, - { url = "https://files.pythonhosted.org/packages/e0/32/5c3a556118aca9981d883f38c4b1bfae646f3627157f70f4068e5a648955/multidict-6.4.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:64bc2bbc5fba7b9db5c2c8d750824f41c6994e3882e6d73c903c2afa78d091e4", size = 221494 }, - { url = "https://files.pythonhosted.org/packages/b9/3b/1599631f59024b75c4d6e3069f4502409970a336647502aaf6b62fb7ac98/multidict-6.4.3-cp313-cp313t-win32.whl", hash = "sha256:0ecdc12ea44bab2807d6b4a7e5eef25109ab1c82a8240d86d3c1fc9f3b72efd5", size = 41775 }, - { url = "https://files.pythonhosted.org/packages/e8/4e/09301668d675d02ca8e8e1a3e6be046619e30403f5ada2ed5b080ae28d02/multidict-6.4.3-cp313-cp313t-win_amd64.whl", hash = "sha256:7146a8742ea71b5d7d955bffcef58a9e6e04efba704b52a460134fefd10a8208", size = 45946 }, { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, ] @@ -2212,12 +1970,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/6a/9b/fd2e05d6ffff24d912f150b87db9e364fa8282045c875654ce7e32fffa66/mypy-1.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:93faf3fdb04768d44bf28693293f3904bbb555d076b781ad2530214ee53e3445", size = 10788592 }, - { url = "https://files.pythonhosted.org/packages/74/37/b246d711c28a03ead1fd906bbc7106659aed7c089d55fe40dd58db812628/mypy-1.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:811aeccadfb730024c5d3e326b2fbe9249bb7413553f15499a4050f7c30e801d", size = 9753611 }, - { url = "https://files.pythonhosted.org/packages/a6/ac/395808a92e10cfdac8003c3de9a2ab6dc7cde6c0d2a4df3df1b815ffd067/mypy-1.15.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:98b7b9b9aedb65fe628c62a6dc57f6d5088ef2dfca37903a7d9ee374d03acca5", size = 11438443 }, - { url = "https://files.pythonhosted.org/packages/d2/8b/801aa06445d2de3895f59e476f38f3f8d610ef5d6908245f07d002676cbf/mypy-1.15.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c43a7682e24b4f576d93072216bf56eeff70d9140241f9edec0c104d0c515036", size = 12402541 }, - { url = "https://files.pythonhosted.org/packages/c7/67/5a4268782eb77344cc613a4cf23540928e41f018a9a1ec4c6882baf20ab8/mypy-1.15.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:baefc32840a9f00babd83251560e0ae1573e2f9d1b067719479bfb0e987c6357", size = 12494348 }, - { url = "https://files.pythonhosted.org/packages/83/3e/57bb447f7bbbfaabf1712d96f9df142624a386d98fb026a761532526057e/mypy-1.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:b9378e2c00146c44793c98b8d5a61039a048e31f429fb0eb546d93f4b000bedf", size = 9373648 }, { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, ] @@ -2487,28 +2239,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, - { url = "https://files.pythonhosted.org/packages/36/9c/447528ee3776e7ab8897fe33697a7ff3f0475bb490c5ac1456a03dc57956/pillow-11.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:fdec757fea0b793056419bca3e9932eb2b0ceec90ef4813ea4c1e072c389eb28", size = 3190098 }, - { url = "https://files.pythonhosted.org/packages/b5/09/29d5cd052f7566a63e5b506fac9c60526e9ecc553825551333e1e18a4858/pillow-11.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:b0e130705d568e2f43a17bcbe74d90958e8a16263868a12c3e0d9c8162690830", size = 3030166 }, - { url = "https://files.pythonhosted.org/packages/71/5d/446ee132ad35e7600652133f9c2840b4799bbd8e4adba881284860da0a36/pillow-11.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7bdb5e09068332578214cadd9c05e3d64d99e0e87591be22a324bdbc18925be0", size = 4408674 }, - { url = "https://files.pythonhosted.org/packages/69/5f/cbe509c0ddf91cc3a03bbacf40e5c2339c4912d16458fcb797bb47bcb269/pillow-11.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d189ba1bebfbc0c0e529159631ec72bb9e9bc041f01ec6d3233d6d82eb823bc1", size = 4496005 }, - { url = "https://files.pythonhosted.org/packages/f9/b3/dd4338d8fb8a5f312021f2977fb8198a1184893f9b00b02b75d565c33b51/pillow-11.2.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:191955c55d8a712fab8934a42bfefbf99dd0b5875078240943f913bb66d46d9f", size = 4518707 }, - { url = "https://files.pythonhosted.org/packages/13/eb/2552ecebc0b887f539111c2cd241f538b8ff5891b8903dfe672e997529be/pillow-11.2.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:ad275964d52e2243430472fc5d2c2334b4fc3ff9c16cb0a19254e25efa03a155", size = 4610008 }, - { url = "https://files.pythonhosted.org/packages/72/d1/924ce51bea494cb6e7959522d69d7b1c7e74f6821d84c63c3dc430cbbf3b/pillow-11.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:750f96efe0597382660d8b53e90dd1dd44568a8edb51cb7f9d5d918b80d4de14", size = 4585420 }, - { url = "https://files.pythonhosted.org/packages/43/ab/8f81312d255d713b99ca37479a4cb4b0f48195e530cdc1611990eb8fd04b/pillow-11.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:fe15238d3798788d00716637b3d4e7bb6bde18b26e5d08335a96e88564a36b6b", size = 4667655 }, - { url = "https://files.pythonhosted.org/packages/94/86/8f2e9d2dc3d308dfd137a07fe1cc478df0a23d42a6c4093b087e738e4827/pillow-11.2.1-cp313-cp313-win32.whl", hash = "sha256:3fe735ced9a607fee4f481423a9c36701a39719252a9bb251679635f99d0f7d2", size = 2332329 }, - { url = "https://files.pythonhosted.org/packages/6d/ec/1179083b8d6067a613e4d595359b5fdea65d0a3b7ad623fee906e1b3c4d2/pillow-11.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:74ee3d7ecb3f3c05459ba95eed5efa28d6092d751ce9bf20e3e253a4e497e691", size = 2676388 }, - { url = "https://files.pythonhosted.org/packages/23/f1/2fc1e1e294de897df39fa8622d829b8828ddad938b0eaea256d65b84dd72/pillow-11.2.1-cp313-cp313-win_arm64.whl", hash = "sha256:5119225c622403afb4b44bad4c1ca6c1f98eed79db8d3bc6e4e160fc6339d66c", size = 2414950 }, - { url = "https://files.pythonhosted.org/packages/c4/3e/c328c48b3f0ead7bab765a84b4977acb29f101d10e4ef57a5e3400447c03/pillow-11.2.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8ce2e8411c7aaef53e6bb29fe98f28cd4fbd9a1d9be2eeea434331aac0536b22", size = 3192759 }, - { url = "https://files.pythonhosted.org/packages/18/0e/1c68532d833fc8b9f404d3a642991441d9058eccd5606eab31617f29b6d4/pillow-11.2.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:9ee66787e095127116d91dea2143db65c7bb1e232f617aa5957c0d9d2a3f23a7", size = 3033284 }, - { url = "https://files.pythonhosted.org/packages/b7/cb/6faf3fb1e7705fd2db74e070f3bf6f88693601b0ed8e81049a8266de4754/pillow-11.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9622e3b6c1d8b551b6e6f21873bdcc55762b4b2126633014cea1803368a9aa16", size = 4445826 }, - { url = "https://files.pythonhosted.org/packages/07/94/8be03d50b70ca47fb434a358919d6a8d6580f282bbb7af7e4aa40103461d/pillow-11.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:63b5dff3a68f371ea06025a1a6966c9a1e1ee452fc8020c2cd0ea41b83e9037b", size = 4527329 }, - { url = "https://files.pythonhosted.org/packages/fd/a4/bfe78777076dc405e3bd2080bc32da5ab3945b5a25dc5d8acaa9de64a162/pillow-11.2.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:31df6e2d3d8fc99f993fd253e97fae451a8db2e7207acf97859732273e108406", size = 4549049 }, - { url = "https://files.pythonhosted.org/packages/65/4d/eaf9068dc687c24979e977ce5677e253624bd8b616b286f543f0c1b91662/pillow-11.2.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:062b7a42d672c45a70fa1f8b43d1d38ff76b63421cbbe7f88146b39e8a558d91", size = 4635408 }, - { url = "https://files.pythonhosted.org/packages/1d/26/0fd443365d9c63bc79feb219f97d935cd4b93af28353cba78d8e77b61719/pillow-11.2.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:4eb92eca2711ef8be42fd3f67533765d9fd043b8c80db204f16c8ea62ee1a751", size = 4614863 }, - { url = "https://files.pythonhosted.org/packages/49/65/dca4d2506be482c2c6641cacdba5c602bc76d8ceb618fd37de855653a419/pillow-11.2.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:f91ebf30830a48c825590aede79376cb40f110b387c17ee9bd59932c961044f9", size = 4692938 }, - { url = "https://files.pythonhosted.org/packages/b3/92/1ca0c3f09233bd7decf8f7105a1c4e3162fb9142128c74adad0fb361b7eb/pillow-11.2.1-cp313-cp313t-win32.whl", hash = "sha256:e0b55f27f584ed623221cfe995c912c61606be8513bfa0e07d2c674b4516d9dd", size = 2335774 }, - { url = "https://files.pythonhosted.org/packages/a5/ac/77525347cb43b83ae905ffe257bbe2cc6fd23acb9796639a1f56aa59d191/pillow-11.2.1-cp313-cp313t-win_amd64.whl", hash = "sha256:36d6b82164c39ce5482f649b437382c0fb2395eabc1e2b1702a6deb8ad647d6e", size = 2681895 }, - { url = "https://files.pythonhosted.org/packages/67/32/32dc030cfa91ca0fc52baebbba2e009bb001122a1daa8b6a79ad830b38d3/pillow-11.2.1-cp313-cp313t-win_arm64.whl", hash = "sha256:225c832a13326e34f212d2072982bb1adb210e0cc0b153e688743018c94a2681", size = 2417234 }, { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727 }, { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833 }, { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472 }, @@ -2634,38 +2364,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, - { url = "https://files.pythonhosted.org/packages/58/60/f645cc8b570f99be3cf46714170c2de4b4c9d6b827b912811eff1eb8a412/propcache-0.3.1-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:f1528ec4374617a7a753f90f20e2f551121bb558fcb35926f99e3c42367164b8", size = 77865 }, - { url = "https://files.pythonhosted.org/packages/6f/d4/c1adbf3901537582e65cf90fd9c26fde1298fde5a2c593f987112c0d0798/propcache-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:dc1915ec523b3b494933b5424980831b636fe483d7d543f7afb7b3bf00f0c10f", size = 45452 }, - { url = "https://files.pythonhosted.org/packages/d1/b5/fe752b2e63f49f727c6c1c224175d21b7d1727ce1d4873ef1c24c9216830/propcache-0.3.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a110205022d077da24e60b3df8bcee73971be9575dec5573dd17ae5d81751111", size = 44800 }, - { url = "https://files.pythonhosted.org/packages/62/37/fc357e345bc1971e21f76597028b059c3d795c5ca7690d7a8d9a03c9708a/propcache-0.3.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d249609e547c04d190e820d0d4c8ca03ed4582bcf8e4e160a6969ddfb57b62e5", size = 225804 }, - { url = "https://files.pythonhosted.org/packages/0d/f1/16e12c33e3dbe7f8b737809bad05719cff1dccb8df4dafbcff5575002c0e/propcache-0.3.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5ced33d827625d0a589e831126ccb4f5c29dfdf6766cac441d23995a65825dcb", size = 230650 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/018b9f2ed876bf5091e60153f727e8f9073d97573f790ff7cdf6bc1d1fb8/propcache-0.3.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4114c4ada8f3181af20808bedb250da6bae56660e4b8dfd9cd95d4549c0962f7", size = 234235 }, - { url = "https://files.pythonhosted.org/packages/45/5f/3faee66fc930dfb5da509e34c6ac7128870631c0e3582987fad161fcb4b1/propcache-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:975af16f406ce48f1333ec5e912fe11064605d5c5b3f6746969077cc3adeb120", size = 228249 }, - { url = "https://files.pythonhosted.org/packages/62/1e/a0d5ebda5da7ff34d2f5259a3e171a94be83c41eb1e7cd21a2105a84a02e/propcache-0.3.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a34aa3a1abc50740be6ac0ab9d594e274f59960d3ad253cd318af76b996dd654", size = 214964 }, - { url = "https://files.pythonhosted.org/packages/db/a0/d72da3f61ceab126e9be1f3bc7844b4e98c6e61c985097474668e7e52152/propcache-0.3.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9cec3239c85ed15bfaded997773fdad9fb5662b0a7cbc854a43f291eb183179e", size = 222501 }, - { url = "https://files.pythonhosted.org/packages/18/6d/a008e07ad7b905011253adbbd97e5b5375c33f0b961355ca0a30377504ac/propcache-0.3.1-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:05543250deac8e61084234d5fc54f8ebd254e8f2b39a16b1dce48904f45b744b", size = 217917 }, - { url = "https://files.pythonhosted.org/packages/98/37/02c9343ffe59e590e0e56dc5c97d0da2b8b19fa747ebacf158310f97a79a/propcache-0.3.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:5cb5918253912e088edbf023788de539219718d3b10aef334476b62d2b53de53", size = 217089 }, - { url = "https://files.pythonhosted.org/packages/53/1b/d3406629a2c8a5666d4674c50f757a77be119b113eedd47b0375afdf1b42/propcache-0.3.1-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f3bbecd2f34d0e6d3c543fdb3b15d6b60dd69970c2b4c822379e5ec8f6f621d5", size = 228102 }, - { url = "https://files.pythonhosted.org/packages/cd/a7/3664756cf50ce739e5f3abd48febc0be1a713b1f389a502ca819791a6b69/propcache-0.3.1-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:aca63103895c7d960a5b9b044a83f544b233c95e0dcff114389d64d762017af7", size = 230122 }, - { url = "https://files.pythonhosted.org/packages/35/36/0bbabaacdcc26dac4f8139625e930f4311864251276033a52fd52ff2a274/propcache-0.3.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:5a0a9898fdb99bf11786265468571e628ba60af80dc3f6eb89a3545540c6b0ef", size = 226818 }, - { url = "https://files.pythonhosted.org/packages/cc/27/4e0ef21084b53bd35d4dae1634b6d0bad35e9c58ed4f032511acca9d4d26/propcache-0.3.1-cp313-cp313-win32.whl", hash = "sha256:3a02a28095b5e63128bcae98eb59025924f121f048a62393db682f049bf4ac24", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/a6/2c/a54614d61895ba6dd7ac8f107e2b2a0347259ab29cbf2ecc7b94fa38c4dc/propcache-0.3.1-cp313-cp313-win_amd64.whl", hash = "sha256:813fbb8b6aea2fc9659815e585e548fe706d6f663fa73dff59a1677d4595a037", size = 44034 }, - { url = "https://files.pythonhosted.org/packages/5a/a8/0a4fd2f664fc6acc66438370905124ce62e84e2e860f2557015ee4a61c7e/propcache-0.3.1-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:a444192f20f5ce8a5e52761a031b90f5ea6288b1eef42ad4c7e64fef33540b8f", size = 82613 }, - { url = "https://files.pythonhosted.org/packages/4d/e5/5ef30eb2cd81576256d7b6caaa0ce33cd1d2c2c92c8903cccb1af1a4ff2f/propcache-0.3.1-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0fbe94666e62ebe36cd652f5fc012abfbc2342de99b523f8267a678e4dfdee3c", size = 47763 }, - { url = "https://files.pythonhosted.org/packages/87/9a/87091ceb048efeba4d28e903c0b15bcc84b7c0bf27dc0261e62335d9b7b8/propcache-0.3.1-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:f011f104db880f4e2166bcdcf7f58250f7a465bc6b068dc84c824a3d4a5c94dc", size = 47175 }, - { url = "https://files.pythonhosted.org/packages/3e/2f/854e653c96ad1161f96194c6678a41bbb38c7947d17768e8811a77635a08/propcache-0.3.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e584b6d388aeb0001d6d5c2bd86b26304adde6d9bb9bfa9c4889805021b96de", size = 292265 }, - { url = "https://files.pythonhosted.org/packages/40/8d/090955e13ed06bc3496ba4a9fb26c62e209ac41973cb0d6222de20c6868f/propcache-0.3.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a17583515a04358b034e241f952f1715243482fc2c2945fd99a1b03a0bd77d6", size = 294412 }, - { url = "https://files.pythonhosted.org/packages/39/e6/d51601342e53cc7582449e6a3c14a0479fab2f0750c1f4d22302e34219c6/propcache-0.3.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5aed8d8308215089c0734a2af4f2e95eeb360660184ad3912686c181e500b2e7", size = 294290 }, - { url = "https://files.pythonhosted.org/packages/3b/4d/be5f1a90abc1881884aa5878989a1acdafd379a91d9c7e5e12cef37ec0d7/propcache-0.3.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6d8e309ff9a0503ef70dc9a0ebd3e69cf7b3894c9ae2ae81fc10943c37762458", size = 282926 }, - { url = "https://files.pythonhosted.org/packages/57/2b/8f61b998c7ea93a2b7eca79e53f3e903db1787fca9373af9e2cf8dc22f9d/propcache-0.3.1-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b655032b202028a582d27aeedc2e813299f82cb232f969f87a4fde491a233f11", size = 267808 }, - { url = "https://files.pythonhosted.org/packages/11/1c/311326c3dfce59c58a6098388ba984b0e5fb0381ef2279ec458ef99bd547/propcache-0.3.1-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9f64d91b751df77931336b5ff7bafbe8845c5770b06630e27acd5dbb71e1931c", size = 290916 }, - { url = "https://files.pythonhosted.org/packages/4b/74/91939924b0385e54dc48eb2e4edd1e4903ffd053cf1916ebc5347ac227f7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:19a06db789a4bd896ee91ebc50d059e23b3639c25d58eb35be3ca1cbe967c3bf", size = 262661 }, - { url = "https://files.pythonhosted.org/packages/c2/d7/e6079af45136ad325c5337f5dd9ef97ab5dc349e0ff362fe5c5db95e2454/propcache-0.3.1-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:bef100c88d8692864651b5f98e871fb090bd65c8a41a1cb0ff2322db39c96c27", size = 264384 }, - { url = "https://files.pythonhosted.org/packages/b7/d5/ba91702207ac61ae6f1c2da81c5d0d6bf6ce89e08a2b4d44e411c0bbe867/propcache-0.3.1-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:87380fb1f3089d2a0b8b00f006ed12bd41bd858fabfa7330c954c70f50ed8757", size = 291420 }, - { url = "https://files.pythonhosted.org/packages/58/70/2117780ed7edcd7ba6b8134cb7802aada90b894a9810ec56b7bb6018bee7/propcache-0.3.1-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:e474fc718e73ba5ec5180358aa07f6aded0ff5f2abe700e3115c37d75c947e18", size = 290880 }, - { url = "https://files.pythonhosted.org/packages/4a/1f/ecd9ce27710021ae623631c0146719280a929d895a095f6d85efb6a0be2e/propcache-0.3.1-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:17d1c688a443355234f3c031349da69444be052613483f3e4158eef751abcd8a", size = 287407 }, - { url = "https://files.pythonhosted.org/packages/3e/66/2e90547d6b60180fb29e23dc87bd8c116517d4255240ec6d3f7dc23d1926/propcache-0.3.1-cp313-cp313t-win32.whl", hash = "sha256:359e81a949a7619802eb601d66d37072b79b79c2505e6d3fd8b945538411400d", size = 42573 }, - { url = "https://files.pythonhosted.org/packages/cb/8f/50ad8599399d1861b4d2b6b45271f0ef6af1b09b0a2386a46dbaf19c9535/propcache-0.3.1-cp313-cp313t-win_amd64.whl", hash = "sha256:e7fb9a84c9abbf2b2683fa3e7b0d7da4d8ecf139a1c635732a8bda29c5214b0e", size = 46757 }, { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, ] @@ -2729,19 +2427,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986 }, { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026 }, { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108 }, - { url = "https://files.pythonhosted.org/packages/2b/8d/275c58d4b00781bd36579501a259eacc5c6dfb369be4ddeb672ceb551d2d/pyarrow-19.0.1-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:e45274b20e524ae5c39d7fc1ca2aa923aab494776d2d4b316b49ec7572ca324c", size = 30653552 }, - { url = "https://files.pythonhosted.org/packages/a0/9e/e6aca5cc4ef0c7aec5f8db93feb0bde08dbad8c56b9014216205d271101b/pyarrow-19.0.1-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:d9dedeaf19097a143ed6da37f04f4051aba353c95ef507764d344229b2b740ae", size = 32103413 }, - { url = "https://files.pythonhosted.org/packages/6a/fa/a7033f66e5d4f1308c7eb0dfcd2ccd70f881724eb6fd1776657fdf65458f/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6ebfb5171bb5f4a52319344ebbbecc731af3f021e49318c74f33d520d31ae0c4", size = 41134869 }, - { url = "https://files.pythonhosted.org/packages/2d/92/34d2569be8e7abdc9d145c98dc410db0071ac579b92ebc30da35f500d630/pyarrow-19.0.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a21d39fbdb948857f67eacb5bbaaf36802de044ec36fbef7a1c8f0dd3a4ab2", size = 42192626 }, - { url = "https://files.pythonhosted.org/packages/0a/1f/80c617b1084fc833804dc3309aa9d8daacd46f9ec8d736df733f15aebe2c/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:99bc1bec6d234359743b01e70d4310d0ab240c3d6b0da7e2a93663b0158616f6", size = 40496708 }, - { url = "https://files.pythonhosted.org/packages/e6/90/83698fcecf939a611c8d9a78e38e7fed7792dcc4317e29e72cf8135526fb/pyarrow-19.0.1-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:1b93ef2c93e77c442c979b0d596af45e4665d8b96da598db145b0fec014b9136", size = 42075728 }, - { url = "https://files.pythonhosted.org/packages/40/49/2325f5c9e7a1c125c01ba0c509d400b152c972a47958768e4e35e04d13d8/pyarrow-19.0.1-cp313-cp313-win_amd64.whl", hash = "sha256:d9d46e06846a41ba906ab25302cf0fd522f81aa2a85a71021826f34639ad31ef", size = 25242568 }, - { url = "https://files.pythonhosted.org/packages/3f/72/135088d995a759d4d916ec4824cb19e066585b4909ebad4ab196177aa825/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_arm64.whl", hash = "sha256:c0fe3dbbf054a00d1f162fda94ce236a899ca01123a798c561ba307ca38af5f0", size = 30702371 }, - { url = "https://files.pythonhosted.org/packages/2e/01/00beeebd33d6bac701f20816a29d2018eba463616bbc07397fdf99ac4ce3/pyarrow-19.0.1-cp313-cp313t-macosx_12_0_x86_64.whl", hash = "sha256:96606c3ba57944d128e8a8399da4812f56c7f61de8c647e3470b417f795d0ef9", size = 32116046 }, - { url = "https://files.pythonhosted.org/packages/1f/c9/23b1ea718dfe967cbd986d16cf2a31fe59d015874258baae16d7ea0ccabc/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8f04d49a6b64cf24719c080b3c2029a3a5b16417fd5fd7c4041f94233af732f3", size = 41091183 }, - { url = "https://files.pythonhosted.org/packages/3a/d4/b4a3aa781a2c715520aa8ab4fe2e7fa49d33a1d4e71c8fc6ab7b5de7a3f8/pyarrow-19.0.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5a9137cf7e1640dce4c190551ee69d478f7121b5c6f323553b319cac936395f6", size = 42171896 }, - { url = "https://files.pythonhosted.org/packages/23/1b/716d4cd5a3cbc387c6e6745d2704c4b46654ba2668260d25c402626c5ddb/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:7c1bca1897c28013db5e4c83944a2ab53231f541b9e0c3f4791206d0c0de389a", size = 40464851 }, - { url = "https://files.pythonhosted.org/packages/ed/bd/54907846383dcc7ee28772d7e646f6c34276a17da740002a5cefe90f04f7/pyarrow-19.0.1-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:58d9397b2e273ef76264b45531e9d552d8ec8a6688b7390b5be44c02a37aade8", size = 42085744 }, ] [[package]] @@ -2817,20 +2502,6 @@ wheels = [ { 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 }, { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, @@ -2989,12 +2660,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469 }, { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758 }, { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294 }, - { url = "https://files.pythonhosted.org/packages/14/4a/4c8e4f5b9edbca46e0f8d6c1c0b56c0d4af0900c29f4bea22d37853c07f3/pyogrio-0.10.0-cp313-cp313-macosx_12_0_arm64.whl", hash = "sha256:c90478209537a31dcc65664a87a04c094bb0e08efe502908a6682b8cec0259bf", size = 15076879 }, - { url = "https://files.pythonhosted.org/packages/5f/be/7db0644eef9ef3382518399aaf3332827c43018112d2a74f78784fd496ec/pyogrio-0.10.0-cp313-cp313-macosx_12_0_x86_64.whl", hash = "sha256:fec45e1963b7058e5a1aa98598aed07c0858512c833d6aad2c672c3ec98bbf04", size = 16440405 }, - { url = "https://files.pythonhosted.org/packages/96/77/f199230ba86fe88b1f57e71428c169ed982de68a32d6082cd7c12d0f5d55/pyogrio-0.10.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28cb139f8a5d0365ede602230104b407ae52bb6b55173c8d5a35424d28c4a2c5", size = 23871511 }, - { url = "https://files.pythonhosted.org/packages/25/ac/ca483bec408b59c54f7129b0244cc9de21d8461aefe89ece7bd74ad33807/pyogrio-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:cea0187fcc2d574e52af8cfab041fa0a7ad71d5ef6b94b49a3f3d2a04534a27e", size = 23048830 }, - { url = "https://files.pythonhosted.org/packages/d7/3e/c35f2d8dad95b24e568c468f09ff60fb61945065465e0ec7868400596566/pyogrio-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:7c02b207ea8cf09c501ea3e95d29152781a00d3c32267286bc36fa457c332205", size = 23996873 }, - { url = "https://files.pythonhosted.org/packages/27/5d/0deb16d228362a097ee3258d0a887c9c0add4b9678bb4847b08a241e124d/pyogrio-0.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:02e54bcfb305af75f829044b0045f74de31b77c2d6546f7aaf96822066147848", size = 16158260 }, ] [[package]] @@ -3039,14 +2704,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, - { url = "https://files.pythonhosted.org/packages/ef/01/984828464c9960036c602753fc0f21f24f0aa9043c18fa3f2f2b66a86340/pyproj-3.7.1-cp313-cp313-macosx_13_0_x86_64.whl", hash = "sha256:5f8d02ef4431dee414d1753d13fa82a21a2f61494737b5f642ea668d76164d6d", size = 6253062 }, - { url = "https://files.pythonhosted.org/packages/68/65/6ecdcdc829811a2c160cdfe2f068a009fc572fd4349664f758ccb0853a7c/pyproj-3.7.1-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:0b853ae99bda66cbe24b4ccfe26d70601d84375940a47f553413d9df570065e0", size = 4660548 }, - { url = "https://files.pythonhosted.org/packages/67/da/dda94c4490803679230ba4c17a12f151b307a0d58e8110820405ca2d98db/pyproj-3.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:83db380c52087f9e9bdd8a527943b2e7324f275881125e39475c4f9277bdeec4", size = 9662464 }, - { url = "https://files.pythonhosted.org/packages/6f/57/f61b7d22c91ae1d12ee00ac4c0038714e774ebcd851b9133e5f4f930dd40/pyproj-3.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b35ed213892e211a3ce2bea002aa1183e1a2a9b79e51bb3c6b15549a831ae528", size = 9497461 }, - { url = "https://files.pythonhosted.org/packages/b7/f6/932128236f79d2ac7d39fe1a19667fdf7155d9a81d31fb9472a7a497790f/pyproj-3.7.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a8b15b0463d1303bab113d1a6af2860a0d79013c3a66fcc5475ce26ef717fd4f", size = 10708869 }, - { url = "https://files.pythonhosted.org/packages/1d/0d/07ac7712994454a254c383c0d08aff9916a2851e6512d59da8dc369b1b02/pyproj-3.7.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:87229e42b75e89f4dad6459200f92988c5998dfb093c7c631fb48524c86cd5dc", size = 10729260 }, - { url = "https://files.pythonhosted.org/packages/b0/d0/9c604bc72c37ba69b867b6df724d6a5af6789e8c375022c952f65b2af558/pyproj-3.7.1-cp313-cp313-win32.whl", hash = "sha256:d666c3a3faaf3b1d7fc4a544059c4eab9d06f84a604b070b7aa2f318e227798e", size = 5855462 }, - { url = "https://files.pythonhosted.org/packages/98/df/68a2b7f5fb6400c64aad82d72bcc4bc531775e62eedff993a77c780defd0/pyproj-3.7.1-cp313-cp313-win_amd64.whl", hash = "sha256:d3caac7473be22b6d6e102dde6c46de73b96bc98334e577dfaee9886f102ea2e", size = 6266573 }, ] [[package]] @@ -3110,9 +2767,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, - { url = "https://files.pythonhosted.org/packages/1c/09/9c1b978ffc4ae53999e89c19c77ba882d9fce476729f23ef55211ea1c034/pywin32-310-cp313-cp313-win32.whl", hash = "sha256:5d241a659c496ada3253cd01cfaa779b048e90ce4b2b38cd44168ad555ce74ab", size = 8794384 }, - { url = "https://files.pythonhosted.org/packages/45/3c/b4640f740ffebadd5d34df35fecba0e1cfef8fde9f3e594df91c28ad9b50/pywin32-310-cp313-cp313-win_amd64.whl", hash = "sha256:667827eb3a90208ddbdcc9e860c81bde63a135710e21e4cb3348968e4bd5249e", size = 9503039 }, - { url = "https://files.pythonhosted.org/packages/b4/f4/f785020090fb050e7fb6d34b780f2231f302609dc964672f72bfaeb59a28/pywin32-310-cp313-cp313-win_arm64.whl", hash = "sha256:e308f831de771482b7cf692a1f308f8fca701b2d8f9dde6cc440c7da17e47b33", size = 8458152 }, ] [[package]] @@ -3124,8 +2778,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161 }, { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, - { url = "https://files.pythonhosted.org/packages/fb/16/2ab7b3b7f55f3c6929e5f629e1a68362981e4e5fed592a2ed1cb4b4914a5/pywinpty-2.0.15-cp313-cp313-win_amd64.whl", hash = "sha256:ab5920877dd632c124b4ed17bc6dd6ef3b9f86cd492b963ffdb1a67b85b0f408", size = 1405020 }, - { url = "https://files.pythonhosted.org/packages/7c/16/edef3515dd2030db2795dbfbe392232c7a0f3dc41b98e92b38b42ba497c7/pywinpty-2.0.15-cp313-cp313t-win_amd64.whl", hash = "sha256:a4560ad8c01e537708d2790dbe7da7d986791de805d89dd0d3697ca59e9e4901", size = 1404151 }, ] [[package]] @@ -3161,15 +2813,6 @@ wheels = [ { 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]] @@ -3226,25 +2869,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, - { url = "https://files.pythonhosted.org/packages/d7/20/fb2c92542488db70f833b92893769a569458311a76474bda89dc4264bd18/pyzmq-26.4.0-cp313-cp313-macosx_10_15_universal2.whl", hash = "sha256:c43fac689880f5174d6fc864857d1247fe5cfa22b09ed058a344ca92bf5301e3", size = 1339484 }, - { url = "https://files.pythonhosted.org/packages/58/29/2f06b9cabda3a6ea2c10f43e67ded3e47fc25c54822e2506dfb8325155d4/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:902aca7eba477657c5fb81c808318460328758e8367ecdd1964b6330c73cae43", size = 666106 }, - { url = "https://files.pythonhosted.org/packages/77/e4/dcf62bd29e5e190bd21bfccaa4f3386e01bf40d948c239239c2f1e726729/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e5e48a830bfd152fe17fbdeaf99ac5271aa4122521bf0d275b6b24e52ef35eb6", size = 902056 }, - { url = "https://files.pythonhosted.org/packages/1a/cf/b36b3d7aea236087d20189bec1a87eeb2b66009731d7055e5c65f845cdba/pyzmq-26.4.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:31be2b6de98c824c06f5574331f805707c667dc8f60cb18580b7de078479891e", size = 860148 }, - { url = "https://files.pythonhosted.org/packages/18/a6/f048826bc87528c208e90604c3bf573801e54bd91e390cbd2dfa860e82dc/pyzmq-26.4.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:6332452034be001bbf3206ac59c0d2a7713de5f25bb38b06519fc6967b7cf771", size = 855983 }, - { url = "https://files.pythonhosted.org/packages/0a/27/454d34ab6a1d9772a36add22f17f6b85baf7c16e14325fa29e7202ca8ee8/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:da8c0f5dd352136853e6a09b1b986ee5278dfddfebd30515e16eae425c872b30", size = 1197274 }, - { url = "https://files.pythonhosted.org/packages/f4/3d/7abfeab6b83ad38aa34cbd57c6fc29752c391e3954fd12848bd8d2ec0df6/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:f4ccc1a0a2c9806dda2a2dd118a3b7b681e448f3bb354056cad44a65169f6d86", size = 1507120 }, - { url = "https://files.pythonhosted.org/packages/13/ff/bc8d21dbb9bc8705126e875438a1969c4f77e03fc8565d6901c7933a3d01/pyzmq-26.4.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c0b5fceadbab461578daf8d1dcc918ebe7ddd2952f748cf30c7cf2de5d51101", size = 1406738 }, - { url = "https://files.pythonhosted.org/packages/f5/5d/d4cd85b24de71d84d81229e3bbb13392b2698432cf8fdcea5afda253d587/pyzmq-26.4.0-cp313-cp313-win32.whl", hash = "sha256:28e2b0ff5ba4b3dd11062d905682bad33385cfa3cc03e81abd7f0822263e6637", size = 577826 }, - { url = "https://files.pythonhosted.org/packages/c6/6c/f289c1789d7bb6e5a3b3bef7b2a55089b8561d17132be7d960d3ff33b14e/pyzmq-26.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:23ecc9d241004c10e8b4f49d12ac064cd7000e1643343944a10df98e57bc544b", size = 640406 }, - { url = "https://files.pythonhosted.org/packages/b3/99/676b8851cb955eb5236a0c1e9ec679ea5ede092bf8bf2c8a68d7e965cac3/pyzmq-26.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:1edb0385c7f025045d6e0f759d4d3afe43c17a3d898914ec6582e6f464203c08", size = 556216 }, - { url = "https://files.pythonhosted.org/packages/65/c2/1fac340de9d7df71efc59d9c50fc7a635a77b103392d1842898dd023afcb/pyzmq-26.4.0-cp313-cp313t-macosx_10_15_universal2.whl", hash = "sha256:93a29e882b2ba1db86ba5dd5e88e18e0ac6b627026c5cfbec9983422011b82d4", size = 1333769 }, - { url = "https://files.pythonhosted.org/packages/5c/c7/6c03637e8d742c3b00bec4f5e4cd9d1c01b2f3694c6f140742e93ca637ed/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb45684f276f57110bb89e4300c00f1233ca631f08f5f42528a5c408a79efc4a", size = 658826 }, - { url = "https://files.pythonhosted.org/packages/a5/97/a8dca65913c0f78e0545af2bb5078aebfc142ca7d91cdaffa1fbc73e5dbd/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f72073e75260cb301aad4258ad6150fa7f57c719b3f498cb91e31df16784d89b", size = 891650 }, - { url = "https://files.pythonhosted.org/packages/7d/7e/f63af1031eb060bf02d033732b910fe48548dcfdbe9c785e9f74a6cc6ae4/pyzmq-26.4.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:be37e24b13026cfedd233bcbbccd8c0bcd2fdd186216094d095f60076201538d", size = 849776 }, - { url = "https://files.pythonhosted.org/packages/f6/fa/1a009ce582802a895c0d5fe9413f029c940a0a8ee828657a3bb0acffd88b/pyzmq-26.4.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:237b283044934d26f1eeff4075f751b05d2f3ed42a257fc44386d00df6a270cf", size = 842516 }, - { url = "https://files.pythonhosted.org/packages/6e/bc/f88b0bad0f7a7f500547d71e99f10336f2314e525d4ebf576a1ea4a1d903/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:b30f862f6768b17040929a68432c8a8be77780317f45a353cb17e423127d250c", size = 1189183 }, - { url = "https://files.pythonhosted.org/packages/d9/8c/db446a3dd9cf894406dec2e61eeffaa3c07c3abb783deaebb9812c4af6a5/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_i686.whl", hash = "sha256:c80fcd3504232f13617c6ab501124d373e4895424e65de8b72042333316f64a8", size = 1495501 }, - { url = "https://files.pythonhosted.org/packages/05/4c/bf3cad0d64c3214ac881299c4562b815f05d503bccc513e3fd4fdc6f67e4/pyzmq-26.4.0-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:26a2a7451606b87f67cdeca2c2789d86f605da08b4bd616b1a9981605ca3a364", size = 1395540 }, { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408 }, { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580 }, { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250 }, @@ -3264,7 +2888,7 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "attrs" }, { name = "rpds-py" }, - { name = "typing-extensions", marker = "python_full_version < '3.13'" }, + { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ @@ -3366,32 +2990,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, - { url = "https://files.pythonhosted.org/packages/9d/c3/3607abc770395bc6d5a00cb66385a5479fb8cd7416ddef90393b17ef4340/rpds_py-0.24.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:3d2d8e4508e15fc05b31285c4b00ddf2e0eb94259c2dc896771966a163122a0c", size = 367072 }, - { url = "https://files.pythonhosted.org/packages/d8/35/8c7ee0fe465793e3af3298dc5a9f3013bd63e7a69df04ccfded8293a4982/rpds_py-0.24.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:0f00c16e089282ad68a3820fd0c831c35d3194b7cdc31d6e469511d9bffc535c", size = 351919 }, - { url = "https://files.pythonhosted.org/packages/91/d3/7e1b972501eb5466b9aca46a9c31bcbbdc3ea5a076e9ab33f4438c1d069d/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951cc481c0c395c4a08639a469d53b7d4afa252529a085418b82a6b43c45c240", size = 390360 }, - { url = "https://files.pythonhosted.org/packages/a2/a8/ccabb50d3c91c26ad01f9b09a6a3b03e4502ce51a33867c38446df9f896b/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c9ca89938dff18828a328af41ffdf3902405a19f4131c88e22e776a8e228c5a8", size = 400704 }, - { url = "https://files.pythonhosted.org/packages/53/ae/5fa5bf0f3bc6ce21b5ea88fc0ecd3a439e7cb09dd5f9ffb3dbe1b6894fc5/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ed0ef550042a8dbcd657dfb284a8ee00f0ba269d3f2286b0493b15a5694f9fe8", size = 450839 }, - { url = "https://files.pythonhosted.org/packages/e3/ac/c4e18b36d9938247e2b54f6a03746f3183ca20e1edd7d3654796867f5100/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2b2356688e5d958c4d5cb964af865bea84db29971d3e563fb78e46e20fe1848b", size = 441494 }, - { url = "https://files.pythonhosted.org/packages/bf/08/b543969c12a8f44db6c0f08ced009abf8f519191ca6985509e7c44102e3c/rpds_py-0.24.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:78884d155fd15d9f64f5d6124b486f3d3f7fd7cd71a78e9670a0f6f6ca06fb2d", size = 393185 }, - { url = "https://files.pythonhosted.org/packages/da/7e/f6eb6a7042ce708f9dfc781832a86063cea8a125bbe451d663697b51944f/rpds_py-0.24.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:6a4a535013aeeef13c5532f802708cecae8d66c282babb5cd916379b72110cf7", size = 426168 }, - { url = "https://files.pythonhosted.org/packages/38/b0/6cd2bb0509ac0b51af4bb138e145b7c4c902bb4b724d6fd143689d6e0383/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:84e0566f15cf4d769dade9b366b7b87c959be472c92dffb70462dd0844d7cbad", size = 567622 }, - { url = "https://files.pythonhosted.org/packages/64/b0/c401f4f077547d98e8b4c2ec6526a80e7cb04f519d416430ec1421ee9e0b/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:823e74ab6fbaa028ec89615ff6acb409e90ff45580c45920d4dfdddb069f2120", size = 595435 }, - { url = "https://files.pythonhosted.org/packages/9f/ec/7993b6e803294c87b61c85bd63e11142ccfb2373cf88a61ec602abcbf9d6/rpds_py-0.24.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c61a2cb0085c8783906b2f8b1f16a7e65777823c7f4d0a6aaffe26dc0d358dd9", size = 563762 }, - { url = "https://files.pythonhosted.org/packages/1f/29/4508003204cb2f461dc2b83dd85f8aa2b915bc98fe6046b9d50d4aa05401/rpds_py-0.24.0-cp313-cp313-win32.whl", hash = "sha256:60d9b630c8025b9458a9d114e3af579a2c54bd32df601c4581bd054e85258143", size = 223510 }, - { url = "https://files.pythonhosted.org/packages/f9/12/09e048d1814195e01f354155fb772fb0854bd3450b5f5a82224b3a319f0e/rpds_py-0.24.0-cp313-cp313-win_amd64.whl", hash = "sha256:6eea559077d29486c68218178ea946263b87f1c41ae7f996b1f30a983c476a5a", size = 239075 }, - { url = "https://files.pythonhosted.org/packages/d2/03/5027cde39bb2408d61e4dd0cf81f815949bb629932a6c8df1701d0257fc4/rpds_py-0.24.0-cp313-cp313t-macosx_10_12_x86_64.whl", hash = "sha256:d09dc82af2d3c17e7dd17120b202a79b578d79f2b5424bda209d9966efeed114", size = 362974 }, - { url = "https://files.pythonhosted.org/packages/bf/10/24d374a2131b1ffafb783e436e770e42dfdb74b69a2cd25eba8c8b29d861/rpds_py-0.24.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:5fc13b44de6419d1e7a7e592a4885b323fbc2f46e1f22151e3a8ed3b8b920405", size = 348730 }, - { url = "https://files.pythonhosted.org/packages/7a/d1/1ef88d0516d46cd8df12e5916966dbf716d5ec79b265eda56ba1b173398c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c347a20d79cedc0a7bd51c4d4b7dbc613ca4e65a756b5c3e57ec84bd43505b47", size = 387627 }, - { url = "https://files.pythonhosted.org/packages/4e/35/07339051b8b901ecefd449ebf8e5522e92bcb95e1078818cbfd9db8e573c/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:20f2712bd1cc26a3cc16c5a1bfee9ed1abc33d4cdf1aabd297fe0eb724df4272", size = 394094 }, - { url = "https://files.pythonhosted.org/packages/dc/62/ee89ece19e0ba322b08734e95441952062391065c157bbd4f8802316b4f1/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:aad911555286884be1e427ef0dc0ba3929e6821cbeca2194b13dc415a462c7fd", size = 449639 }, - { url = "https://files.pythonhosted.org/packages/15/24/b30e9f9e71baa0b9dada3a4ab43d567c6b04a36d1cb531045f7a8a0a7439/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0aeb3329c1721c43c58cae274d7d2ca85c1690d89485d9c63a006cb79a85771a", size = 438584 }, - { url = "https://files.pythonhosted.org/packages/28/d9/49f7b8f3b4147db13961e19d5e30077cd0854ccc08487026d2cb2142aa4a/rpds_py-0.24.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2a0f156e9509cee987283abd2296ec816225145a13ed0391df8f71bf1d789e2d", size = 391047 }, - { url = "https://files.pythonhosted.org/packages/49/b0/e66918d0972c33a259ba3cd7b7ff10ed8bd91dbcfcbec6367b21f026db75/rpds_py-0.24.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:aa6800adc8204ce898c8a424303969b7aa6a5e4ad2789c13f8648739830323b7", size = 418085 }, - { url = "https://files.pythonhosted.org/packages/e1/6b/99ed7ea0a94c7ae5520a21be77a82306aac9e4e715d4435076ead07d05c6/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:a18fc371e900a21d7392517c6f60fe859e802547309e94313cd8181ad9db004d", size = 564498 }, - { url = "https://files.pythonhosted.org/packages/28/26/1cacfee6b800e6fb5f91acecc2e52f17dbf8b0796a7c984b4568b6d70e38/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:9168764133fd919f8dcca2ead66de0105f4ef5659cbb4fa044f7014bed9a1797", size = 590202 }, - { url = "https://files.pythonhosted.org/packages/a9/9e/57bd2f9fba04a37cef673f9a66b11ca8c43ccdd50d386c455cd4380fe461/rpds_py-0.24.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:5f6e3cec44ba05ee5cbdebe92d052f69b63ae792e7d05f1020ac5e964394080c", size = 561771 }, - { url = "https://files.pythonhosted.org/packages/9f/cf/b719120f375ab970d1c297dbf8de1e3c9edd26fe92c0ed7178dd94b45992/rpds_py-0.24.0-cp313-cp313t-win32.whl", hash = "sha256:8ebc7e65ca4b111d928b669713865f021b7773350eeac4a31d3e70144297baba", size = 221195 }, - { url = "https://files.pythonhosted.org/packages/2d/e5/22865285789f3412ad0c3d7ec4dc0a3e86483b794be8a5d9ed5a19390900/rpds_py-0.24.0-cp313-cp313t-win_amd64.whl", hash = "sha256:675269d407a257b8c00a6b58205b72eec8231656506c56fd429d924ca00bb350", size = 237354 }, { url = "https://files.pythonhosted.org/packages/99/48/11dae46d0c7f7e156ca0971a83f89c510af0316cd5d42c771b7cef945f0c/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a", size = 378224 }, { url = "https://files.pythonhosted.org/packages/33/18/e8398d255369e35d312942f3bb8ecaff013c44968904891be2ab63b3aa94/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399", size = 363252 }, { url = "https://files.pythonhosted.org/packages/17/39/dd73ba691f4df3e6834bf982de214086ac3359ab3ac035adfb30041570e3/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098", size = 388871 }, @@ -3507,22 +3105,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, - { url = "https://files.pythonhosted.org/packages/8d/77/4e368704b2193e74498473db4461d697cc6083c96f8039367e59009d78bd/shapely-2.1.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:b64423295b563f43a043eb786e7a03200ebe68698e36d2b4b1c39f31dfb50dfb", size = 1830029 }, - { url = "https://files.pythonhosted.org/packages/71/3c/d888597bda680e4de987316b05ca9db07416fa29523beff64f846503302f/shapely-2.1.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:1b5578f45adc25b235b22d1ccb9a0348c8dc36f31983e57ea129a88f96f7b870", size = 1637999 }, - { url = "https://files.pythonhosted.org/packages/03/8d/ee0e23b7ef88fba353c63a81f1f329c77f5703835db7b165e7c0b8b7f839/shapely-2.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d1a7e83d383b27f02b684e50ab7f34e511c92e33b6ca164a6a9065705dd64bcb", size = 2929348 }, - { url = "https://files.pythonhosted.org/packages/d1/a7/5c9cb413e4e2ce52c16be717e94abd40ce91b1f8974624d5d56154c5d40b/shapely-2.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:942031eb4d8f7b3b22f43ba42c09c7aa3d843aa10d5cc1619fe816e923b66e55", size = 3048973 }, - { url = "https://files.pythonhosted.org/packages/84/23/45b90c0bd2157b238490ca56ef2eedf959d3514c7d05475f497a2c88b6d9/shapely-2.1.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d2843c456a2e5627ee6271800f07277c0d2652fb287bf66464571a057dbc00b3", size = 3873148 }, - { url = "https://files.pythonhosted.org/packages/c0/bc/ed7d5d37f5395166042576f0c55a12d7e56102799464ba7ea3a72a38c769/shapely-2.1.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:8c4b17469b7f39a5e6a7cfea79f38ae08a275427f41fe8b48c372e1449147908", size = 4052655 }, - { url = "https://files.pythonhosted.org/packages/c0/8f/a1dafbb10d20d1c569f2db3fb1235488f624dafe8469e8ce65356800ba31/shapely-2.1.0-cp313-cp313-win32.whl", hash = "sha256:30e967abd08fce49513d4187c01b19f139084019f33bec0673e8dbeb557c45e4", size = 1526600 }, - { url = "https://files.pythonhosted.org/packages/e3/f0/9f8cdf2258d7aed742459cea51c70d184de92f5d2d6f5f7f1ded90a18c31/shapely-2.1.0-cp313-cp313-win_amd64.whl", hash = "sha256:1dc8d4364483a14aba4c844b7bd16a6fa3728887e2c33dfa1afa34a3cf4d08a5", size = 1707115 }, - { url = "https://files.pythonhosted.org/packages/75/ed/32952df461753a65b3e5d24c8efb361d3a80aafaef0b70d419063f6f2c11/shapely-2.1.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:673e073fea099d1c82f666fb7ab0a00a77eff2999130a69357ce11941260d855", size = 1824847 }, - { url = "https://files.pythonhosted.org/packages/ff/b9/2284de512af30b02f93ddcdd2e5c79834a3cf47fa3ca11b0f74396feb046/shapely-2.1.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:6d1513f915a56de67659fe2047c1ad5ff0f8cbff3519d1e74fced69c9cb0e7da", size = 1631035 }, - { url = "https://files.pythonhosted.org/packages/35/16/a59f252a7e736b73008f10d0950ffeeb0d5953be7c0bdffd39a02a6ba310/shapely-2.1.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0d6a7043178890b9e028d80496ff4c79dc7629bff4d78a2f25323b661756bab8", size = 2968639 }, - { url = "https://files.pythonhosted.org/packages/a5/0a/6a20eca7b0092cfa243117e8e145a58631a4833a0a519ec9b445172e83a0/shapely-2.1.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb638378dc3d76f7e85b67d7e2bb1366811912430ac9247ac00c127c2b444cdc", size = 3055713 }, - { url = "https://files.pythonhosted.org/packages/fb/44/eeb0c7583b1453d1cf7a319a1d738e08f98a5dc993fa1ef3c372983e4cb5/shapely-2.1.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:737124e87d91d616acf9a911f74ac55e05db02a43a6a7245b3d663817b876055", size = 3890478 }, - { url = "https://files.pythonhosted.org/packages/5d/6e/37ff3c6af1d408cacb0a7d7bfea7b8ab163a5486e35acb08997eae9d8756/shapely-2.1.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e6c229e7bb87aae5df82fa00b6718987a43ec168cc5affe095cca59d233f314", size = 4036148 }, - { url = "https://files.pythonhosted.org/packages/c8/6a/8c0b7de3aeb5014a23f06c5e9d3c7852ebcf0d6b00fe660b93261e310e24/shapely-2.1.0-cp313-cp313t-win32.whl", hash = "sha256:a9580bda119b1f42f955aa8e52382d5c73f7957e0203bc0c0c60084846f3db94", size = 1535993 }, - { url = "https://files.pythonhosted.org/packages/a8/91/ae80359a58409d52e4d62c7eacc7eb3ddee4b9135f1db884b6a43cf2e174/shapely-2.1.0-cp313-cp313t-win_amd64.whl", hash = "sha256:e8ff4e5cfd799ba5b6f37b5d5527dbd85b4a47c65b6d459a03d0962d2a9d4d10", size = 1717777 }, ] [[package]] @@ -3575,7 +3157,7 @@ name = "sqlalchemy" version = "2.0.40" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "greenlet", marker = "(python_full_version < '3.14' and platform_machine == 'AMD64') or (python_full_version < '3.14' and platform_machine == 'WIN32') or (python_full_version < '3.14' and platform_machine == 'aarch64') or (python_full_version < '3.14' and platform_machine == 'amd64') or (python_full_version < '3.14' and platform_machine == 'ppc64le') or (python_full_version < '3.14' and platform_machine == 'win32') or (python_full_version < '3.14' and platform_machine == 'x86_64')" }, + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } @@ -3604,14 +3186,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199 }, { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959 }, { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526 }, - { url = "https://files.pythonhosted.org/packages/8c/18/4e3a86cc0232377bc48c373a9ba6a1b3fb79ba32dbb4eda0b357f5a2c59d/sqlalchemy-2.0.40-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:915866fd50dd868fdcc18d61d8258db1bf9ed7fbd6dfec960ba43365952f3b01", size = 2107887 }, - { url = "https://files.pythonhosted.org/packages/cb/60/9fa692b1d2ffc4cbd5f47753731fd332afed30137115d862d6e9a1e962c7/sqlalchemy-2.0.40-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4a4c5a2905a9ccdc67a8963e24abd2f7afcd4348829412483695c59e0af9a705", size = 2098367 }, - { url = "https://files.pythonhosted.org/packages/4c/9f/84b78357ca641714a439eb3fbbddb17297dacfa05d951dbf24f28d7b5c08/sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:55028d7a3ebdf7ace492fab9895cbc5270153f75442a0472d8516e03159ab364", size = 3184806 }, - { url = "https://files.pythonhosted.org/packages/4b/7d/e06164161b6bfce04c01bfa01518a20cccbd4100d5c951e5a7422189191a/sqlalchemy-2.0.40-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6cfedff6878b0e0d1d0a50666a817ecd85051d12d56b43d9d425455e608b5ba0", size = 3198131 }, - { url = "https://files.pythonhosted.org/packages/6d/51/354af20da42d7ec7b5c9de99edafbb7663a1d75686d1999ceb2c15811302/sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bb19e30fdae77d357ce92192a3504579abe48a66877f476880238a962e5b96db", size = 3131364 }, - { url = "https://files.pythonhosted.org/packages/7a/2f/48a41ff4e6e10549d83fcc551ab85c268bde7c03cf77afb36303c6594d11/sqlalchemy-2.0.40-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:16d325ea898f74b26ffcd1cf8c593b0beed8714f0317df2bed0d8d1de05a8f26", size = 3159482 }, - { url = "https://files.pythonhosted.org/packages/33/ac/e5e0a807163652a35be878c0ad5cfd8b1d29605edcadfb5df3c512cdf9f3/sqlalchemy-2.0.40-cp313-cp313-win32.whl", hash = "sha256:a669cbe5be3c63f75bcbee0b266779706f1a54bcb1000f302685b87d1b8c1500", size = 2080704 }, - { url = "https://files.pythonhosted.org/packages/1c/cb/f38c61f7f2fd4d10494c1c135ff6a6ddb63508d0b47bccccd93670637309/sqlalchemy-2.0.40-cp313-cp313-win_amd64.whl", hash = "sha256:641ee2e0834812d657862f3a7de95e0048bdcb6c55496f39c6fa3d435f6ac6ad", size = 2104564 }, { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894 }, ] @@ -3702,16 +3276,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708 }, - { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582 }, - { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543 }, - { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691 }, - { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170 }, - { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530 }, - { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666 }, - { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954 }, - { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724 }, - { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383 }, { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, ] @@ -3816,9 +3380,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/68/98/b0345cabdce2041a01293ba483333582891a3bd5769b08eceb0d406056ef/watchdog-6.0.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:490ab2ef84f11129844c23fb14ecf30ef3d8a6abafd3754a6f75ca1e6654136c", size = 96480 }, - { url = "https://files.pythonhosted.org/packages/85/83/cdf13902c626b28eedef7ec4f10745c52aad8a8fe7eb04ed7b1f111ca20e/watchdog-6.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:76aae96b00ae814b181bb25b1b98076d5fc84e8a53cd8885a318b42b6d3a5134", size = 88451 }, - { url = "https://files.pythonhosted.org/packages/fe/c4/225c87bae08c8b9ec99030cd48ae9c4eca050a59bf5c2255853e18c87b50/watchdog-6.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a175f755fc2279e0b7312c0035d52e27211a5bc39719dd529625b1930917345b", size = 89057 }, { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902 }, { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380 }, { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, @@ -3908,28 +3469,6 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/ce/b9/0ffd557a92f3b11d4c5d5e0c5e4ad057bd9eb8586615cdaf901409920b14/wrapt-1.17.2-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:6ed6ffac43aecfe6d86ec5b74b06a5be33d5bb9243d055141e8cabb12aa08125", size = 53800 }, - { url = "https://files.pythonhosted.org/packages/c0/ef/8be90a0b7e73c32e550c73cfb2fa09db62234227ece47b0e80a05073b375/wrapt-1.17.2-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:35621ae4c00e056adb0009f8e86e28eb4a41a4bfa8f9bfa9fca7d343fe94f998", size = 38824 }, - { url = "https://files.pythonhosted.org/packages/36/89/0aae34c10fe524cce30fe5fc433210376bce94cf74d05b0d68344c8ba46e/wrapt-1.17.2-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:a604bf7a053f8362d27eb9fefd2097f82600b856d5abe996d623babd067b1ab5", size = 38920 }, - { url = "https://files.pythonhosted.org/packages/3b/24/11c4510de906d77e0cfb5197f1b1445d4fec42c9a39ea853d482698ac681/wrapt-1.17.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5cbabee4f083b6b4cd282f5b817a867cf0b1028c54d445b7ec7cfe6505057cf8", size = 88690 }, - { url = "https://files.pythonhosted.org/packages/71/d7/cfcf842291267bf455b3e266c0c29dcb675b5540ee8b50ba1699abf3af45/wrapt-1.17.2-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49703ce2ddc220df165bd2962f8e03b84c89fee2d65e1c24a7defff6f988f4d6", size = 80861 }, - { url = "https://files.pythonhosted.org/packages/d5/66/5d973e9f3e7370fd686fb47a9af3319418ed925c27d72ce16b791231576d/wrapt-1.17.2-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8112e52c5822fc4253f3901b676c55ddf288614dc7011634e2719718eaa187dc", size = 89174 }, - { url = "https://files.pythonhosted.org/packages/a7/d3/8e17bb70f6ae25dabc1aaf990f86824e4fd98ee9cadf197054e068500d27/wrapt-1.17.2-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:9fee687dce376205d9a494e9c121e27183b2a3df18037f89d69bd7b35bcf59e2", size = 86721 }, - { url = "https://files.pythonhosted.org/packages/6f/54/f170dfb278fe1c30d0ff864513cff526d624ab8de3254b20abb9cffedc24/wrapt-1.17.2-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:18983c537e04d11cf027fbb60a1e8dfd5190e2b60cc27bc0808e653e7b218d1b", size = 79763 }, - { url = "https://files.pythonhosted.org/packages/4a/98/de07243751f1c4a9b15c76019250210dd3486ce098c3d80d5f729cba029c/wrapt-1.17.2-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:703919b1633412ab54bcf920ab388735832fdcb9f9a00ae49387f0fe67dad504", size = 87585 }, - { url = "https://files.pythonhosted.org/packages/f9/f0/13925f4bd6548013038cdeb11ee2cbd4e37c30f8bfd5db9e5a2a370d6e20/wrapt-1.17.2-cp313-cp313-win32.whl", hash = "sha256:abbb9e76177c35d4e8568e58650aa6926040d6a9f6f03435b7a522bf1c487f9a", size = 36676 }, - { url = "https://files.pythonhosted.org/packages/bf/ae/743f16ef8c2e3628df3ddfd652b7d4c555d12c84b53f3d8218498f4ade9b/wrapt-1.17.2-cp313-cp313-win_amd64.whl", hash = "sha256:69606d7bb691b50a4240ce6b22ebb319c1cfb164e5f6569835058196e0f3a845", size = 38871 }, - { url = "https://files.pythonhosted.org/packages/3d/bc/30f903f891a82d402ffb5fda27ec1d621cc97cb74c16fea0b6141f1d4e87/wrapt-1.17.2-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:4a721d3c943dae44f8e243b380cb645a709ba5bd35d3ad27bc2ed947e9c68192", size = 56312 }, - { url = "https://files.pythonhosted.org/packages/8a/04/c97273eb491b5f1c918857cd26f314b74fc9b29224521f5b83f872253725/wrapt-1.17.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:766d8bbefcb9e00c3ac3b000d9acc51f1b399513f44d77dfe0eb026ad7c9a19b", size = 40062 }, - { url = "https://files.pythonhosted.org/packages/4e/ca/3b7afa1eae3a9e7fefe499db9b96813f41828b9fdb016ee836c4c379dadb/wrapt-1.17.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e496a8ce2c256da1eb98bd15803a79bee00fc351f5dfb9ea82594a3f058309e0", size = 40155 }, - { url = "https://files.pythonhosted.org/packages/89/be/7c1baed43290775cb9030c774bc53c860db140397047cc49aedaf0a15477/wrapt-1.17.2-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:40d615e4fe22f4ad3528448c193b218e077656ca9ccb22ce2cb20db730f8d306", size = 113471 }, - { url = "https://files.pythonhosted.org/packages/32/98/4ed894cf012b6d6aae5f5cc974006bdeb92f0241775addad3f8cd6ab71c8/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a5aaeff38654462bc4b09023918b7f21790efb807f54c000a39d41d69cf552cb", size = 101208 }, - { url = "https://files.pythonhosted.org/packages/ea/fd/0c30f2301ca94e655e5e057012e83284ce8c545df7661a78d8bfca2fac7a/wrapt-1.17.2-cp313-cp313t-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a7d15bbd2bc99e92e39f49a04653062ee6085c0e18b3b7512a4f2fe91f2d681", size = 109339 }, - { url = "https://files.pythonhosted.org/packages/75/56/05d000de894c4cfcb84bcd6b1df6214297b8089a7bd324c21a4765e49b14/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e3890b508a23299083e065f435a492b5435eba6e304a7114d2f919d400888cc6", size = 110232 }, - { url = "https://files.pythonhosted.org/packages/53/f8/c3f6b2cf9b9277fb0813418e1503e68414cd036b3b099c823379c9575e6d/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:8c8b293cd65ad716d13d8dd3624e42e5a19cc2a2f1acc74b30c2c13f15cb61a6", size = 100476 }, - { url = "https://files.pythonhosted.org/packages/a7/b1/0bb11e29aa5139d90b770ebbfa167267b1fc548d2302c30c8f7572851738/wrapt-1.17.2-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:4c82b8785d98cdd9fed4cac84d765d234ed3251bd6afe34cb7ac523cb93e8b4f", size = 106377 }, - { url = "https://files.pythonhosted.org/packages/6a/e1/0122853035b40b3f333bbb25f1939fc1045e21dd518f7f0922b60c156f7c/wrapt-1.17.2-cp313-cp313t-win32.whl", hash = "sha256:13e6afb7fe71fe7485a4550a8844cc9ffbe263c0f1a1eea569bc7091d4898555", size = 37986 }, - { url = "https://files.pythonhosted.org/packages/09/5e/1655cf481e079c1f22d0cabdd4e51733679932718dc23bf2db175f329b76/wrapt-1.17.2-cp313-cp313t-win_amd64.whl", hash = "sha256:eaf675418ed6b3b31c7a989fd007fa7c3be66ce14e5c3b27336383604c9da85c", size = 40750 }, { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] @@ -3995,39 +3534,5 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, - { url = "https://files.pythonhosted.org/packages/0f/6f/514c9bff2900c22a4f10e06297714dbaf98707143b37ff0bcba65a956221/yarl-1.20.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:2137810a20b933b1b1b7e5cf06a64c3ed3b4747b0e5d79c9447c00db0e2f752f", size = 145030 }, - { url = "https://files.pythonhosted.org/packages/4e/9d/f88da3fa319b8c9c813389bfb3463e8d777c62654c7168e580a13fadff05/yarl-1.20.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:447c5eadd750db8389804030d15f43d30435ed47af1313303ed82a62388176d3", size = 96894 }, - { url = "https://files.pythonhosted.org/packages/cd/57/92e83538580a6968b2451d6c89c5579938a7309d4785748e8ad42ddafdce/yarl-1.20.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:42fbe577272c203528d402eec8bf4b2d14fd49ecfec92272334270b850e9cd7d", size = 94457 }, - { url = "https://files.pythonhosted.org/packages/e9/ee/7ee43bd4cf82dddd5da97fcaddb6fa541ab81f3ed564c42f146c83ae17ce/yarl-1.20.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:18e321617de4ab170226cd15006a565d0fa0d908f11f724a2c9142d6b2812ab0", size = 343070 }, - { url = "https://files.pythonhosted.org/packages/4a/12/b5eccd1109e2097bcc494ba7dc5de156e41cf8309fab437ebb7c2b296ce3/yarl-1.20.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:4345f58719825bba29895011e8e3b545e6e00257abb984f9f27fe923afca2501", size = 337739 }, - { url = "https://files.pythonhosted.org/packages/7d/6b/0eade8e49af9fc2585552f63c76fa59ef469c724cc05b29519b19aa3a6d5/yarl-1.20.0-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5d9b980d7234614bc4674468ab173ed77d678349c860c3af83b1fffb6a837ddc", size = 351338 }, - { url = "https://files.pythonhosted.org/packages/45/cb/aaaa75d30087b5183c7b8a07b4fb16ae0682dd149a1719b3a28f54061754/yarl-1.20.0-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:af4baa8a445977831cbaa91a9a84cc09debb10bc8391f128da2f7bd070fc351d", size = 353636 }, - { url = "https://files.pythonhosted.org/packages/98/9d/d9cb39ec68a91ba6e66fa86d97003f58570327d6713833edf7ad6ce9dde5/yarl-1.20.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:123393db7420e71d6ce40d24885a9e65eb1edefc7a5228db2d62bcab3386a5c0", size = 348061 }, - { url = "https://files.pythonhosted.org/packages/72/6b/103940aae893d0cc770b4c36ce80e2ed86fcb863d48ea80a752b8bda9303/yarl-1.20.0-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ab47acc9332f3de1b39e9b702d9c916af7f02656b2a86a474d9db4e53ef8fd7a", size = 334150 }, - { url = "https://files.pythonhosted.org/packages/ef/b2/986bd82aa222c3e6b211a69c9081ba46484cffa9fab2a5235e8d18ca7a27/yarl-1.20.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:4a34c52ed158f89876cba9c600b2c964dfc1ca52ba7b3ab6deb722d1d8be6df2", size = 362207 }, - { url = "https://files.pythonhosted.org/packages/14/7c/63f5922437b873795d9422cbe7eb2509d4b540c37ae5548a4bb68fd2c546/yarl-1.20.0-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:04d8cfb12714158abf2618f792c77bc5c3d8c5f37353e79509608be4f18705c9", size = 361277 }, - { url = "https://files.pythonhosted.org/packages/81/83/450938cccf732466953406570bdb42c62b5ffb0ac7ac75a1f267773ab5c8/yarl-1.20.0-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:7dc63ad0d541c38b6ae2255aaa794434293964677d5c1ec5d0116b0e308031f5", size = 364990 }, - { url = "https://files.pythonhosted.org/packages/b4/de/af47d3a47e4a833693b9ec8e87debb20f09d9fdc9139b207b09a3e6cbd5a/yarl-1.20.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d02b591a64e4e6ca18c5e3d925f11b559c763b950184a64cf47d74d7e41877", size = 374684 }, - { url = "https://files.pythonhosted.org/packages/62/0b/078bcc2d539f1faffdc7d32cb29a2d7caa65f1a6f7e40795d8485db21851/yarl-1.20.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:95fc9876f917cac7f757df80a5dda9de59d423568460fe75d128c813b9af558e", size = 382599 }, - { url = "https://files.pythonhosted.org/packages/74/a9/4fdb1a7899f1fb47fd1371e7ba9e94bff73439ce87099d5dd26d285fffe0/yarl-1.20.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:bb769ae5760cd1c6a712135ee7915f9d43f11d9ef769cb3f75a23e398a92d384", size = 378573 }, - { url = "https://files.pythonhosted.org/packages/fd/be/29f5156b7a319e4d2e5b51ce622b4dfb3aa8d8204cd2a8a339340fbfad40/yarl-1.20.0-cp313-cp313-win32.whl", hash = "sha256:70e0c580a0292c7414a1cead1e076c9786f685c1fc4757573d2967689b370e62", size = 86051 }, - { url = "https://files.pythonhosted.org/packages/52/56/05fa52c32c301da77ec0b5f63d2d9605946fe29defacb2a7ebd473c23b81/yarl-1.20.0-cp313-cp313-win_amd64.whl", hash = "sha256:4c43030e4b0af775a85be1fa0433119b1565673266a70bf87ef68a9d5ba3174c", size = 92742 }, - { url = "https://files.pythonhosted.org/packages/d4/2f/422546794196519152fc2e2f475f0e1d4d094a11995c81a465faf5673ffd/yarl-1.20.0-cp313-cp313t-macosx_10_13_universal2.whl", hash = "sha256:b6c4c3d0d6a0ae9b281e492b1465c72de433b782e6b5001c8e7249e085b69051", size = 163575 }, - { url = "https://files.pythonhosted.org/packages/90/fc/67c64ddab6c0b4a169d03c637fb2d2a212b536e1989dec8e7e2c92211b7f/yarl-1.20.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:8681700f4e4df891eafa4f69a439a6e7d480d64e52bf460918f58e443bd3da7d", size = 106121 }, - { url = "https://files.pythonhosted.org/packages/6d/00/29366b9eba7b6f6baed7d749f12add209b987c4cfbfa418404dbadc0f97c/yarl-1.20.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:84aeb556cb06c00652dbf87c17838eb6d92cfd317799a8092cee0e570ee11229", size = 103815 }, - { url = "https://files.pythonhosted.org/packages/28/f4/a2a4c967c8323c03689383dff73396281ced3b35d0ed140580825c826af7/yarl-1.20.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f166eafa78810ddb383e930d62e623d288fb04ec566d1b4790099ae0f31485f1", size = 408231 }, - { url = "https://files.pythonhosted.org/packages/0f/a1/66f7ffc0915877d726b70cc7a896ac30b6ac5d1d2760613603b022173635/yarl-1.20.0-cp313-cp313t-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:5d3d6d14754aefc7a458261027a562f024d4f6b8a798adb472277f675857b1eb", size = 390221 }, - { url = "https://files.pythonhosted.org/packages/41/15/cc248f0504610283271615e85bf38bc014224122498c2016d13a3a1b8426/yarl-1.20.0-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a8f64df8ed5d04c51260dbae3cc82e5649834eebea9eadfd829837b8093eb00", size = 411400 }, - { url = "https://files.pythonhosted.org/packages/5c/af/f0823d7e092bfb97d24fce6c7269d67fcd1aefade97d0a8189c4452e4d5e/yarl-1.20.0-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4d9949eaf05b4d30e93e4034a7790634bbb41b8be2d07edd26754f2e38e491de", size = 411714 }, - { url = "https://files.pythonhosted.org/packages/83/70/be418329eae64b9f1b20ecdaac75d53aef098797d4c2299d82ae6f8e4663/yarl-1.20.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c366b254082d21cc4f08f522ac201d0d83a8b8447ab562732931d31d80eb2a5", size = 404279 }, - { url = "https://files.pythonhosted.org/packages/19/f5/52e02f0075f65b4914eb890eea1ba97e6fd91dd821cc33a623aa707b2f67/yarl-1.20.0-cp313-cp313t-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:91bc450c80a2e9685b10e34e41aef3d44ddf99b3a498717938926d05ca493f6a", size = 384044 }, - { url = "https://files.pythonhosted.org/packages/6a/36/b0fa25226b03d3f769c68d46170b3e92b00ab3853d73127273ba22474697/yarl-1.20.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:9c2aa4387de4bc3a5fe158080757748d16567119bef215bec643716b4fbf53f9", size = 416236 }, - { url = "https://files.pythonhosted.org/packages/cb/3a/54c828dd35f6831dfdd5a79e6c6b4302ae2c5feca24232a83cb75132b205/yarl-1.20.0-cp313-cp313t-musllinux_1_2_armv7l.whl", hash = "sha256:d2cbca6760a541189cf87ee54ff891e1d9ea6406079c66341008f7ef6ab61145", size = 402034 }, - { url = "https://files.pythonhosted.org/packages/10/97/c7bf5fba488f7e049f9ad69c1b8fdfe3daa2e8916b3d321aa049e361a55a/yarl-1.20.0-cp313-cp313t-musllinux_1_2_i686.whl", hash = "sha256:798a5074e656f06b9fad1a162be5a32da45237ce19d07884d0b67a0aa9d5fdda", size = 407943 }, - { url = "https://files.pythonhosted.org/packages/fd/a4/022d2555c1e8fcff08ad7f0f43e4df3aba34f135bff04dd35d5526ce54ab/yarl-1.20.0-cp313-cp313t-musllinux_1_2_ppc64le.whl", hash = "sha256:f106e75c454288472dbe615accef8248c686958c2e7dd3b8d8ee2669770d020f", size = 423058 }, - { url = "https://files.pythonhosted.org/packages/4c/f6/0873a05563e5df29ccf35345a6ae0ac9e66588b41fdb7043a65848f03139/yarl-1.20.0-cp313-cp313t-musllinux_1_2_s390x.whl", hash = "sha256:3b60a86551669c23dc5445010534d2c5d8a4e012163218fc9114e857c0586fdd", size = 423792 }, - { url = "https://files.pythonhosted.org/packages/9e/35/43fbbd082708fa42e923f314c24f8277a28483d219e049552e5007a9aaca/yarl-1.20.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:3e429857e341d5e8e15806118e0294f8073ba9c4580637e59ab7b238afca836f", size = 422242 }, - { url = "https://files.pythonhosted.org/packages/ed/f7/f0f2500cf0c469beb2050b522c7815c575811627e6d3eb9ec7550ddd0bfe/yarl-1.20.0-cp313-cp313t-win32.whl", hash = "sha256:65a4053580fe88a63e8e4056b427224cd01edfb5f951498bfefca4052f0ce0ac", size = 93816 }, - { url = "https://files.pythonhosted.org/packages/3f/93/f73b61353b2a699d489e782c3f5998b59f974ec3156a2050a52dfd7e8946/yarl-1.20.0-cp313-cp313t-win_amd64.whl", hash = "sha256:53b2da3a6ca0a541c1ae799c349788d480e5144cac47dba0266c7cb6c76151fe", size = 101093 }, { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] From e5cbbee0004edbc5713775ae6caf2e21b310cd7a Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 6 May 2025 12:11:32 -0400 Subject: [PATCH 21/97] translates parquets with schema into iceberg demo --- examples/Demo_Iceberg.ipynb | 705 ++++++++++++++++++++++++++++++++++++ 1 file changed, 705 insertions(+) create mode 100644 examples/Demo_Iceberg.ipynb diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb new file mode 100644 index 0000000..3538302 --- /dev/null +++ b/examples/Demo_Iceberg.ipynb @@ -0,0 +1,705 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a24f20d0-abb4-413a-a70b-0fb6d3ca1e22", + "metadata": {}, + "source": [ + "# Introduction:\n", + "## Generation of Iceberg Catalog for Parquet files" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7e3f71a8-a823-4df9-90df-8d6e62969faa", + "metadata": {}, + "outputs": [], + "source": [ + "import pyarrow as pa\n", + "import pyiceberg\n", + "from pyiceberg.catalog import load_catalog\n", + "from pyiceberg.schema import Schema\n", + "from pyiceberg.types import StringType, IntegerType\n", + "import pyarrow.parquet as pq\n", + "from pyiceberg.schema import Schema\n", + "from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType\n", + "from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual\n", + "import os\n", + "import warnings\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "class IcebergTable(object):\n", + " '''\n", + " Create a Iceberg table per parquet file w/ its inherited schema set.\n", + " \n", + " '''\n", + " def __init__(self):\n", + " \n", + " # Set location of where the iceberg catalog will reside\n", + " os.environ['PYICEBERG_HOME'] = os.getcwd()\n", + " \n", + " def read_data_dirs(self, data_dir):\n", + " '''\n", + " Extract the list of parquet directories.\n", + " \n", + " Args:\n", + " data_dir (str): Parent directory of the parquet files.\n", + " Note: All the ml_auxiliary_data parquet \n", + " files are save under same filenames, \n", + " but categorized by 'vpuid' conditions.\n", + "\n", + " Return (list): List of directories associated with each parquet file.\n", + " \n", + " '''\n", + " parquet_list = []\n", + " for folder, subfolders, files in os.walk(data_dir):\n", + " if folder != data_dir:\n", + " for file in files:\n", + " parquet_list.append(f'{folder}/{file}')\n", + " \n", + " return parquet_list\n", + " \n", + " def read_data(self, parquet_file_path):\n", + " '''\n", + " Load a single parquet as a Pyarrow table.\n", + " \n", + " Args: \n", + " parquet_file_path (str): Directory of a single parquet.\n", + " \n", + " Return: None\n", + " \n", + " '''\n", + " data = pq.read_table(parquet_file_path)\n", + " \n", + " return data\n", + "\n", + " def establish_catalog(self, name='dev'):\n", + " '''\n", + " Creates a new Iceberg catalog.\n", + " \n", + " Args:\n", + " name (str): Name of the catalog to be created.\n", + " Default: 'dev' for development catalog\n", + "\n", + " Return: None\n", + " \n", + " ''' \n", + " # Establish a new Iceberg catalog & its configuration\n", + " self.catalog = load_catalog(name=name,\n", + " **{'uri': f'sqlite:///iceberg_catalog/{name}_catalog.db'})\n", + " \n", + " return\n", + "\n", + " def convert_pyarrow_to_iceberg_schema(self, arrow_schema):\n", + " \"\"\"\n", + " Translate a given Pyarrow schema into a schema acceptable by Iceberg.\n", + "\n", + " Args:\n", + " arrow_schema (object): Pyarrow schema read from the loaded \n", + " parquet of interest.\n", + "\n", + " Return (object): Iceberg schema\n", + " \n", + " \"\"\"\n", + " fields = []\n", + " for idx in range(len(arrow_schema)):\n", + " \n", + " # Extraction of the datatype & name of each schema row\n", + " field_name = arrow_schema.field(idx).name\n", + " arrow_type = arrow_schema.field(idx).type\n", + "\n", + " # Iceberg datatypes to pyarrow datatypes\n", + " if pa.types.is_int32(arrow_type):\n", + " iceberg_type = LongType()\n", + " elif pa.types.is_string(arrow_type):\n", + " iceberg_type = StringType()\n", + " elif pa.types.is_float64(arrow_type):\n", + " iceberg_type = DoubleType()\n", + " elif pa.types.is_int64(arrow_type):\n", + " iceberg_type = LongType()\n", + " elif pa.types.is_dictionary(arrow_type): \n", + " if pa.types.is_string(arrow_type.value_type):\n", + " iceberg_type = StringType()\n", + " elif pa.types.is_int32(arrow_type.value_type):\n", + " iceberg_type = LongType()\n", + " else:\n", + " raise ValueError(f\"Unsupported PyArrow type: {arrow_type}\")\n", + "\n", + " # Establish the new schema acceptable to Iceberg\n", + " fields.append(NestedField(field_id=idx + 1,\n", + " required=False,\n", + " name=field_name,\n", + " field_type=iceberg_type))\n", + " # Iceberg schema\n", + " schema = Schema(*fields)\n", + " \n", + " return schema\n", + "\n", + " def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namespace):\n", + " '''\n", + " Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory.\n", + "\n", + " Args:\n", + " iceberg_tablename (str): Name of the Iceberg table to be created.\n", + " \n", + " data_table (object): Pyarrow table\n", + " \n", + " schema (object): Unique Iceberg schema to be set for the Iceberg table.\n", + " \n", + " namespace (str): Namespace for which the Iceberg table will reside within\n", + " the Iceberg catalog.\n", + "\n", + " Return: None\n", + " \n", + " '''\n", + " \n", + " # Create an Iceberg table\n", + " self.catalog.create_namespace_if_not_exists(namespace)\n", + " iceberg_table = self.catalog.create_table(identifier=f\"{namespace}.{iceberg_tablename}\",\n", + " schema=schema,\n", + " location=f\"{os.environ['PYICEBERG_HOME']}/iceberg_catalog\")\n", + " \n", + " # Updates the Iceberg table with data of interest.\n", + " iceberg_table.append(data_table)\n", + " \n", + " return\n", + "\n", + " def create_table_for_all_parquets(self, parquet_files, namespace):\n", + " '''\n", + " Convert parquets to Iceberg tables - each w/ their inherited schema.\n", + "\n", + " Args:\n", + " parquet_files (list): List of directories of the parquet files.\n", + " \n", + " namespace (str): Namespace for which the Iceberg table will reside within\n", + " the Iceberg catalog.\n", + "\n", + " Return: None\n", + " \n", + " '''\n", + " for idx, parquet_file in enumerate(parquet_files):\n", + " data_table = self.read_data(parquet_file)\n", + " data_pyarrow_schema = data_table.schema\n", + " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", + " self.create_table_for_parquet(os.path.split(os.path.split(parquet_file)[0])[1],\n", + " data_table, \n", + " schema,\n", + " namespace) \n", + " return\n", + " " + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "e6e15027-cc49-4508-b434-fc4362ffb44e", + "metadata": {}, + "source": [ + "#### Demo:\n", + "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c74f8432-f07f-430d-830f-d0910a699ea8", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n" + ] + } + ], + "source": [ + "# Instantiate class\n", + "obj = IcebergTable()\n", + "\n", + "# Extract list of parquets\n", + "parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/')\n", + "\n", + "# Establish new Iceberg catalog\n", + "obj.establish_catalog('dev')\n", + "\n", + "# Generate tables for all parquets detected w/in the new Iceberg catalog\n", + "obj.create_table_for_all_parquets(parquet_list, \n", + " namespace='bathymetry_ml_auxiliary')" + ] + }, + { + "cell_type": "markdown", + "id": "71949e8b-36f2-4e74-afb2-741a884d95dd", + "metadata": {}, + "source": [ + "#### Demo:\n", + "#### Load Iceberg Catalog & Table of Interest" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f449ec30-027e-45c8-91f2-9ad5402b6d17", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "hf_source: large_string\n", + "owp_ahg_c: double\n", + "owp_ahg_f: double\n", + "owp_ahg_a: double\n", + "owp_ahg_b: double\n", + "owp_ahg_k: double\n", + "owp_ahg_m: double\n", + "owp_dingman_r: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "owp_bf_channel_area: double\n", + "owp_inchan_channel_area: double\n", + "owp_bf_channel_perimeter: double\n", + "owp_inchan_channel_perimeter: double\n", + "owp_bf_channel_volume: double\n", + "owp_inchan_channel_volume: double\n", + "owp_bf_channel_bed_area: double\n", + "owp_inchan_channel_bed_area: double\n", + "owp_y_bf: double\n", + "owp_y_inchan: double\n", + "owp_tw_bf: double\n", + "owp_tw_inchan: double\n", + "owp_roughness_bathy: double\n", + "owp_roughness_bathy_lower_bound: double\n", + "owp_roughness_bathy_upper_bound: double\n", + "hf_id: int64\n", + "owp_roughness_no_bathy: double\n", + "hand_source: large_string\n", + "vpuid: int64\n", + "----\n", + "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", + "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", + "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", + "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", + "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", + "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", + "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", + "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", + "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", + "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", + "owp_bf_channel_area: [[80.46187884864187,90.44316537020227,89.3267744543078,89.62238381994659,89.90283819898646,...,33.88476675445253,48.125833094134954,45.14128117526434,41.78322001139718,56.363562127191784]]\n", + "owp_inchan_channel_area: [[56.33064405881224,47.85337776245516,45.59987281142967,48.37917782823691,50.59816670544206,...,25.20392164626514,32.69610800625728,32.75638185253578,31.798663807897064,41.19407020582869]]\n", + "owp_bf_channel_perimeter: [[59.02193299271193,56.93125233080745,56.69193540611867,56.50078213602541,55.71884696596583,...,23.818806528270343,30.790736238597308,31.668208182122697,30.244473860557726,30.83026535966577]]\n", + "owp_inchan_channel_perimeter: [[45.902837801519674,42.88972958711348,42.781428840029896,42.25541060346861,42.74371656180321,...,21.110362040213978,26.22321774860116,29.594636105720035,28.74937461636522,29.077815788520574]]\n", + "owp_bf_channel_volume: [[238808.31641383746,122992.17939660752,186691.7464348059,47767.11633624437,114784.993280073,...,374132.76248264225,106938.35095912036,103918.0174765935,308434.4112290948,614433.0593072133]]\n", + "owp_inchan_channel_volume: [[167187.57332894605,65075.024723013536,95303.11538032124,25785.23039753066,64602.07866200221,...,278284.72007038887,72652.62018698554,75407.21426593073,234730.64418647942,449066.69533706637]]\n", + "owp_bf_channel_bed_area: [[2892.2022978763703,2606.358246231509,2120.7761872525807,986.0789590461588,2397.4053647652536,...,25676.071091443406,5707.898767447053,5221.871474208872,16154.579945017962,35426.56632826127]]\n", + "owp_inchan_channel_bed_area: [[2882.6693726661933,1727.420220530991,1302.426453449232,684.7218800959778,1690.876524247671,...,20277.60153281499,4218.877531759497,3638.538549084465,11664.69130783148,24593.30687386722]]\n", + "owp_y_bf: [[1.4270710945129395,1.6684650778770447,1.6728723049163818,1.6662447452545166,1.6976696848869324,...,1.6160700917243958,1.7370615005493164,1.5624184012413025,1.5164253115653992,2.082498550415039]]\n", + "owp_y_inchan: [[1.2915553450584412,1.1687858998775482,1.128367155790329,1.2016823887825012,1.2436135411262512,...,1.3436493873596191,1.3731055855751038,1.1905770599842072,1.1925222873687744,1.5661699175834656]]\n", + "...\n" + ] + } + ], + "source": [ + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "catalog_name = 'dev'\n", + "namespace = 'bathymetry_ml_auxiliary'\n", + "tablename = 'vpuid=01'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "print(iceberg_table.to_string(preview_cols=20))" + ] + }, + { + "cell_type": "markdown", + "id": "d69402cf-d224-45e8-9680-74b28205ea44", + "metadata": {}, + "source": [ + "#### Observe List of Tables under Catalog of Interest" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "aec525f7-6753-4ca5-ba5e-916c8c6659ec", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "List of tables under bathymetry_ml_auxiliary within dev:\n", + "\n", + "[('bathymetry_ml_auxiliary', 'vpuid=01'), ('bathymetry_ml_auxiliary', 'vpuid=02'), ('bathymetry_ml_auxiliary', 'vpuid=03N'), ('bathymetry_ml_auxiliary', 'vpuid=03S'), ('bathymetry_ml_auxiliary', 'vpuid=03W'), ('bathymetry_ml_auxiliary', 'vpuid=04'), ('bathymetry_ml_auxiliary', 'vpuid=05'), ('bathymetry_ml_auxiliary', 'vpuid=06'), ('bathymetry_ml_auxiliary', 'vpuid=07'), ('bathymetry_ml_auxiliary', 'vpuid=08'), ('bathymetry_ml_auxiliary', 'vpuid=09'), ('bathymetry_ml_auxiliary', 'vpuid=10L'), ('bathymetry_ml_auxiliary', 'vpuid=10U'), ('bathymetry_ml_auxiliary', 'vpuid=11'), ('bathymetry_ml_auxiliary', 'vpuid=12'), ('bathymetry_ml_auxiliary', 'vpuid=13'), ('bathymetry_ml_auxiliary', 'vpuid=14'), ('bathymetry_ml_auxiliary', 'vpuid=15'), ('bathymetry_ml_auxiliary', 'vpuid=16'), ('bathymetry_ml_auxiliary', 'vpuid=17'), ('bathymetry_ml_auxiliary', 'vpuid=18')]\n" + ] + } + ], + "source": [ + "# All tables created within the namespace of interest.\n", + "print(f\"List of tables under {namespace} within {catalog_name}:\\n\\n{catalog.list_tables(namespace)}\") " + ] + }, + { + "cell_type": "markdown", + "id": "c5b0cacc-8f92-49db-b080-5c1ecb72f57b", + "metadata": {}, + "source": [ + "#### Query Iceberg Catalog's Table by Conditions" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "28153d1a-46de-43f0-962a-5b613bdbaa73", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "hf_source: large_string\n", + "owp_ahg_c: double\n", + "owp_ahg_f: double\n", + "owp_ahg_a: double\n", + "owp_ahg_b: double\n", + "owp_ahg_k: double\n", + "owp_ahg_m: double\n", + "owp_dingman_r: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "owp_bf_channel_area: double\n", + "owp_inchan_channel_area: double\n", + "owp_bf_channel_perimeter: double\n", + "owp_inchan_channel_perimeter: double\n", + "owp_bf_channel_volume: double\n", + "owp_inchan_channel_volume: double\n", + "owp_bf_channel_bed_area: double\n", + "owp_inchan_channel_bed_area: double\n", + "owp_y_bf: double\n", + "owp_y_inchan: double\n", + "owp_tw_bf: double\n", + "owp_tw_inchan: double\n", + "owp_roughness_bathy: double\n", + "owp_roughness_bathy_lower_bound: double\n", + "owp_roughness_bathy_upper_bound: double\n", + "hf_id: int64\n", + "owp_roughness_no_bathy: double\n", + "hand_source: large_string\n", + "vpuid: int64\n", + "----\n", + "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", + "owp_ahg_c: [[0.24283623695373535,0.24679405987262726,0.24796637892723083,0.24558784067630768,0.2416917383670807,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", + "owp_ahg_f: [[0.44655272364616394,0.45140621066093445,0.45361408591270447,0.4597383141517639,0.46237292885780334,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", + "owp_ahg_a: [[16.292556762695312,16.71356201171875,15.591700553894043,17.455158233642578,18.136899948120117,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", + "owp_ahg_b: [[0.1877126842737198,0.18782523274421692,0.19405822455883026,0.1825941652059555,0.17806944251060486,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", + "owp_ahg_k: [[0.2711319327354431,0.26460614800453186,0.28298744559288025,0.2645978033542633,0.25294309854507446,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", + "owp_ahg_m: [[0.4176878035068512,0.40634584426879883,0.3849862217903137,0.4011600911617279,0.39922311902046204,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", + "owp_dingman_r: [[163.10582763253834,121.4828569903629,109.42969777415078,131.98548478571865,144.5459281918684,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", + "LENGTHKM: [[1.1828318619868186,3.453164835389148,3.7720762279021254,2.444968856687704,2.735238005445334,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", + "slope: [[0.00489451,0.00399073,0.00354641,0.00291035,0.00222913,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", + "..." + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Filter Iceberg table based on threshold set for a given feature\n", + "feature_name = 'owp_ahg_c'\n", + "thresh_val = 0.25\n", + "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=LessThan(feature_name, thresh_val)).to_arrow()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6320114d-8115-4e1f-b8fd-3c80aeaa07de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "hf_source: large_string\n", + "owp_ahg_c: double\n", + "owp_ahg_f: double\n", + "owp_ahg_a: double\n", + "owp_ahg_b: double\n", + "owp_ahg_k: double\n", + "owp_ahg_m: double\n", + "owp_dingman_r: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "owp_bf_channel_area: double\n", + "owp_inchan_channel_area: double\n", + "owp_bf_channel_perimeter: double\n", + "owp_inchan_channel_perimeter: double\n", + "owp_bf_channel_volume: double\n", + "owp_inchan_channel_volume: double\n", + "owp_bf_channel_bed_area: double\n", + "owp_inchan_channel_bed_area: double\n", + "owp_y_bf: double\n", + "owp_y_inchan: double\n", + "owp_tw_bf: double\n", + "owp_tw_inchan: double\n", + "owp_roughness_bathy: double\n", + "owp_roughness_bathy_lower_bound: double\n", + "owp_roughness_bathy_upper_bound: double\n", + "hf_id: int64\n", + "owp_roughness_no_bathy: double\n", + "hand_source: large_string\n", + "vpuid: int64\n", + "----\n", + "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", + "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.26968732476234436,0.262911856174469,0.2565535306930542,0.27186259627342224,0.2509637176990509]]\n", + "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4091697037220001,0.4002934396266937,0.3982747495174408,0.41463810205459595,0.4620860517024994]]\n", + "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,13.57089614868164,15.591622352600098,17.110021591186523,15.198208808898926,16.834657669067383]]\n", + "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22416476905345917,0.20449289679527283,0.20677334070205688,0.2223099172115326,0.20692850649356842]]\n", + "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.29988086223602295,0.27692529559135437,0.2727428376674652,0.28107815980911255,0.2823072373867035]]\n", + "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3715367913246155,0.4299010634422302,0.4299301207065582,0.40392443537712097,0.3803613483905792]]\n", + "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,66.4125603175732,47.97490105010014,49.70555612325059,44.49719316488429,221.7325794960283]]\n", + "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,1.3556982962034625,1.7761013055059551,3.1182578724544983,5.662275879263775,0.760075523461262]]\n", + "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.0154941,0.02633596,0.01911396,0.04333816,0.00001]]\n", + "..." + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_name = 'owp_ahg_c'\n", + "thresh_lower, thresh_upper = 0.25, 0.28\n", + "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=And(GreaterThan(feature_name, thresh_lower), \n", + " LessThan(feature_name, thresh_upper))).to_arrow()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3acdfde0-d34d-442e-87eb-724dbcef5d1b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "owp_ahg_f: double\n", + "owp_ahg_m: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "----\n", + "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4067888855934143,0.3982747495174408,0.4000049829483032,0.41463810205459595,0.4620860517024994]]\n", + "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3738446533679962,0.4299301207065582,0.4191203713417053,0.40392443537712097,0.3803613483905792]]\n", + "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,2.891987367172746,3.1182578724544983,3.6554421303734443,5.662275879263775,0.760075523461262]]\n", + "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.02001729,0.01911396,0.02483032,0.04333816,0.00001]]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "feature_name = 'owp_ahg_c'\n", + "thresh = 0.25\n", + "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=GreaterThanOrEqual(feature_name, thresh),\n", + " selected_fields=(\"owp_ahg_m\", \"slope\", \"LENGTHKM\", \"owp_ahg_f\")).to_arrow()\n" + ] + }, + { + "cell_type": "markdown", + "id": "01dc1ff0-bfd5-4b7a-82d0-1d60e237e2cd", + "metadata": {}, + "source": [ + "# Cross-Check & Verify Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "hf_source: string\n", + "owp_ahg_c: double\n", + "owp_ahg_f: double\n", + "owp_ahg_a: double\n", + "owp_ahg_b: double\n", + "owp_ahg_k: double\n", + "owp_ahg_m: double\n", + "owp_dingman_r: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "owp_bf_channel_area: double\n", + "owp_inchan_channel_area: double\n", + "owp_bf_channel_perimeter: double\n", + "owp_inchan_channel_perimeter: double\n", + "owp_bf_channel_volume: double\n", + "owp_inchan_channel_volume: double\n", + "owp_bf_channel_bed_area: double\n", + "owp_inchan_channel_bed_area: double\n", + "owp_y_bf: double\n", + "owp_y_inchan: double\n", + "owp_tw_bf: double\n", + "owp_tw_inchan: double\n", + "owp_roughness_bathy: double\n", + "owp_roughness_bathy_lower_bound: double\n", + "owp_roughness_bathy_upper_bound: double\n", + "hf_id: int64\n", + "owp_roughness_no_bathy: double\n", + "hand_source: string\n", + "vpuid: dictionary\n", + "----\n", + "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", + "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", + "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", + "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", + "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", + "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", + "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", + "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", + "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", + "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", + "..." + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the Parquet file into a DataFrame\n", + "parquet_file_path = f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet'\n", + "df = pq.read_table(parquet_file_path)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86ec5e38-ab4c-4185-bc0f-3306e670f968", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "iceberg", + "language": "python", + "name": "iceberg" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 11e99b3e8b5500d56ac658791676768bea42e7d5 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 6 May 2025 14:02:43 -0400 Subject: [PATCH 22/97] added S3 capability to demo --- examples/Demo_Iceberg.ipynb | 204 +++++++++++++++++++++++++++++------- 1 file changed, 169 insertions(+), 35 deletions(-) diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index 3538302..0a8ad2f 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -20,9 +20,10 @@ "import pyiceberg\n", "from pyiceberg.catalog import load_catalog\n", "from pyiceberg.schema import Schema\n", - "from pyiceberg.types import StringType, IntegerType\n", "import pyarrow.parquet as pq\n", "from pyiceberg.schema import Schema\n", + "import boto3\n", + "import s3fs\n", "from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType\n", "from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual\n", "import os\n", @@ -66,12 +67,13 @@ " \n", " Args: \n", " parquet_file_path (str): Directory of a single parquet.\n", + "\n", " \n", - " Return: None\n", + " Return: A Pyarrow table.\n", " \n", " '''\n", " data = pq.read_table(parquet_file_path)\n", - " \n", + " \n", " return data\n", "\n", " def establish_catalog(self, name='dev'):\n", @@ -165,7 +167,7 @@ " \n", " return\n", "\n", - " def create_table_for_all_parquets(self, parquet_files, namespace):\n", + " def create_table_for_all_parquets(self, parquet_files, namespace, source='local'):\n", " '''\n", " Convert parquets to Iceberg tables - each w/ their inherited schema.\n", "\n", @@ -185,8 +187,41 @@ " self.create_table_for_parquet(os.path.split(os.path.split(parquet_file)[0])[1],\n", " data_table, \n", " schema,\n", - " namespace) \n", + " namespace)\n", + " return\n", + "\n", + " def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymetry', profile_name='default'):\n", + " '''\n", + " Convert parquets from S3 to Iceberg tables - each w/ their inherited schema.\n", + " \n", + " Args:\n", + " bucket_name (list): S3 bucket name.\n", + " \n", + " namespace (str): Namespace for which the Iceberg table will reside within\n", + " the Iceberg catalog.\n", + "\n", + " profile_name (str: Profile name declared in the AWS configuration file. \n", + " Default: 'default' \n", + " \n", + " Return: None\n", + " '''\n", + " # Instantiate bucket of interest.\n", + " session = boto3.Session(profile_name=profile_name)\n", + " s3 = session.resource('s3')\n", + " bucket_ob = s3.Bucket(bucket_name)\n", + " pyarrow_table = {}\n", + " for s3obj in bucket_ob.objects.all():\n", + " pyarrow_table[s3obj.key]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", + " filesystem=s3fs.S3FileSystem())\n", + " for key, data_table in pyarrow_table.items():\n", + " data_pyarrow_schema = data_table.schema\n", + " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", + " self.create_table_for_parquet(os.path.split(os.path.split(key)[0])[1],\n", + " data_table, \n", + " schema,\n", + " namespace) \n", " return\n", + " \n", " " ] }, @@ -197,7 +232,7 @@ "metadata": {}, "source": [ "#### Demo:\n", - "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets" + "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets in Local" ] }, { @@ -309,11 +344,130 @@ "# Establish new Iceberg catalog\n", "obj.establish_catalog('dev')\n", "\n", - "# Generate tables for all parquets detected w/in the new Iceberg catalog\n", + "# Generate tables w/in the new Iceberg catalog for all parquets detected \n", "obj.create_table_for_all_parquets(parquet_list, \n", " namespace='bathymetry_ml_auxiliary')" ] }, + { + "cell_type": "markdown", + "id": "b7f5dba5-6892-45a2-81b8-1a80a3ad9f49", + "metadata": {}, + "source": [ + "#### Demo\n", + "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets in S3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a1c58d4f-59e5-41d8-be31-536f3f790216", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as string on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", + "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n" + ] + } + ], + "source": [ + "# Instantiate class\n", + "obj = IcebergTable()\n", + "\n", + "# Establish new Iceberg catalog\n", + "obj.establish_catalog('dev2')\n", + "\n", + "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", + "obj.create_table_for_all_s3parquets(namespace='bathymetry_ml_auxiliary',\n", + " bucket_name='ngwpc-bathymetry',\n", + " profile_name='default')" + ] + }, { "cell_type": "markdown", "id": "71949e8b-36f2-4e74-afb2-741a884d95dd", @@ -325,7 +479,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "f449ec30-027e-45c8-91f2-9ad5402b6d17", "metadata": {}, "outputs": [ @@ -409,7 +563,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 5, "id": "aec525f7-6753-4ca5-ba5e-916c8c6659ec", "metadata": {}, "outputs": [ @@ -438,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 6, "id": "28153d1a-46de-43f0-962a-5b613bdbaa73", "metadata": {}, "outputs": [ @@ -489,7 +643,7 @@ "..." ] }, - "execution_count": 5, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -503,7 +657,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 7, "id": "6320114d-8115-4e1f-b8fd-3c80aeaa07de", "metadata": {}, "outputs": [ @@ -554,7 +708,7 @@ "..." ] }, - "execution_count": 6, + "execution_count": 7, "metadata": {}, "output_type": "execute_result" } @@ -568,30 +722,10 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "3acdfde0-d34d-442e-87eb-724dbcef5d1b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "owp_ahg_f: double\n", - "owp_ahg_m: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "----\n", - "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4067888855934143,0.3982747495174408,0.4000049829483032,0.41463810205459595,0.4620860517024994]]\n", - "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3738446533679962,0.4299301207065582,0.4191203713417053,0.40392443537712097,0.3803613483905792]]\n", - "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,2.891987367172746,3.1182578724544983,3.6554421303734443,5.662275879263775,0.760075523461262]]\n", - "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.02001729,0.01911396,0.02483032,0.04333816,0.00001]]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "feature_name = 'owp_ahg_c'\n", "thresh = 0.25\n", From 5356ff147007760b414c686285ccb1a2d86c1b52 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 6 May 2025 14:04:01 -0400 Subject: [PATCH 23/97] script to transform parquet into apache iceberg --- .../src/icefabric_manage/iceberg_table.py | 218 ++++++++++++++++++ 1 file changed, 218 insertions(+) create mode 100644 src/icefabric_manage/src/icefabric_manage/iceberg_table.py diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py new file mode 100644 index 0000000..4a46393 --- /dev/null +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -0,0 +1,218 @@ +import pyarrow as pa +import pyiceberg +from pyiceberg.catalog import load_catalog +from pyiceberg.schema import Schema +from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType +import pyarrow.parquet as pq +from pyiceberg.schema import Schema +import boto3 +import s3fs +import os + +class IcebergTable(object): + ''' + Create a Iceberg table per parquet file w/ its inherited schema set. + + ''' + def __init__(self): + + # Set location of where the iceberg catalog will reside + os.environ['PYICEBERG_HOME'] = os.getcwd() + + def read_data_dirs(self, data_dir): + ''' + Extract the list of parquet directories. + + Args: + data_dir (str): Parent directory of the parquet files. + Note: All the ml_auxiliary_data parquet + files are save under same filenames, + but categorized by 'vpuid' conditions. + + Return (list): List of directories associated with each parquet file. + + ''' + parquet_list = [] + for folder, subfolders, files in os.walk(data_dir): + if folder != data_dir: + for file in files: + parquet_list.append(f'{folder}/{file}') + + return parquet_list + + def read_data(self, parquet_file_path): + ''' + Load a single parquet as a Pyarrow table. + + Args: + parquet_file_path (str): Directory of a single parquet. + + + Return: A Pyarrow table. + + ''' + data = pq.read_table(parquet_file_path) + + return data + + def establish_catalog(self, name='dev'): + ''' + Creates a new Iceberg catalog. + + Args: + name (str): Name of the catalog to be created. + Default: 'dev' for development catalog + + Return: None + + ''' + # Establish a new Iceberg catalog & its configuration + self.catalog = load_catalog(name=name, + **{'uri': f'sqlite:///iceberg_catalog/{name}_catalog.db'}) + + return + + def convert_pyarrow_to_iceberg_schema(self, arrow_schema): + """ + Translate a given Pyarrow schema into a schema acceptable by Iceberg. + + Args: + arrow_schema (object): Pyarrow schema read from the loaded + parquet of interest. + + Return (object): Iceberg schema + + """ + fields = [] + for idx in range(len(arrow_schema)): + + # Extraction of the datatype & name of each schema row + field_name = arrow_schema.field(idx).name + arrow_type = arrow_schema.field(idx).type + + # Iceberg datatypes to pyarrow datatypes + if pa.types.is_int32(arrow_type): + iceberg_type = LongType() + elif pa.types.is_string(arrow_type): + iceberg_type = StringType() + elif pa.types.is_float64(arrow_type): + iceberg_type = DoubleType() + elif pa.types.is_int64(arrow_type): + iceberg_type = LongType() + elif pa.types.is_dictionary(arrow_type): + if pa.types.is_string(arrow_type.value_type): + iceberg_type = StringType() + elif pa.types.is_int32(arrow_type.value_type): + iceberg_type = LongType() + else: + raise ValueError(f"Unsupported PyArrow type: {arrow_type}") + + # Establish the new schema acceptable to Iceberg + fields.append(NestedField(field_id=idx + 1, + required=False, + name=field_name, + field_type=iceberg_type)) + # Iceberg schema + schema = Schema(*fields) + + return schema + + def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namespace): + ''' + Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory. + + Args: + iceberg_tablename (str): Name of the Iceberg table to be created. + + data_table (object): Pyarrow table + + schema (object): Unique Iceberg schema to be set for the Iceberg table. + + namespace (str): Namespace for which the Iceberg table will reside within + the Iceberg catalog. + + Return: None + + ''' + + # Create an Iceberg table + self.catalog.create_namespace_if_not_exists(namespace) + iceberg_table = self.catalog.create_table(identifier=f"{namespace}.{iceberg_tablename}", + schema=schema, + location=f"{os.environ['PYICEBERG_HOME']}/iceberg_catalog") + + # Updates the Iceberg table with data of interest. + iceberg_table.append(data_table) + + return + + def create_table_for_all_parquets(self, parquet_files, namespace, source='local'): + ''' + Convert parquets to Iceberg tables - each w/ their inherited schema. + + Args: + parquet_files (list): List of directories of the parquet files. + + namespace (str): Namespace for which the Iceberg table will reside within + the Iceberg catalog. + + Return: None + + ''' + for idx, parquet_file in enumerate(parquet_files): + data_table = self.read_data(parquet_file) + data_pyarrow_schema = data_table.schema + schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) + self.create_table_for_parquet(os.path.split(os.path.split(parquet_file)[0])[1], + data_table, + schema, + namespace) + return + + def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymetry', profile_name='default'): + ''' + Convert parquets from S3 to Iceberg tables - each w/ their inherited schema. + + Args: + bucket_name (list): S3 bucket name. + + namespace (str): Namespace for which the Iceberg table will reside within + the Iceberg catalog. + + profile_name (str: Profile name declared in the AWS configuration file. + Default: 'default' + + Return: None + ''' + # Instantiate bucket of interest. + session = boto3.Session(profile_name=profile_name) + s3 = session.resource('s3') + bucket_ob = s3.Bucket(bucket_name) + pyarrow_table = {} + for s3obj in bucket_ob.objects.all(): + pyarrow_table[s3obj.key]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', + filesystem=s3fs.S3FileSystem()) + for key, data_table in pyarrow_table.items(): + data_pyarrow_schema = data_table.schema + schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) + self.create_table_for_parquet(os.path.split(os.path.split(key)[0])[1], + data_table, + schema, + namespace) + return + + +if __name__ == '__main__': + + # Instantiate class + obj = IcebergTable() + + # Extract list of parquets + parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/') + + # Establish new Iceberg catalog + obj.establish_catalog('dev') + + # Generate tables w/in the new Iceberg catalog for all parquets detected + obj.create_table_for_all_parquets(parquet_list, + namespace='bathymetry_ml_auxiliary') \ No newline at end of file From a353c20b7b38b11308dd19e021d7bed4f46b6c03 Mon Sep 17 00:00:00 2001 From: "Quercus.Hamlin" Date: Tue, 6 May 2025 14:34:28 -0400 Subject: [PATCH 24/97] chore: add boto3 dependency --- pyproject.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pyproject.toml b/pyproject.toml index bbe14f0..c9addc0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -43,6 +43,7 @@ dev-dependencies = [ "icefabric_manage", "icefabric_tools", "examples", + "boto3", ] package = false From c285634b302bccbc07857b22225d4c2123dff07f Mon Sep 17 00:00:00 2001 From: "Quercus.Hamlin" Date: Tue, 6 May 2025 14:35:25 -0400 Subject: [PATCH 25/97] chore: uv lock --- uv.lock | 3176 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 1602 insertions(+), 1574 deletions(-) diff --git a/uv.lock b/uv.lock index 5dd3bbe..663f3e3 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,5 @@ version = 1 -revision = 1 +revision = 2 requires-python = ">3.10, <3.13" resolution-markers = [ "python_full_version >= '3.12'", @@ -27,18 +27,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900 } +sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900, upload_time = "2025-03-04T18:30:58.945Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313 }, + { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313, upload_time = "2025-03-04T18:30:56.493Z" }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload_time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload_time = "2025-03-12T01:42:47.083Z" }, ] [[package]] @@ -55,65 +55,65 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/c3/e5f64af7e97a02f547020e6ff861595766bb5ecb37c7492fac9fe3c14f6c/aiohttp-3.11.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96264854fedbea933a9ca4b7e0c745728f01380691687b7365d18d9e977179c4", size = 711703 }, - { url = "https://files.pythonhosted.org/packages/5f/2f/53c26e96efa5fd01ebcfe1fefdfb7811f482bb21f4fa103d85eca4dcf888/aiohttp-3.11.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9602044ff047043430452bc3a2089743fa85da829e6fc9ee0025351d66c332b6", size = 471348 }, - { url = "https://files.pythonhosted.org/packages/80/47/dcc248464c9b101532ee7d254a46f6ed2c1fd3f4f0f794cf1f2358c0d45b/aiohttp-3.11.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5691dc38750fcb96a33ceef89642f139aa315c8a193bbd42a0c33476fd4a1609", size = 457611 }, - { url = "https://files.pythonhosted.org/packages/4c/ca/67d816ef075e8ac834b5f1f6b18e8db7d170f7aebaf76f1be462ea10cab0/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554c918ec43f8480b47a5ca758e10e793bd7410b83701676a4782672d670da55", size = 1591976 }, - { url = "https://files.pythonhosted.org/packages/46/00/0c120287aa51c744438d99e9aae9f8c55ca5b9911c42706966c91c9d68d6/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a4076a2b3ba5b004b8cffca6afe18a3b2c5c9ef679b4d1e9859cf76295f8d4f", size = 1632819 }, - { url = "https://files.pythonhosted.org/packages/54/a3/3923c9040cd4927dfee1aa017513701e35adcfc35d10729909688ecaa465/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:767a97e6900edd11c762be96d82d13a1d7c4fc4b329f054e88b57cdc21fded94", size = 1666567 }, - { url = "https://files.pythonhosted.org/packages/e0/ab/40dacb15c0c58f7f17686ea67bc186e9f207341691bdb777d1d5ff4671d5/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ddc9337a0fb0e727785ad4f41163cc314376e82b31846d3835673786420ef1", size = 1594959 }, - { url = "https://files.pythonhosted.org/packages/0d/98/d40c2b7c4a5483f9a16ef0adffce279ced3cc44522e84b6ba9e906be5168/aiohttp-3.11.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f414f37b244f2a97e79b98d48c5ff0789a0b4b4609b17d64fa81771ad780e415", size = 1538516 }, - { url = "https://files.pythonhosted.org/packages/cf/10/e0bf3a03524faac45a710daa034e6f1878b24a1fef9c968ac8eb786ae657/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fdb239f47328581e2ec7744ab5911f97afb10752332a6dd3d98e14e429e1a9e7", size = 1529037 }, - { url = "https://files.pythonhosted.org/packages/ad/d6/5ff5282e00e4eb59c857844984cbc5628f933e2320792e19f93aff518f52/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f2c50bad73ed629cc326cc0f75aed8ecfb013f88c5af116f33df556ed47143eb", size = 1546813 }, - { url = "https://files.pythonhosted.org/packages/de/96/f1014f84101f9b9ad2d8acf3cc501426475f7f0cc62308ae5253e2fac9a7/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a8d8f20c39d3fa84d1c28cdb97f3111387e48209e224408e75f29c6f8e0861d", size = 1523852 }, - { url = "https://files.pythonhosted.org/packages/a5/86/ec772c6838dd6bae3229065af671891496ac1834b252f305cee8152584b2/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:106032eaf9e62fd6bc6578c8b9e6dc4f5ed9a5c1c7fb2231010a1b4304393421", size = 1603766 }, - { url = "https://files.pythonhosted.org/packages/84/38/31f85459c9402d409c1499284fc37a96f69afadce3cfac6a1b5ab048cbf1/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b491e42183e8fcc9901d8dcd8ae644ff785590f1727f76ca86e731c61bfe6643", size = 1620647 }, - { url = "https://files.pythonhosted.org/packages/31/2f/54aba0040764dd3d362fb37bd6aae9b3034fcae0b27f51b8a34864e48209/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad8c745ff9460a16b710e58e06a9dec11ebc0d8f4dd82091cefb579844d69868", size = 1559260 }, - { url = "https://files.pythonhosted.org/packages/ca/d2/a05c7dd9e1b6948c1c5d04f1a8bcfd7e131923fa809bb87477d5c76f1517/aiohttp-3.11.18-cp310-cp310-win32.whl", hash = "sha256:8e57da93e24303a883146510a434f0faf2f1e7e659f3041abc4e3fb3f6702a9f", size = 418051 }, - { url = "https://files.pythonhosted.org/packages/39/e2/796a6179e8abe267dfc84614a50291560a989d28acacbc5dab3bcd4cbec4/aiohttp-3.11.18-cp310-cp310-win_amd64.whl", hash = "sha256:cc93a4121d87d9f12739fc8fab0a95f78444e571ed63e40bfc78cd5abe700ac9", size = 442908 }, - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload_time = "2025-04-21T09:43:09.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/c3/e5f64af7e97a02f547020e6ff861595766bb5ecb37c7492fac9fe3c14f6c/aiohttp-3.11.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96264854fedbea933a9ca4b7e0c745728f01380691687b7365d18d9e977179c4", size = 711703, upload_time = "2025-04-21T09:40:25.487Z" }, + { url = "https://files.pythonhosted.org/packages/5f/2f/53c26e96efa5fd01ebcfe1fefdfb7811f482bb21f4fa103d85eca4dcf888/aiohttp-3.11.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9602044ff047043430452bc3a2089743fa85da829e6fc9ee0025351d66c332b6", size = 471348, upload_time = "2025-04-21T09:40:27.569Z" }, + { url = "https://files.pythonhosted.org/packages/80/47/dcc248464c9b101532ee7d254a46f6ed2c1fd3f4f0f794cf1f2358c0d45b/aiohttp-3.11.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5691dc38750fcb96a33ceef89642f139aa315c8a193bbd42a0c33476fd4a1609", size = 457611, upload_time = "2025-04-21T09:40:28.978Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ca/67d816ef075e8ac834b5f1f6b18e8db7d170f7aebaf76f1be462ea10cab0/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554c918ec43f8480b47a5ca758e10e793bd7410b83701676a4782672d670da55", size = 1591976, upload_time = "2025-04-21T09:40:30.804Z" }, + { url = "https://files.pythonhosted.org/packages/46/00/0c120287aa51c744438d99e9aae9f8c55ca5b9911c42706966c91c9d68d6/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a4076a2b3ba5b004b8cffca6afe18a3b2c5c9ef679b4d1e9859cf76295f8d4f", size = 1632819, upload_time = "2025-04-21T09:40:32.731Z" }, + { url = "https://files.pythonhosted.org/packages/54/a3/3923c9040cd4927dfee1aa017513701e35adcfc35d10729909688ecaa465/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:767a97e6900edd11c762be96d82d13a1d7c4fc4b329f054e88b57cdc21fded94", size = 1666567, upload_time = "2025-04-21T09:40:34.901Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ab/40dacb15c0c58f7f17686ea67bc186e9f207341691bdb777d1d5ff4671d5/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ddc9337a0fb0e727785ad4f41163cc314376e82b31846d3835673786420ef1", size = 1594959, upload_time = "2025-04-21T09:40:36.714Z" }, + { url = "https://files.pythonhosted.org/packages/0d/98/d40c2b7c4a5483f9a16ef0adffce279ced3cc44522e84b6ba9e906be5168/aiohttp-3.11.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f414f37b244f2a97e79b98d48c5ff0789a0b4b4609b17d64fa81771ad780e415", size = 1538516, upload_time = "2025-04-21T09:40:38.263Z" }, + { url = "https://files.pythonhosted.org/packages/cf/10/e0bf3a03524faac45a710daa034e6f1878b24a1fef9c968ac8eb786ae657/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fdb239f47328581e2ec7744ab5911f97afb10752332a6dd3d98e14e429e1a9e7", size = 1529037, upload_time = "2025-04-21T09:40:40.349Z" }, + { url = "https://files.pythonhosted.org/packages/ad/d6/5ff5282e00e4eb59c857844984cbc5628f933e2320792e19f93aff518f52/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f2c50bad73ed629cc326cc0f75aed8ecfb013f88c5af116f33df556ed47143eb", size = 1546813, upload_time = "2025-04-21T09:40:42.106Z" }, + { url = "https://files.pythonhosted.org/packages/de/96/f1014f84101f9b9ad2d8acf3cc501426475f7f0cc62308ae5253e2fac9a7/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a8d8f20c39d3fa84d1c28cdb97f3111387e48209e224408e75f29c6f8e0861d", size = 1523852, upload_time = "2025-04-21T09:40:44.164Z" }, + { url = "https://files.pythonhosted.org/packages/a5/86/ec772c6838dd6bae3229065af671891496ac1834b252f305cee8152584b2/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:106032eaf9e62fd6bc6578c8b9e6dc4f5ed9a5c1c7fb2231010a1b4304393421", size = 1603766, upload_time = "2025-04-21T09:40:46.203Z" }, + { url = "https://files.pythonhosted.org/packages/84/38/31f85459c9402d409c1499284fc37a96f69afadce3cfac6a1b5ab048cbf1/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b491e42183e8fcc9901d8dcd8ae644ff785590f1727f76ca86e731c61bfe6643", size = 1620647, upload_time = "2025-04-21T09:40:48.168Z" }, + { url = "https://files.pythonhosted.org/packages/31/2f/54aba0040764dd3d362fb37bd6aae9b3034fcae0b27f51b8a34864e48209/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad8c745ff9460a16b710e58e06a9dec11ebc0d8f4dd82091cefb579844d69868", size = 1559260, upload_time = "2025-04-21T09:40:50.219Z" }, + { url = "https://files.pythonhosted.org/packages/ca/d2/a05c7dd9e1b6948c1c5d04f1a8bcfd7e131923fa809bb87477d5c76f1517/aiohttp-3.11.18-cp310-cp310-win32.whl", hash = "sha256:8e57da93e24303a883146510a434f0faf2f1e7e659f3041abc4e3fb3f6702a9f", size = 418051, upload_time = "2025-04-21T09:40:52.272Z" }, + { url = "https://files.pythonhosted.org/packages/39/e2/796a6179e8abe267dfc84614a50291560a989d28acacbc5dab3bcd4cbec4/aiohttp-3.11.18-cp310-cp310-win_amd64.whl", hash = "sha256:cc93a4121d87d9f12739fc8fab0a95f78444e571ed63e40bfc78cd5abe700ac9", size = 442908, upload_time = "2025-04-21T09:40:54.345Z" }, + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload_time = "2025-04-21T09:40:55.776Z" }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload_time = "2025-04-21T09:40:57.301Z" }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload_time = "2025-04-21T09:40:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload_time = "2025-04-21T09:41:00.795Z" }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload_time = "2025-04-21T09:41:02.89Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload_time = "2025-04-21T09:41:04.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload_time = "2025-04-21T09:41:06.728Z" }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload_time = "2025-04-21T09:41:08.293Z" }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload_time = "2025-04-21T09:41:11.054Z" }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload_time = "2025-04-21T09:41:13.213Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload_time = "2025-04-21T09:41:14.827Z" }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload_time = "2025-04-21T09:41:17.168Z" }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload_time = "2025-04-21T09:41:19.353Z" }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload_time = "2025-04-21T09:41:21.868Z" }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload_time = "2025-04-21T09:41:24.78Z" }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload_time = "2025-04-21T09:41:26.48Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload_time = "2025-04-21T09:41:28.021Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload_time = "2025-04-21T09:41:29.783Z" }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload_time = "2025-04-21T09:41:31.327Z" }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload_time = "2025-04-21T09:41:33.541Z" }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload_time = "2025-04-21T09:41:35.634Z" }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload_time = "2025-04-21T09:41:37.456Z" }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload_time = "2025-04-21T09:41:39.756Z" }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload_time = "2025-04-21T09:41:41.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload_time = "2025-04-21T09:41:44.192Z" }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload_time = "2025-04-21T09:41:46.049Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload_time = "2025-04-21T09:41:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload_time = "2025-04-21T09:41:50.323Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload_time = "2025-04-21T09:41:52.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload_time = "2025-04-21T09:41:53.94Z" }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload_time = "2025-04-21T09:41:55.689Z" }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload_time = "2025-04-21T09:41:57.977Z" }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload_time = "2024-09-02T03:33:40.349Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload_time = "2024-09-02T03:34:59.454Z" }, ] [[package]] @@ -123,18 +123,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424, upload_time = "2024-12-13T17:10:40.86Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597, upload_time = "2024-12-13T17:10:38.469Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload_time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload_time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -147,18 +147,18 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload_time = "2025-03-17T00:02:54.77Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload_time = "2025-03-17T00:02:52.713Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload_time = "2024-02-06T09:43:09.663Z" }, ] [[package]] @@ -168,9 +168,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload_time = "2023-08-15T14:13:12.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload_time = "2023-08-15T14:13:10.752Z" }, ] [[package]] @@ -180,18 +180,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload_time = "2021-12-01T08:52:55.68Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload_time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload_time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload_time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload_time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload_time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload_time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload_time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload_time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload_time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload_time = "2021-12-01T09:09:31.335Z" }, ] [[package]] @@ -202,18 +202,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload_time = "2023-09-30T22:11:18.25Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload_time = "2023-09-30T22:11:16.072Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload_time = "2024-11-30T04:30:14.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload_time = "2024-11-30T04:30:10.946Z" }, ] [[package]] @@ -223,48 +223,48 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload_time = "2025-03-16T17:25:36.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload_time = "2025-03-16T17:25:35.422Z" }, ] [[package]] name = "async-timeout" version = "5.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274 } +sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload_time = "2024-11-06T16:41:39.6Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233 }, + { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload_time = "2024-11-06T16:41:37.9Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload_time = "2025-02-25T18:15:32.003Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload_time = "2025-02-25T16:53:14.607Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload_time = "2025-02-25T16:53:17.266Z" }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload_time = "2025-02-25T16:53:26.378Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload_time = "2025-02-25T16:53:29.858Z" }, ] [[package]] @@ -275,9 +275,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, ] [[package]] @@ -293,21 +293,21 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload_time = "2025-01-29T04:15:40.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/3b/4ba3f93ac8d90410423fdd31d7541ada9bcee1df32fb90d26de41ed40e1d/black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", size = 1629419 }, - { url = "https://files.pythonhosted.org/packages/b4/02/0bde0485146a8a5e694daed47561785e8b77a0466ccc1f3e485d5ef2925e/black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", size = 1461080 }, - { url = "https://files.pythonhosted.org/packages/52/0e/abdf75183c830eaca7589144ff96d49bce73d7ec6ad12ef62185cc0f79a2/black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", size = 1766886 }, - { url = "https://files.pythonhosted.org/packages/dc/a6/97d8bb65b1d8a41f8a6736222ba0a334db7b7b77b8023ab4568288f23973/black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", size = 1419404 }, - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, + { url = "https://files.pythonhosted.org/packages/4d/3b/4ba3f93ac8d90410423fdd31d7541ada9bcee1df32fb90d26de41ed40e1d/black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", size = 1629419, upload_time = "2025-01-29T05:37:06.642Z" }, + { url = "https://files.pythonhosted.org/packages/b4/02/0bde0485146a8a5e694daed47561785e8b77a0466ccc1f3e485d5ef2925e/black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", size = 1461080, upload_time = "2025-01-29T05:37:09.321Z" }, + { url = "https://files.pythonhosted.org/packages/52/0e/abdf75183c830eaca7589144ff96d49bce73d7ec6ad12ef62185cc0f79a2/black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", size = 1766886, upload_time = "2025-01-29T04:18:24.432Z" }, + { url = "https://files.pythonhosted.org/packages/dc/a6/97d8bb65b1d8a41f8a6736222ba0a334db7b7b77b8023ab4568288f23973/black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", size = 1419404, upload_time = "2025-01-29T04:19:04.296Z" }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload_time = "2025-01-29T05:37:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload_time = "2025-01-29T05:37:14.309Z" }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload_time = "2025-01-29T04:18:17.688Z" }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload_time = "2025-01-29T04:18:51.711Z" }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload_time = "2025-01-29T05:37:16.707Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload_time = "2025-01-29T05:37:18.273Z" }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload_time = "2025-01-29T04:18:33.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload_time = "2025-01-29T04:19:12.944Z" }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload_time = "2025-01-29T04:15:38.082Z" }, ] [[package]] @@ -317,9 +317,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload_time = "2024-10-29T18:30:40.477Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload_time = "2024-10-29T18:30:38.186Z" }, ] [package.optional-dependencies] @@ -327,6 +327,20 @@ css = [ { name = "tinycss2" }, ] +[[package]] +name = "boto3" +version = "1.37.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, + { name = "jmespath" }, + { name = "s3transfer" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/21/8c/c2af03daafaacea1db1823d23073facffa75818b61d376c3be77dd297ae8/boto3-1.37.1.tar.gz", hash = "sha256:96d18f7feb0c1fcb95f8837b74b6c8880e1b4e35ce5f8a8f8cb243a090c278ed", size = 111175, upload_time = "2025-02-25T20:33:16.471Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/63/ec/e722c53c9dc41e8df094587c32e19409bace8b43b5eb31fe3536ca57a38b/boto3-1.37.1-py3-none-any.whl", hash = "sha256:4320441f904435a1b85e6ecb81793192e522c737cc9ed6566014e29f0a11cb22", size = 139338, upload_time = "2025-02-25T20:33:11.935Z" }, +] + [[package]] name = "botocore" version = "1.37.1" @@ -336,18 +350,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835 } +sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835, upload_time = "2025-02-25T20:32:56.63Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164 }, + { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164, upload_time = "2025-02-25T20:32:52.347Z" }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload_time = "2025-02-20T21:01:19.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload_time = "2025-02-20T21:01:16.647Z" }, ] [[package]] @@ -357,9 +371,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload_time = "2024-06-18T10:56:06.741Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload_time = "2024-06-18T10:55:59.489Z" }, ] [[package]] @@ -373,18 +387,18 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } +sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085, upload_time = "2023-08-05T09:08:05.75Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, + { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235, upload_time = "2023-08-05T09:08:01.583Z" }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload_time = "2025-04-26T02:12:29.51Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload_time = "2025-04-26T02:12:27.662Z" }, ] [[package]] @@ -394,100 +408,100 @@ 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/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191 }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592 }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024 }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188 }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571 }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687 }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211 }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325 }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784 }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564 }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804 }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299 }, - { 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload_time = "2024-09-04T20:45:21.852Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload_time = "2024-09-04T20:43:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload_time = "2024-09-04T20:43:32.108Z" }, + { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload_time = "2024-09-04T20:43:34.186Z" }, + { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload_time = "2024-09-04T20:43:36.286Z" }, + { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload_time = "2024-09-04T20:43:38.586Z" }, + { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload_time = "2024-09-04T20:43:40.084Z" }, + { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload_time = "2024-09-04T20:43:41.526Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload_time = "2024-09-04T20:43:43.117Z" }, + { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload_time = "2024-09-04T20:43:45.256Z" }, + { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload_time = "2024-09-04T20:43:46.779Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload_time = "2024-09-04T20:43:48.186Z" }, + { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload_time = "2024-09-04T20:43:49.812Z" }, + { 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, upload_time = "2024-09-04T20:43:51.124Z" }, + { 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, upload_time = "2024-09-04T20:43:52.872Z" }, + { 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, upload_time = "2024-09-04T20:43:56.123Z" }, + { 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, upload_time = "2024-09-04T20:43:57.891Z" }, + { 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, upload_time = "2024-09-04T20:44:00.18Z" }, + { 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, upload_time = "2024-09-04T20:44:01.585Z" }, + { 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, upload_time = "2024-09-04T20:44:03.467Z" }, + { 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, upload_time = "2024-09-04T20:44:05.023Z" }, + { 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, upload_time = "2024-09-04T20:44:06.444Z" }, + { 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, upload_time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload_time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload_time = "2024-09-04T20:44:10.873Z" }, + { 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, upload_time = "2024-09-04T20:44:12.232Z" }, + { 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, upload_time = "2024-09-04T20:44:13.739Z" }, + { 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, upload_time = "2024-09-04T20:44:15.231Z" }, + { 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, upload_time = "2024-09-04T20:44:17.188Z" }, + { 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, upload_time = "2024-09-04T20:44:18.688Z" }, + { 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, upload_time = "2024-09-04T20:44:20.248Z" }, + { 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, upload_time = "2024-09-04T20:44:21.673Z" }, + { 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, upload_time = "2024-09-04T20:44:23.245Z" }, + { 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, upload_time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload_time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload_time = "2023-08-12T20:38:16.269Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013 }, - { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285 }, - { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449 }, - { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892 }, - { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123 }, - { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943 }, - { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063 }, - { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578 }, - { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629 }, - { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778 }, - { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453 }, - { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479 }, - { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790 }, - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188, upload_time = "2024-12-24T18:12:35.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013, upload_time = "2024-12-24T18:09:43.671Z" }, + { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285, upload_time = "2024-12-24T18:09:48.113Z" }, + { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449, upload_time = "2024-12-24T18:09:50.845Z" }, + { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892, upload_time = "2024-12-24T18:09:52.078Z" }, + { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123, upload_time = "2024-12-24T18:09:54.575Z" }, + { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943, upload_time = "2024-12-24T18:09:57.324Z" }, + { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063, upload_time = "2024-12-24T18:09:59.794Z" }, + { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578, upload_time = "2024-12-24T18:10:02.357Z" }, + { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629, upload_time = "2024-12-24T18:10:03.678Z" }, + { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778, upload_time = "2024-12-24T18:10:06.197Z" }, + { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453, upload_time = "2024-12-24T18:10:08.848Z" }, + { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479, upload_time = "2024-12-24T18:10:10.044Z" }, + { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790, upload_time = "2024-12-24T18:10:11.323Z" }, + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995, upload_time = "2024-12-24T18:10:12.838Z" }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471, upload_time = "2024-12-24T18:10:14.101Z" }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831, upload_time = "2024-12-24T18:10:15.512Z" }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335, upload_time = "2024-12-24T18:10:18.369Z" }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862, upload_time = "2024-12-24T18:10:19.743Z" }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673, upload_time = "2024-12-24T18:10:21.139Z" }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211, upload_time = "2024-12-24T18:10:22.382Z" }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039, upload_time = "2024-12-24T18:10:24.802Z" }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939, upload_time = "2024-12-24T18:10:26.124Z" }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075, upload_time = "2024-12-24T18:10:30.027Z" }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340, upload_time = "2024-12-24T18:10:32.679Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205, upload_time = "2024-12-24T18:10:34.724Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441, upload_time = "2024-12-24T18:10:37.574Z" }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105, upload_time = "2024-12-24T18:10:38.83Z" }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404, upload_time = "2024-12-24T18:10:44.272Z" }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423, upload_time = "2024-12-24T18:10:45.492Z" }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184, upload_time = "2024-12-24T18:10:47.898Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268, upload_time = "2024-12-24T18:10:50.589Z" }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601, upload_time = "2024-12-24T18:10:52.541Z" }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098, upload_time = "2024-12-24T18:10:53.789Z" }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520, upload_time = "2024-12-24T18:10:55.048Z" }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852, upload_time = "2024-12-24T18:10:57.647Z" }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488, upload_time = "2024-12-24T18:10:59.43Z" }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192, upload_time = "2024-12-24T18:11:00.676Z" }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550, upload_time = "2024-12-24T18:11:01.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785, upload_time = "2024-12-24T18:11:03.142Z" }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767, upload_time = "2024-12-24T18:12:32.852Z" }, ] [[package]] @@ -497,9 +511,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload_time = "2024-12-21T18:38:44.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload_time = "2024-12-21T18:38:41.666Z" }, ] [[package]] @@ -509,9 +523,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload_time = "2019-04-04T04:27:04.82Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload_time = "2019-04-04T04:27:03.36Z" }, ] [[package]] @@ -521,18 +535,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload_time = "2021-05-28T21:23:27.935Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload_time = "2021-05-28T21:23:26.877Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload_time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -542,9 +556,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload_time = "2024-03-12T16:53:41.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload_time = "2024-03-12T16:53:39.226Z" }, ] [[package]] @@ -554,44 +568,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551 }, - { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399 }, - { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061 }, - { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956 }, - { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872 }, - { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027 }, - { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641 }, - { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075 }, - { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534 }, - { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188 }, - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, - { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681 }, - { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101 }, - { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599 }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload_time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload_time = "2025-04-15T17:34:46.581Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload_time = "2025-04-15T17:34:51.427Z" }, + { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload_time = "2025-04-15T17:34:55.961Z" }, + { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload_time = "2025-04-15T17:35:00.992Z" }, + { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload_time = "2025-04-15T17:35:06.177Z" }, + { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload_time = "2025-04-15T17:35:11.244Z" }, + { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload_time = "2025-04-15T17:35:26.701Z" }, + { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload_time = "2025-04-15T17:35:43.204Z" }, + { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload_time = "2025-04-15T17:35:46.554Z" }, + { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload_time = "2025-04-15T17:35:50.064Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload_time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload_time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload_time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload_time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload_time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload_time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload_time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload_time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload_time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload_time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload_time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload_time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload_time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload_time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload_time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload_time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload_time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload_time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload_time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload_time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload_time = "2025-04-15T17:44:59.314Z" }, + { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload_time = "2025-04-15T17:45:04.165Z" }, + { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload_time = "2025-04-15T17:45:08.456Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload_time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload_time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload_time = "2025-04-15T17:45:24.794Z" }, ] [[package]] @@ -601,42 +615,42 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, - { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, - { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, - { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, - { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, - { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, - { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, - { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, - { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, - { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, - { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, - { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, - { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, - { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, - { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, - { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, - { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, - { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, - { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, - { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, - { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, - { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, - { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, - { url = "https://files.pythonhosted.org/packages/99/10/173be140714d2ebaea8b641ff801cbcb3ef23101a2981cbf08057876f89e/cryptography-44.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:af4ff3e388f2fa7bff9f7f2b31b87d5651c45731d3e8cfa0944be43dff5cfbdb", size = 3396886 }, - { url = "https://files.pythonhosted.org/packages/2f/b4/424ea2d0fce08c24ede307cead3409ecbfc2f566725d4701b9754c0a1174/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0529b1d5a0105dd3731fa65680b45ce49da4d8115ea76e9da77a875396727b41", size = 3892387 }, - { url = "https://files.pythonhosted.org/packages/28/20/8eaa1a4f7c68a1cb15019dbaad59c812d4df4fac6fd5f7b0b9c5177f1edd/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7ca25849404be2f8e4b3c59483d9d3c51298a22c1c61a0e84415104dacaf5562", size = 4109922 }, - { url = "https://files.pythonhosted.org/packages/11/25/5ed9a17d532c32b3bc81cc294d21a36c772d053981c22bd678396bc4ae30/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:268e4e9b177c76d569e8a145a6939eca9a5fec658c932348598818acf31ae9a5", size = 3895715 }, - { url = "https://files.pythonhosted.org/packages/63/31/2aac03b19c6329b62c45ba4e091f9de0b8f687e1b0cd84f101401bece343/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9eb9d22b0a5d8fd9925a7764a054dca914000607dff201a24c791ff5c799e1fa", size = 4109876 }, - { url = "https://files.pythonhosted.org/packages/99/ec/6e560908349843718db1a782673f36852952d52a55ab14e46c42c8a7690a/cryptography-44.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2bf7bf75f7df9715f810d1b038870309342bff3069c5bd8c6b96128cb158668d", size = 3131719 }, - { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, - { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, - { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, - { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081 }, +sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807, upload_time = "2025-03-02T00:01:37.692Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361, upload_time = "2025-03-02T00:00:06.528Z" }, + { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350, upload_time = "2025-03-02T00:00:09.537Z" }, + { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572, upload_time = "2025-03-02T00:00:12.03Z" }, + { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124, upload_time = "2025-03-02T00:00:14.518Z" }, + { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122, upload_time = "2025-03-02T00:00:17.212Z" }, + { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831, upload_time = "2025-03-02T00:00:19.696Z" }, + { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583, upload_time = "2025-03-02T00:00:22.488Z" }, + { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753, upload_time = "2025-03-02T00:00:25.038Z" }, + { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550, upload_time = "2025-03-02T00:00:26.929Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367, upload_time = "2025-03-02T00:00:28.735Z" }, + { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843, upload_time = "2025-03-02T00:00:30.592Z" }, + { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057, upload_time = "2025-03-02T00:00:33.393Z" }, + { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789, upload_time = "2025-03-02T00:00:36.009Z" }, + { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919, upload_time = "2025-03-02T00:00:38.581Z" }, + { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812, upload_time = "2025-03-02T00:00:42.934Z" }, + { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571, upload_time = "2025-03-02T00:00:46.026Z" }, + { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832, upload_time = "2025-03-02T00:00:48.647Z" }, + { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719, upload_time = "2025-03-02T00:00:51.397Z" }, + { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852, upload_time = "2025-03-02T00:00:53.317Z" }, + { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906, upload_time = "2025-03-02T00:00:56.49Z" }, + { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572, upload_time = "2025-03-02T00:00:59.995Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631, upload_time = "2025-03-02T00:01:01.623Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792, upload_time = "2025-03-02T00:01:04.133Z" }, + { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957, upload_time = "2025-03-02T00:01:06.987Z" }, + { url = "https://files.pythonhosted.org/packages/99/10/173be140714d2ebaea8b641ff801cbcb3ef23101a2981cbf08057876f89e/cryptography-44.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:af4ff3e388f2fa7bff9f7f2b31b87d5651c45731d3e8cfa0944be43dff5cfbdb", size = 3396886, upload_time = "2025-03-02T00:01:09.51Z" }, + { url = "https://files.pythonhosted.org/packages/2f/b4/424ea2d0fce08c24ede307cead3409ecbfc2f566725d4701b9754c0a1174/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0529b1d5a0105dd3731fa65680b45ce49da4d8115ea76e9da77a875396727b41", size = 3892387, upload_time = "2025-03-02T00:01:11.348Z" }, + { url = "https://files.pythonhosted.org/packages/28/20/8eaa1a4f7c68a1cb15019dbaad59c812d4df4fac6fd5f7b0b9c5177f1edd/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7ca25849404be2f8e4b3c59483d9d3c51298a22c1c61a0e84415104dacaf5562", size = 4109922, upload_time = "2025-03-02T00:01:13.934Z" }, + { url = "https://files.pythonhosted.org/packages/11/25/5ed9a17d532c32b3bc81cc294d21a36c772d053981c22bd678396bc4ae30/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:268e4e9b177c76d569e8a145a6939eca9a5fec658c932348598818acf31ae9a5", size = 3895715, upload_time = "2025-03-02T00:01:16.895Z" }, + { url = "https://files.pythonhosted.org/packages/63/31/2aac03b19c6329b62c45ba4e091f9de0b8f687e1b0cd84f101401bece343/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9eb9d22b0a5d8fd9925a7764a054dca914000607dff201a24c791ff5c799e1fa", size = 4109876, upload_time = "2025-03-02T00:01:18.751Z" }, + { url = "https://files.pythonhosted.org/packages/99/ec/6e560908349843718db1a782673f36852952d52a55ab14e46c42c8a7690a/cryptography-44.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2bf7bf75f7df9715f810d1b038870309342bff3069c5bd8c6b96128cb158668d", size = 3131719, upload_time = "2025-03-02T00:01:21.269Z" }, + { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513, upload_time = "2025-03-02T00:01:22.911Z" }, + { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432, upload_time = "2025-03-02T00:01:24.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421, upload_time = "2025-03-02T00:01:26.335Z" }, + { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081, upload_time = "2025-03-02T00:01:28.938Z" }, ] [[package]] @@ -647,57 +661,57 @@ dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload_time = "2025-03-05T14:46:07.988Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload_time = "2025-03-05T14:46:06.463Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload_time = "2023-10-07T05:32:18.335Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload_time = "2023-10-07T05:32:16.783Z" }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510 }, - { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614 }, - { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588 }, - { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043 }, - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, + { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510, upload_time = "2025-04-10T19:46:13.315Z" }, + { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614, upload_time = "2025-04-10T19:46:14.647Z" }, + { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588, upload_time = "2025-04-10T19:46:16.233Z" }, + { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043, upload_time = "2025-04-10T19:46:17.768Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload_time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload_time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload_time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload_time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload_time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload_time = "2021-03-08T10:59:24.45Z" }, ] [[package]] @@ -707,18 +721,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744, upload_time = "2025-01-27T10:46:25.7Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload_time = "2025-01-27T10:46:09.186Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload_time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload_time = "2024-10-09T18:35:44.272Z" }, ] [[package]] @@ -728,45 +742,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload_time = "2019-12-30T22:47:36.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload_time = "2019-12-30T22:47:35.265Z" }, ] [[package]] name = "exceptiongroup" version = "1.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883 } +sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload_time = "2024-07-12T22:26:00.161Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453 }, + { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload_time = "2024-07-12T22:25:58.476Z" }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload_time = "2024-12-02T10:55:15.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload_time = "2024-12-02T10:55:07.599Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, ] [[package]] @@ -780,131 +794,131 @@ dependencies = [ { name = "click-plugins" }, { name = "cligj" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606 } +sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606, upload_time = "2024-09-16T20:15:47.074Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/34/c7e681703db8f8509907ebe6326c5b4fd933f8ae9a7d3ab7a51e507f230e/fiona-1.10.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6e2a94beebda24e5db8c3573fe36110d474d4a12fac0264a3e083c75e9d63829", size = 16143634 }, - { url = "https://files.pythonhosted.org/packages/3c/2c/7f1968ecc17350db3c87d0feb59852ea50e7d8688a63659879d92badf90a/fiona-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc7366f99bdc18ec99441b9e50246fdf5e72923dc9cbb00267b2bf28edd142ba", size = 14750325 }, - { url = "https://files.pythonhosted.org/packages/75/cb/73805030100447d40408c8a0f63ec146fb2b6e82692d0c194655c28b6783/fiona-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c32f424b0641c79f4036b96c2e80322fb181b4e415c8cd02d182baef55e6730", size = 17294868 }, - { url = "https://files.pythonhosted.org/packages/ca/a3/57d33c2f16a2a6b27911d83301a697ed1491dca48d2f1dd2ed3b58a66244/fiona-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:9a67bd88918e87d64168bc9c00d9816d8bb07353594b5ce6c57252979d5dc86e", size = 24480225 }, - { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293 }, - { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213 }, - { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183 }, - { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398 }, - { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589 }, - { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603 }, - { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639 }, - { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921 }, + { url = "https://files.pythonhosted.org/packages/d0/34/c7e681703db8f8509907ebe6326c5b4fd933f8ae9a7d3ab7a51e507f230e/fiona-1.10.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6e2a94beebda24e5db8c3573fe36110d474d4a12fac0264a3e083c75e9d63829", size = 16143634, upload_time = "2024-09-16T20:14:20.089Z" }, + { url = "https://files.pythonhosted.org/packages/3c/2c/7f1968ecc17350db3c87d0feb59852ea50e7d8688a63659879d92badf90a/fiona-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc7366f99bdc18ec99441b9e50246fdf5e72923dc9cbb00267b2bf28edd142ba", size = 14750325, upload_time = "2024-09-16T20:14:23.762Z" }, + { url = "https://files.pythonhosted.org/packages/75/cb/73805030100447d40408c8a0f63ec146fb2b6e82692d0c194655c28b6783/fiona-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c32f424b0641c79f4036b96c2e80322fb181b4e415c8cd02d182baef55e6730", size = 17294868, upload_time = "2024-09-16T20:14:26.847Z" }, + { url = "https://files.pythonhosted.org/packages/ca/a3/57d33c2f16a2a6b27911d83301a697ed1491dca48d2f1dd2ed3b58a66244/fiona-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:9a67bd88918e87d64168bc9c00d9816d8bb07353594b5ce6c57252979d5dc86e", size = 24480225, upload_time = "2024-09-16T20:14:30.749Z" }, + { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293, upload_time = "2024-09-16T20:14:34.519Z" }, + { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213, upload_time = "2024-09-16T20:14:37.763Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183, upload_time = "2024-09-16T20:14:42.389Z" }, + { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398, upload_time = "2024-09-16T20:14:46.233Z" }, + { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589, upload_time = "2024-09-16T20:14:49.307Z" }, + { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603, upload_time = "2024-09-16T20:14:53.829Z" }, + { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639, upload_time = "2024-09-16T20:14:57.146Z" }, + { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921, upload_time = "2024-09-16T20:15:01.121Z" }, ] [[package]] name = "fonttools" version = "4.57.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/17/3ddfd1881878b3f856065130bb603f5922e81ae8a4eb53bce0ea78f765a8/fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41", size = 2756260 }, - { url = "https://files.pythonhosted.org/packages/26/2b/6957890c52c030b0bf9e0add53e5badab4682c6ff024fac9a332bb2ae063/fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02", size = 2284691 }, - { url = "https://files.pythonhosted.org/packages/cc/8e/c043b4081774e5eb06a834cedfdb7d432b4935bc8c4acf27207bdc34dfc4/fonttools-4.57.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e9618630edd1910ad4f07f60d77c184b2f572c8ee43305ea3265675cbbfe7e", size = 4566077 }, - { url = "https://files.pythonhosted.org/packages/59/bc/e16ae5d9eee6c70830ce11d1e0b23d6018ddfeb28025fda092cae7889c8b/fonttools-4.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34687a5d21f1d688d7d8d416cb4c5b9c87fca8a1797ec0d74b9fdebfa55c09ab", size = 4608729 }, - { url = "https://files.pythonhosted.org/packages/25/13/e557bf10bb38e4e4c436d3a9627aadf691bc7392ae460910447fda5fad2b/fonttools-4.57.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69ab81b66ebaa8d430ba56c7a5f9abe0183afefd3a2d6e483060343398b13fb1", size = 4759646 }, - { url = "https://files.pythonhosted.org/packages/bc/c9/5e2952214d4a8e31026bf80beb18187199b7001e60e99a6ce19773249124/fonttools-4.57.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d639397de852f2ccfb3134b152c741406752640a266d9c1365b0f23d7b88077f", size = 4941652 }, - { url = "https://files.pythonhosted.org/packages/df/04/e80242b3d9ec91a1f785d949edc277a13ecfdcfae744de4b170df9ed77d8/fonttools-4.57.0-cp310-cp310-win32.whl", hash = "sha256:cc066cb98b912f525ae901a24cd381a656f024f76203bc85f78fcc9e66ae5aec", size = 2159432 }, - { url = "https://files.pythonhosted.org/packages/33/ba/e858cdca275daf16e03c0362aa43734ea71104c3b356b2100b98543dba1b/fonttools-4.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a64edd3ff6a7f711a15bd70b4458611fb240176ec11ad8845ccbab4fe6745db", size = 2203869 }, - { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392 }, - { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609 }, - { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292 }, - { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503 }, - { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351 }, - { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067 }, - { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263 }, - { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968 }, - { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824 }, - { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072 }, - { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020 }, - { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096 }, - { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356 }, - { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546 }, - { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776 }, - { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956 }, - { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, +sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448, upload_time = "2025-04-03T11:07:13.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/db/17/3ddfd1881878b3f856065130bb603f5922e81ae8a4eb53bce0ea78f765a8/fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41", size = 2756260, upload_time = "2025-04-03T11:05:28.582Z" }, + { url = "https://files.pythonhosted.org/packages/26/2b/6957890c52c030b0bf9e0add53e5badab4682c6ff024fac9a332bb2ae063/fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02", size = 2284691, upload_time = "2025-04-03T11:05:31.526Z" }, + { url = "https://files.pythonhosted.org/packages/cc/8e/c043b4081774e5eb06a834cedfdb7d432b4935bc8c4acf27207bdc34dfc4/fonttools-4.57.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e9618630edd1910ad4f07f60d77c184b2f572c8ee43305ea3265675cbbfe7e", size = 4566077, upload_time = "2025-04-03T11:05:33.559Z" }, + { url = "https://files.pythonhosted.org/packages/59/bc/e16ae5d9eee6c70830ce11d1e0b23d6018ddfeb28025fda092cae7889c8b/fonttools-4.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34687a5d21f1d688d7d8d416cb4c5b9c87fca8a1797ec0d74b9fdebfa55c09ab", size = 4608729, upload_time = "2025-04-03T11:05:35.49Z" }, + { url = "https://files.pythonhosted.org/packages/25/13/e557bf10bb38e4e4c436d3a9627aadf691bc7392ae460910447fda5fad2b/fonttools-4.57.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69ab81b66ebaa8d430ba56c7a5f9abe0183afefd3a2d6e483060343398b13fb1", size = 4759646, upload_time = "2025-04-03T11:05:37.963Z" }, + { url = "https://files.pythonhosted.org/packages/bc/c9/5e2952214d4a8e31026bf80beb18187199b7001e60e99a6ce19773249124/fonttools-4.57.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d639397de852f2ccfb3134b152c741406752640a266d9c1365b0f23d7b88077f", size = 4941652, upload_time = "2025-04-03T11:05:40.089Z" }, + { url = "https://files.pythonhosted.org/packages/df/04/e80242b3d9ec91a1f785d949edc277a13ecfdcfae744de4b170df9ed77d8/fonttools-4.57.0-cp310-cp310-win32.whl", hash = "sha256:cc066cb98b912f525ae901a24cd381a656f024f76203bc85f78fcc9e66ae5aec", size = 2159432, upload_time = "2025-04-03T11:05:41.754Z" }, + { url = "https://files.pythonhosted.org/packages/33/ba/e858cdca275daf16e03c0362aa43734ea71104c3b356b2100b98543dba1b/fonttools-4.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a64edd3ff6a7f711a15bd70b4458611fb240176ec11ad8845ccbab4fe6745db", size = 2203869, upload_time = "2025-04-03T11:05:43.712Z" }, + { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392, upload_time = "2025-04-03T11:05:45.715Z" }, + { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609, upload_time = "2025-04-03T11:05:47.977Z" }, + { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292, upload_time = "2025-04-03T11:05:49.921Z" }, + { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503, upload_time = "2025-04-03T11:05:52.17Z" }, + { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351, upload_time = "2025-04-03T11:05:54.162Z" }, + { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067, upload_time = "2025-04-03T11:05:57.375Z" }, + { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263, upload_time = "2025-04-03T11:05:59.567Z" }, + { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968, upload_time = "2025-04-03T11:06:02.16Z" }, + { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824, upload_time = "2025-04-03T11:06:03.782Z" }, + { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072, upload_time = "2025-04-03T11:06:05.533Z" }, + { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020, upload_time = "2025-04-03T11:06:07.249Z" }, + { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096, upload_time = "2025-04-03T11:06:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356, upload_time = "2025-04-03T11:06:11.294Z" }, + { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546, upload_time = "2025-04-03T11:06:13.6Z" }, + { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776, upload_time = "2025-04-03T11:06:15.643Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956, upload_time = "2025-04-03T11:06:17.534Z" }, + { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605, upload_time = "2025-04-03T11:07:11.341Z" }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload_time = "2021-03-11T07:16:29.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload_time = "2021-03-11T07:16:28.351Z" }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/03/22e4eb297981d48468c3d9982ab6076b10895106d3039302a943bb60fd70/frozenlist-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e6e558ea1e47fd6fa8ac9ccdad403e5dd5ecc6ed8dda94343056fa4277d5c65e", size = 160584 }, - { url = "https://files.pythonhosted.org/packages/2b/b8/c213e35bcf1c20502c6fd491240b08cdd6ceec212ea54873f4cae99a51e4/frozenlist-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4b3cd7334a4bbc0c472164f3744562cb72d05002cc6fcf58adb104630bbc352", size = 124099 }, - { url = "https://files.pythonhosted.org/packages/2b/33/df17b921c2e37b971407b4045deeca6f6de7caf0103c43958da5e1b85e40/frozenlist-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9799257237d0479736e2b4c01ff26b5c7f7694ac9692a426cb717f3dc02fff9b", size = 122106 }, - { url = "https://files.pythonhosted.org/packages/8e/09/93f0293e8a95c05eea7cf9277fef8929fb4d0a2234ad9394cd2a6b6a6bb4/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a7bb0fe1f7a70fb5c6f497dc32619db7d2cdd53164af30ade2f34673f8b1fc", size = 287205 }, - { url = "https://files.pythonhosted.org/packages/5e/34/35612f6f1b1ae0f66a4058599687d8b39352ade8ed329df0890fb553ea1e/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:36d2fc099229f1e4237f563b2a3e0ff7ccebc3999f729067ce4e64a97a7f2869", size = 295079 }, - { url = "https://files.pythonhosted.org/packages/e5/ca/51577ef6cc4ec818aab94a0034ef37808d9017c2e53158fef8834dbb3a07/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f27a9f9a86dcf00708be82359db8de86b80d029814e6693259befe82bb58a106", size = 308068 }, - { url = "https://files.pythonhosted.org/packages/36/27/c63a23863b9dcbd064560f0fea41b516bbbf4d2e8e7eec3ff880a96f0224/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ecee69073312951244f11b8627e3700ec2bfe07ed24e3a685a5979f0412d24", size = 305640 }, - { url = "https://files.pythonhosted.org/packages/33/c2/91720b3562a6073ba604547a417c8d3bf5d33e4c8f1231f3f8ff6719e05c/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2c7d5aa19714b1b01a0f515d078a629e445e667b9da869a3cd0e6fe7dec78bd", size = 278509 }, - { url = "https://files.pythonhosted.org/packages/d0/6e/1b64671ab2fca1ebf32c5b500205724ac14c98b9bc1574b2ef55853f4d71/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69bbd454f0fb23b51cadc9bdba616c9678e4114b6f9fa372d462ff2ed9323ec8", size = 287318 }, - { url = "https://files.pythonhosted.org/packages/66/30/589a8d8395d5ebe22a6b21262a4d32876df822c9a152e9f2919967bb8e1a/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7daa508e75613809c7a57136dec4871a21bca3080b3a8fc347c50b187df4f00c", size = 290923 }, - { url = "https://files.pythonhosted.org/packages/4d/e0/2bd0d2a4a7062b7e4b5aad621697cd3579e5d1c39d99f2833763d91e746d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:89ffdb799154fd4d7b85c56d5fa9d9ad48946619e0eb95755723fffa11022d75", size = 304847 }, - { url = "https://files.pythonhosted.org/packages/70/a0/a1a44204398a4b308c3ee1b7bf3bf56b9dcbcc4e61c890e038721d1498db/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:920b6bd77d209931e4c263223381d63f76828bec574440f29eb497cf3394c249", size = 285580 }, - { url = "https://files.pythonhosted.org/packages/78/ed/3862bc9abe05839a6a5f5bab8b6bbdf0fc9369505cb77cd15b8c8948f6a0/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d3ceb265249fb401702fce3792e6b44c1166b9319737d21495d3611028d95769", size = 304033 }, - { url = "https://files.pythonhosted.org/packages/2c/9c/1c48454a9e1daf810aa6d977626c894b406651ca79d722fce0f13c7424f1/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:52021b528f1571f98a7d4258c58aa8d4b1a96d4f01d00d51f1089f2e0323cb02", size = 307566 }, - { url = "https://files.pythonhosted.org/packages/35/ef/cb43655c21f1bad5c42bcd540095bba6af78bf1e474b19367f6fd67d029d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0f2ca7810b809ed0f1917293050163c7654cefc57a49f337d5cd9de717b8fad3", size = 295354 }, - { url = "https://files.pythonhosted.org/packages/9f/59/d8069a688a0f54a968c73300d6013e4786b029bfec308664094130dcea66/frozenlist-1.6.0-cp310-cp310-win32.whl", hash = "sha256:0e6f8653acb82e15e5443dba415fb62a8732b68fe09936bb6d388c725b57f812", size = 115586 }, - { url = "https://files.pythonhosted.org/packages/f9/a6/8f0cef021912ba7aa3b9920fe0a4557f6e85c41bbf71bb568cd744828df5/frozenlist-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f1a39819a5a3e84304cd286e3dc62a549fe60985415851b3337b6f5cc91907f1", size = 120845 }, - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload_time = "2025-04-17T22:38:53.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/44/03/22e4eb297981d48468c3d9982ab6076b10895106d3039302a943bb60fd70/frozenlist-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e6e558ea1e47fd6fa8ac9ccdad403e5dd5ecc6ed8dda94343056fa4277d5c65e", size = 160584, upload_time = "2025-04-17T22:35:48.163Z" }, + { url = "https://files.pythonhosted.org/packages/2b/b8/c213e35bcf1c20502c6fd491240b08cdd6ceec212ea54873f4cae99a51e4/frozenlist-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4b3cd7334a4bbc0c472164f3744562cb72d05002cc6fcf58adb104630bbc352", size = 124099, upload_time = "2025-04-17T22:35:50.241Z" }, + { url = "https://files.pythonhosted.org/packages/2b/33/df17b921c2e37b971407b4045deeca6f6de7caf0103c43958da5e1b85e40/frozenlist-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9799257237d0479736e2b4c01ff26b5c7f7694ac9692a426cb717f3dc02fff9b", size = 122106, upload_time = "2025-04-17T22:35:51.697Z" }, + { url = "https://files.pythonhosted.org/packages/8e/09/93f0293e8a95c05eea7cf9277fef8929fb4d0a2234ad9394cd2a6b6a6bb4/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a7bb0fe1f7a70fb5c6f497dc32619db7d2cdd53164af30ade2f34673f8b1fc", size = 287205, upload_time = "2025-04-17T22:35:53.441Z" }, + { url = "https://files.pythonhosted.org/packages/5e/34/35612f6f1b1ae0f66a4058599687d8b39352ade8ed329df0890fb553ea1e/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:36d2fc099229f1e4237f563b2a3e0ff7ccebc3999f729067ce4e64a97a7f2869", size = 295079, upload_time = "2025-04-17T22:35:55.617Z" }, + { url = "https://files.pythonhosted.org/packages/e5/ca/51577ef6cc4ec818aab94a0034ef37808d9017c2e53158fef8834dbb3a07/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f27a9f9a86dcf00708be82359db8de86b80d029814e6693259befe82bb58a106", size = 308068, upload_time = "2025-04-17T22:35:57.119Z" }, + { url = "https://files.pythonhosted.org/packages/36/27/c63a23863b9dcbd064560f0fea41b516bbbf4d2e8e7eec3ff880a96f0224/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ecee69073312951244f11b8627e3700ec2bfe07ed24e3a685a5979f0412d24", size = 305640, upload_time = "2025-04-17T22:35:58.667Z" }, + { url = "https://files.pythonhosted.org/packages/33/c2/91720b3562a6073ba604547a417c8d3bf5d33e4c8f1231f3f8ff6719e05c/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2c7d5aa19714b1b01a0f515d078a629e445e667b9da869a3cd0e6fe7dec78bd", size = 278509, upload_time = "2025-04-17T22:36:00.199Z" }, + { url = "https://files.pythonhosted.org/packages/d0/6e/1b64671ab2fca1ebf32c5b500205724ac14c98b9bc1574b2ef55853f4d71/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69bbd454f0fb23b51cadc9bdba616c9678e4114b6f9fa372d462ff2ed9323ec8", size = 287318, upload_time = "2025-04-17T22:36:02.179Z" }, + { url = "https://files.pythonhosted.org/packages/66/30/589a8d8395d5ebe22a6b21262a4d32876df822c9a152e9f2919967bb8e1a/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7daa508e75613809c7a57136dec4871a21bca3080b3a8fc347c50b187df4f00c", size = 290923, upload_time = "2025-04-17T22:36:03.766Z" }, + { url = "https://files.pythonhosted.org/packages/4d/e0/2bd0d2a4a7062b7e4b5aad621697cd3579e5d1c39d99f2833763d91e746d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:89ffdb799154fd4d7b85c56d5fa9d9ad48946619e0eb95755723fffa11022d75", size = 304847, upload_time = "2025-04-17T22:36:05.518Z" }, + { url = "https://files.pythonhosted.org/packages/70/a0/a1a44204398a4b308c3ee1b7bf3bf56b9dcbcc4e61c890e038721d1498db/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:920b6bd77d209931e4c263223381d63f76828bec574440f29eb497cf3394c249", size = 285580, upload_time = "2025-04-17T22:36:07.538Z" }, + { url = "https://files.pythonhosted.org/packages/78/ed/3862bc9abe05839a6a5f5bab8b6bbdf0fc9369505cb77cd15b8c8948f6a0/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d3ceb265249fb401702fce3792e6b44c1166b9319737d21495d3611028d95769", size = 304033, upload_time = "2025-04-17T22:36:09.082Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9c/1c48454a9e1daf810aa6d977626c894b406651ca79d722fce0f13c7424f1/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:52021b528f1571f98a7d4258c58aa8d4b1a96d4f01d00d51f1089f2e0323cb02", size = 307566, upload_time = "2025-04-17T22:36:10.561Z" }, + { url = "https://files.pythonhosted.org/packages/35/ef/cb43655c21f1bad5c42bcd540095bba6af78bf1e474b19367f6fd67d029d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0f2ca7810b809ed0f1917293050163c7654cefc57a49f337d5cd9de717b8fad3", size = 295354, upload_time = "2025-04-17T22:36:12.181Z" }, + { url = "https://files.pythonhosted.org/packages/9f/59/d8069a688a0f54a968c73300d6013e4786b029bfec308664094130dcea66/frozenlist-1.6.0-cp310-cp310-win32.whl", hash = "sha256:0e6f8653acb82e15e5443dba415fb62a8732b68fe09936bb6d388c725b57f812", size = 115586, upload_time = "2025-04-17T22:36:14.01Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a6/8f0cef021912ba7aa3b9920fe0a4557f6e85c41bbf71bb568cd744828df5/frozenlist-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f1a39819a5a3e84304cd286e3dc62a549fe60985415851b3337b6f5cc91907f1", size = 120845, upload_time = "2025-04-17T22:36:15.383Z" }, + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload_time = "2025-04-17T22:36:17.235Z" }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload_time = "2025-04-17T22:36:18.735Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload_time = "2025-04-17T22:36:20.6Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload_time = "2025-04-17T22:36:22.088Z" }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload_time = "2025-04-17T22:36:24.247Z" }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload_time = "2025-04-17T22:36:26.291Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload_time = "2025-04-17T22:36:27.909Z" }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload_time = "2025-04-17T22:36:29.448Z" }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload_time = "2025-04-17T22:36:31.55Z" }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload_time = "2025-04-17T22:36:33.078Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload_time = "2025-04-17T22:36:34.688Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload_time = "2025-04-17T22:36:36.363Z" }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload_time = "2025-04-17T22:36:38.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload_time = "2025-04-17T22:36:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload_time = "2025-04-17T22:36:42.045Z" }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload_time = "2025-04-17T22:36:44.067Z" }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload_time = "2025-04-17T22:36:45.465Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload_time = "2025-04-17T22:36:47.382Z" }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload_time = "2025-04-17T22:36:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload_time = "2025-04-17T22:36:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload_time = "2025-04-17T22:36:53.402Z" }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload_time = "2025-04-17T22:36:55.016Z" }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload_time = "2025-04-17T22:36:57.12Z" }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload_time = "2025-04-17T22:36:58.735Z" }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload_time = "2025-04-17T22:37:00.512Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload_time = "2025-04-17T22:37:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload_time = "2025-04-17T22:37:03.578Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload_time = "2025-04-17T22:37:05.213Z" }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload_time = "2025-04-17T22:37:06.985Z" }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload_time = "2025-04-17T22:37:08.618Z" }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload_time = "2025-04-17T22:37:10.196Z" }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload_time = "2025-04-17T22:37:12.284Z" }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload_time = "2025-04-17T22:37:13.902Z" }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload_time = "2025-04-17T22:37:15.326Z" }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload_time = "2025-04-17T22:38:51.668Z" }, ] [[package]] name = "fsspec" version = "2025.3.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281 } +sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281, upload_time = "2025-03-31T15:27:08.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435 }, + { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435, upload_time = "2025-03-31T15:27:07.028Z" }, ] [[package]] @@ -919,9 +933,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload_time = "2024-07-02T12:26:52.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload_time = "2024-07-02T12:26:50.876Z" }, ] [[package]] @@ -931,9 +945,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, ] [[package]] @@ -943,9 +957,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, ] [[package]] @@ -955,53 +969,53 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, ] [[package]] name = "greenlet" version = "3.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/3e/6332bb2d1e43ec6270e0b97bf253cd704691ee55e4e52196cb7da8f774e9/greenlet-3.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:777c1281aa7c786738683e302db0f55eb4b0077c20f1dc53db8852ffaea0a6b0", size = 267364 }, - { url = "https://files.pythonhosted.org/packages/73/c1/c47cc96878c4eda993a2deaba15af3cfdc87cf8e2e3c4c20726dea541a8c/greenlet-3.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3059c6f286b53ea4711745146ffe5a5c5ff801f62f6c56949446e0f6461f8157", size = 625721 }, - { url = "https://files.pythonhosted.org/packages/c8/65/df1ff1a505a62b08d31da498ddc0c9992e9c536c01944f8b800a7cf17ac6/greenlet-3.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1a40a17e2c7348f5eee5d8e1b4fa6a937f0587eba89411885a36a8e1fc29bd2", size = 636983 }, - { url = "https://files.pythonhosted.org/packages/e8/1d/29944dcaaf5e482f7bff617de15f29e17cc0e74c7393888f8a43d7f6229e/greenlet-3.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5193135b3a8d0017cb438de0d49e92bf2f6c1c770331d24aa7500866f4db4017", size = 632880 }, - { url = "https://files.pythonhosted.org/packages/e4/c6/6c0891fd775b4fc5613593181526ba282771682dfe7bd0206d283403bcbb/greenlet-3.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639a94d001fe874675b553f28a9d44faed90f9864dc57ba0afef3f8d76a18b04", size = 631638 }, - { url = "https://files.pythonhosted.org/packages/c0/50/3d8cadd4dfab17ef72bf0476cc2dacab368273ed29a79bbe66c36c6007a4/greenlet-3.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fe303381e7e909e42fb23e191fc69659910909fdcd056b92f6473f80ef18543", size = 580577 }, - { url = "https://files.pythonhosted.org/packages/a5/fe/bb0fc421318c69a840e5b98fdeea29d8dcb38f43ffe8b49664aeb10cc3dc/greenlet-3.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:72c9b668454e816b5ece25daac1a42c94d1c116d5401399a11b77ce8d883110c", size = 1109788 }, - { url = "https://files.pythonhosted.org/packages/89/e9/db23a39effaef855deac9083a9054cbe34e1623dcbabed01e34a9d4174c7/greenlet-3.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6079ae990bbf944cf66bea64a09dcb56085815630955109ffa98984810d71565", size = 1133412 }, - { url = "https://files.pythonhosted.org/packages/6a/86/c33905264b43fe4806720f60124254a149857b42c1bf01bd6e136883c99f/greenlet-3.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e63cd2035f49376a23611fbb1643f78f8246e9d4dfd607534ec81b175ce582c2", size = 294958 }, - { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609 }, - { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776 }, - { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827 }, - { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752 }, - { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993 }, - { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927 }, - { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891 }, - { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318 }, - { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407 }, - { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381 }, - { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195 }, - { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381 }, - { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110 }, - { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070 }, - { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816 }, - { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, - { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, - { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, +sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475, upload_time = "2025-04-22T14:40:18.206Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/3e/6332bb2d1e43ec6270e0b97bf253cd704691ee55e4e52196cb7da8f774e9/greenlet-3.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:777c1281aa7c786738683e302db0f55eb4b0077c20f1dc53db8852ffaea0a6b0", size = 267364, upload_time = "2025-04-22T14:25:26.993Z" }, + { url = "https://files.pythonhosted.org/packages/73/c1/c47cc96878c4eda993a2deaba15af3cfdc87cf8e2e3c4c20726dea541a8c/greenlet-3.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3059c6f286b53ea4711745146ffe5a5c5ff801f62f6c56949446e0f6461f8157", size = 625721, upload_time = "2025-04-22T14:53:41.313Z" }, + { url = "https://files.pythonhosted.org/packages/c8/65/df1ff1a505a62b08d31da498ddc0c9992e9c536c01944f8b800a7cf17ac6/greenlet-3.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1a40a17e2c7348f5eee5d8e1b4fa6a937f0587eba89411885a36a8e1fc29bd2", size = 636983, upload_time = "2025-04-22T14:54:55.568Z" }, + { url = "https://files.pythonhosted.org/packages/e8/1d/29944dcaaf5e482f7bff617de15f29e17cc0e74c7393888f8a43d7f6229e/greenlet-3.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5193135b3a8d0017cb438de0d49e92bf2f6c1c770331d24aa7500866f4db4017", size = 632880, upload_time = "2025-04-22T15:04:32.187Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c6/6c0891fd775b4fc5613593181526ba282771682dfe7bd0206d283403bcbb/greenlet-3.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639a94d001fe874675b553f28a9d44faed90f9864dc57ba0afef3f8d76a18b04", size = 631638, upload_time = "2025-04-22T14:27:02.856Z" }, + { url = "https://files.pythonhosted.org/packages/c0/50/3d8cadd4dfab17ef72bf0476cc2dacab368273ed29a79bbe66c36c6007a4/greenlet-3.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fe303381e7e909e42fb23e191fc69659910909fdcd056b92f6473f80ef18543", size = 580577, upload_time = "2025-04-22T14:25:54.509Z" }, + { url = "https://files.pythonhosted.org/packages/a5/fe/bb0fc421318c69a840e5b98fdeea29d8dcb38f43ffe8b49664aeb10cc3dc/greenlet-3.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:72c9b668454e816b5ece25daac1a42c94d1c116d5401399a11b77ce8d883110c", size = 1109788, upload_time = "2025-04-22T14:58:54.243Z" }, + { url = "https://files.pythonhosted.org/packages/89/e9/db23a39effaef855deac9083a9054cbe34e1623dcbabed01e34a9d4174c7/greenlet-3.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6079ae990bbf944cf66bea64a09dcb56085815630955109ffa98984810d71565", size = 1133412, upload_time = "2025-04-22T14:28:08.284Z" }, + { url = "https://files.pythonhosted.org/packages/6a/86/c33905264b43fe4806720f60124254a149857b42c1bf01bd6e136883c99f/greenlet-3.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e63cd2035f49376a23611fbb1643f78f8246e9d4dfd607534ec81b175ce582c2", size = 294958, upload_time = "2025-04-22T15:02:15.755Z" }, + { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609, upload_time = "2025-04-22T14:26:58.208Z" }, + { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776, upload_time = "2025-04-22T14:53:43.036Z" }, + { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827, upload_time = "2025-04-22T14:54:57.409Z" }, + { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752, upload_time = "2025-04-22T15:04:33.707Z" }, + { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993, upload_time = "2025-04-22T14:27:04.408Z" }, + { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927, upload_time = "2025-04-22T14:25:55.896Z" }, + { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891, upload_time = "2025-04-22T14:58:55.808Z" }, + { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318, upload_time = "2025-04-22T14:28:09.451Z" }, + { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407, upload_time = "2025-04-22T14:58:42.319Z" }, + { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381, upload_time = "2025-04-22T14:25:43.69Z" }, + { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195, upload_time = "2025-04-22T14:53:44.563Z" }, + { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381, upload_time = "2025-04-22T14:54:59.439Z" }, + { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110, upload_time = "2025-04-22T15:04:35.739Z" }, + { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070, upload_time = "2025-04-22T14:27:05.976Z" }, + { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816, upload_time = "2025-04-22T14:25:57.224Z" }, + { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572, upload_time = "2025-04-22T14:58:58.277Z" }, + { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442, upload_time = "2025-04-22T14:28:11.243Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207, upload_time = "2025-04-22T14:54:40.531Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload_time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload_time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -1012,9 +1026,9 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload_time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload_time = "2025-04-24T22:06:20.566Z" }, ] [[package]] @@ -1027,9 +1041,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload_time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload_time = "2024-12-06T15:37:21.509Z" }, ] [[package]] @@ -1051,6 +1065,7 @@ docs = [ [package.dev-dependencies] dev = [ { name = "black" }, + { name = "boto3" }, { name = "examples" }, { name = "icefabric-manage" }, { name = "icefabric-tools" }, @@ -1077,6 +1092,7 @@ provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ { name = "black" }, + { name = "boto3" }, { name = "examples" }, { name = "icefabric-manage", editable = "src/icefabric_manage" }, { name = "icefabric-tools", editable = "src/icefabric_tools" }, @@ -1144,27 +1160,27 @@ requires-dist = [ name = "identify" version = "2.6.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201 } +sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201, upload_time = "2025-04-19T15:10:38.32Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101 }, + { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101, upload_time = "2025-04-19T15:10:36.701Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload_time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload_time = "2024-09-15T18:07:37.964Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -1187,9 +1203,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload_time = "2024-07-01T14:07:22.543Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload_time = "2024-07-01T14:07:19.603Z" }, ] [[package]] @@ -1212,9 +1228,9 @@ dependencies = [ { name = "traitlets", marker = "python_full_version < '3.11'" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a2/9f/d9a73710df947b7804bd9d93509463fb3a89e0ddc99c9fcc67279cddbeb6/ipython-8.36.0.tar.gz", hash = "sha256:24658e9fe5c5c819455043235ba59cfffded4a35936eefceceab6b192f7092ff", size = 5604997 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/9f/d9a73710df947b7804bd9d93509463fb3a89e0ddc99c9fcc67279cddbeb6/ipython-8.36.0.tar.gz", hash = "sha256:24658e9fe5c5c819455043235ba59cfffded4a35936eefceceab6b192f7092ff", size = 5604997, upload_time = "2025-04-25T18:03:38.031Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/d7/c1c9f371790b3a181e343c4815a361e5a0cc7d90ef6642d64ba5d05de289/ipython-8.36.0-py3-none-any.whl", hash = "sha256:12b913914d010dcffa2711505ec8be4bf0180742d97f1e5175e51f22086428c1", size = 831074 }, + { url = "https://files.pythonhosted.org/packages/d6/d7/c1c9f371790b3a181e343c4815a361e5a0cc7d90ef6642d64ba5d05de289/ipython-8.36.0-py3-none-any.whl", hash = "sha256:12b913914d010dcffa2711505ec8be4bf0180742d97f1e5175e51f22086428c1", size = 831074, upload_time = "2025-04-25T18:03:34.951Z" }, ] [[package]] @@ -1238,9 +1254,9 @@ dependencies = [ { name = "traitlets", marker = "python_full_version >= '3.11'" }, { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload_time = "2025-04-25T17:55:40.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload_time = "2025-04-25T17:55:37.625Z" }, ] [[package]] @@ -1250,9 +1266,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments", marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, ] [[package]] @@ -1262,9 +1278,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload_time = "2020-11-01T11:00:00.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload_time = "2020-11-01T10:59:58.02Z" }, ] [[package]] @@ -1274,9 +1290,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload_time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload_time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -1286,36 +1302,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload_time = "2022-06-17T18:00:12.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload_time = "2022-06-17T18:00:10.251Z" }, ] [[package]] name = "json5" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload_time = "2025-04-03T16:33:13.201Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload_time = "2025-04-03T16:33:11.927Z" }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload_time = "2024-06-10T19:24:42.462Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload_time = "2024-06-10T19:24:40.698Z" }, ] [[package]] @@ -1328,9 +1344,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload_time = "2024-07-08T18:40:05.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload_time = "2024-07-08T18:40:00.165Z" }, ] [package.optional-dependencies] @@ -1352,9 +1368,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, ] [[package]] @@ -1368,9 +1384,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload_time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload_time = "2024-09-17T10:44:15.218Z" }, ] [[package]] @@ -1382,9 +1398,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629, upload_time = "2024-03-12T12:37:35.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965, upload_time = "2024-03-12T12:37:32.36Z" }, ] [[package]] @@ -1401,9 +1417,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload_time = "2025-02-03T17:23:41.485Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload_time = "2025-02-03T17:23:38.643Z" }, ] [[package]] @@ -1413,9 +1429,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload_time = "2024-04-09T17:59:44.918Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload_time = "2024-04-09T17:59:43.388Z" }, ] [[package]] @@ -1443,9 +1459,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } +sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227, upload_time = "2024-12-20T13:02:42.654Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, + { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826, upload_time = "2024-12-20T13:02:37.785Z" }, ] [[package]] @@ -1456,9 +1472,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload_time = "2024-03-12T14:37:03.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload_time = "2024-03-12T14:37:00.708Z" }, ] [[package]] @@ -1481,18 +1497,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/55/3ef7e6bfe988d7df3d453cc27912846d50590c90790848594f7228c89569/jupyterlab-4.4.1.tar.gz", hash = "sha256:c75c4f33056fbd84f0b31eb44622a00c7a5f981b85adfeb198a83721f0465808", size = 23028447 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/55/3ef7e6bfe988d7df3d453cc27912846d50590c90790848594f7228c89569/jupyterlab-4.4.1.tar.gz", hash = "sha256:c75c4f33056fbd84f0b31eb44622a00c7a5f981b85adfeb198a83721f0465808", size = 23028447, upload_time = "2025-04-22T18:22:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/82/c8784597c5a03426c1ef20c48aff37e8cfe050ab5ca87f0d51069f02b362/jupyterlab-4.4.1-py3-none-any.whl", hash = "sha256:989bca3f9cf2d04b2022e7e657e2df6d4aca808b364810d31c4865edd968a5f7", size = 12292928 }, + { url = "https://files.pythonhosted.org/packages/29/82/c8784597c5a03426c1ef20c48aff37e8cfe050ab5ca87f0d51069f02b362/jupyterlab-4.4.1-py3-none-any.whl", hash = "sha256:989bca3f9cf2d04b2022e7e657e2df6d4aca808b364810d31c4865edd968a5f7", size = 12292928, upload_time = "2025-04-22T18:22:25.831Z" }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload_time = "2023-11-23T09:26:37.44Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload_time = "2023-11-23T09:26:34.325Z" }, ] [[package]] @@ -1508,77 +1524,77 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload_time = "2024-07-16T17:02:04.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload_time = "2024-07-16T17:02:01.115Z" }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623 }, - { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720 }, - { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413 }, - { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826 }, - { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231 }, - { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938 }, - { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799 }, - { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362 }, - { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695 }, - { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802 }, - { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646 }, - { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260 }, - { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633 }, - { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885 }, - { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175 }, - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, - { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403 }, - { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657 }, - { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948 }, - { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186 }, - { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279 }, - { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762 }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload_time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload_time = "2024-12-24T18:28:17.687Z" }, + { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload_time = "2024-12-24T18:28:19.158Z" }, + { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload_time = "2024-12-24T18:28:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload_time = "2024-12-24T18:28:21.203Z" }, + { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload_time = "2024-12-24T18:28:23.851Z" }, + { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload_time = "2024-12-24T18:28:26.687Z" }, + { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload_time = "2024-12-24T18:28:30.538Z" }, + { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload_time = "2024-12-24T18:28:32.943Z" }, + { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload_time = "2024-12-24T18:28:35.641Z" }, + { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload_time = "2024-12-24T18:28:38.357Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload_time = "2024-12-24T18:28:40.941Z" }, + { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload_time = "2024-12-24T18:28:42.273Z" }, + { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload_time = "2024-12-24T18:28:44.87Z" }, + { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload_time = "2024-12-24T18:28:47.346Z" }, + { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload_time = "2024-12-24T18:28:49.651Z" }, + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload_time = "2024-12-24T18:28:51.826Z" }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload_time = "2024-12-24T18:28:54.256Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload_time = "2024-12-24T18:28:55.184Z" }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload_time = "2024-12-24T18:28:57.493Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload_time = "2024-12-24T18:29:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload_time = "2024-12-24T18:29:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload_time = "2024-12-24T18:29:02.685Z" }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload_time = "2024-12-24T18:29:04.113Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload_time = "2024-12-24T18:29:05.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload_time = "2024-12-24T18:29:06.79Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload_time = "2024-12-24T18:29:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload_time = "2024-12-24T18:29:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload_time = "2024-12-24T18:29:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload_time = "2024-12-24T18:29:14.089Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload_time = "2024-12-24T18:29:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload_time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload_time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload_time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload_time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload_time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload_time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload_time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload_time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload_time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload_time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload_time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload_time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload_time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload_time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload_time = "2024-12-24T18:29:44.38Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload_time = "2024-12-24T18:30:41.372Z" }, + { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload_time = "2024-12-24T18:30:42.392Z" }, + { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload_time = "2024-12-24T18:30:44.703Z" }, + { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload_time = "2024-12-24T18:30:45.654Z" }, + { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload_time = "2024-12-24T18:30:47.951Z" }, + { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload_time = "2024-12-24T18:30:48.903Z" }, ] [[package]] name = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload_time = "2025-04-11T14:42:50.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload_time = "2025-04-11T14:42:49.178Z" }, ] [[package]] @@ -1588,47 +1604,47 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload_time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "markupsafe" version = "3.0.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/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357 }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393 }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732 }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866 }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964 }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977 }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366 }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091 }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065 }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514 }, - { 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload_time = "2024-10-18T15:21:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload_time = "2024-10-18T15:20:51.44Z" }, + { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload_time = "2024-10-18T15:20:52.426Z" }, + { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload_time = "2024-10-18T15:20:53.578Z" }, + { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload_time = "2024-10-18T15:20:55.06Z" }, + { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload_time = "2024-10-18T15:20:55.906Z" }, + { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload_time = "2024-10-18T15:20:57.189Z" }, + { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload_time = "2024-10-18T15:20:58.235Z" }, + { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload_time = "2024-10-18T15:20:59.235Z" }, + { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload_time = "2024-10-18T15:21:00.307Z" }, + { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload_time = "2024-10-18T15:21:01.122Z" }, + { 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, upload_time = "2024-10-18T15:21:02.187Z" }, + { 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, upload_time = "2024-10-18T15:21:02.941Z" }, + { 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, upload_time = "2024-10-18T15:21:03.953Z" }, + { 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, upload_time = "2024-10-18T15:21:06.495Z" }, + { 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, upload_time = "2024-10-18T15:21:07.295Z" }, + { 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, upload_time = "2024-10-18T15:21:08.073Z" }, + { 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, upload_time = "2024-10-18T15:21:09.318Z" }, + { 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, upload_time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload_time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload_time = "2024-10-18T15:21:12.911Z" }, + { 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, upload_time = "2024-10-18T15:21:13.777Z" }, + { 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, upload_time = "2024-10-18T15:21:14.822Z" }, + { 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, upload_time = "2024-10-18T15:21:15.642Z" }, + { 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, upload_time = "2024-10-18T15:21:17.133Z" }, + { 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, upload_time = "2024-10-18T15:21:18.064Z" }, + { 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, upload_time = "2024-10-18T15:21:18.859Z" }, + { 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, upload_time = "2024-10-18T15:21:19.671Z" }, + { 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, upload_time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, ] [[package]] @@ -1646,29 +1662,29 @@ dependencies = [ { 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/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551 }, - { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853 }, - { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724 }, - { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905 }, - { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223 }, - { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355 }, - { 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/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500 }, - { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398 }, - { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361 }, +sdist = { url = "https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz", hash = "sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278", size = 36686418, upload_time = "2024-12-14T06:32:51.547Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551, upload_time = "2024-12-14T06:30:36.73Z" }, + { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853, upload_time = "2024-12-14T06:30:40.973Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724, upload_time = "2024-12-14T06:30:45.325Z" }, + { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905, upload_time = "2024-12-14T06:30:50.869Z" }, + { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223, upload_time = "2024-12-14T06:30:55.335Z" }, + { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355, upload_time = "2024-12-14T06:30:58.843Z" }, + { 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, upload_time = "2024-12-14T06:31:03.742Z" }, + { 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, upload_time = "2024-12-14T06:31:08.494Z" }, + { 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, upload_time = "2024-12-14T06:31:11.346Z" }, + { 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, upload_time = "2024-12-14T06:31:14.677Z" }, + { 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, upload_time = "2024-12-14T06:31:18.871Z" }, + { url = "https://files.pythonhosted.org/packages/14/cf/e382598f98be11bf51dd0bc60eca44a517f6793e3dc8b9d53634a144620c/matplotlib-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a", size = 8034580, upload_time = "2024-12-14T06:31:21.998Z" }, + { 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, upload_time = "2024-12-14T06:31:24.727Z" }, + { 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, upload_time = "2024-12-14T06:31:28.55Z" }, + { 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, upload_time = "2024-12-14T06:31:32.223Z" }, + { 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, upload_time = "2024-12-14T06:31:34.894Z" }, + { 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, upload_time = "2024-12-14T06:31:39.552Z" }, + { url = "https://files.pythonhosted.org/packages/9f/6e/264673e64001b99d747aff5a288eca82826c024437a3694e19aed1decf46/matplotlib-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc", size = 8039144, upload_time = "2024-12-14T06:31:44.128Z" }, + { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500, upload_time = "2024-12-14T06:32:36.849Z" }, + { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398, upload_time = "2024-12-14T06:32:40.198Z" }, + { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361, upload_time = "2024-12-14T06:32:43.575Z" }, ] [[package]] @@ -1678,27 +1694,27 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload_time = "2024-04-15T13:44:44.803Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload_time = "2024-04-15T13:44:43.265Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload_time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload_time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, ] [[package]] @@ -1708,9 +1724,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload_time = "2025-03-19T14:27:24.955Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload_time = "2025-03-19T14:27:23.451Z" }, ] [[package]] @@ -1732,9 +1748,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -1746,9 +1762,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -1758,9 +1774,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538, upload_time = "2025-04-22T10:27:04.542Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906 }, + { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906, upload_time = "2025-04-22T10:27:02.944Z" }, ] [[package]] @@ -1771,9 +1787,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pygithub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379, upload_time = "2023-11-06T17:13:30.207Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340, upload_time = "2023-11-06T17:13:28.979Z" }, ] [[package]] @@ -1786,9 +1802,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263 } +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263, upload_time = "2025-03-14T12:56:38.689Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284 }, + { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284, upload_time = "2025-03-14T12:56:37.074Z" }, ] [[package]] @@ -1808,74 +1824,74 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532 } +sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532, upload_time = "2025-04-17T10:40:41.48Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654 }, + { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654, upload_time = "2025-04-17T10:40:38.304Z" }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095 }, - { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512 }, - { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110 }, - { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151 }, - { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312 }, - { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232 }, - { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663 }, - { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166 }, - { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555 }, - { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813 }, - { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611 }, - { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515 }, - { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177 }, - { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815 }, - { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479 }, - { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883 }, - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload_time = "2025-01-25T08:39:43.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095, upload_time = "2025-01-25T08:37:53.621Z" }, + { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512, upload_time = "2025-01-25T08:37:54.972Z" }, + { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110, upload_time = "2025-01-25T08:37:57.86Z" }, + { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151, upload_time = "2025-01-25T08:37:59.609Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312, upload_time = "2025-01-25T08:38:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232, upload_time = "2025-01-25T08:38:03.852Z" }, + { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663, upload_time = "2025-01-25T08:38:06.24Z" }, + { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166, upload_time = "2025-01-25T08:38:07.988Z" }, + { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555, upload_time = "2025-01-25T08:38:09.821Z" }, + { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813, upload_time = "2025-01-25T08:38:11.682Z" }, + { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611, upload_time = "2025-01-25T08:38:12.602Z" }, + { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515, upload_time = "2025-01-25T08:38:16.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177, upload_time = "2025-01-25T08:38:18.186Z" }, + { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815, upload_time = "2025-01-25T08:38:19.176Z" }, + { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479, upload_time = "2025-01-25T08:38:21.098Z" }, + { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883, upload_time = "2025-01-25T08:38:22.013Z" }, + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload_time = "2025-01-25T08:38:22.917Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload_time = "2025-01-25T08:38:25.079Z" }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload_time = "2025-01-25T08:38:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload_time = "2025-01-25T08:38:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload_time = "2025-01-25T08:38:29.159Z" }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload_time = "2025-01-25T08:38:33.04Z" }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload_time = "2025-01-25T08:38:34.987Z" }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload_time = "2025-01-25T08:38:35.983Z" }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload_time = "2025-01-25T08:38:38.198Z" }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload_time = "2025-01-25T08:38:39.257Z" }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload_time = "2025-01-25T08:38:40.395Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload_time = "2025-01-25T08:38:42.141Z" }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload_time = "2025-01-25T08:38:43.402Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload_time = "2025-01-25T08:38:45.143Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload_time = "2025-01-25T08:38:46.029Z" }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload_time = "2025-01-25T08:38:47.035Z" }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload_time = "2025-01-25T08:38:47.902Z" }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload_time = "2025-01-25T08:38:48.839Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload_time = "2025-01-25T08:38:49.773Z" }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload_time = "2025-01-25T08:38:51.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload_time = "2025-01-25T08:38:52.542Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload_time = "2025-01-25T08:38:54.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload_time = "2025-01-25T08:38:55.576Z" }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload_time = "2025-01-25T08:38:56.654Z" }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload_time = "2025-01-25T08:38:57.662Z" }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload_time = "2025-01-25T08:38:59.505Z" }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload_time = "2025-01-25T08:39:00.483Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload_time = "2025-01-25T08:39:01.484Z" }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload_time = "2025-01-25T08:39:02.444Z" }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload_time = "2025-01-25T08:39:03.369Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload_time = "2025-01-25T08:39:04.284Z" }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload_time = "2025-01-25T08:39:05.174Z" }, ] [[package]] @@ -1885,60 +1901,60 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/44/45e798d4cd1b5dfe41ddf36266c7aca6d954e3c7a8b0d599ad555ce2b4f8/multidict-6.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32a998bd8a64ca48616eac5a8c1cc4fa38fb244a3facf2eeb14abe186e0f6cc5", size = 65822 }, - { url = "https://files.pythonhosted.org/packages/10/fb/9ea024f928503f8c758f8463759d21958bf27b1f7a1103df73e5022e6a7c/multidict-6.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54ec568f1fc7f3c313c2f3b16e5db346bf3660e1309746e7fccbbfded856188", size = 38706 }, - { url = "https://files.pythonhosted.org/packages/6d/eb/7013316febca37414c0e1469fccadcb1a0e4315488f8f57ca5d29b384863/multidict-6.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a7be07e5df178430621c716a63151165684d3e9958f2bbfcb644246162007ab7", size = 37979 }, - { url = "https://files.pythonhosted.org/packages/64/28/5a7bf4e7422613ea80f9ebc529d3845b20a422cfa94d4355504ac98047ee/multidict-6.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b128dbf1c939674a50dd0b28f12c244d90e5015e751a4f339a96c54f7275e291", size = 220233 }, - { url = "https://files.pythonhosted.org/packages/52/05/b4c58850f71befde6a16548968b48331a155a80627750b150bb5962e4dea/multidict-6.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9cb19dfd83d35b6ff24a4022376ea6e45a2beba8ef3f0836b8a4b288b6ad685", size = 217762 }, - { url = "https://files.pythonhosted.org/packages/99/a3/393e23bba1e9a00f95b3957acd8f5e3ee3446e78c550f593be25f9de0483/multidict-6.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3cf62f8e447ea2c1395afa289b332e49e13d07435369b6f4e41f887db65b40bf", size = 230699 }, - { url = "https://files.pythonhosted.org/packages/9c/a7/52c63069eb1a079f824257bb8045d93e692fa2eb34d08323d1fdbdfc398a/multidict-6.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:909f7d43ff8f13d1adccb6a397094adc369d4da794407f8dd592c51cf0eae4b1", size = 226801 }, - { url = "https://files.pythonhosted.org/packages/2c/e9/40d2b73e7d6574d91074d83477a990e3701affbe8b596010d4f5e6c7a6fa/multidict-6.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb8f8302fbc7122033df959e25777b0b7659b1fd6bcb9cb6bed76b5de67afef", size = 219833 }, - { url = "https://files.pythonhosted.org/packages/e4/6a/0572b22fe63c632254f55a1c1cb7d29f644002b1d8731d6103a290edc754/multidict-6.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:224b79471b4f21169ea25ebc37ed6f058040c578e50ade532e2066562597b8a9", size = 212920 }, - { url = "https://files.pythonhosted.org/packages/33/fe/c63735db9dece0053868b2d808bcc2592a83ce1830bc98243852a2b34d42/multidict-6.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a7bd27f7ab3204f16967a6f899b3e8e9eb3362c0ab91f2ee659e0345445e0078", size = 225263 }, - { url = "https://files.pythonhosted.org/packages/47/c2/2db296d64d41525110c27ed38fadd5eb571c6b936233e75a5ea61b14e337/multidict-6.4.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:99592bd3162e9c664671fd14e578a33bfdba487ea64bcb41d281286d3c870ad7", size = 214249 }, - { url = "https://files.pythonhosted.org/packages/7e/74/8bc26e54c79f9a0f111350b1b28a9cacaaee53ecafccd53c90e59754d55a/multidict-6.4.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a62d78a1c9072949018cdb05d3c533924ef8ac9bcb06cbf96f6d14772c5cd451", size = 221650 }, - { url = "https://files.pythonhosted.org/packages/af/d7/2ce87606e3799d9a08a941f4c170930a9895886ea8bd0eca75c44baeebe3/multidict-6.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ccdde001578347e877ca4f629450973c510e88e8865d5aefbcb89b852ccc666", size = 231235 }, - { url = "https://files.pythonhosted.org/packages/07/e1/d191a7ad3b90c613fc4b130d07a41c380e249767586148709b54d006ca17/multidict-6.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:eccb67b0e78aa2e38a04c5ecc13bab325a43e5159a181a9d1a6723db913cbb3c", size = 226056 }, - { url = "https://files.pythonhosted.org/packages/24/05/a57490cf6a8d5854f4af2d17dfc54924f37fbb683986e133b76710a36079/multidict-6.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8b6fcf6054fc4114a27aa865f8840ef3d675f9316e81868e0ad5866184a6cba5", size = 220014 }, - { url = "https://files.pythonhosted.org/packages/5c/b1/be04fa9f08c684e9e27cca85b4ab94c10f017ec07c4c631af9c8c10bb275/multidict-6.4.3-cp310-cp310-win32.whl", hash = "sha256:f92c7f62d59373cd93bc9969d2da9b4b21f78283b1379ba012f7ee8127b3152e", size = 35042 }, - { url = "https://files.pythonhosted.org/packages/d9/ca/8888f99892513001fa900eef11bafbf38ff3485109510487de009da85748/multidict-6.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:b57e28dbc031d13916b946719f213c494a517b442d7b48b29443e79610acd887", size = 38506 }, - { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259 }, - { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451 }, - { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706 }, - { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669 }, - { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182 }, - { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025 }, - { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481 }, - { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492 }, - { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279 }, - { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733 }, - { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089 }, - { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257 }, - { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728 }, - { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087 }, - { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137 }, - { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959 }, - { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541 }, - { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019 }, - { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925 }, - { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008 }, - { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374 }, - { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869 }, - { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949 }, - { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032 }, - { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517 }, - { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291 }, - { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982 }, - { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823 }, - { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714 }, - { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739 }, - { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809 }, - { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, - { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, - { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, - { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, +sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372, upload_time = "2025-04-10T22:20:17.956Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/44/45e798d4cd1b5dfe41ddf36266c7aca6d954e3c7a8b0d599ad555ce2b4f8/multidict-6.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32a998bd8a64ca48616eac5a8c1cc4fa38fb244a3facf2eeb14abe186e0f6cc5", size = 65822, upload_time = "2025-04-10T22:17:32.83Z" }, + { url = "https://files.pythonhosted.org/packages/10/fb/9ea024f928503f8c758f8463759d21958bf27b1f7a1103df73e5022e6a7c/multidict-6.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54ec568f1fc7f3c313c2f3b16e5db346bf3660e1309746e7fccbbfded856188", size = 38706, upload_time = "2025-04-10T22:17:35.028Z" }, + { url = "https://files.pythonhosted.org/packages/6d/eb/7013316febca37414c0e1469fccadcb1a0e4315488f8f57ca5d29b384863/multidict-6.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a7be07e5df178430621c716a63151165684d3e9958f2bbfcb644246162007ab7", size = 37979, upload_time = "2025-04-10T22:17:36.626Z" }, + { url = "https://files.pythonhosted.org/packages/64/28/5a7bf4e7422613ea80f9ebc529d3845b20a422cfa94d4355504ac98047ee/multidict-6.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b128dbf1c939674a50dd0b28f12c244d90e5015e751a4f339a96c54f7275e291", size = 220233, upload_time = "2025-04-10T22:17:37.807Z" }, + { url = "https://files.pythonhosted.org/packages/52/05/b4c58850f71befde6a16548968b48331a155a80627750b150bb5962e4dea/multidict-6.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9cb19dfd83d35b6ff24a4022376ea6e45a2beba8ef3f0836b8a4b288b6ad685", size = 217762, upload_time = "2025-04-10T22:17:39.493Z" }, + { url = "https://files.pythonhosted.org/packages/99/a3/393e23bba1e9a00f95b3957acd8f5e3ee3446e78c550f593be25f9de0483/multidict-6.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3cf62f8e447ea2c1395afa289b332e49e13d07435369b6f4e41f887db65b40bf", size = 230699, upload_time = "2025-04-10T22:17:41.207Z" }, + { url = "https://files.pythonhosted.org/packages/9c/a7/52c63069eb1a079f824257bb8045d93e692fa2eb34d08323d1fdbdfc398a/multidict-6.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:909f7d43ff8f13d1adccb6a397094adc369d4da794407f8dd592c51cf0eae4b1", size = 226801, upload_time = "2025-04-10T22:17:42.62Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e9/40d2b73e7d6574d91074d83477a990e3701affbe8b596010d4f5e6c7a6fa/multidict-6.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb8f8302fbc7122033df959e25777b0b7659b1fd6bcb9cb6bed76b5de67afef", size = 219833, upload_time = "2025-04-10T22:17:44.046Z" }, + { url = "https://files.pythonhosted.org/packages/e4/6a/0572b22fe63c632254f55a1c1cb7d29f644002b1d8731d6103a290edc754/multidict-6.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:224b79471b4f21169ea25ebc37ed6f058040c578e50ade532e2066562597b8a9", size = 212920, upload_time = "2025-04-10T22:17:45.48Z" }, + { url = "https://files.pythonhosted.org/packages/33/fe/c63735db9dece0053868b2d808bcc2592a83ce1830bc98243852a2b34d42/multidict-6.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a7bd27f7ab3204f16967a6f899b3e8e9eb3362c0ab91f2ee659e0345445e0078", size = 225263, upload_time = "2025-04-10T22:17:47.203Z" }, + { url = "https://files.pythonhosted.org/packages/47/c2/2db296d64d41525110c27ed38fadd5eb571c6b936233e75a5ea61b14e337/multidict-6.4.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:99592bd3162e9c664671fd14e578a33bfdba487ea64bcb41d281286d3c870ad7", size = 214249, upload_time = "2025-04-10T22:17:48.95Z" }, + { url = "https://files.pythonhosted.org/packages/7e/74/8bc26e54c79f9a0f111350b1b28a9cacaaee53ecafccd53c90e59754d55a/multidict-6.4.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a62d78a1c9072949018cdb05d3c533924ef8ac9bcb06cbf96f6d14772c5cd451", size = 221650, upload_time = "2025-04-10T22:17:50.265Z" }, + { url = "https://files.pythonhosted.org/packages/af/d7/2ce87606e3799d9a08a941f4c170930a9895886ea8bd0eca75c44baeebe3/multidict-6.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ccdde001578347e877ca4f629450973c510e88e8865d5aefbcb89b852ccc666", size = 231235, upload_time = "2025-04-10T22:17:51.579Z" }, + { url = "https://files.pythonhosted.org/packages/07/e1/d191a7ad3b90c613fc4b130d07a41c380e249767586148709b54d006ca17/multidict-6.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:eccb67b0e78aa2e38a04c5ecc13bab325a43e5159a181a9d1a6723db913cbb3c", size = 226056, upload_time = "2025-04-10T22:17:53.092Z" }, + { url = "https://files.pythonhosted.org/packages/24/05/a57490cf6a8d5854f4af2d17dfc54924f37fbb683986e133b76710a36079/multidict-6.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8b6fcf6054fc4114a27aa865f8840ef3d675f9316e81868e0ad5866184a6cba5", size = 220014, upload_time = "2025-04-10T22:17:54.729Z" }, + { url = "https://files.pythonhosted.org/packages/5c/b1/be04fa9f08c684e9e27cca85b4ab94c10f017ec07c4c631af9c8c10bb275/multidict-6.4.3-cp310-cp310-win32.whl", hash = "sha256:f92c7f62d59373cd93bc9969d2da9b4b21f78283b1379ba012f7ee8127b3152e", size = 35042, upload_time = "2025-04-10T22:17:56.615Z" }, + { url = "https://files.pythonhosted.org/packages/d9/ca/8888f99892513001fa900eef11bafbf38ff3485109510487de009da85748/multidict-6.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:b57e28dbc031d13916b946719f213c494a517b442d7b48b29443e79610acd887", size = 38506, upload_time = "2025-04-10T22:17:58.119Z" }, + { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259, upload_time = "2025-04-10T22:17:59.632Z" }, + { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451, upload_time = "2025-04-10T22:18:01.202Z" }, + { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706, upload_time = "2025-04-10T22:18:02.276Z" }, + { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669, upload_time = "2025-04-10T22:18:03.436Z" }, + { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182, upload_time = "2025-04-10T22:18:04.922Z" }, + { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025, upload_time = "2025-04-10T22:18:06.274Z" }, + { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481, upload_time = "2025-04-10T22:18:07.742Z" }, + { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492, upload_time = "2025-04-10T22:18:09.095Z" }, + { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279, upload_time = "2025-04-10T22:18:10.474Z" }, + { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733, upload_time = "2025-04-10T22:18:11.793Z" }, + { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089, upload_time = "2025-04-10T22:18:13.153Z" }, + { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257, upload_time = "2025-04-10T22:18:14.654Z" }, + { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728, upload_time = "2025-04-10T22:18:16.236Z" }, + { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087, upload_time = "2025-04-10T22:18:17.979Z" }, + { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137, upload_time = "2025-04-10T22:18:19.362Z" }, + { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959, upload_time = "2025-04-10T22:18:20.728Z" }, + { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541, upload_time = "2025-04-10T22:18:22.001Z" }, + { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019, upload_time = "2025-04-10T22:18:23.174Z" }, + { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925, upload_time = "2025-04-10T22:18:24.834Z" }, + { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008, upload_time = "2025-04-10T22:18:26.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374, upload_time = "2025-04-10T22:18:27.714Z" }, + { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869, upload_time = "2025-04-10T22:18:29.162Z" }, + { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949, upload_time = "2025-04-10T22:18:30.679Z" }, + { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032, upload_time = "2025-04-10T22:18:32.146Z" }, + { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517, upload_time = "2025-04-10T22:18:33.538Z" }, + { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291, upload_time = "2025-04-10T22:18:34.962Z" }, + { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982, upload_time = "2025-04-10T22:18:36.443Z" }, + { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823, upload_time = "2025-04-10T22:18:37.924Z" }, + { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714, upload_time = "2025-04-10T22:18:39.807Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739, upload_time = "2025-04-10T22:18:41.341Z" }, + { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809, upload_time = "2025-04-10T22:18:42.817Z" }, + { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934, upload_time = "2025-04-10T22:18:44.311Z" }, + { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242, upload_time = "2025-04-10T22:18:46.193Z" }, + { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635, upload_time = "2025-04-10T22:18:47.498Z" }, + { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400, upload_time = "2025-04-10T22:20:16.445Z" }, ] [[package]] @@ -1950,36 +1966,36 @@ dependencies = [ { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433 }, - { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472 }, - { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424 }, - { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450 }, - { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765 }, - { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701 }, - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload_time = "2025-02-05T03:50:34.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433, upload_time = "2025-02-05T03:49:29.145Z" }, + { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472, upload_time = "2025-02-05T03:49:16.986Z" }, + { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424, upload_time = "2025-02-05T03:49:46.908Z" }, + { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450, upload_time = "2025-02-05T03:50:05.89Z" }, + { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765, upload_time = "2025-02-05T03:49:33.56Z" }, + { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701, upload_time = "2025-02-05T03:49:38.981Z" }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload_time = "2025-02-05T03:50:17.287Z" }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload_time = "2025-02-05T03:49:51.21Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload_time = "2025-02-05T03:50:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload_time = "2025-02-05T03:49:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload_time = "2025-02-05T03:49:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload_time = "2025-02-05T03:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload_time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload_time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload_time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload_time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload_time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload_time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload_time = "2025-02-05T03:50:08.348Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, ] [[package]] @@ -1992,9 +2008,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload_time = "2024-12-19T10:32:27.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload_time = "2024-12-19T10:32:24.139Z" }, ] [[package]] @@ -2017,9 +2033,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload_time = "2025-01-28T09:29:14.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload_time = "2025-01-28T09:29:12.551Z" }, ] [[package]] @@ -2032,27 +2048,27 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload_time = "2024-04-04T11:20:37.371Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload_time = "2024-04-04T11:20:34.895Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload_time = "2024-01-21T14:25:17.223Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload_time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload_time = "2024-06-04T18:44:08.352Z" }, ] [[package]] @@ -2062,68 +2078,68 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload_time = "2024-02-14T23:35:18.353Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload_time = "2024-02-14T23:35:16.286Z" }, ] [[package]] name = "numpy" version = "1.26.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468 }, - { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411 }, - { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016 }, - { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889 }, - { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746 }, - { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620 }, - { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659 }, - { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905 }, - { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554 }, - { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127 }, - { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994 }, - { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005 }, - { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297 }, - { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567 }, - { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812 }, - { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913 }, - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901 }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868 }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109 }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613 }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172 }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643 }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803 }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754 }, +sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload_time = "2024-02-06T00:26:44.495Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468, upload_time = "2024-02-05T23:48:01.194Z" }, + { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411, upload_time = "2024-02-05T23:48:29.038Z" }, + { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016, upload_time = "2024-02-05T23:48:54.098Z" }, + { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889, upload_time = "2024-02-05T23:49:25.361Z" }, + { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746, upload_time = "2024-02-05T23:49:51.983Z" }, + { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620, upload_time = "2024-02-05T23:50:22.515Z" }, + { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659, upload_time = "2024-02-05T23:50:35.834Z" }, + { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905, upload_time = "2024-02-05T23:51:03.701Z" }, + { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554, upload_time = "2024-02-05T23:51:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127, upload_time = "2024-02-05T23:52:15.314Z" }, + { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994, upload_time = "2024-02-05T23:52:47.569Z" }, + { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005, upload_time = "2024-02-05T23:53:15.637Z" }, + { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297, upload_time = "2024-02-05T23:53:42.16Z" }, + { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567, upload_time = "2024-02-05T23:54:11.696Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812, upload_time = "2024-02-05T23:54:26.453Z" }, + { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913, upload_time = "2024-02-05T23:54:53.933Z" }, + { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload_time = "2024-02-05T23:55:32.801Z" }, + { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload_time = "2024-02-05T23:55:56.28Z" }, + { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload_time = "2024-02-05T23:56:20.368Z" }, + { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload_time = "2024-02-05T23:56:56.054Z" }, + { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload_time = "2024-02-05T23:57:21.56Z" }, + { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload_time = "2024-02-05T23:57:56.585Z" }, + { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload_time = "2024-02-05T23:58:08.963Z" }, + { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload_time = "2024-02-05T23:58:36.364Z" }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload_time = "2024-01-27T21:01:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload_time = "2024-01-27T21:01:31.393Z" }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, ] [[package]] @@ -2136,56 +2152,56 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/d2/6fb05f20ee1b3961c7b283c1f8bafc6de752155d075c5db61c173de0de62/pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2", size = 4390211 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/8a/76a32ba459b4c376cc3780dca0f600bbbb63b3610249a068f7eb20991ee3/pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670", size = 12504200 }, - { url = "https://files.pythonhosted.org/packages/6f/3a/597311df6d41940e45ecc820edeae2e720c2077118dbb18038453986e16e/pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a", size = 11759337 }, - { url = "https://files.pythonhosted.org/packages/f8/26/79051bd18491263498f4c15b55ec80ba587f7fdf5c1472e6c9cd025ab6f5/pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18", size = 15617667 }, - { url = "https://files.pythonhosted.org/packages/b3/b3/3102c3a4abca1093e50cfec2213102a1c65c0b318a4431395d0121e6e690/pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e", size = 13010773 }, - { url = "https://files.pythonhosted.org/packages/61/4b/397ca9bcf2a9ec514360ae7fd9ab495c46de25055ecb37e518c088213ddb/pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5", size = 16275166 }, - { url = "https://files.pythonhosted.org/packages/24/1c/b6a4addfc3f04f4c36acfa74646601cf52160f8cf51fb2735c838889db1e/pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1", size = 13884784 }, - { url = "https://files.pythonhosted.org/packages/5a/f2/d079f4785d326e3868f4232108e622a307c2676023a274d9be2754dafc2a/pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430", size = 11566707 }, - { url = "https://files.pythonhosted.org/packages/ac/6b/11c0e4f5dec878a5eca77aa3b24215c49d2eda8d2cfd654a3f03a9f9d33a/pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5", size = 12523742 }, - { url = "https://files.pythonhosted.org/packages/6f/4e/63e6b79132e854a67df3d37a5c8560e45c79e2504fa57e032c1d61abb090/pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b", size = 11767486 }, - { url = "https://files.pythonhosted.org/packages/30/24/ec0412ad5297d22ad06732325cc222d10397d831b567e2b8e04cd4eda7cd/pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f", size = 15588196 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/9fd11ba8e86a8add8f2ff4e11c7111f65ec6fd1b547222160bb969e2bf5e/pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88", size = 13043435 }, - { url = "https://files.pythonhosted.org/packages/31/7f/017592099d0257847f9d8a706154a7d70689390cbcc5b58599a8a2a48fd6/pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3", size = 16240135 }, - { url = "https://files.pythonhosted.org/packages/c2/80/7465d8f2ca5837a2eb448de7942c19c52eaf5bc9c024926c2ea709c9c316/pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71", size = 13888619 }, - { url = "https://files.pythonhosted.org/packages/77/62/8e11962934e024a093758992bc82711e3e30efd5ea355cbfdc6e1ab5de76/pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9", size = 11583716 }, - { url = "https://files.pythonhosted.org/packages/e1/1e/d708cda584a2d70e6d3c930d102d07ee3d65bec3b2861f416b086cc518a8/pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc", size = 12458750 }, - { url = "https://files.pythonhosted.org/packages/72/33/e873f8bdeac9a954f93f33fb6fbdf3ded68e0096b154008855616559c64c/pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1", size = 11740624 }, - { url = "https://files.pythonhosted.org/packages/65/f9/1ff0f7dac2493f2c3a86cdb6106de8a7a6da75735f27e1c6a106b3d26e6e/pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440", size = 15185059 }, - { url = "https://files.pythonhosted.org/packages/b2/a5/7f14d11f5bb3ca5681f6827616ccfbb03ec9504322674e4f962a5e9e404b/pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106", size = 12723033 }, - { url = "https://files.pythonhosted.org/packages/dc/68/b42aea61273d47dbac1ba465739c90310e55081be4a33a0d44022194fb0a/pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e", size = 15855969 }, - { url = "https://files.pythonhosted.org/packages/dc/c3/0df8f14482f9edee3d23b55edfb1c9d94376e78e4a815e0b2f7cf2776fe7/pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042", size = 13381916 }, - { url = "https://files.pythonhosted.org/packages/87/03/fe50521919aa981f6a1c197037da4623a267b0e5f42246d69ba048e86da3/pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30", size = 11464015 }, +sdist = { url = "https://files.pythonhosted.org/packages/03/d2/6fb05f20ee1b3961c7b283c1f8bafc6de752155d075c5db61c173de0de62/pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2", size = 4390211, upload_time = "2024-01-20T02:53:59.362Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/88/8a/76a32ba459b4c376cc3780dca0f600bbbb63b3610249a068f7eb20991ee3/pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670", size = 12504200, upload_time = "2024-01-20T02:10:54.053Z" }, + { url = "https://files.pythonhosted.org/packages/6f/3a/597311df6d41940e45ecc820edeae2e720c2077118dbb18038453986e16e/pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a", size = 11759337, upload_time = "2024-01-20T02:12:14.988Z" }, + { url = "https://files.pythonhosted.org/packages/f8/26/79051bd18491263498f4c15b55ec80ba587f7fdf5c1472e6c9cd025ab6f5/pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18", size = 15617667, upload_time = "2024-01-20T02:13:51.658Z" }, + { url = "https://files.pythonhosted.org/packages/b3/b3/3102c3a4abca1093e50cfec2213102a1c65c0b318a4431395d0121e6e690/pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e", size = 13010773, upload_time = "2024-01-20T02:19:14.193Z" }, + { url = "https://files.pythonhosted.org/packages/61/4b/397ca9bcf2a9ec514360ae7fd9ab495c46de25055ecb37e518c088213ddb/pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5", size = 16275166, upload_time = "2024-01-20T02:20:05.252Z" }, + { url = "https://files.pythonhosted.org/packages/24/1c/b6a4addfc3f04f4c36acfa74646601cf52160f8cf51fb2735c838889db1e/pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1", size = 13884784, upload_time = "2024-01-20T02:20:47.22Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/d079f4785d326e3868f4232108e622a307c2676023a274d9be2754dafc2a/pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430", size = 11566707, upload_time = "2024-01-20T02:21:37Z" }, + { url = "https://files.pythonhosted.org/packages/ac/6b/11c0e4f5dec878a5eca77aa3b24215c49d2eda8d2cfd654a3f03a9f9d33a/pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5", size = 12523742, upload_time = "2024-01-20T02:22:38.859Z" }, + { url = "https://files.pythonhosted.org/packages/6f/4e/63e6b79132e854a67df3d37a5c8560e45c79e2504fa57e032c1d61abb090/pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b", size = 11767486, upload_time = "2024-01-20T02:23:53.875Z" }, + { url = "https://files.pythonhosted.org/packages/30/24/ec0412ad5297d22ad06732325cc222d10397d831b567e2b8e04cd4eda7cd/pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f", size = 15588196, upload_time = "2024-01-20T02:25:40.451Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/9fd11ba8e86a8add8f2ff4e11c7111f65ec6fd1b547222160bb969e2bf5e/pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88", size = 13043435, upload_time = "2024-01-20T02:26:52.137Z" }, + { url = "https://files.pythonhosted.org/packages/31/7f/017592099d0257847f9d8a706154a7d70689390cbcc5b58599a8a2a48fd6/pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3", size = 16240135, upload_time = "2024-01-20T02:28:49.574Z" }, + { url = "https://files.pythonhosted.org/packages/c2/80/7465d8f2ca5837a2eb448de7942c19c52eaf5bc9c024926c2ea709c9c316/pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71", size = 13888619, upload_time = "2024-01-20T02:30:16.495Z" }, + { url = "https://files.pythonhosted.org/packages/77/62/8e11962934e024a093758992bc82711e3e30efd5ea355cbfdc6e1ab5de76/pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9", size = 11583716, upload_time = "2024-01-20T02:31:29.385Z" }, + { url = "https://files.pythonhosted.org/packages/e1/1e/d708cda584a2d70e6d3c930d102d07ee3d65bec3b2861f416b086cc518a8/pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc", size = 12458750, upload_time = "2024-01-20T02:32:52.457Z" }, + { url = "https://files.pythonhosted.org/packages/72/33/e873f8bdeac9a954f93f33fb6fbdf3ded68e0096b154008855616559c64c/pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1", size = 11740624, upload_time = "2024-01-20T02:34:19.823Z" }, + { url = "https://files.pythonhosted.org/packages/65/f9/1ff0f7dac2493f2c3a86cdb6106de8a7a6da75735f27e1c6a106b3d26e6e/pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440", size = 15185059, upload_time = "2024-01-20T02:36:02.958Z" }, + { url = "https://files.pythonhosted.org/packages/b2/a5/7f14d11f5bb3ca5681f6827616ccfbb03ec9504322674e4f962a5e9e404b/pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106", size = 12723033, upload_time = "2024-01-20T02:37:40.503Z" }, + { url = "https://files.pythonhosted.org/packages/dc/68/b42aea61273d47dbac1ba465739c90310e55081be4a33a0d44022194fb0a/pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e", size = 15855969, upload_time = "2024-01-20T02:39:34.036Z" }, + { url = "https://files.pythonhosted.org/packages/dc/c3/0df8f14482f9edee3d23b55edfb1c9d94376e78e4a815e0b2f7cf2776fe7/pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042", size = 13381916, upload_time = "2024-01-20T02:40:57.612Z" }, + { url = "https://files.pythonhosted.org/packages/87/03/fe50521919aa981f6a1c197037da4623a267b0e5f42246d69ba048e86da3/pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30", size = 11464015, upload_time = "2024-01-20T02:42:13.686Z" }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload_time = "2024-01-18T20:08:13.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload_time = "2024-01-18T20:08:11.28Z" }, ] [[package]] name = "parso" version = "0.8.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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload_time = "2024-04-05T09:43:55.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload_time = "2024-04-05T09:43:53.299Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, ] [[package]] @@ -2195,82 +2211,82 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload_time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" version = "11.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442 }, - { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553 }, - { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503 }, - { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648 }, - { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937 }, - { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802 }, - { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717 }, - { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874 }, - { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717 }, - { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204 }, - { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767 }, - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, - { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727 }, - { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833 }, - { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472 }, - { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976 }, - { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133 }, - { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555 }, - { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713 }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload_time = "2025-04-12T17:50:03.289Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442, upload_time = "2025-04-12T17:47:10.666Z" }, + { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553, upload_time = "2025-04-12T17:47:13.153Z" }, + { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503, upload_time = "2025-04-12T17:47:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648, upload_time = "2025-04-12T17:47:17.37Z" }, + { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937, upload_time = "2025-04-12T17:47:19.066Z" }, + { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802, upload_time = "2025-04-12T17:47:21.404Z" }, + { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717, upload_time = "2025-04-12T17:47:23.571Z" }, + { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874, upload_time = "2025-04-12T17:47:25.783Z" }, + { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717, upload_time = "2025-04-12T17:47:28.922Z" }, + { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204, upload_time = "2025-04-12T17:47:31.283Z" }, + { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767, upload_time = "2025-04-12T17:47:34.655Z" }, + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload_time = "2025-04-12T17:47:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload_time = "2025-04-12T17:47:39.345Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload_time = "2025-04-12T17:47:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload_time = "2025-04-12T17:47:42.912Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload_time = "2025-04-12T17:47:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload_time = "2025-04-12T17:47:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload_time = "2025-04-12T17:47:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload_time = "2025-04-12T17:47:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload_time = "2025-04-12T17:47:54.425Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload_time = "2025-04-12T17:47:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload_time = "2025-04-12T17:47:58.217Z" }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload_time = "2025-04-12T17:48:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload_time = "2025-04-12T17:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload_time = "2025-04-12T17:48:04.554Z" }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload_time = "2025-04-12T17:48:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload_time = "2025-04-12T17:48:09.229Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload_time = "2025-04-12T17:48:11.631Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload_time = "2025-04-12T17:48:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload_time = "2025-04-12T17:48:15.938Z" }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload_time = "2025-04-12T17:48:17.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload_time = "2025-04-12T17:48:19.655Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload_time = "2025-04-12T17:48:21.991Z" }, + { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727, upload_time = "2025-04-12T17:49:31.898Z" }, + { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833, upload_time = "2025-04-12T17:49:34.2Z" }, + { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472, upload_time = "2025-04-12T17:49:36.294Z" }, + { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976, upload_time = "2025-04-12T17:49:38.988Z" }, + { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133, upload_time = "2025-04-12T17:49:40.985Z" }, + { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555, upload_time = "2025-04-12T17:49:42.964Z" }, + { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713, upload_time = "2025-04-12T17:49:44.944Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload_time = "2025-04-12T17:49:46.789Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload_time = "2025-04-12T17:49:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload_time = "2025-04-12T17:49:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload_time = "2025-04-12T17:49:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload_time = "2025-04-12T17:49:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload_time = "2025-04-12T17:49:57.171Z" }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload_time = "2025-04-12T17:49:59.628Z" }, ] [[package]] name = "platformdirs" version = "4.3.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291, upload_time = "2025-03-19T20:36:10.989Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499, upload_time = "2025-03-19T20:36:09.038Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/96/2d/02d4312c973c6050a18b314a5ad0b3210edb65a906f868e31c111dede4a6/pluggy-1.5.0.tar.gz", hash = "sha256:2cffa88e94fdc978c4c574f15f9e59b7f4201d439195c3715ca9e2486f1d0cf1", size = 67955, upload_time = "2024-04-20T21:34:42.531Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556, upload_time = "2024-04-20T21:34:40.434Z" }, ] [[package]] @@ -2284,18 +2300,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, ] [[package]] name = "prometheus-client" version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551, upload_time = "2024-12-03T14:59:12.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682, upload_time = "2024-12-03T14:59:10.935Z" }, ] [[package]] @@ -2305,137 +2321,137 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/56/e27c136101addf877c8291dbda1b3b86ae848f3837ce758510a0d806c92f/propcache-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f27785888d2fdd918bc36de8b8739f2d6c791399552333721b58193f68ea3e98", size = 80224 }, - { url = "https://files.pythonhosted.org/packages/63/bd/88e98836544c4f04db97eefd23b037c2002fa173dd2772301c61cd3085f9/propcache-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4e89cde74154c7b5957f87a355bb9c8ec929c167b59c83d90654ea36aeb6180", size = 46491 }, - { url = "https://files.pythonhosted.org/packages/15/43/0b8eb2a55753c4a574fc0899885da504b521068d3b08ca56774cad0bea2b/propcache-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:730178f476ef03d3d4d255f0c9fa186cb1d13fd33ffe89d39f2cda4da90ceb71", size = 45927 }, - { url = "https://files.pythonhosted.org/packages/ad/6c/d01f9dfbbdc613305e0a831016844987a1fb4861dd221cd4c69b1216b43f/propcache-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967a8eec513dbe08330f10137eacb427b2ca52118769e82ebcfcab0fba92a649", size = 206135 }, - { url = "https://files.pythonhosted.org/packages/9a/8a/e6e1c77394088f4cfdace4a91a7328e398ebed745d59c2f6764135c5342d/propcache-0.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b9145c35cc87313b5fd480144f8078716007656093d23059e8993d3a8fa730f", size = 220517 }, - { url = "https://files.pythonhosted.org/packages/19/3b/6c44fa59d6418f4239d5db8b1ece757351e85d6f3ca126dfe37d427020c8/propcache-0.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e64e948ab41411958670f1093c0a57acfdc3bee5cf5b935671bbd5313bcf229", size = 218952 }, - { url = "https://files.pythonhosted.org/packages/7c/e4/4aeb95a1cd085e0558ab0de95abfc5187329616193a1012a6c4c930e9f7a/propcache-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:319fa8765bfd6a265e5fa661547556da381e53274bc05094fc9ea50da51bfd46", size = 206593 }, - { url = "https://files.pythonhosted.org/packages/da/6a/29fa75de1cbbb302f1e1d684009b969976ca603ee162282ae702287b6621/propcache-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66d8ccbc902ad548312b96ed8d5d266d0d2c6d006fd0f66323e9d8f2dd49be7", size = 196745 }, - { url = "https://files.pythonhosted.org/packages/19/7e/2237dad1dbffdd2162de470599fa1a1d55df493b16b71e5d25a0ac1c1543/propcache-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2d219b0dbabe75e15e581fc1ae796109b07c8ba7d25b9ae8d650da582bed01b0", size = 203369 }, - { url = "https://files.pythonhosted.org/packages/a4/bc/a82c5878eb3afb5c88da86e2cf06e1fe78b7875b26198dbb70fe50a010dc/propcache-0.3.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:cd6a55f65241c551eb53f8cf4d2f4af33512c39da5d9777694e9d9c60872f519", size = 198723 }, - { url = "https://files.pythonhosted.org/packages/17/76/9632254479c55516f51644ddbf747a45f813031af5adcb8db91c0b824375/propcache-0.3.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9979643ffc69b799d50d3a7b72b5164a2e97e117009d7af6dfdd2ab906cb72cd", size = 200751 }, - { url = "https://files.pythonhosted.org/packages/3e/c3/a90b773cf639bd01d12a9e20c95be0ae978a5a8abe6d2d343900ae76cd71/propcache-0.3.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf9e93a81979f1424f1a3d155213dc928f1069d697e4353edb8a5eba67c6259", size = 210730 }, - { url = "https://files.pythonhosted.org/packages/ed/ec/ad5a952cdb9d65c351f88db7c46957edd3d65ffeee72a2f18bd6341433e0/propcache-0.3.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2fce1df66915909ff6c824bbb5eb403d2d15f98f1518e583074671a30fe0c21e", size = 213499 }, - { url = "https://files.pythonhosted.org/packages/83/c0/ea5133dda43e298cd2010ec05c2821b391e10980e64ee72c0a76cdbb813a/propcache-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4d0dfdd9a2ebc77b869a0b04423591ea8823f791293b527dc1bb896c1d6f1136", size = 207132 }, - { url = "https://files.pythonhosted.org/packages/79/dd/71aae9dec59333064cfdd7eb31a63fa09f64181b979802a67a90b2abfcba/propcache-0.3.1-cp310-cp310-win32.whl", hash = "sha256:1f6cc0ad7b4560e5637eb2c994e97b4fa41ba8226069c9277eb5ea7101845b42", size = 40952 }, - { url = "https://files.pythonhosted.org/packages/31/0a/49ff7e5056c17dfba62cbdcbb90a29daffd199c52f8e65e5cb09d5f53a57/propcache-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:47ef24aa6511e388e9894ec16f0fbf3313a53ee68402bc428744a367ec55b833", size = 45163 }, - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload_time = "2025-03-26T03:06:12.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/56/e27c136101addf877c8291dbda1b3b86ae848f3837ce758510a0d806c92f/propcache-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f27785888d2fdd918bc36de8b8739f2d6c791399552333721b58193f68ea3e98", size = 80224, upload_time = "2025-03-26T03:03:35.81Z" }, + { url = "https://files.pythonhosted.org/packages/63/bd/88e98836544c4f04db97eefd23b037c2002fa173dd2772301c61cd3085f9/propcache-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4e89cde74154c7b5957f87a355bb9c8ec929c167b59c83d90654ea36aeb6180", size = 46491, upload_time = "2025-03-26T03:03:38.107Z" }, + { url = "https://files.pythonhosted.org/packages/15/43/0b8eb2a55753c4a574fc0899885da504b521068d3b08ca56774cad0bea2b/propcache-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:730178f476ef03d3d4d255f0c9fa186cb1d13fd33ffe89d39f2cda4da90ceb71", size = 45927, upload_time = "2025-03-26T03:03:39.394Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6c/d01f9dfbbdc613305e0a831016844987a1fb4861dd221cd4c69b1216b43f/propcache-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967a8eec513dbe08330f10137eacb427b2ca52118769e82ebcfcab0fba92a649", size = 206135, upload_time = "2025-03-26T03:03:40.757Z" }, + { url = "https://files.pythonhosted.org/packages/9a/8a/e6e1c77394088f4cfdace4a91a7328e398ebed745d59c2f6764135c5342d/propcache-0.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b9145c35cc87313b5fd480144f8078716007656093d23059e8993d3a8fa730f", size = 220517, upload_time = "2025-03-26T03:03:42.657Z" }, + { url = "https://files.pythonhosted.org/packages/19/3b/6c44fa59d6418f4239d5db8b1ece757351e85d6f3ca126dfe37d427020c8/propcache-0.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e64e948ab41411958670f1093c0a57acfdc3bee5cf5b935671bbd5313bcf229", size = 218952, upload_time = "2025-03-26T03:03:44.549Z" }, + { url = "https://files.pythonhosted.org/packages/7c/e4/4aeb95a1cd085e0558ab0de95abfc5187329616193a1012a6c4c930e9f7a/propcache-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:319fa8765bfd6a265e5fa661547556da381e53274bc05094fc9ea50da51bfd46", size = 206593, upload_time = "2025-03-26T03:03:46.114Z" }, + { url = "https://files.pythonhosted.org/packages/da/6a/29fa75de1cbbb302f1e1d684009b969976ca603ee162282ae702287b6621/propcache-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66d8ccbc902ad548312b96ed8d5d266d0d2c6d006fd0f66323e9d8f2dd49be7", size = 196745, upload_time = "2025-03-26T03:03:48.02Z" }, + { url = "https://files.pythonhosted.org/packages/19/7e/2237dad1dbffdd2162de470599fa1a1d55df493b16b71e5d25a0ac1c1543/propcache-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2d219b0dbabe75e15e581fc1ae796109b07c8ba7d25b9ae8d650da582bed01b0", size = 203369, upload_time = "2025-03-26T03:03:49.63Z" }, + { url = "https://files.pythonhosted.org/packages/a4/bc/a82c5878eb3afb5c88da86e2cf06e1fe78b7875b26198dbb70fe50a010dc/propcache-0.3.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:cd6a55f65241c551eb53f8cf4d2f4af33512c39da5d9777694e9d9c60872f519", size = 198723, upload_time = "2025-03-26T03:03:51.091Z" }, + { url = "https://files.pythonhosted.org/packages/17/76/9632254479c55516f51644ddbf747a45f813031af5adcb8db91c0b824375/propcache-0.3.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9979643ffc69b799d50d3a7b72b5164a2e97e117009d7af6dfdd2ab906cb72cd", size = 200751, upload_time = "2025-03-26T03:03:52.631Z" }, + { url = "https://files.pythonhosted.org/packages/3e/c3/a90b773cf639bd01d12a9e20c95be0ae978a5a8abe6d2d343900ae76cd71/propcache-0.3.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf9e93a81979f1424f1a3d155213dc928f1069d697e4353edb8a5eba67c6259", size = 210730, upload_time = "2025-03-26T03:03:54.498Z" }, + { url = "https://files.pythonhosted.org/packages/ed/ec/ad5a952cdb9d65c351f88db7c46957edd3d65ffeee72a2f18bd6341433e0/propcache-0.3.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2fce1df66915909ff6c824bbb5eb403d2d15f98f1518e583074671a30fe0c21e", size = 213499, upload_time = "2025-03-26T03:03:56.054Z" }, + { url = "https://files.pythonhosted.org/packages/83/c0/ea5133dda43e298cd2010ec05c2821b391e10980e64ee72c0a76cdbb813a/propcache-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4d0dfdd9a2ebc77b869a0b04423591ea8823f791293b527dc1bb896c1d6f1136", size = 207132, upload_time = "2025-03-26T03:03:57.398Z" }, + { url = "https://files.pythonhosted.org/packages/79/dd/71aae9dec59333064cfdd7eb31a63fa09f64181b979802a67a90b2abfcba/propcache-0.3.1-cp310-cp310-win32.whl", hash = "sha256:1f6cc0ad7b4560e5637eb2c994e97b4fa41ba8226069c9277eb5ea7101845b42", size = 40952, upload_time = "2025-03-26T03:03:59.146Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/49ff7e5056c17dfba62cbdcbb90a29daffd199c52f8e65e5cb09d5f53a57/propcache-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:47ef24aa6511e388e9894ec16f0fbf3313a53ee68402bc428744a367ec55b833", size = 45163, upload_time = "2025-03-26T03:04:00.672Z" }, + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload_time = "2025-03-26T03:04:01.912Z" }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload_time = "2025-03-26T03:04:03.704Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload_time = "2025-03-26T03:04:05.257Z" }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload_time = "2025-03-26T03:04:07.044Z" }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload_time = "2025-03-26T03:04:08.676Z" }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload_time = "2025-03-26T03:04:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload_time = "2025-03-26T03:04:11.616Z" }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload_time = "2025-03-26T03:04:13.102Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload_time = "2025-03-26T03:04:14.658Z" }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload_time = "2025-03-26T03:04:16.207Z" }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload_time = "2025-03-26T03:04:18.11Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload_time = "2025-03-26T03:04:19.562Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload_time = "2025-03-26T03:04:21.065Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload_time = "2025-03-26T03:04:22.718Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload_time = "2025-03-26T03:04:24.039Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload_time = "2025-03-26T03:04:25.211Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload_time = "2025-03-26T03:04:26.436Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload_time = "2025-03-26T03:04:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload_time = "2025-03-26T03:04:30.659Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload_time = "2025-03-26T03:04:31.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload_time = "2025-03-26T03:04:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload_time = "2025-03-26T03:04:35.542Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload_time = "2025-03-26T03:04:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload_time = "2025-03-26T03:04:39.532Z" }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload_time = "2025-03-26T03:04:41.109Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload_time = "2025-03-26T03:04:42.544Z" }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload_time = "2025-03-26T03:04:44.06Z" }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload_time = "2025-03-26T03:04:45.983Z" }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload_time = "2025-03-26T03:04:47.699Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload_time = "2025-03-26T03:04:49.195Z" }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload_time = "2025-03-26T03:04:50.595Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload_time = "2025-03-26T03:04:51.791Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload_time = "2025-03-26T03:06:10.5Z" }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload_time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload_time = "2024-07-21T12:58:21.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload_time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pyarrow" version = "19.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914 }, - { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866 }, - { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682 }, - { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192 }, - { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272 }, - { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036 }, - { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951 }, - { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987 }, - { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613 }, - { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147 }, - { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045 }, - { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998 }, - { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055 }, - { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133 }, - { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749 }, - { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007 }, - { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566 }, - { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991 }, - { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986 }, - { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026 }, - { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108 }, +sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437, upload_time = "2025-02-18T18:55:57.027Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914, upload_time = "2025-02-18T18:51:37.575Z" }, + { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866, upload_time = "2025-02-18T18:51:44.358Z" }, + { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682, upload_time = "2025-02-18T18:51:49.481Z" }, + { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192, upload_time = "2025-02-18T18:51:56.265Z" }, + { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272, upload_time = "2025-02-18T18:52:02.969Z" }, + { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036, upload_time = "2025-02-18T18:52:10.173Z" }, + { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951, upload_time = "2025-02-18T18:52:15.459Z" }, + { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987, upload_time = "2025-02-18T18:52:20.463Z" }, + { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613, upload_time = "2025-02-18T18:52:25.29Z" }, + { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147, upload_time = "2025-02-18T18:52:30.975Z" }, + { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045, upload_time = "2025-02-18T18:52:36.859Z" }, + { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998, upload_time = "2025-02-18T18:52:42.578Z" }, + { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055, upload_time = "2025-02-18T18:52:48.749Z" }, + { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133, upload_time = "2025-02-18T18:52:54.549Z" }, + { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749, upload_time = "2025-02-18T18:53:00.062Z" }, + { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007, upload_time = "2025-02-18T18:53:06.581Z" }, + { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566, upload_time = "2025-02-18T18:53:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991, upload_time = "2025-02-18T18:53:17.678Z" }, + { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986, upload_time = "2025-02-18T18:53:26.263Z" }, + { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026, upload_time = "2025-02-18T18:53:33.063Z" }, + { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108, upload_time = "2025-02-18T18:53:38.462Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload_time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload_time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -2447,9 +2463,9 @@ dependencies = [ { name = "pydantic-core" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681, upload_time = "2025-01-24T01:42:12.693Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696, upload_time = "2025-01-24T01:42:10.371Z" }, ] [[package]] @@ -2459,58 +2475,58 @@ 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/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938 }, - { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684 }, - { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169 }, - { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227 }, - { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695 }, - { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662 }, - { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370 }, - { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813 }, - { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287 }, - { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414 }, - { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301 }, - { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685 }, - { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876 }, - { 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/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159 }, - { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331 }, - { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467 }, - { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797 }, - { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839 }, - { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861 }, - { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582 }, - { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985 }, - { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/01/f3e5ac5e7c25833db5eb555f7b7ab24cd6f8c322d3a3ad2d67a952dc0abc/pydantic_core-2.27.2.tar.gz", hash = "sha256:eb026e5a4c1fee05726072337ff51d1efb6f59090b7da90d30ea58625b1ffb39", size = 413443, upload_time = "2024-12-18T11:31:54.917Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938, upload_time = "2024-12-18T11:27:14.406Z" }, + { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684, upload_time = "2024-12-18T11:27:16.489Z" }, + { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169, upload_time = "2024-12-18T11:27:22.16Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227, upload_time = "2024-12-18T11:27:25.097Z" }, + { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695, upload_time = "2024-12-18T11:27:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662, upload_time = "2024-12-18T11:27:30.798Z" }, + { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370, upload_time = "2024-12-18T11:27:33.692Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813, upload_time = "2024-12-18T11:27:37.111Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287, upload_time = "2024-12-18T11:27:40.566Z" }, + { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414, upload_time = "2024-12-18T11:27:43.757Z" }, + { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301, upload_time = "2024-12-18T11:27:47.36Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685, upload_time = "2024-12-18T11:27:50.508Z" }, + { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876, upload_time = "2024-12-18T11:27:53.54Z" }, + { 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, upload_time = "2024-12-18T11:27:55.409Z" }, + { 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, upload_time = "2024-12-18T11:27:57.252Z" }, + { 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, upload_time = "2024-12-18T11:27:59.146Z" }, + { 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, upload_time = "2024-12-18T11:28:02.625Z" }, + { 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, upload_time = "2024-12-18T11:28:04.442Z" }, + { 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, upload_time = "2024-12-18T11:28:07.679Z" }, + { 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, upload_time = "2024-12-18T11:28:10.297Z" }, + { 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, upload_time = "2024-12-18T11:28:13.362Z" }, + { 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, upload_time = "2024-12-18T11:28:16.587Z" }, + { 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, upload_time = "2024-12-18T11:28:18.407Z" }, + { 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, upload_time = "2024-12-18T11:28:21.471Z" }, + { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361, upload_time = "2024-12-18T11:28:23.53Z" }, + { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484, upload_time = "2024-12-18T11:28:25.391Z" }, + { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102, upload_time = "2024-12-18T11:28:28.593Z" }, + { 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, upload_time = "2024-12-18T11:28:30.346Z" }, + { 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, upload_time = "2024-12-18T11:28:32.521Z" }, + { 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, upload_time = "2024-12-18T11:28:34.507Z" }, + { 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, upload_time = "2024-12-18T11:28:36.488Z" }, + { 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, upload_time = "2024-12-18T11:28:39.409Z" }, + { 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, upload_time = "2024-12-18T11:28:41.221Z" }, + { 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, upload_time = "2024-12-18T11:28:44.709Z" }, + { 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, upload_time = "2024-12-18T11:28:46.839Z" }, + { 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, upload_time = "2024-12-18T11:28:48.896Z" }, + { 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, upload_time = "2024-12-18T11:28:50.755Z" }, + { 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, upload_time = "2024-12-18T11:28:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064, upload_time = "2024-12-18T11:28:56.074Z" }, + { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046, upload_time = "2024-12-18T11:28:58.107Z" }, + { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092, upload_time = "2024-12-18T11:29:01.335Z" }, + { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159, upload_time = "2024-12-18T11:30:54.382Z" }, + { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331, upload_time = "2024-12-18T11:30:58.178Z" }, + { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467, upload_time = "2024-12-18T11:31:00.6Z" }, + { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797, upload_time = "2024-12-18T11:31:07.243Z" }, + { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839, upload_time = "2024-12-18T11:31:09.775Z" }, + { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861, upload_time = "2024-12-18T11:31:13.469Z" }, + { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582, upload_time = "2024-12-18T11:31:17.423Z" }, + { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985, upload_time = "2024-12-18T11:31:19.901Z" }, + { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715, upload_time = "2024-12-18T11:31:22.821Z" }, ] [[package]] @@ -2525,18 +2541,18 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473 } +sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473, upload_time = "2025-02-21T13:45:58.262Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451 }, + { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451, upload_time = "2025-02-21T13:45:55.519Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload_time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload_time = "2025-01-06T17:26:25.553Z" }, ] [[package]] @@ -2556,27 +2572,27 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475 }, - { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645 }, - { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989 }, - { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664 }, - { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952 }, - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, - { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638 }, - { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812 }, - { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349 }, - { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880 }, +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994, upload_time = "2025-03-04T15:17:40.692Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475, upload_time = "2025-03-04T15:16:42.905Z" }, + { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645, upload_time = "2025-03-04T15:16:45.97Z" }, + { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989, upload_time = "2025-03-04T15:16:48.035Z" }, + { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664, upload_time = "2025-03-04T15:16:50.343Z" }, + { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952, upload_time = "2025-03-04T15:16:52.947Z" }, + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652, upload_time = "2025-03-04T15:16:54.37Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538, upload_time = "2025-03-04T15:16:57.415Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661, upload_time = "2025-03-04T15:16:59.762Z" }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874, upload_time = "2025-03-04T15:17:02.224Z" }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840, upload_time = "2025-03-04T15:17:04.482Z" }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132, upload_time = "2025-03-04T15:17:06.049Z" }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703, upload_time = "2025-03-04T15:17:07.45Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772, upload_time = "2025-03-04T15:17:10.419Z" }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452, upload_time = "2025-03-04T15:17:12.681Z" }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838, upload_time = "2025-03-04T15:17:14.962Z" }, + { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638, upload_time = "2025-03-04T15:17:25.507Z" }, + { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812, upload_time = "2025-03-04T15:17:27.672Z" }, + { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349, upload_time = "2025-03-04T15:17:29.356Z" }, + { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880, upload_time = "2025-03-04T15:17:30.882Z" }, ] [package.optional-dependencies] @@ -2588,9 +2604,9 @@ sql-sqlite = [ name = "pyjwt" version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload_time = "2024-11-28T03:43:29.933Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload_time = "2024-11-28T03:43:27.893Z" }, ] [package.optional-dependencies] @@ -2606,9 +2622,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload_time = "2025-04-27T23:48:29.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload_time = "2025-04-27T23:48:27.359Z" }, ] [[package]] @@ -2618,17 +2634,17 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload_time = "2022-01-07T22:05:41.134Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, - { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, - { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, - { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, - { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, - { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, - { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, - { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, - { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload_time = "2022-01-07T22:05:49.156Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload_time = "2022-01-07T22:05:50.989Z" }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload_time = "2022-01-07T22:05:52.539Z" }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload_time = "2022-01-07T22:05:54.251Z" }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload_time = "2022-01-07T22:05:56.056Z" }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload_time = "2022-01-07T22:05:57.434Z" }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload_time = "2022-01-07T22:05:58.665Z" }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload_time = "2022-01-07T22:06:00.085Z" }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload_time = "2022-01-07T22:06:01.861Z" }, ] [[package]] @@ -2640,35 +2656,35 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/ea/cba24d241858a72b58d8fcd0ad2276f9631fd4528b3062157637e43581eb/pyogrio-0.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:046eeeae12a03a3ebc3dc5ff5a87664e4f5fc0a4fb1ea5d5c45d547fa941072b", size = 15083657 }, - { url = "https://files.pythonhosted.org/packages/90/f8/a58795a2aee415c612aac8b425681d932b8983330884207fd1915d234d36/pyogrio-0.10.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:44380f4d9245c776f432526e29ce4d29238aea26adad991803c4f453474f51d3", size = 16457115 }, - { url = "https://files.pythonhosted.org/packages/45/86/74c37e3d4d000bdcd91b25929fe4abc5ad6d93d5f5fbc59a4c7d4f0ed982/pyogrio-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fd3b72b4e2dc59e264607b265c742b0c5ec2ea9e748b115f742381b28dd373", size = 23721911 }, - { url = "https://files.pythonhosted.org/packages/a6/07/35e4127a878ecdcbaaf46f0f2d068b385a454b5b0cab44ea901adc5888a0/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1fea7892f4633cab04d13563e47ec2e87dc2b5cd71b9546018d123184528c151", size = 22941003 }, - { url = "https://files.pythonhosted.org/packages/56/8b/67187ae03dce5cd6f5c5a2f41c405e77059f4cf498e0817b69cec094f022/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3539596a76eb8a9d166d6f9d3f36731a8c5bd5c43901209d89dc66b9dc00f079", size = 23861913 }, - { url = "https://files.pythonhosted.org/packages/75/ca/b31083da2e6c4b598b6609a98c655977189fe8982c36d98ea4789a938045/pyogrio-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:eac90b2501656892c63bc500c12e71f3dbf7d66ddc5a7fb05cd480d25d1b7022", size = 16171065 }, - { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526 }, - { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867 }, - { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332 }, - { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693 }, - { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952 }, - { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573 }, - { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211 }, - { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782 }, - { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832 }, - { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469 }, - { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758 }, - { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294 }, +sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950, upload_time = "2024-09-28T19:11:20.898Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/41/ea/cba24d241858a72b58d8fcd0ad2276f9631fd4528b3062157637e43581eb/pyogrio-0.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:046eeeae12a03a3ebc3dc5ff5a87664e4f5fc0a4fb1ea5d5c45d547fa941072b", size = 15083657, upload_time = "2024-09-28T19:10:10.886Z" }, + { url = "https://files.pythonhosted.org/packages/90/f8/a58795a2aee415c612aac8b425681d932b8983330884207fd1915d234d36/pyogrio-0.10.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:44380f4d9245c776f432526e29ce4d29238aea26adad991803c4f453474f51d3", size = 16457115, upload_time = "2024-09-28T19:10:13.62Z" }, + { url = "https://files.pythonhosted.org/packages/45/86/74c37e3d4d000bdcd91b25929fe4abc5ad6d93d5f5fbc59a4c7d4f0ed982/pyogrio-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fd3b72b4e2dc59e264607b265c742b0c5ec2ea9e748b115f742381b28dd373", size = 23721911, upload_time = "2024-09-28T19:10:16.384Z" }, + { url = "https://files.pythonhosted.org/packages/a6/07/35e4127a878ecdcbaaf46f0f2d068b385a454b5b0cab44ea901adc5888a0/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1fea7892f4633cab04d13563e47ec2e87dc2b5cd71b9546018d123184528c151", size = 22941003, upload_time = "2024-09-28T20:42:01.627Z" }, + { url = "https://files.pythonhosted.org/packages/56/8b/67187ae03dce5cd6f5c5a2f41c405e77059f4cf498e0817b69cec094f022/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3539596a76eb8a9d166d6f9d3f36731a8c5bd5c43901209d89dc66b9dc00f079", size = 23861913, upload_time = "2024-09-28T19:10:19.269Z" }, + { url = "https://files.pythonhosted.org/packages/75/ca/b31083da2e6c4b598b6609a98c655977189fe8982c36d98ea4789a938045/pyogrio-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:eac90b2501656892c63bc500c12e71f3dbf7d66ddc5a7fb05cd480d25d1b7022", size = 16171065, upload_time = "2024-09-28T19:10:21.982Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526, upload_time = "2024-09-28T19:10:24.621Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867, upload_time = "2024-09-28T19:10:28.711Z" }, + { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332, upload_time = "2024-09-28T19:10:31.692Z" }, + { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693, upload_time = "2024-09-28T20:42:11.989Z" }, + { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952, upload_time = "2024-09-28T19:10:34.13Z" }, + { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573, upload_time = "2024-09-28T19:10:37.06Z" }, + { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211, upload_time = "2024-09-28T19:10:40.059Z" }, + { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782, upload_time = "2024-09-28T19:10:42.373Z" }, + { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832, upload_time = "2024-09-28T19:10:44.81Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469, upload_time = "2024-09-28T20:42:22.049Z" }, + { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758, upload_time = "2024-09-28T19:10:47.873Z" }, + { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294, upload_time = "2024-09-28T19:10:50.75Z" }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload_time = "2025-03-25T05:01:28.114Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload_time = "2025-03-25T05:01:24.908Z" }, ] [[package]] @@ -2678,32 +2694,32 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/a3/c4cd4bba5b336075f145fe784fcaf4ef56ffbc979833303303e7a659dda2/pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e", size = 6262524 }, - { url = "https://files.pythonhosted.org/packages/40/45/4fdf18f4cc1995f1992771d2a51cf186a9d7a8ec973c9693f8453850c707/pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169", size = 4665102 }, - { url = "https://files.pythonhosted.org/packages/0c/d2/360eb127380106cee83569954ae696b88a891c804d7a93abe3fbc15f5976/pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b", size = 9432667 }, - { url = "https://files.pythonhosted.org/packages/76/a5/c6e11b9a99ce146741fb4d184d5c468446c6d6015b183cae82ac822a6cfa/pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee", size = 9259185 }, - { url = "https://files.pythonhosted.org/packages/41/56/a3c15c42145797a99363fa0fdb4e9805dccb8b4a76a6d7b2cdf36ebcc2a1/pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d", size = 10469103 }, - { url = "https://files.pythonhosted.org/packages/ef/73/c9194c2802fefe2a4fd4230bdd5ab083e7604e93c64d0356fa49c363bad6/pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb", size = 10401391 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/ce8bb5b9251b04d7c22d63619bb3db3d2397f79000a9ae05b3fd86a5837e/pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158", size = 5869997 }, - { url = "https://files.pythonhosted.org/packages/09/6a/ca145467fd2e5b21e3d5b8c2b9645dcfb3b68f08b62417699a1f5689008e/pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3", size = 6278581 }, - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload_time = "2025-02-16T04:28:46.621Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/25/a3/c4cd4bba5b336075f145fe784fcaf4ef56ffbc979833303303e7a659dda2/pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e", size = 6262524, upload_time = "2025-02-16T04:27:19.725Z" }, + { url = "https://files.pythonhosted.org/packages/40/45/4fdf18f4cc1995f1992771d2a51cf186a9d7a8ec973c9693f8453850c707/pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169", size = 4665102, upload_time = "2025-02-16T04:27:24.428Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d2/360eb127380106cee83569954ae696b88a891c804d7a93abe3fbc15f5976/pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b", size = 9432667, upload_time = "2025-02-16T04:27:27.04Z" }, + { url = "https://files.pythonhosted.org/packages/76/a5/c6e11b9a99ce146741fb4d184d5c468446c6d6015b183cae82ac822a6cfa/pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee", size = 9259185, upload_time = "2025-02-16T04:27:30.35Z" }, + { url = "https://files.pythonhosted.org/packages/41/56/a3c15c42145797a99363fa0fdb4e9805dccb8b4a76a6d7b2cdf36ebcc2a1/pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d", size = 10469103, upload_time = "2025-02-16T04:27:33.542Z" }, + { url = "https://files.pythonhosted.org/packages/ef/73/c9194c2802fefe2a4fd4230bdd5ab083e7604e93c64d0356fa49c363bad6/pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb", size = 10401391, upload_time = "2025-02-16T04:27:36.051Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/ce8bb5b9251b04d7c22d63619bb3db3d2397f79000a9ae05b3fd86a5837e/pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158", size = 5869997, upload_time = "2025-02-16T04:27:38.302Z" }, + { url = "https://files.pythonhosted.org/packages/09/6a/ca145467fd2e5b21e3d5b8c2b9645dcfb3b68f08b62417699a1f5689008e/pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3", size = 6278581, upload_time = "2025-02-16T04:27:41.051Z" }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload_time = "2025-02-16T04:27:44.539Z" }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload_time = "2025-02-16T04:27:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload_time = "2025-02-16T04:27:49.239Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload_time = "2025-02-16T04:27:52.65Z" }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload_time = "2025-02-16T04:27:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload_time = "2025-02-16T04:27:58.343Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload_time = "2025-02-16T04:28:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload_time = "2025-02-16T04:28:04.988Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload_time = "2025-02-16T04:28:09.036Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload_time = "2025-02-16T04:28:10.944Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload_time = "2025-02-16T04:28:13.342Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload_time = "2025-02-16T04:28:15.818Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload_time = "2025-02-16T04:28:18.338Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload_time = "2025-02-16T04:28:20.822Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload_time = "2025-02-16T04:28:23.303Z" }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload_time = "2025-02-16T04:28:25.227Z" }, ] [[package]] @@ -2718,9 +2734,9 @@ dependencies = [ { name = "pluggy" }, { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload_time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload_time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -2730,27 +2746,27 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload_time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload_time = "2025-03-07T07:08:27.301Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload_time = "2025-03-07T07:08:25.627Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, ] [[package]] @@ -2758,61 +2774,61 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240 }, - { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854 }, - { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963 }, - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240, upload_time = "2025-03-17T00:55:46.783Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854, upload_time = "2025-03-17T00:55:48.783Z" }, + { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963, upload_time = "2025-03-17T00:55:50.969Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload_time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload_time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload_time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload_time = "2025-02-03T21:53:23.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161 }, - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, + { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload_time = "2025-02-03T21:56:25.008Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload_time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload_time = "2025-02-03T21:56:52.476Z" }, ] [[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/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199 }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758 }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463 }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280 }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239 }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802 }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527 }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052 }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774 }, - { 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload_time = "2024-08-06T20:33:50.674Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload_time = "2024-08-06T20:31:40.178Z" }, + { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload_time = "2024-08-06T20:31:42.173Z" }, + { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload_time = "2024-08-06T20:31:44.263Z" }, + { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload_time = "2024-08-06T20:31:50.199Z" }, + { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload_time = "2024-08-06T20:31:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload_time = "2024-08-06T20:31:53.836Z" }, + { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload_time = "2024-08-06T20:31:55.565Z" }, + { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload_time = "2024-08-06T20:31:56.914Z" }, + { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload_time = "2024-08-06T20:31:58.304Z" }, + { 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, upload_time = "2024-08-06T20:32:03.408Z" }, + { 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, upload_time = "2024-08-06T20:32:04.926Z" }, + { 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, upload_time = "2024-08-06T20:32:06.459Z" }, + { 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, upload_time = "2024-08-06T20:32:08.338Z" }, + { 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, upload_time = "2024-08-06T20:32:14.124Z" }, + { 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, upload_time = "2024-08-06T20:32:16.17Z" }, + { 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, upload_time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload_time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload_time = "2024-08-06T20:32:21.273Z" }, + { 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, upload_time = "2024-08-06T20:32:25.131Z" }, + { 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, upload_time = "2024-08-06T20:32:26.511Z" }, + { 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, upload_time = "2024-08-06T20:32:28.363Z" }, + { 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, upload_time = "2024-08-06T20:32:30.058Z" }, + { 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, upload_time = "2024-08-06T20:32:31.881Z" }, + { 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, upload_time = "2024-08-06T20:32:37.083Z" }, + { 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, upload_time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, ] [[package]] @@ -2822,9 +2838,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631, upload_time = "2020-11-12T02:38:26.239Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911, upload_time = "2020-11-12T02:38:24.638Z" }, ] [[package]] @@ -2834,51 +2850,51 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238 }, - { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848 }, - { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299 }, - { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920 }, - { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514 }, - { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494 }, - { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525 }, - { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659 }, - { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348 }, - { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838 }, - { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565 }, - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, - { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408 }, - { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580 }, - { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250 }, - { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758 }, - { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371 }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload_time = "2025-04-04T12:05:44.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238, upload_time = "2025-04-04T12:03:07.022Z" }, + { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848, upload_time = "2025-04-04T12:03:08.591Z" }, + { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299, upload_time = "2025-04-04T12:03:10Z" }, + { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920, upload_time = "2025-04-04T12:03:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514, upload_time = "2025-04-04T12:03:13.013Z" }, + { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494, upload_time = "2025-04-04T12:03:14.795Z" }, + { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525, upload_time = "2025-04-04T12:03:16.246Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659, upload_time = "2025-04-04T12:03:17.652Z" }, + { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348, upload_time = "2025-04-04T12:03:19.384Z" }, + { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838, upload_time = "2025-04-04T12:03:20.795Z" }, + { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565, upload_time = "2025-04-04T12:03:22.676Z" }, + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload_time = "2025-04-04T12:03:24.358Z" }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload_time = "2025-04-04T12:03:25.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload_time = "2025-04-04T12:03:27.625Z" }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload_time = "2025-04-04T12:03:29.004Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload_time = "2025-04-04T12:03:31.032Z" }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload_time = "2025-04-04T12:03:32.687Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload_time = "2025-04-04T12:03:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload_time = "2025-04-04T12:03:35.478Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload_time = "2025-04-04T12:03:36.846Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload_time = "2025-04-04T12:03:38.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload_time = "2025-04-04T12:03:40.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload_time = "2025-04-04T12:03:41.954Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload_time = "2025-04-04T12:03:43.45Z" }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload_time = "2025-04-04T12:03:45.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload_time = "2025-04-04T12:03:47.188Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload_time = "2025-04-04T12:03:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload_time = "2025-04-04T12:03:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload_time = "2025-04-04T12:03:52.473Z" }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload_time = "2025-04-04T12:03:54Z" }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload_time = "2025-04-04T12:03:55.815Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload_time = "2025-04-04T12:03:57.231Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload_time = "2025-04-04T12:03:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408, upload_time = "2025-04-04T12:05:04.569Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580, upload_time = "2025-04-04T12:05:06.283Z" }, + { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250, upload_time = "2025-04-04T12:05:07.88Z" }, + { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758, upload_time = "2025-04-04T12:05:09.483Z" }, + { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371, upload_time = "2025-04-04T12:05:11.062Z" }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload_time = "2025-04-04T12:05:13.3Z" }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload_time = "2025-04-04T12:05:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload_time = "2025-04-04T12:05:17.376Z" }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload_time = "2025-04-04T12:05:19.19Z" }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload_time = "2025-04-04T12:05:20.702Z" }, ] [[package]] @@ -2890,9 +2906,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, ] [[package]] @@ -2905,9 +2921,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload_time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload_time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -2917,18 +2933,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload_time = "2021-05-12T16:37:54.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload_time = "2021-05-12T16:37:52.536Z" }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload_time = "2019-10-28T16:00:19.144Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload_time = "2019-10-28T16:00:13.976Z" }, ] [[package]] @@ -2940,104 +2956,104 @@ dependencies = [ { name = "pygments" }, { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload_time = "2024-11-01T16:43:57.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload_time = "2024-11-01T16:43:55.817Z" }, ] [[package]] name = "rpds-py" version = "0.24.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/cbc43b220c9deb536b07fbd598c97d463bbb7afb788851891252fc920742/rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724", size = 377531 }, - { url = "https://files.pythonhosted.org/packages/42/15/cc4b09ef160483e49c3aab3b56f3d375eadf19c87c48718fb0147e86a446/rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b", size = 362273 }, - { url = "https://files.pythonhosted.org/packages/8c/a2/67718a188a88dbd5138d959bed6efe1cc7413a4caa8283bd46477ed0d1ad/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8acd55bd5b071156bae57b555f5d33697998752673b9de554dd82f5b5352727", size = 388111 }, - { url = "https://files.pythonhosted.org/packages/e5/e6/cbf1d3163405ad5f4a1a6d23f80245f2204d0c743b18525f34982dec7f4d/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7e80d375134ddb04231a53800503752093dbb65dad8dabacce2c84cccc78e964", size = 394447 }, - { url = "https://files.pythonhosted.org/packages/21/bb/4fe220ccc8a549b38b9e9cec66212dc3385a82a5ee9e37b54411cce4c898/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60748789e028d2a46fc1c70750454f83c6bdd0d05db50f5ae83e2db500b34da5", size = 448028 }, - { url = "https://files.pythonhosted.org/packages/a5/41/d2d6e0fd774818c4cadb94185d30cf3768de1c2a9e0143fc8bc6ce59389e/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1daf5bf6c2be39654beae83ee6b9a12347cb5aced9a29eecf12a2d25fff664", size = 447410 }, - { url = "https://files.pythonhosted.org/packages/a7/a7/6d04d438f53d8bb2356bb000bea9cf5c96a9315e405b577117e344cc7404/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b221c2457d92a1fb3c97bee9095c874144d196f47c038462ae6e4a14436f7bc", size = 389531 }, - { url = "https://files.pythonhosted.org/packages/23/be/72e6df39bd7ca5a66799762bf54d8e702483fdad246585af96723109d486/rpds_py-0.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66420986c9afff67ef0c5d1e4cdc2d0e5262f53ad11e4f90e5e22448df485bf0", size = 420099 }, - { url = "https://files.pythonhosted.org/packages/8c/c9/ca100cd4688ee0aa266197a5cb9f685231676dd7d573041ca53787b23f4e/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:43dba99f00f1d37b2a0265a259592d05fcc8e7c19d140fe51c6e6f16faabeb1f", size = 564950 }, - { url = "https://files.pythonhosted.org/packages/05/98/908cd95686d33b3ac8ac2e582d7ae38e2c3aa2c0377bf1f5663bafd1ffb2/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a88c0d17d039333a41d9bf4616bd062f0bd7aa0edeb6cafe00a2fc2a804e944f", size = 591778 }, - { url = "https://files.pythonhosted.org/packages/7b/ac/e143726f1dd3215efcb974b50b03bd08a8a1556b404a0a7872af6d197e57/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc31e13ce212e14a539d430428cd365e74f8b2d534f8bc22dd4c9c55b277b875", size = 560421 }, - { url = "https://files.pythonhosted.org/packages/60/28/add1c1d2fcd5aa354f7225d036d4492261759a22d449cff14841ef36a514/rpds_py-0.24.0-cp310-cp310-win32.whl", hash = "sha256:fc2c1e1b00f88317d9de6b2c2b39b012ebbfe35fe5e7bef980fd2a91f6100a07", size = 222089 }, - { url = "https://files.pythonhosted.org/packages/b0/ac/81f8066c6de44c507caca488ba336ae30d35d57f61fe10578824d1a70196/rpds_py-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0145295ca415668420ad142ee42189f78d27af806fcf1f32a18e51d47dd2052", size = 234622 }, - { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679 }, - { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571 }, - { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012 }, - { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730 }, - { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264 }, - { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813 }, - { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416 }, - { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236 }, - { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016 }, - { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123 }, - { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256 }, - { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718 }, - { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945 }, - { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935 }, - { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817 }, - { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983 }, - { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719 }, - { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546 }, - { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695 }, - { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218 }, - { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062 }, - { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262 }, - { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, - { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, - { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, - { url = "https://files.pythonhosted.org/packages/99/48/11dae46d0c7f7e156ca0971a83f89c510af0316cd5d42c771b7cef945f0c/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a", size = 378224 }, - { url = "https://files.pythonhosted.org/packages/33/18/e8398d255369e35d312942f3bb8ecaff013c44968904891be2ab63b3aa94/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399", size = 363252 }, - { url = "https://files.pythonhosted.org/packages/17/39/dd73ba691f4df3e6834bf982de214086ac3359ab3ac035adfb30041570e3/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098", size = 388871 }, - { url = "https://files.pythonhosted.org/packages/2f/2e/da0530b25cabd0feca2a759b899d2df325069a94281eeea8ac44c6cfeff7/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:208b3a70a98cf3710e97cabdc308a51cd4f28aa6e7bb11de3d56cd8b74bab98d", size = 394766 }, - { url = "https://files.pythonhosted.org/packages/4c/ee/dd1c5040a431beb40fad4a5d7868acf343444b0bc43e627c71df2506538b/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbc4362e06f950c62cad3d4abf1191021b2ffaf0b31ac230fbf0526453eee75e", size = 448712 }, - { url = "https://files.pythonhosted.org/packages/f5/ec/6b93ffbb686be948e4d91ec76f4e6757f8551034b2a8176dd848103a1e34/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebea2821cdb5f9fef44933617be76185b80150632736f3d76e54829ab4a3b4d1", size = 447150 }, - { url = "https://files.pythonhosted.org/packages/55/d5/a1c23760adad85b432df074ced6f910dd28f222b8c60aeace5aeb9a6654e/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4df06c35465ef4d81799999bba810c68d29972bf1c31db61bfdb81dd9d5bb", size = 390662 }, - { url = "https://files.pythonhosted.org/packages/a5/f3/419cb1f9bfbd3a48c256528c156e00f3349e3edce5ad50cbc141e71f66a5/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3aa13bdf38630da298f2e0d77aca967b200b8cc1473ea05248f6c5e9c9bdb44", size = 421351 }, - { url = "https://files.pythonhosted.org/packages/98/8e/62d1a55078e5ede0b3b09f35e751fa35924a34a0d44d7c760743383cd54a/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:041f00419e1da7a03c46042453598479f45be3d787eb837af382bfc169c0db33", size = 566074 }, - { url = "https://files.pythonhosted.org/packages/fc/69/b7d1003166d78685da032b3c4ff1599fa536a3cfe6e5ce2da87c9c431906/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8754d872a5dfc3c5bf9c0e059e8107451364a30d9fd50f1f1a85c4fb9481164", size = 592398 }, - { url = "https://files.pythonhosted.org/packages/ea/a8/1c98bc99338c37faadd28dd667d336df7409d77b4da999506a0b6b1c0aa2/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:896c41007931217a343eff197c34513c154267636c8056fb409eafd494c3dcdc", size = 561114 }, - { url = "https://files.pythonhosted.org/packages/2b/41/65c91443685a4c7b5f1dd271beadc4a3e063d57c3269221548dd9416e15c/rpds_py-0.24.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:92558d37d872e808944c3c96d0423b8604879a3d1c86fdad508d7ed91ea547d5", size = 235548 }, - { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386 }, - { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440 }, - { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816 }, - { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058 }, - { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692 }, - { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462 }, - { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460 }, - { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609 }, - { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818 }, - { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627 }, - { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885 }, +sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863, upload_time = "2025-03-26T14:56:01.518Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/21/cbc43b220c9deb536b07fbd598c97d463bbb7afb788851891252fc920742/rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724", size = 377531, upload_time = "2025-03-26T14:52:41.754Z" }, + { url = "https://files.pythonhosted.org/packages/42/15/cc4b09ef160483e49c3aab3b56f3d375eadf19c87c48718fb0147e86a446/rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b", size = 362273, upload_time = "2025-03-26T14:52:44.341Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a2/67718a188a88dbd5138d959bed6efe1cc7413a4caa8283bd46477ed0d1ad/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8acd55bd5b071156bae57b555f5d33697998752673b9de554dd82f5b5352727", size = 388111, upload_time = "2025-03-26T14:52:46.944Z" }, + { url = "https://files.pythonhosted.org/packages/e5/e6/cbf1d3163405ad5f4a1a6d23f80245f2204d0c743b18525f34982dec7f4d/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7e80d375134ddb04231a53800503752093dbb65dad8dabacce2c84cccc78e964", size = 394447, upload_time = "2025-03-26T14:52:48.753Z" }, + { url = "https://files.pythonhosted.org/packages/21/bb/4fe220ccc8a549b38b9e9cec66212dc3385a82a5ee9e37b54411cce4c898/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60748789e028d2a46fc1c70750454f83c6bdd0d05db50f5ae83e2db500b34da5", size = 448028, upload_time = "2025-03-26T14:52:50.757Z" }, + { url = "https://files.pythonhosted.org/packages/a5/41/d2d6e0fd774818c4cadb94185d30cf3768de1c2a9e0143fc8bc6ce59389e/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1daf5bf6c2be39654beae83ee6b9a12347cb5aced9a29eecf12a2d25fff664", size = 447410, upload_time = "2025-03-26T14:52:52.292Z" }, + { url = "https://files.pythonhosted.org/packages/a7/a7/6d04d438f53d8bb2356bb000bea9cf5c96a9315e405b577117e344cc7404/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b221c2457d92a1fb3c97bee9095c874144d196f47c038462ae6e4a14436f7bc", size = 389531, upload_time = "2025-03-26T14:52:54.233Z" }, + { url = "https://files.pythonhosted.org/packages/23/be/72e6df39bd7ca5a66799762bf54d8e702483fdad246585af96723109d486/rpds_py-0.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66420986c9afff67ef0c5d1e4cdc2d0e5262f53ad11e4f90e5e22448df485bf0", size = 420099, upload_time = "2025-03-26T14:52:56.135Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c9/ca100cd4688ee0aa266197a5cb9f685231676dd7d573041ca53787b23f4e/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:43dba99f00f1d37b2a0265a259592d05fcc8e7c19d140fe51c6e6f16faabeb1f", size = 564950, upload_time = "2025-03-26T14:52:57.583Z" }, + { url = "https://files.pythonhosted.org/packages/05/98/908cd95686d33b3ac8ac2e582d7ae38e2c3aa2c0377bf1f5663bafd1ffb2/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a88c0d17d039333a41d9bf4616bd062f0bd7aa0edeb6cafe00a2fc2a804e944f", size = 591778, upload_time = "2025-03-26T14:52:59.518Z" }, + { url = "https://files.pythonhosted.org/packages/7b/ac/e143726f1dd3215efcb974b50b03bd08a8a1556b404a0a7872af6d197e57/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc31e13ce212e14a539d430428cd365e74f8b2d534f8bc22dd4c9c55b277b875", size = 560421, upload_time = "2025-03-26T14:53:01.422Z" }, + { url = "https://files.pythonhosted.org/packages/60/28/add1c1d2fcd5aa354f7225d036d4492261759a22d449cff14841ef36a514/rpds_py-0.24.0-cp310-cp310-win32.whl", hash = "sha256:fc2c1e1b00f88317d9de6b2c2b39b012ebbfe35fe5e7bef980fd2a91f6100a07", size = 222089, upload_time = "2025-03-26T14:53:02.859Z" }, + { url = "https://files.pythonhosted.org/packages/b0/ac/81f8066c6de44c507caca488ba336ae30d35d57f61fe10578824d1a70196/rpds_py-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0145295ca415668420ad142ee42189f78d27af806fcf1f32a18e51d47dd2052", size = 234622, upload_time = "2025-03-26T14:53:04.676Z" }, + { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679, upload_time = "2025-03-26T14:53:06.557Z" }, + { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571, upload_time = "2025-03-26T14:53:08.439Z" }, + { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012, upload_time = "2025-03-26T14:53:10.314Z" }, + { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730, upload_time = "2025-03-26T14:53:11.953Z" }, + { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264, upload_time = "2025-03-26T14:53:13.42Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813, upload_time = "2025-03-26T14:53:15.036Z" }, + { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438, upload_time = "2025-03-26T14:53:17.037Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416, upload_time = "2025-03-26T14:53:18.671Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236, upload_time = "2025-03-26T14:53:20.357Z" }, + { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016, upload_time = "2025-03-26T14:53:22.216Z" }, + { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123, upload_time = "2025-03-26T14:53:23.733Z" }, + { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256, upload_time = "2025-03-26T14:53:25.217Z" }, + { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718, upload_time = "2025-03-26T14:53:26.631Z" }, + { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945, upload_time = "2025-03-26T14:53:28.149Z" }, + { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935, upload_time = "2025-03-26T14:53:29.684Z" }, + { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817, upload_time = "2025-03-26T14:53:31.177Z" }, + { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983, upload_time = "2025-03-26T14:53:33.163Z" }, + { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719, upload_time = "2025-03-26T14:53:34.721Z" }, + { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546, upload_time = "2025-03-26T14:53:36.26Z" }, + { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695, upload_time = "2025-03-26T14:53:37.728Z" }, + { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218, upload_time = "2025-03-26T14:53:39.326Z" }, + { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062, upload_time = "2025-03-26T14:53:40.885Z" }, + { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262, upload_time = "2025-03-26T14:53:42.544Z" }, + { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306, upload_time = "2025-03-26T14:53:44.2Z" }, + { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281, upload_time = "2025-03-26T14:53:45.769Z" }, + { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719, upload_time = "2025-03-26T14:53:47.187Z" }, + { url = "https://files.pythonhosted.org/packages/99/48/11dae46d0c7f7e156ca0971a83f89c510af0316cd5d42c771b7cef945f0c/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a", size = 378224, upload_time = "2025-03-26T14:54:58.78Z" }, + { url = "https://files.pythonhosted.org/packages/33/18/e8398d255369e35d312942f3bb8ecaff013c44968904891be2ab63b3aa94/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399", size = 363252, upload_time = "2025-03-26T14:55:00.359Z" }, + { url = "https://files.pythonhosted.org/packages/17/39/dd73ba691f4df3e6834bf982de214086ac3359ab3ac035adfb30041570e3/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098", size = 388871, upload_time = "2025-03-26T14:55:02.253Z" }, + { url = "https://files.pythonhosted.org/packages/2f/2e/da0530b25cabd0feca2a759b899d2df325069a94281eeea8ac44c6cfeff7/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:208b3a70a98cf3710e97cabdc308a51cd4f28aa6e7bb11de3d56cd8b74bab98d", size = 394766, upload_time = "2025-03-26T14:55:04.05Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ee/dd1c5040a431beb40fad4a5d7868acf343444b0bc43e627c71df2506538b/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbc4362e06f950c62cad3d4abf1191021b2ffaf0b31ac230fbf0526453eee75e", size = 448712, upload_time = "2025-03-26T14:55:06.03Z" }, + { url = "https://files.pythonhosted.org/packages/f5/ec/6b93ffbb686be948e4d91ec76f4e6757f8551034b2a8176dd848103a1e34/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebea2821cdb5f9fef44933617be76185b80150632736f3d76e54829ab4a3b4d1", size = 447150, upload_time = "2025-03-26T14:55:08.098Z" }, + { url = "https://files.pythonhosted.org/packages/55/d5/a1c23760adad85b432df074ced6f910dd28f222b8c60aeace5aeb9a6654e/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4df06c35465ef4d81799999bba810c68d29972bf1c31db61bfdb81dd9d5bb", size = 390662, upload_time = "2025-03-26T14:55:09.781Z" }, + { url = "https://files.pythonhosted.org/packages/a5/f3/419cb1f9bfbd3a48c256528c156e00f3349e3edce5ad50cbc141e71f66a5/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3aa13bdf38630da298f2e0d77aca967b200b8cc1473ea05248f6c5e9c9bdb44", size = 421351, upload_time = "2025-03-26T14:55:11.477Z" }, + { url = "https://files.pythonhosted.org/packages/98/8e/62d1a55078e5ede0b3b09f35e751fa35924a34a0d44d7c760743383cd54a/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:041f00419e1da7a03c46042453598479f45be3d787eb837af382bfc169c0db33", size = 566074, upload_time = "2025-03-26T14:55:13.386Z" }, + { url = "https://files.pythonhosted.org/packages/fc/69/b7d1003166d78685da032b3c4ff1599fa536a3cfe6e5ce2da87c9c431906/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8754d872a5dfc3c5bf9c0e059e8107451364a30d9fd50f1f1a85c4fb9481164", size = 592398, upload_time = "2025-03-26T14:55:15.202Z" }, + { url = "https://files.pythonhosted.org/packages/ea/a8/1c98bc99338c37faadd28dd667d336df7409d77b4da999506a0b6b1c0aa2/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:896c41007931217a343eff197c34513c154267636c8056fb409eafd494c3dcdc", size = 561114, upload_time = "2025-03-26T14:55:17.072Z" }, + { url = "https://files.pythonhosted.org/packages/2b/41/65c91443685a4c7b5f1dd271beadc4a3e063d57c3269221548dd9416e15c/rpds_py-0.24.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:92558d37d872e808944c3c96d0423b8604879a3d1c86fdad508d7ed91ea547d5", size = 235548, upload_time = "2025-03-26T14:55:18.707Z" }, + { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386, upload_time = "2025-03-26T14:55:20.381Z" }, + { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440, upload_time = "2025-03-26T14:55:22.121Z" }, + { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816, upload_time = "2025-03-26T14:55:23.737Z" }, + { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058, upload_time = "2025-03-26T14:55:25.468Z" }, + { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692, upload_time = "2025-03-26T14:55:27.535Z" }, + { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462, upload_time = "2025-03-26T14:55:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460, upload_time = "2025-03-26T14:55:31.017Z" }, + { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609, upload_time = "2025-03-26T14:55:32.84Z" }, + { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818, upload_time = "2025-03-26T14:55:34.538Z" }, + { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627, upload_time = "2025-03-26T14:55:36.26Z" }, + { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885, upload_time = "2025-03-26T14:55:38Z" }, ] [[package]] name = "ruff" version = "0.11.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/89/6f9c9674818ac2e9cc2f2b35b704b7768656e6b7c139064fc7ba8fbc99f1/ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4", size = 4054861 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/89/6f9c9674818ac2e9cc2f2b35b704b7768656e6b7c139064fc7ba8fbc99f1/ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4", size = 4054861, upload_time = "2025-04-24T18:49:37.007Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/ec/21927cb906c5614b786d1621dba405e3d44f6e473872e6df5d1a6bca0455/ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c", size = 10245403 }, - { url = "https://files.pythonhosted.org/packages/e2/af/fec85b6c2c725bcb062a354dd7cbc1eed53c33ff3aa665165871c9c16ddf/ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee", size = 11007166 }, - { url = "https://files.pythonhosted.org/packages/31/9a/2d0d260a58e81f388800343a45898fd8df73c608b8261c370058b675319a/ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada", size = 10378076 }, - { url = "https://files.pythonhosted.org/packages/c2/c4/9b09b45051404d2e7dd6d9dbcbabaa5ab0093f9febcae664876a77b9ad53/ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64", size = 10557138 }, - { url = "https://files.pythonhosted.org/packages/5e/5e/f62a1b6669870a591ed7db771c332fabb30f83c967f376b05e7c91bccd14/ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201", size = 10095726 }, - { url = "https://files.pythonhosted.org/packages/45/59/a7aa8e716f4cbe07c3500a391e58c52caf665bb242bf8be42c62adef649c/ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6", size = 11672265 }, - { url = "https://files.pythonhosted.org/packages/dd/e3/101a8b707481f37aca5f0fcc3e42932fa38b51add87bfbd8e41ab14adb24/ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4", size = 12331418 }, - { url = "https://files.pythonhosted.org/packages/dd/71/037f76cbe712f5cbc7b852e4916cd3cf32301a30351818d32ab71580d1c0/ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e", size = 11794506 }, - { url = "https://files.pythonhosted.org/packages/ca/de/e450b6bab1fc60ef263ef8fcda077fb4977601184877dce1c59109356084/ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63", size = 13939084 }, - { url = "https://files.pythonhosted.org/packages/0e/2c/1e364cc92970075d7d04c69c928430b23e43a433f044474f57e425cbed37/ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502", size = 11450441 }, - { url = "https://files.pythonhosted.org/packages/9d/7d/1b048eb460517ff9accd78bca0fa6ae61df2b276010538e586f834f5e402/ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92", size = 10441060 }, - { url = "https://files.pythonhosted.org/packages/3a/57/8dc6ccfd8380e5ca3d13ff7591e8ba46a3b330323515a4996b991b10bd5d/ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94", size = 10058689 }, - { url = "https://files.pythonhosted.org/packages/23/bf/20487561ed72654147817885559ba2aa705272d8b5dee7654d3ef2dbf912/ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6", size = 11073703 }, - { url = "https://files.pythonhosted.org/packages/9d/27/04f2db95f4ef73dccedd0c21daf9991cc3b7f29901a4362057b132075aa4/ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6", size = 11532822 }, - { url = "https://files.pythonhosted.org/packages/e1/72/43b123e4db52144c8add336581de52185097545981ff6e9e58a21861c250/ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26", size = 10362436 }, - { url = "https://files.pythonhosted.org/packages/c5/a0/3e58cd76fdee53d5c8ce7a56d84540833f924ccdf2c7d657cb009e604d82/ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a", size = 11566676 }, - { url = "https://files.pythonhosted.org/packages/68/ca/69d7c7752bce162d1516e5592b1cc6b6668e9328c0d270609ddbeeadd7cf/ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177", size = 10677936 }, + { url = "https://files.pythonhosted.org/packages/b4/ec/21927cb906c5614b786d1621dba405e3d44f6e473872e6df5d1a6bca0455/ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c", size = 10245403, upload_time = "2025-04-24T18:48:40.459Z" }, + { url = "https://files.pythonhosted.org/packages/e2/af/fec85b6c2c725bcb062a354dd7cbc1eed53c33ff3aa665165871c9c16ddf/ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee", size = 11007166, upload_time = "2025-04-24T18:48:44.742Z" }, + { url = "https://files.pythonhosted.org/packages/31/9a/2d0d260a58e81f388800343a45898fd8df73c608b8261c370058b675319a/ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada", size = 10378076, upload_time = "2025-04-24T18:48:47.918Z" }, + { url = "https://files.pythonhosted.org/packages/c2/c4/9b09b45051404d2e7dd6d9dbcbabaa5ab0093f9febcae664876a77b9ad53/ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64", size = 10557138, upload_time = "2025-04-24T18:48:51.707Z" }, + { url = "https://files.pythonhosted.org/packages/5e/5e/f62a1b6669870a591ed7db771c332fabb30f83c967f376b05e7c91bccd14/ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201", size = 10095726, upload_time = "2025-04-24T18:48:54.243Z" }, + { url = "https://files.pythonhosted.org/packages/45/59/a7aa8e716f4cbe07c3500a391e58c52caf665bb242bf8be42c62adef649c/ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6", size = 11672265, upload_time = "2025-04-24T18:48:57.639Z" }, + { url = "https://files.pythonhosted.org/packages/dd/e3/101a8b707481f37aca5f0fcc3e42932fa38b51add87bfbd8e41ab14adb24/ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4", size = 12331418, upload_time = "2025-04-24T18:49:00.697Z" }, + { url = "https://files.pythonhosted.org/packages/dd/71/037f76cbe712f5cbc7b852e4916cd3cf32301a30351818d32ab71580d1c0/ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e", size = 11794506, upload_time = "2025-04-24T18:49:03.545Z" }, + { url = "https://files.pythonhosted.org/packages/ca/de/e450b6bab1fc60ef263ef8fcda077fb4977601184877dce1c59109356084/ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63", size = 13939084, upload_time = "2025-04-24T18:49:07.159Z" }, + { url = "https://files.pythonhosted.org/packages/0e/2c/1e364cc92970075d7d04c69c928430b23e43a433f044474f57e425cbed37/ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502", size = 11450441, upload_time = "2025-04-24T18:49:11.41Z" }, + { url = "https://files.pythonhosted.org/packages/9d/7d/1b048eb460517ff9accd78bca0fa6ae61df2b276010538e586f834f5e402/ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92", size = 10441060, upload_time = "2025-04-24T18:49:14.184Z" }, + { url = "https://files.pythonhosted.org/packages/3a/57/8dc6ccfd8380e5ca3d13ff7591e8ba46a3b330323515a4996b991b10bd5d/ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94", size = 10058689, upload_time = "2025-04-24T18:49:17.559Z" }, + { url = "https://files.pythonhosted.org/packages/23/bf/20487561ed72654147817885559ba2aa705272d8b5dee7654d3ef2dbf912/ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6", size = 11073703, upload_time = "2025-04-24T18:49:20.247Z" }, + { url = "https://files.pythonhosted.org/packages/9d/27/04f2db95f4ef73dccedd0c21daf9991cc3b7f29901a4362057b132075aa4/ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6", size = 11532822, upload_time = "2025-04-24T18:49:23.765Z" }, + { url = "https://files.pythonhosted.org/packages/e1/72/43b123e4db52144c8add336581de52185097545981ff6e9e58a21861c250/ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26", size = 10362436, upload_time = "2025-04-24T18:49:27.377Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a0/3e58cd76fdee53d5c8ce7a56d84540833f924ccdf2c7d657cb009e604d82/ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a", size = 11566676, upload_time = "2025-04-24T18:49:30.938Z" }, + { url = "https://files.pythonhosted.org/packages/68/ca/69d7c7752bce162d1516e5592b1cc6b6668e9328c0d270609ddbeeadd7cf/ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177", size = 10677936, upload_time = "2025-04-24T18:49:34.392Z" }, ] [[package]] @@ -3049,27 +3065,39 @@ dependencies = [ { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/df/559dc6d796c38f1b8a09a5f6dcf62a467a84f3c87a837ee07c59f60a26ad/s3fs-2025.3.2.tar.gz", hash = "sha256:6798f896ec76dd3bfd8beb89f0bb7c5263cb2760e038bae0978505cd172a307c", size = 77280 } +sdist = { url = "https://files.pythonhosted.org/packages/72/df/559dc6d796c38f1b8a09a5f6dcf62a467a84f3c87a837ee07c59f60a26ad/s3fs-2025.3.2.tar.gz", hash = "sha256:6798f896ec76dd3bfd8beb89f0bb7c5263cb2760e038bae0978505cd172a307c", size = 77280, upload_time = "2025-03-31T15:35:18.881Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/66/e1/4db0388df5655de92ce5f9b60d2bef220a58dde130e0453e5433c579986e/s3fs-2025.3.2-py3-none-any.whl", hash = "sha256:81eae3f37b4b04bcc08845d7bcc607c6ca45878813ef7e6a28d77b2688417130", size = 30485, upload_time = "2025-03-31T15:35:17.384Z" }, +] + +[[package]] +name = "s3transfer" +version = "0.11.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "botocore" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload_time = "2025-02-26T20:44:57.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/e1/4db0388df5655de92ce5f9b60d2bef220a58dde130e0453e5433c579986e/s3fs-2025.3.2-py3-none-any.whl", hash = "sha256:81eae3f37b4b04bcc08845d7bcc607c6ca45878813ef7e6a28d77b2688417130", size = 30485 }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload_time = "2025-02-26T20:44:55.509Z" }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload_time = "2024-04-07T00:01:09.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload_time = "2024-04-07T00:01:07.438Z" }, ] [[package]] name = "setuptools" version = "80.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221 } +sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221, upload_time = "2025-04-27T17:21:10.806Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907 }, + { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907, upload_time = "2025-04-27T17:21:09.175Z" }, ] [[package]] @@ -3079,77 +3107,77 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/97/7027722bec6fba6fbfdb36ff987bc368f6cd01ff91d3815bce93439ef3f5/shapely-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3e5c5e3864d4dc431dd85a8e5137ebd39c8ac287b009d3fa80a07017b29c940", size = 1826440 }, - { url = "https://files.pythonhosted.org/packages/7e/de/d2ee50a66fcff3786a00b59b99b5bf3a7ec7bb1805e1c409a1c9c1817749/shapely-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6eea89b16f5f3a064659126455d23fa3066bc3d6cd385c35214f06bf5871aa6", size = 1627651 }, - { url = "https://files.pythonhosted.org/packages/54/c9/e0ead09661f58fb9ef65826ff6af7fa4386f9e52dc25ddd36cdd019235e2/shapely-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:183174ad0b21a81ee661f05e7c47aa92ebfae01814cd3cbe54adea7a4213f5f4", size = 2891260 }, - { url = "https://files.pythonhosted.org/packages/16/6f/bcb800b2579b995bb61f429445b7328ae2336155964ca5f6c367ebd3fd17/shapely-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f239c1484af66bc14b81a76f2a8e0fada29d59010423253ff857d0ccefdaa93f", size = 3011154 }, - { url = "https://files.pythonhosted.org/packages/c5/a0/8eeaf01fff142f092b64b53c425bd11a2c2a1564a30df283d9e8eb719fcf/shapely-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6220a466d1475141dad0cd8065d2549a5c2ed3fa4e2e02fb8ea65d494cfd5b07", size = 3834153 }, - { url = "https://files.pythonhosted.org/packages/7c/45/4a0b7e55731a410f44c4f8fbc61f484e04ec78eb6490d05576ff98efec59/shapely-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4822d3ed3efb06145c34d29d5b56792f72b7d713300f603bfd5d825892c6f79f", size = 4017460 }, - { url = "https://files.pythonhosted.org/packages/bf/75/c3f3e6f5d40b9bf9390aa47d7ec56b8d56e61a30487d76d7aa06f87b3308/shapely-2.1.0-cp310-cp310-win32.whl", hash = "sha256:ea51ddf3d3c60866dca746081b56c75f34ff1b01acbd4d44269071a673c735b9", size = 1527812 }, - { url = "https://files.pythonhosted.org/packages/71/0a/2002b39da6935f361da9c6437e45e01f0ebac81f66c08c01da974227036c/shapely-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6f5e02e2cded9f4ec5709900a296c7f2cce5f8e9e9d80ba7d89ae2f4ed89d7b", size = 1707475 }, - { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974 }, - { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137 }, - { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161 }, - { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530 }, - { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208 }, - { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863 }, - { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488 }, - { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311 }, - { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732 }, - { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404 }, - { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316 }, - { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099 }, - { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873 }, - { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, - { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, - { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, +sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617, upload_time = "2025-04-03T09:15:05.725Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/97/7027722bec6fba6fbfdb36ff987bc368f6cd01ff91d3815bce93439ef3f5/shapely-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3e5c5e3864d4dc431dd85a8e5137ebd39c8ac287b009d3fa80a07017b29c940", size = 1826440, upload_time = "2025-04-03T09:13:56.755Z" }, + { url = "https://files.pythonhosted.org/packages/7e/de/d2ee50a66fcff3786a00b59b99b5bf3a7ec7bb1805e1c409a1c9c1817749/shapely-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6eea89b16f5f3a064659126455d23fa3066bc3d6cd385c35214f06bf5871aa6", size = 1627651, upload_time = "2025-04-03T09:13:58.649Z" }, + { url = "https://files.pythonhosted.org/packages/54/c9/e0ead09661f58fb9ef65826ff6af7fa4386f9e52dc25ddd36cdd019235e2/shapely-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:183174ad0b21a81ee661f05e7c47aa92ebfae01814cd3cbe54adea7a4213f5f4", size = 2891260, upload_time = "2025-04-03T09:14:00.574Z" }, + { url = "https://files.pythonhosted.org/packages/16/6f/bcb800b2579b995bb61f429445b7328ae2336155964ca5f6c367ebd3fd17/shapely-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f239c1484af66bc14b81a76f2a8e0fada29d59010423253ff857d0ccefdaa93f", size = 3011154, upload_time = "2025-04-03T09:14:02.103Z" }, + { url = "https://files.pythonhosted.org/packages/c5/a0/8eeaf01fff142f092b64b53c425bd11a2c2a1564a30df283d9e8eb719fcf/shapely-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6220a466d1475141dad0cd8065d2549a5c2ed3fa4e2e02fb8ea65d494cfd5b07", size = 3834153, upload_time = "2025-04-03T09:14:03.999Z" }, + { url = "https://files.pythonhosted.org/packages/7c/45/4a0b7e55731a410f44c4f8fbc61f484e04ec78eb6490d05576ff98efec59/shapely-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4822d3ed3efb06145c34d29d5b56792f72b7d713300f603bfd5d825892c6f79f", size = 4017460, upload_time = "2025-04-03T09:14:05.894Z" }, + { url = "https://files.pythonhosted.org/packages/bf/75/c3f3e6f5d40b9bf9390aa47d7ec56b8d56e61a30487d76d7aa06f87b3308/shapely-2.1.0-cp310-cp310-win32.whl", hash = "sha256:ea51ddf3d3c60866dca746081b56c75f34ff1b01acbd4d44269071a673c735b9", size = 1527812, upload_time = "2025-04-03T09:14:07.528Z" }, + { url = "https://files.pythonhosted.org/packages/71/0a/2002b39da6935f361da9c6437e45e01f0ebac81f66c08c01da974227036c/shapely-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6f5e02e2cded9f4ec5709900a296c7f2cce5f8e9e9d80ba7d89ae2f4ed89d7b", size = 1707475, upload_time = "2025-04-03T09:14:08.964Z" }, + { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974, upload_time = "2025-04-03T09:14:11.301Z" }, + { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137, upload_time = "2025-04-03T09:14:13.127Z" }, + { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161, upload_time = "2025-04-03T09:14:15.031Z" }, + { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530, upload_time = "2025-04-03T09:14:16.562Z" }, + { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208, upload_time = "2025-04-03T09:14:18.342Z" }, + { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863, upload_time = "2025-04-03T09:14:20.233Z" }, + { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488, upload_time = "2025-04-03T09:14:21.597Z" }, + { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311, upload_time = "2025-04-03T09:14:23.245Z" }, + { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732, upload_time = "2025-04-03T09:14:25.047Z" }, + { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404, upload_time = "2025-04-03T09:14:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316, upload_time = "2025-04-03T09:14:28.266Z" }, + { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099, upload_time = "2025-04-03T09:14:30.067Z" }, + { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873, upload_time = "2025-04-03T09:14:31.912Z" }, + { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004, upload_time = "2025-04-03T09:14:33.976Z" }, + { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366, upload_time = "2025-04-03T09:14:35.348Z" }, + { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265, upload_time = "2025-04-03T09:14:36.878Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload_time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload_time = "2024-02-25T23:20:04.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload_time = "2024-02-25T23:20:01.196Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload_time = "2021-05-16T22:03:42.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload_time = "2021-05-16T22:03:41.177Z" }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, ] [[package]] @@ -3160,33 +3188,33 @@ dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/fa/8e8fd93684b04e65816be864bebf0000fe1602e5452d006f9acc5db14ce5/sqlalchemy-2.0.40-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7", size = 2112843 }, - { url = "https://files.pythonhosted.org/packages/ba/87/06992f78a9ce545dfd1fea3dd99262bec5221f6f9d2d2066c3e94662529f/sqlalchemy-2.0.40-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758", size = 2104032 }, - { url = "https://files.pythonhosted.org/packages/92/ee/57dc77282e8be22d686bd4681825299aa1069bbe090564868ea270ed5214/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af", size = 3086406 }, - { url = "https://files.pythonhosted.org/packages/94/3f/ceb9ab214b2e42d2e74a9209b3a2f2f073504eee16cddd2df81feeb67c2f/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1", size = 3094652 }, - { url = "https://files.pythonhosted.org/packages/00/0a/3401232a5b6d91a2df16c1dc39c6504c54575744c2faafa1e5a50de96621/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00", size = 3050503 }, - { url = "https://files.pythonhosted.org/packages/93/c2/ea7171415ab131397f71a2673645c2fe29ebe9a93063d458eb89e42bf051/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e", size = 3076011 }, - { url = "https://files.pythonhosted.org/packages/3d/ee/d8e229280d621bed8c51eebf1dd413aa09ca89e309b1fff40d881dd149af/sqlalchemy-2.0.40-cp310-cp310-win32.whl", hash = "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a", size = 2085136 }, - { url = "https://files.pythonhosted.org/packages/60/7f/ea1086136bc648cd4713a1e01869f7fc31979d67b3a8f973f5d9ab8de7e1/sqlalchemy-2.0.40-cp310-cp310-win_amd64.whl", hash = "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596", size = 2109421 }, - { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025 }, - { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419 }, - { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720 }, - { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682 }, - { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542 }, - { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864 }, - { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675 }, - { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099 }, - { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620 }, - { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004 }, - { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440 }, - { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277 }, - { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591 }, - { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199 }, - { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526 }, - { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894 }, +sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299, upload_time = "2025-03-27T17:52:31.876Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/fa/8e8fd93684b04e65816be864bebf0000fe1602e5452d006f9acc5db14ce5/sqlalchemy-2.0.40-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7", size = 2112843, upload_time = "2025-03-27T18:49:25.515Z" }, + { url = "https://files.pythonhosted.org/packages/ba/87/06992f78a9ce545dfd1fea3dd99262bec5221f6f9d2d2066c3e94662529f/sqlalchemy-2.0.40-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758", size = 2104032, upload_time = "2025-03-27T18:49:28.098Z" }, + { url = "https://files.pythonhosted.org/packages/92/ee/57dc77282e8be22d686bd4681825299aa1069bbe090564868ea270ed5214/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af", size = 3086406, upload_time = "2025-03-27T18:44:25.302Z" }, + { url = "https://files.pythonhosted.org/packages/94/3f/ceb9ab214b2e42d2e74a9209b3a2f2f073504eee16cddd2df81feeb67c2f/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1", size = 3094652, upload_time = "2025-03-27T18:55:16.174Z" }, + { url = "https://files.pythonhosted.org/packages/00/0a/3401232a5b6d91a2df16c1dc39c6504c54575744c2faafa1e5a50de96621/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00", size = 3050503, upload_time = "2025-03-27T18:44:28.266Z" }, + { url = "https://files.pythonhosted.org/packages/93/c2/ea7171415ab131397f71a2673645c2fe29ebe9a93063d458eb89e42bf051/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e", size = 3076011, upload_time = "2025-03-27T18:55:17.967Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ee/d8e229280d621bed8c51eebf1dd413aa09ca89e309b1fff40d881dd149af/sqlalchemy-2.0.40-cp310-cp310-win32.whl", hash = "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a", size = 2085136, upload_time = "2025-03-27T18:48:53.032Z" }, + { url = "https://files.pythonhosted.org/packages/60/7f/ea1086136bc648cd4713a1e01869f7fc31979d67b3a8f973f5d9ab8de7e1/sqlalchemy-2.0.40-cp310-cp310-win_amd64.whl", hash = "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596", size = 2109421, upload_time = "2025-03-27T18:48:54.258Z" }, + { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025, upload_time = "2025-03-27T18:49:29.456Z" }, + { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419, upload_time = "2025-03-27T18:49:30.75Z" }, + { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720, upload_time = "2025-03-27T18:44:29.871Z" }, + { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682, upload_time = "2025-03-27T18:55:20.097Z" }, + { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542, upload_time = "2025-03-27T18:44:31.333Z" }, + { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864, upload_time = "2025-03-27T18:55:21.784Z" }, + { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675, upload_time = "2025-03-27T18:48:55.915Z" }, + { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099, upload_time = "2025-03-27T18:48:57.45Z" }, + { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620, upload_time = "2025-03-27T18:40:00.071Z" }, + { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004, upload_time = "2025-03-27T18:40:04.204Z" }, + { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440, upload_time = "2025-03-27T18:51:25.624Z" }, + { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277, upload_time = "2025-03-27T18:50:28.142Z" }, + { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591, upload_time = "2025-03-27T18:51:27.543Z" }, + { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199, upload_time = "2025-03-27T18:50:30.069Z" }, + { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959, upload_time = "2025-03-27T18:45:57.574Z" }, + { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526, upload_time = "2025-03-27T18:45:58.965Z" }, + { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894, upload_time = "2025-03-27T18:40:43.796Z" }, ] [[package]] @@ -3198,9 +3226,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload_time = "2023-09-30T13:58:03.53Z" }, ] [[package]] @@ -3210,18 +3238,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload_time = "2023-03-10T12:50:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload_time = "2023-03-10T12:50:17.242Z" }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, ] [[package]] @@ -3233,9 +3261,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload_time = "2024-03-12T14:34:39.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload_time = "2024-03-12T14:34:36.569Z" }, ] [[package]] @@ -3245,110 +3273,110 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload_time = "2024-10-24T14:58:29.895Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload_time = "2024-10-24T14:58:28.029Z" }, ] [[package]] name = "tomli" version = "2.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077 }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429 }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067 }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030 }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898 }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894 }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319 }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273 }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310 }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309 }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762 }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453 }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486 }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349 }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159 }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243 }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645 }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584 }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875 }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418 }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257 }, +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload_time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload_time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload_time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload_time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload_time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload_time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload_time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload_time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload_time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload_time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload_time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload_time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload_time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload_time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload_time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload_time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload_time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload_time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload_time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload_time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload_time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload_time = "2024-11-27T22:38:35.385Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/59/45/a0daf161f7d6f36c3ea5fc0c2de619746cc3dd4c76402e9db545bd920f63/tornado-6.4.2.tar.gz", hash = "sha256:92bad5b4746e9879fd7bf1eb21dce4e3fc5128d71601f80005afa39237ad620b", size = 501135, upload_time = "2024-11-22T03:06:38.036Z" } 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 }, + { 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, upload_time = "2024-11-22T03:06:20.162Z" }, + { 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, upload_time = "2024-11-22T03:06:22.39Z" }, + { 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, upload_time = "2024-11-22T03:06:24.214Z" }, + { 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, upload_time = "2024-11-22T03:06:25.559Z" }, + { 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, upload_time = "2024-11-22T03:06:27.584Z" }, + { 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, upload_time = "2024-11-22T03:06:28.933Z" }, + { 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, upload_time = "2024-11-22T03:06:30.428Z" }, + { 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, upload_time = "2024-11-22T03:06:32.458Z" }, + { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463, upload_time = "2024-11-22T03:06:34.71Z" }, + { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907, upload_time = "2024-11-22T03:06:36.71Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload_time = "2024-04-19T11:11:49.746Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload_time = "2024-04-19T11:11:46.763Z" }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20241206" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802, upload_time = "2024-12-06T02:56:41.019Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, + { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384, upload_time = "2024-12-06T02:56:39.412Z" }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload_time = "2025-04-10T14:19:05.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload_time = "2025-04-10T14:19:03.967Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload_time = "2023-06-21T01:49:05.374Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload_time = "2023-06-21T01:49:03.467Z" }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload_time = "2025-04-10T15:23:39.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload_time = "2025-04-10T15:23:37.377Z" }, ] [[package]] @@ -3360,116 +3388,116 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945 } +sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945, upload_time = "2025-03-31T16:33:29.185Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461 }, + { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461, upload_time = "2025-03-31T16:33:26.758Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390 }, - { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389 }, - { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020 }, - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902 }, - { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390, upload_time = "2024-11-01T14:06:24.793Z" }, + { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389, upload_time = "2024-11-01T14:06:27.112Z" }, + { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020, upload_time = "2024-11-01T14:06:29.876Z" }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload_time = "2024-11-01T14:06:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload_time = "2024-11-01T14:06:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload_time = "2024-11-01T14:06:34.963Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902, upload_time = "2024-11-01T14:06:53.119Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380, upload_time = "2024-11-01T14:06:55.19Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload_time = "2024-01-06T02:10:57.829Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload_time = "2024-01-06T02:10:55.763Z" }, ] [[package]] name = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload_time = "2024-11-11T07:43:24.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload_time = "2024-11-11T07:43:22.529Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload_time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload_time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload_time = "2024-04-23T22:16:16.976Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload_time = "2024-04-23T22:16:14.422Z" }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307 }, - { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486 }, - { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777 }, - { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314 }, - { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947 }, - { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778 }, - { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716 }, - { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548 }, - { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334 }, - { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427 }, - { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774 }, - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload_time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload_time = "2025-01-14T10:33:13.616Z" }, + { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload_time = "2025-01-14T10:33:15.947Z" }, + { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload_time = "2025-01-14T10:33:17.462Z" }, + { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload_time = "2025-01-14T10:33:21.282Z" }, + { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload_time = "2025-01-14T10:33:24.414Z" }, + { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload_time = "2025-01-14T10:33:26.152Z" }, + { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload_time = "2025-01-14T10:33:27.372Z" }, + { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload_time = "2025-01-14T10:33:28.52Z" }, + { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload_time = "2025-01-14T10:33:29.643Z" }, + { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload_time = "2025-01-14T10:33:30.832Z" }, + { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload_time = "2025-01-14T10:33:32.897Z" }, + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload_time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload_time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload_time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload_time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload_time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload_time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload_time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload_time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload_time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload_time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload_time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload_time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload_time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload_time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload_time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload_time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload_time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload_time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload_time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload_time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload_time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload_time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload_time = "2025-01-14T10:35:44.018Z" }, ] [[package]] @@ -3481,58 +3509,58 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/ab/66082639f99d7ef647a86b2ff4ca20f8ae13bd68a6237e6e166b8eb92edf/yarl-1.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f1f6670b9ae3daedb325fa55fbe31c22c8228f6e0b513772c2e1c623caa6ab22", size = 145054 }, - { url = "https://files.pythonhosted.org/packages/3d/c2/4e78185c453c3ca02bd11c7907394d0410d26215f9e4b7378648b3522a30/yarl-1.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85a231fa250dfa3308f3c7896cc007a47bc76e9e8e8595c20b7426cac4884c62", size = 96811 }, - { url = "https://files.pythonhosted.org/packages/c7/45/91e31dccdcf5b7232dcace78bd51a1bb2d7b4b96c65eece0078b620587d1/yarl-1.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a06701b647c9939d7019acdfa7ebbfbb78ba6aa05985bb195ad716ea759a569", size = 94566 }, - { url = "https://files.pythonhosted.org/packages/c8/21/e0aa650bcee881fb804331faa2c0f9a5d6be7609970b2b6e3cdd414e174b/yarl-1.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7595498d085becc8fb9203aa314b136ab0516c7abd97e7d74f7bb4eb95042abe", size = 327297 }, - { url = "https://files.pythonhosted.org/packages/1a/a4/58f10870f5c17595c5a37da4c6a0b321589b7d7976e10570088d445d0f47/yarl-1.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af5607159085dcdb055d5678fc2d34949bd75ae6ea6b4381e784bbab1c3aa195", size = 323578 }, - { url = "https://files.pythonhosted.org/packages/07/df/2506b1382cc0c4bb0d22a535dc3e7ccd53da9a59b411079013a7904ac35c/yarl-1.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95b50910e496567434cb77a577493c26bce0f31c8a305135f3bda6a2483b8e10", size = 343212 }, - { url = "https://files.pythonhosted.org/packages/ba/4a/d1c901d0e2158ad06bb0b9a92473e32d992f98673b93c8a06293e091bab0/yarl-1.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b594113a301ad537766b4e16a5a6750fcbb1497dcc1bc8a4daae889e6402a634", size = 337956 }, - { url = "https://files.pythonhosted.org/packages/8b/fd/10fcf7d86f49b1a11096d6846257485ef32e3d3d322e8a7fdea5b127880c/yarl-1.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:083ce0393ea173cd37834eb84df15b6853b555d20c52703e21fbababa8c129d2", size = 333889 }, - { url = "https://files.pythonhosted.org/packages/e2/cd/bae926a25154ba31c5fd15f2aa6e50a545c840e08d85e2e2e0807197946b/yarl-1.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1a350a652bbbe12f666109fbddfdf049b3ff43696d18c9ab1531fbba1c977a", size = 322282 }, - { url = "https://files.pythonhosted.org/packages/e2/c6/c3ac3597dfde746c63c637c5422cf3954ebf622a8de7f09892d20a68900d/yarl-1.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fb0caeac4a164aadce342f1597297ec0ce261ec4532bbc5a9ca8da5622f53867", size = 336270 }, - { url = "https://files.pythonhosted.org/packages/dd/42/417fd7b8da5846def29712370ea8916a4be2553de42a2c969815153717be/yarl-1.20.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d88cc43e923f324203f6ec14434fa33b85c06d18d59c167a0637164863b8e995", size = 335500 }, - { url = "https://files.pythonhosted.org/packages/37/aa/c2339683f8f05f4be16831b6ad58d04406cf1c7730e48a12f755da9f5ac5/yarl-1.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e52d6ed9ea8fd3abf4031325dc714aed5afcbfa19ee4a89898d663c9976eb487", size = 339672 }, - { url = "https://files.pythonhosted.org/packages/be/12/ab6c4df95f00d7bc9502bf07a92d5354f11d9d3cb855222a6a8d2bd6e8da/yarl-1.20.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce360ae48a5e9961d0c730cf891d40698a82804e85f6e74658fb175207a77cb2", size = 351840 }, - { url = "https://files.pythonhosted.org/packages/83/3c/08d58c51bbd3899be3e7e83cd7a691fdcf3b9f78b8699d663ecc2c090ab7/yarl-1.20.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:06d06c9d5b5bc3eb56542ceeba6658d31f54cf401e8468512447834856fb0e61", size = 359550 }, - { url = "https://files.pythonhosted.org/packages/8a/15/de7906c506f85fb476f0edac4bd74569f49e5ffdcf98e246a0313bf593b9/yarl-1.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c27d98f4e5c4060582f44e58309c1e55134880558f1add7a87c1bc36ecfade19", size = 351108 }, - { url = "https://files.pythonhosted.org/packages/25/04/c6754f5ae2cdf057ac094ac01137c17875b629b1c29ed75354626a755375/yarl-1.20.0-cp310-cp310-win32.whl", hash = "sha256:f4d3fa9b9f013f7050326e165c3279e22850d02ae544ace285674cb6174b5d6d", size = 86733 }, - { url = "https://files.pythonhosted.org/packages/db/1f/5c1952f3d983ac3f5fb079b5b13b62728f8a73fd27d03e1cef7e476addff/yarl-1.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc906b636239631d42eb8a07df8359905da02704a868983265603887ed68c076", size = 92916 }, - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload_time = "2025-04-17T00:45:14.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/ab/66082639f99d7ef647a86b2ff4ca20f8ae13bd68a6237e6e166b8eb92edf/yarl-1.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f1f6670b9ae3daedb325fa55fbe31c22c8228f6e0b513772c2e1c623caa6ab22", size = 145054, upload_time = "2025-04-17T00:41:27.071Z" }, + { url = "https://files.pythonhosted.org/packages/3d/c2/4e78185c453c3ca02bd11c7907394d0410d26215f9e4b7378648b3522a30/yarl-1.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85a231fa250dfa3308f3c7896cc007a47bc76e9e8e8595c20b7426cac4884c62", size = 96811, upload_time = "2025-04-17T00:41:30.235Z" }, + { url = "https://files.pythonhosted.org/packages/c7/45/91e31dccdcf5b7232dcace78bd51a1bb2d7b4b96c65eece0078b620587d1/yarl-1.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a06701b647c9939d7019acdfa7ebbfbb78ba6aa05985bb195ad716ea759a569", size = 94566, upload_time = "2025-04-17T00:41:32.023Z" }, + { url = "https://files.pythonhosted.org/packages/c8/21/e0aa650bcee881fb804331faa2c0f9a5d6be7609970b2b6e3cdd414e174b/yarl-1.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7595498d085becc8fb9203aa314b136ab0516c7abd97e7d74f7bb4eb95042abe", size = 327297, upload_time = "2025-04-17T00:41:34.03Z" }, + { url = "https://files.pythonhosted.org/packages/1a/a4/58f10870f5c17595c5a37da4c6a0b321589b7d7976e10570088d445d0f47/yarl-1.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af5607159085dcdb055d5678fc2d34949bd75ae6ea6b4381e784bbab1c3aa195", size = 323578, upload_time = "2025-04-17T00:41:36.492Z" }, + { url = "https://files.pythonhosted.org/packages/07/df/2506b1382cc0c4bb0d22a535dc3e7ccd53da9a59b411079013a7904ac35c/yarl-1.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95b50910e496567434cb77a577493c26bce0f31c8a305135f3bda6a2483b8e10", size = 343212, upload_time = "2025-04-17T00:41:38.396Z" }, + { url = "https://files.pythonhosted.org/packages/ba/4a/d1c901d0e2158ad06bb0b9a92473e32d992f98673b93c8a06293e091bab0/yarl-1.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b594113a301ad537766b4e16a5a6750fcbb1497dcc1bc8a4daae889e6402a634", size = 337956, upload_time = "2025-04-17T00:41:40.519Z" }, + { url = "https://files.pythonhosted.org/packages/8b/fd/10fcf7d86f49b1a11096d6846257485ef32e3d3d322e8a7fdea5b127880c/yarl-1.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:083ce0393ea173cd37834eb84df15b6853b555d20c52703e21fbababa8c129d2", size = 333889, upload_time = "2025-04-17T00:41:42.437Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cd/bae926a25154ba31c5fd15f2aa6e50a545c840e08d85e2e2e0807197946b/yarl-1.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1a350a652bbbe12f666109fbddfdf049b3ff43696d18c9ab1531fbba1c977a", size = 322282, upload_time = "2025-04-17T00:41:44.641Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c6/c3ac3597dfde746c63c637c5422cf3954ebf622a8de7f09892d20a68900d/yarl-1.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fb0caeac4a164aadce342f1597297ec0ce261ec4532bbc5a9ca8da5622f53867", size = 336270, upload_time = "2025-04-17T00:41:46.812Z" }, + { url = "https://files.pythonhosted.org/packages/dd/42/417fd7b8da5846def29712370ea8916a4be2553de42a2c969815153717be/yarl-1.20.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d88cc43e923f324203f6ec14434fa33b85c06d18d59c167a0637164863b8e995", size = 335500, upload_time = "2025-04-17T00:41:48.896Z" }, + { url = "https://files.pythonhosted.org/packages/37/aa/c2339683f8f05f4be16831b6ad58d04406cf1c7730e48a12f755da9f5ac5/yarl-1.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e52d6ed9ea8fd3abf4031325dc714aed5afcbfa19ee4a89898d663c9976eb487", size = 339672, upload_time = "2025-04-17T00:41:50.965Z" }, + { url = "https://files.pythonhosted.org/packages/be/12/ab6c4df95f00d7bc9502bf07a92d5354f11d9d3cb855222a6a8d2bd6e8da/yarl-1.20.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce360ae48a5e9961d0c730cf891d40698a82804e85f6e74658fb175207a77cb2", size = 351840, upload_time = "2025-04-17T00:41:53.074Z" }, + { url = "https://files.pythonhosted.org/packages/83/3c/08d58c51bbd3899be3e7e83cd7a691fdcf3b9f78b8699d663ecc2c090ab7/yarl-1.20.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:06d06c9d5b5bc3eb56542ceeba6658d31f54cf401e8468512447834856fb0e61", size = 359550, upload_time = "2025-04-17T00:41:55.517Z" }, + { url = "https://files.pythonhosted.org/packages/8a/15/de7906c506f85fb476f0edac4bd74569f49e5ffdcf98e246a0313bf593b9/yarl-1.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c27d98f4e5c4060582f44e58309c1e55134880558f1add7a87c1bc36ecfade19", size = 351108, upload_time = "2025-04-17T00:41:57.582Z" }, + { url = "https://files.pythonhosted.org/packages/25/04/c6754f5ae2cdf057ac094ac01137c17875b629b1c29ed75354626a755375/yarl-1.20.0-cp310-cp310-win32.whl", hash = "sha256:f4d3fa9b9f013f7050326e165c3279e22850d02ae544ace285674cb6174b5d6d", size = 86733, upload_time = "2025-04-17T00:41:59.757Z" }, + { url = "https://files.pythonhosted.org/packages/db/1f/5c1952f3d983ac3f5fb079b5b13b62728f8a73fd27d03e1cef7e476addff/yarl-1.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc906b636239631d42eb8a07df8359905da02704a868983265603887ed68c076", size = 92916, upload_time = "2025-04-17T00:42:02.177Z" }, + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload_time = "2025-04-17T00:42:04.511Z" }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload_time = "2025-04-17T00:42:06.43Z" }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload_time = "2025-04-17T00:42:07.976Z" }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload_time = "2025-04-17T00:42:09.902Z" }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload_time = "2025-04-17T00:42:11.768Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload_time = "2025-04-17T00:42:13.983Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload_time = "2025-04-17T00:42:16.386Z" }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload_time = "2025-04-17T00:42:18.622Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload_time = "2025-04-17T00:42:20.9Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload_time = "2025-04-17T00:42:22.926Z" }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload_time = "2025-04-17T00:42:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload_time = "2025-04-17T00:42:27.475Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload_time = "2025-04-17T00:42:29.333Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload_time = "2025-04-17T00:42:31.668Z" }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload_time = "2025-04-17T00:42:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload_time = "2025-04-17T00:42:35.873Z" }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload_time = "2025-04-17T00:42:37.586Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload_time = "2025-04-17T00:42:39.602Z" }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload_time = "2025-04-17T00:42:41.469Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload_time = "2025-04-17T00:42:43.666Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload_time = "2025-04-17T00:42:45.391Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload_time = "2025-04-17T00:42:47.552Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload_time = "2025-04-17T00:42:49.406Z" }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload_time = "2025-04-17T00:42:51.588Z" }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload_time = "2025-04-17T00:42:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload_time = "2025-04-17T00:42:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload_time = "2025-04-17T00:42:57.895Z" }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload_time = "2025-04-17T00:43:00.094Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload_time = "2025-04-17T00:43:02.242Z" }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload_time = "2025-04-17T00:43:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload_time = "2025-04-17T00:43:06.609Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload_time = "2025-04-17T00:43:09.01Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload_time = "2025-04-17T00:43:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload_time = "2025-04-17T00:43:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload_time = "2025-04-17T00:45:12.199Z" }, ] From 10d8aca87f398e1b765558dd3fdcc8016b1ad907 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 6 May 2025 14:47:08 -0400 Subject: [PATCH 26/97] Update iceberg_table.py warning is expected: Iceberg does not have a dictionary type. will be inferred as int32 on read. --- src/icefabric_manage/src/icefabric_manage/iceberg_table.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 4a46393..76a336e 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -132,6 +132,9 @@ def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namesp the Iceberg catalog. Return: None + + Note: The following warning is expected: + Iceberg does not have a dictionary type. will be inferred as int32 on read. ''' @@ -183,6 +186,7 @@ def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymet Default: 'default' Return: None + ''' # Instantiate bucket of interest. session = boto3.Session(profile_name=profile_name) @@ -215,4 +219,4 @@ def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymet # Generate tables w/in the new Iceberg catalog for all parquets detected obj.create_table_for_all_parquets(parquet_list, - namespace='bathymetry_ml_auxiliary') \ No newline at end of file + namespace='bathymetry_ml_auxiliary') From 0c8794902619d5f84330c08430c6c06cdb298d23 Mon Sep 17 00:00:00 2001 From: Daniel Cumpton Date: Tue, 6 May 2025 15:47:26 -0600 Subject: [PATCH 27/97] initial commit of new api prototype --- src/icefabric_api/README.md | 0 src/icefabric_api/src/cfe_params.csv | 26 ++++++++++++ src/icefabric_api/src/gauge_06710385.gpkg | Bin 0 -> 319488 bytes .../src/get_module_parameters.py | 38 ++++++++++++++++++ src/icefabric_api/src/requirements.txt | 2 + 5 files changed, 66 insertions(+) create mode 100644 src/icefabric_api/README.md create mode 100644 src/icefabric_api/src/cfe_params.csv create mode 100644 src/icefabric_api/src/gauge_06710385.gpkg create mode 100644 src/icefabric_api/src/get_module_parameters.py create mode 100644 src/icefabric_api/src/requirements.txt diff --git a/src/icefabric_api/README.md b/src/icefabric_api/README.md new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/src/cfe_params.csv b/src/icefabric_api/src/cfe_params.csv new file mode 100644 index 0000000..894fa0a --- /dev/null +++ b/src/icefabric_api/src/cfe_params.csv @@ -0,0 +1,26 @@ +name,description,units,data_type,calibratable,source_file,min,max,default_value,divide_attr_name +soil_params.b,beta exponent on Clapp-Hornberger (1978) soil water relations,NULL,double,TRUE,attr,2,15,4.05,mode.bexp_soil_layers_stag=1 +soil_params.satdk,saturated hydraulic conductivity,m/s,double,TRUE,attr,0.000000195,0.00141,0.00000338,geom_mean.dksat_soil_layers_stag=1 +soil_params.satpsi,saturated capillary head,m,double,TRUE,attr,0.036,0.955,0.355,geom_mean.psisat_soil_layers_stag=1 +soil_params.slop,this factor (0-1) modifies the gradient of the hydraulic head at the soil bottom. 0=no-flow.,m/m,double,TRUE,attr,0.0000598,1,0.05,mean.slope_1km +soil_params.smcmax,saturated soil moisture content (Maximum soil moisture content),m/m,double,TRUE,attr,0.16,0.58,0.439,mean.smcmax_soil_layers_stag=1 +soil_params.wltsmc,wilting point soil moisture content (< soil_params.smcmax),m/m,double,TRUE,attr,0.05,0.3,per soil type,mean.smcwlt_soil_layers_stag=1 +soil_params.expon,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs",NULL,double,FALSE,const,NULL,NULL,1, +soil_params.expon_secondary,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs ",NULL,double,FALSE,const,NULL,NULL,1, +max_gw_storage,maximum storage in the conceptual reservoir,m,double,TRUE,attr,0.01,0.25,0.05,mean.Zmax +Cgw,the primary outlet coefficient,m/hr,double,TRUE,attr,0.0000018,0.0018,0.000018,mean.Coeff +expon,exponent parameter for nonlinear ground water reservoir (1.0 for linear reservoir),NULL,double,TRUE,attr,1,8,3,mode.Expon +gw_storage,initial condition for groundwater reservoir - it is the ground water as a decimal fraction of the maximum groundwater storage (max_gw_storage) for the initial timestep,m/m,double,FALSE,const,NULL,NULL,0.05, +alpha_fc,alpha at fc for clapp hornberger (field capacity),NULL,double,FALSE,const,NULL,NULL,0.33, +soil_storage,initial condition for soil reservoir - it is the water in the soil as a decimal fraction of maximum soil water storage (smcmax x depth) for the initial timestep. Default = 0.5,m/m,double,FALSE,const,NULL,NULL,0.5, +K_nash,Nash Config param for lateral subsurface runoff (Nash discharge to storage ratio),1/m,double,TRUE,const,0,1,0.003, +K_lf,Nash Config param - primary reservoir,NULL,double,TRUE,const,0,1,0.01, +nash_storage,Nash Config param - secondary reservoir ,NULL,double,FALSE,const,NULL,NULL,"0.0,0.0", +giuh_ordinates,Giuh (geomorphological instantaneous unit hydrograph) ordinates in dt time steps,NULL,double,FALSE,const,NULL,NULL,"0.55, 0.25, 0.2", +a_Xinanjiang_inflection_point_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,-0.5,0.5,-0.2,AXAJ +b_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,0.01,10,0.66,BXAJ +x_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,0.01,10,0.02,XXAJ +urban_decimal_fraction,when surface_water_partitioning_scheme=Xinanjiang,NULL,double ,FALSE,const,0,1,0.01, +refkdt,Reference Soil Infiltration Parameter (used in runoff formulation),NULL,double,TRUE,attr,0.1,4,1,mean.refkdt +soil_params.depth,soil depth,m,double,FALSE,const,NULL,NULL,2, + diff --git a/src/icefabric_api/src/gauge_06710385.gpkg b/src/icefabric_api/src/gauge_06710385.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..8f8a14a4968a83ac42f8b1fd7beb05637f218975 GIT binary patch literal 319488 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 Date: Thu, 15 May 2025 11:03:22 -0400 Subject: [PATCH 28/97] Add demo for xs mapping + updated iceberg demo --- examples/Demo_Iceberg.ipynb | 919 +- .../XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb | 7589 +++++++++++++++++ 2 files changed, 8456 insertions(+), 52 deletions(-) create mode 100644 examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index 0a8ad2f..12f4c19 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -20,12 +20,13 @@ "import pyiceberg\n", "from pyiceberg.catalog import load_catalog\n", "from pyiceberg.schema import Schema\n", + "from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType, BinaryType, BooleanType\n", + "from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual\n", "import pyarrow.parquet as pq\n", "from pyiceberg.schema import Schema\n", "import boto3\n", "import s3fs\n", - "from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType\n", - "from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual\n", + "import re\n", "import os\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", @@ -33,12 +34,22 @@ "class IcebergTable(object):\n", " '''\n", " Create a Iceberg table per parquet file w/ its inherited schema set.\n", + "\n", + " Note: It is okay to expect following warning statements throughout process:\n", + " \"Iceberg does not have a dictionary type. will be inferred as string on read.\"\n", " \n", " '''\n", " def __init__(self):\n", - " \n", + "\n", + " # Generate folder for iceberg catalog\n", + " if not os.path.exists(f'{os.getcwd()}/iceberg_catalog'):\n", + " os.makedirs(f'{os.getcwd()}/iceberg_catalog')\n", + "\n", " # Set location of where the iceberg catalog will reside\n", " os.environ['PYICEBERG_HOME'] = os.getcwd()\n", + "\n", + " # Initialize namespace to be set for Iceberg catalog\n", + " self.namespace = str()\n", " \n", " def read_data_dirs(self, data_dir):\n", " '''\n", @@ -76,20 +87,26 @@ " \n", " return data\n", "\n", - " def establish_catalog(self, name='dev'):\n", + " def establish_catalog(self, catalog_name, namespace):\n", " '''\n", " Creates a new Iceberg catalog.\n", " \n", " Args:\n", - " name (str): Name of the catalog to be created.\n", - " Default: 'dev' for development catalog\n", + " catalog_name (str): Name of the catalog to be created.\n", + " Default: 'dev' for development catalog\n", + " namespace (str): Name of namespace.\n", "\n", " Return: None\n", " \n", - " ''' \n", + " ''' \n", " # Establish a new Iceberg catalog & its configuration\n", - " self.catalog = load_catalog(name=name,\n", - " **{'uri': f'sqlite:///iceberg_catalog/{name}_catalog.db'})\n", + " self.catalog = load_catalog(name=catalog_name,\n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + " \n", + " # Establish namespace to be create w/in catalog\n", + " self.namespace = namespace\n", + " if self.namespace not in self.catalog.list_namespaces():\n", + " self.catalog.create_namespace(self.namespace)\n", " \n", " return\n", "\n", @@ -120,6 +137,10 @@ " iceberg_type = DoubleType()\n", " elif pa.types.is_int64(arrow_type):\n", " iceberg_type = LongType()\n", + " elif pa.types.is_boolean(arrow_type):\n", + " iceberg_type = BooleanType()\n", + " elif pa.types.is_binary(arrow_type):\n", + " iceberg_type = BinaryType()\n", " elif pa.types.is_dictionary(arrow_type): \n", " if pa.types.is_string(arrow_type.value_type):\n", " iceberg_type = StringType()\n", @@ -138,7 +159,7 @@ " \n", " return schema\n", "\n", - " def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namespace):\n", + " def create_table_for_parquet(self, iceberg_tablename, data_table, schema):\n", " '''\n", " Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory.\n", "\n", @@ -157,8 +178,7 @@ " '''\n", " \n", " # Create an Iceberg table\n", - " self.catalog.create_namespace_if_not_exists(namespace)\n", - " iceberg_table = self.catalog.create_table(identifier=f\"{namespace}.{iceberg_tablename}\",\n", + " iceberg_table = self.catalog.create_table(identifier=f\"{self.namespace}.{iceberg_tablename}\",\n", " schema=schema,\n", " location=f\"{os.environ['PYICEBERG_HOME']}/iceberg_catalog\")\n", " \n", @@ -167,35 +187,46 @@ " \n", " return\n", "\n", - " def create_table_for_all_parquets(self, parquet_files, namespace, source='local'):\n", + " def create_table_for_all_parquets(self, parquet_files, app_name='mip-xs'):\n", " '''\n", " Convert parquets to Iceberg tables - each w/ their inherited schema.\n", "\n", " Args:\n", " parquet_files (list): List of directories of the parquet files.\n", - " \n", - " namespace (str): Namespace for which the Iceberg table will reside within\n", - " the Iceberg catalog.\n", + "\n", + " app_name (str): Application to create Iceberg tables.\n", + " Options: 'mip-xs' & 'bathymetry_ml_auxiliary'\n", "\n", " Return: None\n", - " \n", + "\n", + " Note: The sourced data structures for the data in 'mip-xs' & \n", + " 'bathymetry_ml_auxiliary' S3 buckets differ.\n", + " \n", " '''\n", " for idx, parquet_file in enumerate(parquet_files):\n", + " if app_name == 'mip_xs':\n", + " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}\"\n", + " \n", + " elif app_name == 'bathymetry_ml_auxiliary':\n", + " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[0])[1]}\"\n", + "\n", " data_table = self.read_data(parquet_file)\n", " data_pyarrow_schema = data_table.schema\n", " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(os.path.split(os.path.split(parquet_file)[0])[1],\n", + " self.create_table_for_parquet(iceberg_tablename,\n", " data_table, \n", - " schema,\n", - " namespace)\n", + " schema)\n", " return\n", "\n", - " def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymetry', profile_name='default'):\n", + " def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name='default'):\n", " '''\n", " Convert parquets from S3 to Iceberg tables - each w/ their inherited schema.\n", " \n", " Args:\n", " bucket_name (list): S3 bucket name.\n", + "\n", + " app_name (str): Application to create Iceberg tables.\n", + " Options: 'mip_xs' & 'bathymetry_ml_auxiliary'\n", " \n", " namespace (str): Namespace for which the Iceberg table will reside within\n", " the Iceberg catalog.\n", @@ -204,6 +235,7 @@ " Default: 'default' \n", " \n", " Return: None\n", + "\n", " '''\n", " # Instantiate bucket of interest.\n", " session = boto3.Session(profile_name=profile_name)\n", @@ -211,18 +243,27 @@ " bucket_ob = s3.Bucket(bucket_name)\n", " pyarrow_table = {}\n", " for s3obj in bucket_ob.objects.all():\n", - " pyarrow_table[s3obj.key]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", - " filesystem=s3fs.S3FileSystem())\n", + "\n", + " # For sourcing the preprocessed XS parquets from S3\n", + " if app_name == 'mip_xs' and re.match(r'^xs_data/.*\\.parquet$', s3obj.key):\n", + " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}\"\n", + " pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", + " filesystem=s3fs.S3FileSystem())\n", + " \n", + " # For sourcing the bathymetry_ml_auxiliary parquets from S3\n", + " elif app_name == 'bathymetry_ml_auxiliary':\n", + " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[0])[1]}\"\n", + " pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", + " filesystem=s3fs.S3FileSystem())\n", + " \n", + " # Xforming each unique parquet to an iceberg table \n", " for key, data_table in pyarrow_table.items():\n", " data_pyarrow_schema = data_table.schema\n", " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(os.path.split(os.path.split(key)[0])[1],\n", - " data_table, \n", - " schema,\n", - " namespace) \n", - " return\n", - " \n", - " " + " self.create_table_for_parquet(key,\n", + " data_table, \n", + " schema)\n", + " return" ] }, { @@ -335,6 +376,7 @@ } ], "source": [ + "# Scenario I\n", "# Instantiate class\n", "obj = IcebergTable()\n", "\n", @@ -342,11 +384,12 @@ "parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/')\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog('dev')\n", + "obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev',\n", + " namespace='bathymetry_ml_auxiliary')\n", "\n", "# Generate tables w/in the new Iceberg catalog for all parquets detected \n", "obj.create_table_for_all_parquets(parquet_list, \n", - " namespace='bathymetry_ml_auxiliary')" + " app_name='bathymetry_ml_auxiliary')" ] }, { @@ -361,7 +404,7 @@ { "cell_type": "code", "execution_count": 3, - "id": "a1c58d4f-59e5-41d8-be31-536f3f790216", + "id": "ad60621b-fc16-44c7-85b9-8a66a2b1835b", "metadata": {}, "outputs": [ { @@ -456,18 +499,41 @@ } ], "source": [ + "# Scenario II\n", "# Instantiate class\n", "obj = IcebergTable()\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog('dev2')\n", + "obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev2',\n", + " namespace='bathymetry_ml_auxiliary')\n", "\n", "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "obj.create_table_for_all_s3parquets(namespace='bathymetry_ml_auxiliary',\n", + "obj.create_table_for_all_s3parquets(app_name='bathymetry_ml_auxiliary',\n", " bucket_name='ngwpc-bathymetry',\n", " profile_name='default')" ] }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a1c58d4f-59e5-41d8-be31-536f3f790216", + "metadata": {}, + "outputs": [], + "source": [ + "# Scenario III\n", + "# Instantiate class\n", + "obj = IcebergTable()\n", + "\n", + "# Establish new Iceberg catalog\n", + "obj.establish_catalog(catalog_name='xs',\n", + " namespace='mip')\n", + "\n", + "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", + "obj.create_table_for_all_s3parquets(app_name='mip_xs',\n", + " bucket_name='ngwpc-xs',\n", + " profile_name='default')" + ] + }, { "cell_type": "markdown", "id": "71949e8b-36f2-4e74-afb2-741a884d95dd", @@ -479,7 +545,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 11, "id": "f449ec30-027e-45c8-91f2-9ad5402b6d17", "metadata": {}, "outputs": [ @@ -544,7 +610,7 @@ ], "source": [ "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "catalog_name = 'dev'\n", + "catalog_name = 'bathymetry_ml_auxiliary_dev'\n", "namespace = 'bathymetry_ml_auxiliary'\n", "tablename = 'vpuid=01'\n", "catalog = load_catalog(name=catalog_name, \n", @@ -553,6 +619,653 @@ "print(iceberg_table.to_string(preview_cols=20))" ] }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6c69cdf0-90ae-4e32-8100-5aecc746edc9", + "metadata": {}, + "outputs": [], + "source": [ + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "catalog_name = 'bathymetry_ml_auxiliary_dev2'\n", + "namespace = 'bathymetry_ml_auxiliary'\n", + "tablename = 'vpuid=01'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "#print(iceberg_table.to_string(preview_cols=20))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "57d3a536-70dc-4b1d-a162-73e376bca0dc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "river: large_string\n", + "reach: large_string\n", + "river_reach: large_string\n", + "river_station: double\n", + "river_reach_rs: large_string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: large_string\n", + "station_elevation_points: large_string\n", + "bank_stations: large_string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: large_string\n", + "profile_names: large_string\n", + "geometry: large_binary\n", + "huc: large_string\n", + "model_id: large_string\n", + "us_reach_id: large_string\n", + "us_network_to_id: large_string\n", + "ds_reach_id: large_string\n", + "ds_network_to_id: large_string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", + "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", + "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", + "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", + "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", + "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", + "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", + "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "ras_data: [[\"Type RM Length L Ch R = 1,7300,467,467,467\n", + "BEGIN DESCRIPTION:\n", + "Stream0528 16.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 801174.98 421275.01 800775.00 421575.00\n", + " 800324.98 422375.04\n", + "#Sta/Elev=88\n", + " 4499.1 241.30 4502.6 241.08 4508.1 240.72 4525.5 239.49 4538.6 238.45\n", + " 4541.0 238.23 4556.0 236.88 4574.5 235.11 4604.0 232.37 4610.5 231.73\n", + " 4646.5 228.57 4648.8 228.37 4652.0 228.13 4669.4 226.75 4682.5 225.74\n", + " 4689.9 225.13 4699.9 224.39 4718.4 223.19 4747.9 221.12 4754.4 220.79\n", + " 4772.2 220.03 4790.4 218.68 4795.9 218.36 4826.4 218.50 4843.8 220.20\n", + " 4854.4 222.24 4862.3 223.75 4874.9 226.81 4891.8 230.20 4895.9 230.70\n", + " 4898.3 230.99 4917.8 231.53 4934.3 232.10 4939.7 231.87 4970.2 228.16\n", + " 4987.7 225.95 4998.0 218.36 4998.2 217.86 5001.8 217.86 5002.1 218.36\n", + " 5010.7 223.52 5024.3 222.97 5041.7 222.97 5056.7 223.02 5057.3 223.02\n", + " 5061.7 223.03 5188.4 223.05 5198.0 223.04 5245.5 223.01 5255.4 223.01\n", + " 5304.2 222.95 5321.4 223.06 5336.4 223.19 5362.9 223.22 5387.5 223.49\n", + " 5420.5 223.97 5453.5 225.03 5463.2 225.49 5480.3 226.15 5494.5 226.65\n", + " 5519.6 227.58 5539.0 230.01 5552.6 231.77 5568.8 234.40 5578.4 236.10\n", + " 5585.6 237.38 5597.7 238.56 5611.1 239.63 5618.6 240.34 5645.5 241.06\n", + " 5651.6 241.22 5684.7 241.94 5715.1 242.40 5716.8 242.42 5717.7 242.44\n", + " 5721.0 242.51 5750.7 243.15 5759.0 243.35 5773.8 243.81 5783.7 244.06\n", + " 5816.7 244.98 5832.5 245.51 5849.7 246.10 5871.9 247.04 5882.8 247.48\n", + " 5906.9 248.45 5915.8 248.77 5917.0 248.82\n", + "#Mann=8,-1,0\n", + " 4499.1 0.07 0 4541.0 0.03 0 4895.9 0.05 0\n", + " 4998.0 0.05 0 5002.1 0.05 0 5056.7 0.03 0\n", + " 5198.0 0.07 0 5578.4 0.03 0\n", + "Bank Sta=4998,5002.1\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,6833,487,487,487\n", + "BEGIN DESCRIPTION:\n", + "Stream0528 15.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 801125.01 421175.00 800725.00 421125.00\n", + " 800524.99 421425.02\n", + "#Sta/Elev=56\n", + " 4596.9 238.12 4607.4 237.30 4614.9 236.74 4665.4 232.76 4694.4 230.63\n", + " 4718.0 228.96 4723.4 228.56 4743.8 226.84 4752.4 226.14 4769.6 224.66\n", + " 4781.4 223.73 4810.4 221.66 4829.7 220.47 4846.9 219.48 4868.4 218.38\n", + " 4872.7 218.13 4897.4 216.99 4898.5 216.96 4926.4 216.05 4955.4 215.76\n", + " 4984.4 215.76 4998.0 215.76 4998.2 215.26 5001.8 215.26 5002.1 215.76\n", + " 5013.8 216.26 5023.9 216.41 5038.6 216.88 5048.4 217.27 5075.8 218.08\n", + " 5080.1 218.22 5083.0 218.36 5097.4 219.05 5117.6 219.94 5127.7 220.60\n", + " 5142.4 221.45 5152.2 222.35 5163.1 223.12 5168.7 223.66 5179.6 224.70\n", + " 5183.9 224.98 5186.8 225.21 5201.2 226.23 5221.4 227.59 5231.5 228.34\n", + " 5256.0 229.80 5283.3 231.49 5287.7 231.68 5290.5 231.86 5308.4 232.70\n", + " 5325.1 233.87 5329.2 234.17 5335.2 234.67 5339.5 234.93 5359.7 236.16\n", + " 5360.6 236.21\n", + "#Mann=5,-1,0\n", + " 4596.9 0.07 0 4998.0 0.07 0 5002.1 0.07 0\n", + " 5168.7 0.03 0 5339.5 0.05 0\n", + "Bank Sta=4998,5002.1\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,6346,433,433,433\n", + "BEGIN DESCRIPTION:\n", + "Stream0528 14.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 800875.02 420424.98 800475.00 420825.00\n", + " 800475.00 421474.99\n", + "#Sta/Elev=82\n", + " 4433.8 246.73 4461.2 244.11 4463.3 243.94 4482.6 241.76 4501.9 240.40\n", + " 4502.9 240.29 4504.0 240.22 4523.3 237.89 4542.6 236.45 4544.7 236.25\n", + " 4583.3 232.69 4585.4 232.51 4624.0 229.18 4625.0 229.09 4626.1 229.00\n", + " 4664.7 225.22 4665.7 225.11 4666.8 225.02 4686.1 223.11 4705.4 221.69\n", + " 4707.5 221.53 4746.1 219.33 4748.2 219.25 4767.5 218.53 4786.8 217.91\n", + " 4788.8 217.86 4827.5 216.55 4829.5 216.50 4848.9 216.01 4868.2 215.56\n", + " 4869.2 215.53 4870.3 215.52 4909.9 214.99 4911.0 214.98 4930.3 214.96\n", + " 4951.7 214.68 4971.0 214.53 4992.4 214.44 4998.0 214.44 4998.2 213.94\n", + " 5001.8 213.94 5002.1 214.44 5023.2 214.64 5052.0 215.06 5058.5 215.17\n", + " 5080.8 215.64 5103.0 216.19 5109.6 216.34 5116.1 216.56 5138.3 217.12\n", + " 5160.6 217.92 5167.1 218.12 5195.9 218.62 5224.7 218.95 5246.9 219.31\n", + " 5253.4 219.38 5275.7 219.92 5282.2 220.02 5288.7 220.20 5311.0 220.94\n", + " 5317.5 221.22 5331.7 221.80 5339.8 222.13 5368.6 223.29 5397.3 224.58\n", + " 5448.4 227.28 5454.9 227.61 5461.4 227.90 5483.7 229.06 5490.2 229.36\n", + " 5512.5 230.56 5534.7 231.71 5541.2 232.03 5547.7 232.52 5561.6 233.45\n", + " 5570.0 234.02 5592.3 235.86 5598.8 236.59 5605.3 237.14 5627.6 238.74\n", + " 5634.1 238.95 5649.5 239.52\n", + "#Mann=5,-1,0\n", + " 4433.8 0.07 0 4998.0 0.07 0 5002.1 0.07 0\n", + " 5331.7 0.03 0 5561.6 0.05 0\n", + "Bank Sta=4998,5002.1\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,5913,408,408,408\n", + "BEGIN DESCRIPTION:\n", + "Stream0528 13.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 800825.01 420024.99 800125.00 420825.00\n", + " 800424.99 421474.99\n", + "#Sta/Elev=104\n", + " 3931.6 241.95 3955.4 241.31 3972.5 240.61 3993.7 239.63 4004.2 239.07\n", + " 4016.2 238.50 4031.9 237.63 4059.9 235.96 4070.1 235.27 4085.8 234.13\n", + " 4103.6 233.09 4106.2 232.93 4108.4 232.83 4146.6 230.97 4147.3 230.93\n", + " 4184.9 228.66 4187.7 228.47 4191.0 228.29 4208.1 227.09 4223.1 226.17\n", + " 4234.7 225.37 4261.3 223.64 4278.4 222.50 4289.7 221.89 4299.6 221.32\n", + " 4322.1 219.94 4365.8 218.50 4371.3 218.38 4376.1 218.35 4409.5 217.87\n", + " 4414.3 217.75 4452.9 216.59 4453.2 216.58 4490.8 215.82 4493.7 215.76\n", + " 4496.9 215.71 4529.0 215.47 4534.4 215.44 4540.6 215.38 4584.3 215.05\n", + " 4605.5 215.00 4656.8 215.03 4671.8 215.01 4682.0 215.02 4715.5 214.92\n", + " 4718.0 214.91 4720.2 214.90 4738.4 214.71 4758.8 214.38 4759.2 214.38\n", + " 4796.7 213.94 4802.9 213.91 4834.9 213.87 4860.8 213.88 4873.2 213.85\n", + " 4977.7 213.83 4994.6 213.85 4997.6 213.83 4998.0 213.33 5002.1 213.33\n", + " 5002.4 213.83 5020.7 213.84 5107.7 213.88 5115.8 213.95 5129.3 214.01\n", + " 5147.5 214.24 5158.6 214.48 5179.2 215.06 5194.4 215.61 5210.9 216.17\n", + " 5227.3 216.51 5237.8 216.65 5242.6 216.68 5274.3 216.91 5281.1 216.95\n", + " 5324.5 217.51 5337.7 217.72 5339.6 217.74 5346.2 217.79 5369.4 218.11\n", + " 5389.6 218.45 5401.1 218.63 5432.4 219.23 5432.8 219.23 5433.3 219.25\n", + " 5464.5 220.54 5491.2 222.01 5496.2 222.27 5519.7 223.59 5527.9 224.04\n", + " 5541.4 224.83 5559.6 225.63 5563.1 225.81 5570.7 226.08 5588.7 226.88\n", + " 5591.3 227.00 5606.4 228.14 5623.0 229.29 5639.3 231.80 5654.7 234.26\n", + " 5671.5 236.98 5686.4 238.60 5708.0 239.45 5710.5 239.55\n", + "#Mann=5,-1,0\n", + " 3931.6 0.07 0 4997.6 0.07 0 5002.4 0.07 0\n", + " 5339.6 0.03 0 5588.7 0.05 0\n", + "Bank Sta=4997.6,5002.4\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,5505,419,419,419\n", + "BEGIN DESCRIPTION:\n", + "Stream0528 12.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 800325.02 419674.95 799925.00 420875.00\n", + " 800325.02 421475.02\n", + "#Sta/Elev=138\n", + " 3724.5 242.87 3734.7 242.14 3748.3 241.26 3753.8 240.92 3775.7 239.57\n", + " 3778.7 239.38 3800.7 238.14 3809.0 237.76 3823.4 237.04 3837.6 236.50\n", + " 3839.4 236.43 3846.2 236.06 3869.7 234.89 3900.0 233.51 3916.7 232.93\n", + " 3930.4 232.39 3937.2 232.15 3957.7 231.53 3959.9 231.46 3991.0 230.58\n", + " 4007.7 230.16 4021.4 229.79 4028.2 229.48 4048.7 228.93 4051.7 228.83\n", + " 4053.2 228.77 4082.0 227.41 4096.4 226.85 4112.4 226.27 4128.2 225.76\n", + " 4128.3 225.76 4164.7 224.58 4173.0 224.34 4189.7 223.93 4230.7 222.87\n", + " 4233.7 222.78 4255.7 222.23 4264.0 222.03 4280.7 221.92 4294.4 221.80\n", + " 4301.2 221.72 4324.0 221.37 4324.7 221.35 4355.1 220.90 4412.7 220.21\n", + " 4415.0 220.18 4415.7 220.18 4417.2 220.16 4446.1 219.96 4460.5 219.92\n", + " 4463.3 219.89 4503.7 219.44 4506.7 219.40 4508.2 219.38 4537.1 219.19\n", + " 4567.4 219.07 4597.7 218.89 4599.2 218.87 4628.1 218.50 4642.5 218.25\n", + " 4658.4 218.05 4719.1 217.17 4735.8 216.87 4749.4 216.65 4752.3 216.60\n", + " 4756.2 216.54 4776.7 216.18 4779.7 216.13 4781.2 216.11 4810.1 215.65\n", + " 4824.5 215.44 4840.4 215.26 4867.7 215.24 4870.7 215.23 4872.3 215.20\n", + " 4901.1 214.74 4931.4 214.36 4961.8 214.04 4989.5 213.89 4992.5 213.87\n", + " 4997.5 213.84 4997.9 213.34 5002.2 213.34 5002.6 213.84 5007.0 213.87\n", + " 5019.0 213.88 5027.0 213.88 5039.8 213.94 5058.8 213.96 5060.5 213.96\n", + " 5061.6 213.96 5081.3 214.03 5102.0 214.02 5130.8 214.08 5143.5 214.04\n", + " 5162.6 213.90 5164.3 213.89 5200.0 213.84 5234.6 213.85 5266.4 213.94\n", + " 5268.0 213.95 5269.2 213.97 5274.7 214.05 5281.1 214.14 5303.7 214.47\n", + " 5318.3 214.63 5330.3 214.82 5338.3 214.84 5351.1 215.12 5370.1 215.66\n", + " 5372.9 215.73 5392.6 216.12 5407.5 216.36 5422.0 216.72 5434.1 217.06\n", + " 5442.1 217.26 5476.7 218.25 5496.3 219.18 5511.3 219.81 5517.1 220.32\n", + " 5525.8 221.00 5537.8 222.14 5545.9 222.85 5558.6 224.54 5576.4 226.21\n", + " 5577.7 226.33 5580.4 226.58 5600.1 227.92 5615.0 229.16 5620.8 229.65\n", + " 5629.6 231.15 5641.6 232.77 5649.6 234.30 5681.4 238.68 5683.1 238.85\n", + " 5684.2 238.99 5703.8 239.24 5710.6 239.51\n", + "#Mann=10,-1,0\n", + " 3724.5 0.03 0 3753.8 0.07 0 3837.6 0.035 0\n", + " 4128.2 0.07 0 4128.3 0.035 0 4463.3 0.07 0\n", + " 4997.5 0.07 0 5002.6 0.07 0 5281.1 0.03 0\n", + " 5576.4 0.05 0\n", + "Bank Sta=4997.5,5002.6\n", + "Exp/Cntr=0.3,0.1\n", + "\",...,\"Type RM Length L Ch R = 1,1842,442,442,442\n", + "BEGIN DESCRIPTION:\n", + "Stream0512 4.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 808374.98 370125.01 808125.00 370325.00\n", + " 807724.98 371125.04\n", + "#Sta/Elev=373\n", + " 4675.5 403.33 4680.2 403.38 4680.6 403.38 4681.2 403.40 4685.3 403.62\n", + " 4688.6 403.99 4691.8 404.23 4697.1 404.57 4702.3 404.79 4705.5 404.70\n", + " 4708.8 404.51 4712.9 404.12 4714.0 403.95 4718.4 402.69 4722.4 401.55\n", + " 4723.5 401.17 4730.9 398.26 4734.0 397.03 4739.4 394.77 4741.7 393.63\n", + " 4744.6 392.18 4746.4 391.30 4747.8 390.68 4755.2 387.31 4756.3 386.83\n", + " 4764.7 383.43 4765.7 383.06 4769.9 381.47 4773.2 380.39 4779.3 378.44\n", + " 4781.7 377.87 4786.9 376.70 4790.1 376.14 4797.5 374.97 4798.6 374.81\n", + " 4802.8 374.14 4807.0 373.34 4808.0 373.12 4815.5 371.38 4816.9 371.06\n", + " 4818.6 370.75 4823.9 369.88 4826.3 369.67 4829.2 369.62 4832.4 369.53\n", + " 4835.7 369.45 4839.7 369.42 4840.9 369.42 4849.3 369.35 4849.8 369.34\n", + " 4850.3 369.33 4857.8 369.31 4860.9 369.39 4866.2 369.51 4871.5 369.51\n", + " 4874.7 369.48 4882.0 369.47 4883.1 369.47 4892.6 369.58 4896.7 369.66\n", + " 4900.0 369.70 4901.4 369.72 4903.2 369.72 4906.1 369.74 4908.5 369.71\n", + " 4913.8 369.67 4917.0 369.65 4924.3 369.64 4925.4 369.63 4929.6 369.63\n", + " 4933.9 369.62 4934.3 369.61 4934.9 369.61 4942.3 369.51 4943.7 369.48\n", + " 4945.5 369.48 4948.4 369.49 4950.8 369.52 4953.1 369.57 4956.0 369.60\n", + " 4959.3 369.59 4962.5 369.52 4966.6 369.39 4967.2 369.37 4967.7 369.37\n", + " 4972.1 369.49 4976.2 369.57 4976.6 369.58 4977.2 369.60 4984.6 369.75\n", + " 4987.8 369.71 4990.7 369.62 4993.1 369.57 4995.6 369.51 4997.2 368.51\n", + " 4997.7 368.01 5002.4 368.01 5002.8 368.51 5003.9 369.54 5004.9 369.54\n", + " 5005.9 369.55 5012.3 369.54 5018.6 369.43 5019.7 369.40 5020.7 369.39\n", + " 5024.9 369.37 5033.4 369.48 5034.4 369.50 5041.8 369.47 5048.2 369.39\n", + " 5050.2 369.37 5054.5 369.33 5056.6 369.30 5064.0 369.28 5065.0 369.29\n", + " 5069.2 369.32 5071.3 369.36 5077.7 369.44 5078.7 369.45 5079.8 369.46\n", + " 5086.1 369.48 5093.5 369.40 5094.6 369.39 5100.9 369.39 5108.3 369.41\n", + " 5108.6 369.41 5109.3 369.40 5113.5 369.36 5115.7 369.35 5118.5 369.36\n", + " 5123.0 369.33 5124.1 369.33 5128.3 369.32 5130.4 369.32 5136.8 369.34\n", + " 5137.8 369.34 5138.2 369.34 5138.9 369.34 5143.1 369.27 5148.0 369.22\n", + " 5153.6 369.21 5160.0 369.21 5166.3 369.24 5167.3 369.24 5168.4 369.24\n", + " 5172.6 369.20 5174.7 369.14 5177.5 369.11 5182.1 369.05 5183.1 369.05\n", + " 5187.4 369.04 5189.5 369.01 5196.9 368.83 5197.9 368.80 5204.2 368.79\n", + " 5211.6 368.83 5212.0 368.85 5212.7 368.83 5216.9 368.77 5219.0 368.65\n", + " 5225.4 368.52 5226.4 368.51 5227.4 368.56 5233.8 368.96 5236.6 369.09\n", + " 5241.2 369.20 5241.5 369.19 5242.2 369.18 5248.6 369.16 5254.9 369.27\n", + " 5255.9 369.28 5257.0 369.32 5261.2 369.48 5263.3 369.50 5270.7 369.62\n", + " 5271.7 369.64 5276.0 369.64 5278.1 369.60 5284.4 369.73 5285.5 369.74\n", + " 5286.5 369.77 5290.7 370.01 5292.9 370.18 5295.7 370.45 5300.2 370.70\n", + " 5300.6 370.73 5301.3 370.73 5305.5 370.75 5307.6 370.74 5313.9 370.64\n", + " 5315.0 370.62 5315.4 370.63 5316.1 370.66 5322.4 371.00 5328.7 371.58\n", + " 5329.8 371.69 5330.1 371.71 5330.8 371.75 5337.2 372.08 5343.5 372.16\n", + " 5344.5 372.16 5345.6 372.17 5349.8 372.19 5351.9 372.33 5358.3 372.71\n", + " 5359.3 372.77 5359.7 372.80 5360.4 372.84 5366.7 373.10 5369.5 373.24\n", + " 5374.1 373.32 5375.1 373.37 5379.3 373.58 5381.5 373.67 5384.3 373.72\n", + " 5388.8 373.95 5389.9 373.97 5394.1 374.06 5396.2 374.14 5402.6 374.35\n", + " 5403.6 374.38 5404.7 374.43 5408.9 374.63 5411.0 374.71 5417.3 374.87\n", + " 5418.4 374.90 5419.4 374.90 5425.8 374.87 5428.6 374.93 5433.1 375.08\n", + " 5433.5 375.10 5440.5 375.56 5447.9 375.83 5449.0 375.86 5453.2 376.01\n", + " 5455.3 376.08 5458.1 376.24 5462.7 376.33 5463.0 376.35 5463.7 376.37\n", + " 5467.9 376.46 5470.1 376.48 5476.4 376.60 5477.4 376.61 5477.8 376.61\n", + " 5478.5 376.64 5484.8 376.90 5491.2 377.07 5492.2 377.11 5493.2 377.16\n", + " 5497.5 377.34 5499.6 377.38 5507.0 377.76 5508.0 377.83 5514.4 378.29\n", + " 5517.2 378.43 5521.7 378.66 5522.8 378.70 5529.1 378.96 5535.4 379.18\n", + " 5536.5 379.22 5536.9 379.24 5543.9 379.31 5550.2 379.65 5551.3 379.69\n", + " 5552.3 379.73 5558.7 380.03 5566.0 380.26 5567.1 380.33 5571.3 380.58\n", + " 5573.4 380.71 5579.8 380.87 5580.8 380.91 5581.2 380.90 5581.9 380.90\n", + " 5588.2 380.91 5591.0 381.03 5595.6 381.36 5596.6 381.45 5600.8 381.84\n", + " 5603.0 381.99 5605.8 382.17 5610.3 382.37 5610.7 382.39 5611.4 382.40\n", + " 5617.7 382.54 5624.1 382.67 5625.1 382.68 5626.2 382.70 5630.4 382.74\n", + " 5632.5 382.79 5638.8 383.08 5639.9 383.13 5640.9 383.21 5647.3 383.61\n", + " 5650.1 383.73 5654.6 383.94 5655.0 383.95 5655.7 383.98 5662.0 384.22\n", + " 5669.4 384.48 5674.7 384.69 5676.8 384.78 5683.1 385.19 5684.2 385.25\n", + " 5685.2 385.32 5691.6 385.81 5697.9 386.41 5698.9 386.49 5699.3 386.52\n", + " 5700.0 386.60 5704.2 386.93 5706.3 387.12 5713.7 387.55 5714.1 387.56\n", + " 5714.8 387.59 5721.1 387.82 5727.4 388.04 5728.5 388.07 5728.8 388.08\n", + " 5729.5 388.13 5735.9 388.58 5742.2 389.05 5743.3 389.14 5744.3 389.21\n", + " 5748.5 389.43 5750.6 389.52 5753.4 389.64 5758.0 389.78 5759.1 389.82\n", + " 5763.3 389.95 5765.4 390.03 5771.7 390.28 5772.8 390.32 5773.8 390.41\n", + " 5780.2 390.92 5786.5 391.27 5787.5 391.33 5787.9 391.33 5788.6 391.36\n", + " 5792.8 391.59 5794.9 391.72 5801.3 392.00 5802.3 392.05 5802.7 392.07\n", + " 5803.4 392.09 5807.6 392.20 5809.7 392.31 5812.5 392.43 5817.1 392.58\n", + " 5817.4 392.61 5818.1 392.61 5822.4 392.76 5824.5 392.86 5827.3 393.07\n", + " 5831.8 393.28 5832.9 393.33 5839.2 393.58 5845.6 393.77 5846.6 393.80\n", + " 5847.7 393.85 5851.9 394.04 5854.0 394.18 5856.8 394.31 5861.4 394.63\n", + " 5862.4 394.69 5868.8 395.06 5875.1 395.39 5876.2 395.45 5876.5 395.47\n", + " 5883.5 395.80 5889.9 396.08 5890.1 396.09\n", + "#Mann=3,-1,0\n", + " 4675.5 0.07 0 4997.2 0.07 0 5002.8 0.07 0\n", + "Bank Sta=4997.2,5002.8\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,1400,430,430,430\n", + "BEGIN DESCRIPTION:\n", + "Stream0512 3.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 808225.02 369924.99 807825.00 370075.00\n", + " 807074.99 370675.01\n", + "#Sta/Elev=411\n", + " 4568.4 398.04 4568.6 398.04 4574.3 398.03 4577.0 398.04 4581.4 397.95\n", + " 4583.9 397.76 4588.5 397.36 4592.3 397.06 4595.5 396.81 4602.5 396.17\n", + " 4602.6 396.16 4607.7 395.49 4609.6 395.20 4613.7 394.25 4616.7 393.63\n", + " 4621.5 391.55 4623.7 390.62 4625.0 390.08 4630.8 387.19 4633.4 386.42\n", + " 4637.8 384.82 4640.3 384.16 4644.9 382.96 4648.8 382.49 4651.9 381.81\n", + " 4653.9 381.58 4659.0 380.83 4659.2 380.81 4670.2 379.55 4673.1 379.29\n", + " 4678.0 378.40 4679.5 378.09 4680.1 377.96 4681.5 377.80 4687.2 377.04\n", + " 4692.7 376.71 4694.2 376.62 4696.8 376.31 4701.3 375.62 4704.0 375.10\n", + " 4708.4 374.22 4715.3 373.07 4715.4 373.05 4715.6 373.02 4722.5 372.07\n", + " 4729.5 371.18 4734.4 370.41 4736.0 370.17 4736.6 370.10 4741.1 369.66\n", + " 4743.6 369.51 4749.2 369.50 4750.7 369.48 4751.4 369.49 4756.5 369.48\n", + " 4757.7 369.48 4760.5 369.53 4764.8 369.56 4771.9 369.65 4772.0 369.65\n", + " 4777.0 369.62 4778.9 369.63 4783.0 369.69 4785.9 369.70 4790.8 369.76\n", + " 4792.4 369.75 4793.0 369.73 4794.3 369.70 4800.0 369.53 4805.6 369.34\n", + " 4807.1 369.28 4807.8 369.25 4809.6 369.21 4816.9 369.12 4821.2 369.14\n", + " 4823.2 369.17 4828.3 369.08 4828.4 369.08 4835.3 369.36 4839.4 369.58\n", + " 4842.4 369.74 4847.2 369.97 4849.4 370.11 4850.7 370.18 4856.5 370.45\n", + " 4859.1 370.57 4863.5 370.75 4866.0 370.90 4870.6 371.08 4874.5 371.14\n", + " 4877.6 371.27 4884.6 371.27 4884.7 371.27 4884.9 371.27 4891.7 371.31\n", + " 4895.9 371.44 4903.7 371.72 4905.2 371.76 4905.8 371.78 4910.4 372.13\n", + " 4912.9 372.41 4918.4 373.15 4919.9 373.32 4922.5 373.63 4927.0 374.14\n", + " 4929.7 374.21 4934.1 374.34 4936.0 374.33 4941.1 374.43 4941.3 374.42\n", + " 4948.2 374.13 4951.4 373.80 4955.2 373.03 4960.1 371.76 4961.7 371.30\n", + " 4962.3 371.12 4963.6 370.77 4969.3 369.08 4971.9 368.40 4976.4 367.67\n", + " 4977.1 367.59 4978.9 367.44 4983.4 367.15 4987.3 367.08 4990.5 367.00\n", + " 4995.6 366.90 4996.8 366.87 4997.1 366.11 4997.6 365.61 5002.5 365.61\n", + " 5002.9 366.11 5006.4 366.77 5006.8 366.76 5007.4 366.76 5011.5 366.86\n", + " 5014.8 366.84 5016.2 366.86 5017.9 366.75 5020.9 366.66 5023.3 366.45\n", + " 5025.6 366.38 5028.5 366.46 5031.7 366.66 5039.1 367.18 5040.2 367.23\n", + " 5044.4 367.28 5048.7 367.30 5049.6 367.32 5057.1 367.46 5058.5 367.47\n", + " 5060.2 367.45 5065.6 367.32 5070.8 367.12 5074.0 367.06 5082.0 367.00\n", + " 5082.5 367.00 5086.7 367.01 5090.9 367.14 5091.4 367.16 5091.9 367.17\n", + " 5099.4 367.40 5102.5 367.41 5107.9 367.41 5110.2 367.38 5113.1 367.31\n", + " 5114.9 367.27 5116.3 367.25 5119.6 367.30 5123.6 367.33 5124.8 367.33\n", + " 5129.0 367.32 5133.2 367.25 5134.2 367.24 5141.7 367.21 5143.1 367.21\n", + " 5144.8 367.23 5147.8 367.17 5150.1 367.12 5155.4 367.08 5158.6 367.04\n", + " 5165.9 366.81 5166.6 366.82 5167.1 366.81 5171.3 366.72 5175.5 366.51\n", + " 5176.0 366.50 5176.5 366.50 5184.0 366.61 5192.4 366.68 5197.7 366.82\n", + " 5199.4 366.84 5200.9 366.87 5208.2 366.95 5209.3 366.96 5213.5 367.03\n", + " 5217.8 367.05 5218.8 367.07 5226.3 367.14 5227.6 367.14 5229.4 367.16\n", + " 5234.7 367.18 5237.0 367.19 5239.9 367.13 5243.2 367.12 5246.4 367.16\n", + " 5250.5 367.15 5251.1 367.14 5251.6 367.13 5260.1 367.11 5261.1 367.11\n", + " 5268.5 367.15 5271.6 367.13 5274.6 367.14 5277.0 367.10 5279.3 367.11\n", + " 5282.2 367.11 5285.5 367.15 5292.8 367.15 5293.9 367.14 5298.4 367.24\n", + " 5302.4 367.32 5302.8 367.33 5303.4 367.33 5307.5 367.33 5310.8 367.32\n", + " 5313.9 367.16 5319.3 366.94 5324.5 367.05 5327.7 367.04 5335.1 366.73\n", + " 5336.2 366.70 5340.4 366.64 5344.7 366.64 5345.6 366.66 5349.8 366.66\n", + " 5353.1 366.64 5354.5 366.64 5356.2 366.71 5361.6 366.88 5363.9 366.90\n", + " 5366.8 366.89 5368.6 366.88 5370.0 366.85 5377.4 366.76 5378.0 366.77\n", + " 5378.5 366.77 5383.0 366.80 5387.0 366.84 5387.4 366.84 5387.9 366.83\n", + " 5395.4 366.68 5398.5 366.61 5401.5 366.51 5403.9 366.45 5406.2 366.39\n", + " 5409.1 366.36 5412.3 366.36 5419.6 366.29 5420.8 366.27 5429.2 366.11\n", + " 5430.2 366.11 5434.4 366.18 5437.7 366.24 5440.8 366.28 5446.1 366.34\n", + " 5453.2 366.28 5454.6 366.28 5461.9 366.32 5463.1 366.32 5467.3 366.36\n", + " 5472.5 366.33 5480.0 366.35 5481.4 366.38 5483.1 366.39 5486.0 366.44\n", + " 5488.4 366.48 5493.7 366.55 5496.9 366.57 5504.2 366.60 5505.3 366.60\n", + " 5509.5 366.63 5513.8 366.61 5514.8 366.62 5522.3 366.73 5525.4 366.76\n", + " 5530.7 366.75 5535.9 366.63 5537.7 366.58 5539.2 366.55 5546.5 366.50\n", + " 5547.6 366.48 5551.8 366.42 5556.1 366.37 5557.1 366.37 5564.5 366.52\n", + " 5565.9 366.55 5567.7 366.60 5573.0 366.73 5578.2 366.79 5581.5 366.74\n", + " 5588.8 366.71 5589.4 366.71 5589.9 366.71 5598.4 366.91 5599.4 366.93\n", + " 5609.9 367.12 5612.9 367.22 5615.3 367.26 5620.5 367.51 5622.3 367.59\n", + " 5623.8 367.61 5631.1 367.44 5632.2 367.41 5640.7 367.22 5641.6 367.23\n", + " 5649.1 367.46 5652.2 367.55 5655.2 367.67 5657.6 367.77 5659.9 367.88\n", + " 5666.0 368.16 5669.3 368.34 5673.4 368.73 5674.0 368.78 5674.5 368.82\n", + " 5678.7 369.14 5683.0 369.47 5683.4 369.50 5683.9 369.53 5691.4 369.85\n", + " 5694.5 370.08 5699.9 370.63 5705.1 371.45 5708.3 371.95 5711.6 372.48\n", + " 5715.6 373.37 5716.3 373.48 5716.8 373.59 5721.3 374.28 5725.2 374.88\n", + " 5725.7 374.92 5726.2 374.98 5733.7 375.39 5736.8 375.48 5742.1 375.64\n", + " 5744.5 375.64 5747.4 375.77 5750.6 375.96 5753.9 376.10 5757.9 376.40\n", + " 5767.5 376.97 5768.5 377.02 5776.0 377.28 5784.4 377.64 5789.7 377.95\n", + " 5791.5 378.07 5792.9 378.16 5796.1 378.27 5800.2 378.38 5801.3 378.41\n", + " 5809.8 378.50 5810.3 378.52 5810.8 378.55 5814.9 378.81 5818.3 378.91\n", + " 5821.4 379.05 5824.3 379.25 5826.7 379.30 5829.0 379.40 5831.9 379.56\n", + " 5833.7 379.68 5835.2 379.77 5842.5 380.22 5843.1 380.27 5843.6 380.30\n", + " 5852.1 381.03 5853.1 381.07 5860.6 381.36 5861.9 381.45 5863.7 381.55\n", + " 5869.0 381.82 5871.3 382.00 5874.2 382.19 5876.0 382.31 5877.5 382.39\n", + " 5884.8 382.57 5885.9 382.60 5890.4 382.64 5894.4 382.67 5894.8 382.68\n", + " 5895.4 382.69 5902.8 382.80 5905.9 382.81 5908.9 382.80 5911.3 382.82\n", + " 5916.5 382.90 5918.3 382.93 5919.8 382.98 5923.0 383.06 5927.1 383.29\n", + " 5927.7 383.32 5928.2 383.34 5932.7 383.54 5936.7 383.71 5937.1 383.72\n", + " 5937.7 383.72 5945.1 383.77 5948.2 383.77 5953.6 383.79 5955.9 383.83\n", + " 5956.1 383.83\n", + "#Mann=3,-1,0\n", + " 4568.4 0.07 0 4997.1 0.07 0 5002.9 0.07 0\n", + "Bank Sta=4997.1,5002.9\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,970,454,454,454\n", + "BEGIN DESCRIPTION:\n", + "Stream0512 2.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 807775.02 369774.99 807425.00 370075.00\n", + " 807025.00 370425.00\n", + "#Sta/Elev=273\n", + " 4538.2 385.23 4543.7 385.03 4544.0 385.01 4544.3 385.00 4548.7 384.83\n", + " 4553.0 384.62 4553.4 384.60 4553.8 384.58 4561.7 384.18 4564.0 384.06\n", + " 4570.4 383.50 4572.1 383.33 4574.1 383.09 4579.1 382.57 4581.5 382.28\n", + " 4584.3 381.90 4586.2 381.66 4587.8 381.45 4596.5 380.50 4600.2 380.20\n", + " 4604.6 379.86 4605.2 379.82 4613.9 379.37 4614.7 379.32 4622.6 378.62\n", + " 4624.9 378.38 4631.3 377.51 4635.0 376.90 4640.0 375.89 4642.4 375.38\n", + " 4645.2 374.83 4647.1 374.42 4648.7 374.10 4655.3 372.84 4656.4 372.66\n", + " 4657.4 372.52 4665.5 371.54 4665.8 371.51 4666.1 371.49 4670.5 371.25\n", + " 4675.6 370.87 4683.5 370.40 4684.5 370.32 4685.7 370.24 4692.2 369.77\n", + " 4693.9 369.62 4695.9 369.47 4700.9 369.10 4703.3 368.97 4706.0 368.81\n", + " 4709.6 368.65 4716.2 368.48 4718.3 368.41 4722.0 368.18 4726.3 367.95\n", + " 4727.0 367.90 4731.4 367.46 4735.7 367.30 4736.5 367.27 4740.7 367.07\n", + " 4744.4 366.91 4746.6 366.78 4750.1 366.55 4753.1 366.46 4754.8 366.40\n", + " 4756.8 366.36 4759.5 366.30 4761.8 366.29 4768.8 366.20 4770.5 366.20\n", + " 4777.1 366.11 4779.2 366.04 4787.2 365.86 4787.6 365.86 4787.9 365.85\n", + " 4796.6 365.71 4806.3 365.69 4807.5 365.70 4814.0 365.74 4817.7 365.69\n", + " 4822.6 365.66 4827.8 365.67 4831.3 365.65 4834.4 365.63 4838.0 365.65\n", + " 4840.0 365.68 4848.1 365.87 4848.7 365.89 4857.4 365.99 4858.2 365.99\n", + " 4866.1 365.88 4867.2 365.87 4868.4 365.87 4871.9 365.79 4874.8 365.89\n", + " 4878.5 365.89 4883.5 365.85 4888.7 365.84 4892.2 365.76 4895.3 365.70\n", + " 4898.8 365.69 4900.9 365.71 4904.6 365.70 4909.0 365.78 4909.6 365.79\n", + " 4913.5 365.84 4918.3 365.90 4919.1 365.92 4923.4 365.99 4927.0 366.01\n", + " 4935.7 366.03 4937.4 366.07 4939.4 366.08 4944.4 366.14 4949.6 366.23\n", + " 4951.5 366.23 4953.1 366.21 4959.7 365.83 4961.8 365.72 4965.5 365.58\n", + " 4969.9 365.46 4970.2 365.45 4970.5 365.45 4979.2 365.66 4979.6 365.66\n", + " 4980.0 365.66 4987.9 365.69 4989.0 365.71 4990.2 365.72 4996.6 365.74\n", + " 4996.8 364.54 4997.3 364.04 5002.7 364.04 5003.2 364.54 5005.4 365.35\n", + " 5010.3 364.97 5012.4 364.79 5014.1 364.72 5017.0 364.54 5020.4 364.98\n", + " 5022.9 365.24 5030.4 365.65 5031.7 365.66 5040.4 365.58 5045.1 365.45\n", + " 5049.2 365.30 5050.5 365.25 5058.0 365.04 5060.5 364.97 5063.8 364.93\n", + " 5066.8 364.92 5070.5 364.93 5073.2 364.90 5075.6 364.96 5080.5 365.18\n", + " 5082.6 365.25 5084.3 365.28 5090.6 365.26 5091.9 365.27 5093.1 365.29\n", + " 5100.6 365.23 5101.9 365.21 5110.6 364.94 5110.9 364.93 5119.4 364.93\n", + " 5120.0 364.94 5120.7 364.95 5128.2 365.10 5130.7 365.17 5137.0 365.29\n", + " 5140.7 365.37 5145.8 365.47 5148.1 365.49 5150.7 365.53 5154.5 365.54\n", + " 5160.8 365.63 5163.3 365.68 5166.8 365.72 5170.8 365.79 5172.1 365.83\n", + " 5176.2 365.93 5180.8 366.07 5189.6 366.19 5190.9 366.19 5194.9 366.20\n", + " 5198.4 366.19 5200.9 366.20 5204.2 366.24 5207.2 366.33 5210.9 366.50\n", + " 5216.0 366.71 5218.3 366.79 5220.9 366.84 5223.0 366.83 5224.7 366.84\n", + " 5231.0 366.80 5232.3 366.80 5233.5 366.81 5241.0 367.06 5242.3 367.10\n", + " 5251.0 367.43 5259.8 367.71 5260.4 367.72 5261.0 367.72 5268.6 367.69\n", + " 5269.8 367.68 5271.1 367.67 5277.4 367.81 5281.1 368.05 5288.5 368.62\n", + " 5291.1 368.84 5293.2 368.99 5294.9 369.13 5301.2 369.68 5303.7 369.94\n", + " 5311.2 370.53 5312.5 370.58 5321.2 370.40 5330.0 370.73 5330.6 370.75\n", + " 5331.3 370.78 5338.8 370.91 5341.3 370.93 5344.6 370.93 5347.6 371.10\n", + " 5351.3 371.44 5354.0 371.72 5356.4 371.90 5361.3 372.29 5363.4 372.46\n", + " 5365.1 372.68 5371.4 373.40 5373.9 373.67 5377.4 374.03 5381.4 374.30\n", + " 5382.7 374.37 5386.8 374.69 5391.4 375.14 5391.7 375.17 5400.2 376.03\n", + " 5401.5 376.11 5409.0 376.54 5411.5 376.64 5414.8 376.80 5417.8 377.04\n", + " 5421.5 377.26 5426.6 377.50 5431.5 377.75 5435.3 377.88 5438.3 378.04\n", + " 5441.6 378.27 5442.9 378.37 5444.1 378.45 5451.6 378.97 5452.9 379.02\n", + " 5461.6 379.17 5471.0 379.47 5479.2 380.05 5480.4 380.12 5485.1 380.37\n", + " 5488.0 380.55 5489.7 380.64 5491.7 380.72 5496.8 380.94 5501.7 381.18\n", + " 5503.8 381.29 5505.5 381.40 5511.8 381.61 5514.3 381.63 5517.8 381.64\n", + " 5521.8 381.68 5523.1 381.71 5530.7 381.88\n", + "#Mann=3,-1,0\n", + " 4538.2 0.07 0 4996.8 0.07 0 5003.2 0.07 0\n", + "Bank Sta=4996.8,5003.2\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,516,405,405,405\n", + "BEGIN DESCRIPTION:\n", + "Stream0512 1.0\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 807324.99 369375.03 807175.00 369775.00\n", + " 806824.99 370175.02\n", + "#Sta/Elev=275\n", + " 4573.3 404.53 4574.0 404.50 4579.4 403.89 4581.1 403.75 4583.8 403.37\n", + " 4588.1 402.73 4590.7 402.30 4595.2 401.56 4602.0 400.11 4602.2 400.06\n", + " 4602.6 399.98 4607.5 398.79 4609.3 398.41 4613.3 397.70 4616.3 397.13\n", + " 4617.7 396.88 4621.4 396.42 4623.4 396.17 4628.0 395.50 4630.5 395.15\n", + " 4635.9 394.18 4637.5 393.90 4643.4 392.95 4644.6 392.78 4648.5 392.29\n", + " 4651.6 391.89 4658.5 391.14 4658.7 391.11 4659.0 391.08 4663.9 390.60\n", + " 4665.7 390.44 4669.0 390.11 4672.8 389.65 4677.8 389.15 4679.8 388.97\n", + " 4686.9 388.37 4689.5 388.19 4693.9 387.74 4694.7 387.67 4696.6 387.45\n", + " 4701.0 386.99 4703.6 386.78 4708.0 386.39 4710.1 386.21 4715.1 385.79\n", + " 4715.4 385.74 4722.1 384.88 4726.2 384.34 4729.2 383.98 4734.3 383.49\n", + " 4736.2 383.29 4737.4 383.19 4743.3 382.66 4748.7 382.25 4750.4 382.11\n", + " 4753.1 381.84 4756.2 381.51 4757.4 381.40 4761.4 381.10 4764.5 380.83\n", + " 4766.5 380.67 4771.5 380.07 4771.6 380.06 4771.9 380.03 4778.6 379.38\n", + " 4782.6 379.16 4785.6 379.02 4790.7 378.57 4792.7 378.36 4797.3 377.70\n", + " 4799.7 377.40 4802.4 376.92 4806.8 376.01 4809.5 375.34 4812.6 374.52\n", + " 4813.8 374.24 4820.9 372.49 4827.7 370.73 4827.9 370.67 4828.3 370.59\n", + " 4835.0 369.19 4839.0 368.62 4842.0 368.19 4847.1 367.67 4849.1 367.50\n", + " 4853.7 367.04 4856.2 366.91 4858.8 366.72 4863.2 366.60 4865.9 366.49\n", + " 4870.3 366.31 4872.9 366.22 4877.3 366.09 4884.1 366.22 4884.4 366.23\n", + " 4884.5 366.23 4884.7 366.23 4891.4 366.37 4895.4 366.19 4898.5 366.02\n", + " 4899.8 365.92 4903.5 365.61 4905.5 365.42 4910.1 365.10 4912.6 365.02\n", + " 4915.2 364.97 4919.6 364.88 4920.4 364.86 4925.5 364.64 4926.7 364.62\n", + " 4929.3 364.59 4933.7 364.52 4940.6 364.48 4940.8 364.48 4941.1 364.48\n", + " 4946.0 364.43 4947.8 364.38 4951.8 364.21 4954.9 364.12 4960.0 363.99\n", + " 4961.4 363.97 4961.9 363.95 4963.1 363.94 4969.0 363.79 4971.7 363.73\n", + " 4976.1 363.66 4978.8 363.60 4983.1 363.49 4987.0 363.37 4990.2 363.29\n", + " 4992.2 363.24 4996.7 361.14 4997.2 360.64 5002.9 360.64 5003.4 361.14\n", + " 5005.2 362.65 5009.0 361.89 5011.6 361.36 5014.0 361.14 5019.0 361.55\n", + " 5022.7 362.05 5025.7 362.54 5029.0 362.89 5031.5 363.01 5035.0 362.93\n", + " 5039.0 362.66 5039.7 362.65 5040.3 362.68 5044.4 362.73 5049.1 363.15\n", + " 5057.8 363.43 5059.1 363.45 5066.6 363.45 5067.8 363.50 5069.1 363.54\n", + " 5072.5 363.73 5075.4 363.79 5079.2 363.92 5081.8 364.00 5084.2 364.03\n", + " 5089.2 364.10 5092.9 364.12 5095.9 364.08 5101.7 364.19 5109.2 364.29\n", + " 5109.9 364.29 5110.5 364.29 5119.2 364.27 5128.0 364.22 5128.6 364.22\n", + " 5129.3 364.23 5136.8 364.29 5138.0 364.28 5139.3 364.31 5145.6 364.29\n", + " 5147.4 364.26 5149.4 364.23 5152.0 364.18 5154.4 364.13 5156.7 364.04\n", + " 5159.4 364.01 5163.1 364.02 5166.1 364.02 5169.4 364.02 5171.9 364.02\n", + " 5175.4 364.04 5179.5 364.09 5180.1 364.09 5180.7 364.08 5184.8 364.11\n", + " 5189.5 364.17 5194.2 364.14 5198.2 364.14 5199.5 364.15 5203.5 364.26\n", + " 5209.5 364.40 5212.9 364.44 5215.8 364.45 5219.6 364.45 5224.6 364.50\n", + " 5226.9 364.50 5233.3 364.64 5239.6 364.66 5242.1 364.65 5249.6 364.61\n", + " 5250.9 364.59 5259.6 364.69 5268.4 365.28 5269.7 365.33 5277.2 365.64\n", + " 5279.7 365.69 5286.0 365.78 5289.8 365.83 5294.8 366.04 5299.8 366.17\n", + " 5303.5 366.32 5306.5 366.47 5309.8 366.55 5312.3 366.65 5319.8 367.15\n", + " 5321.1 367.24 5329.8 367.80 5338.6 368.04 5339.2 368.04 5339.9 368.06\n", + " 5343.9 368.12 5347.4 368.34 5349.9 368.43 5356.2 368.72 5360.0 369.07\n", + " 5365.0 369.36 5367.3 369.45 5370.0 369.51 5373.7 369.71 5376.7 369.80\n", + " 5380.0 370.00 5382.5 370.20 5390.1 370.91 5390.7 370.94 5391.3 371.00\n", + " 5400.1 371.76 5408.8 372.27 5410.1 372.35 5414.1 372.59 5417.6 372.73\n", + " 5420.1 372.85 5426.4 373.30 5435.2 374.01 5440.2 374.27 5443.9 374.57\n", + " 5446.9 374.86 5450.2 375.16 5451.6 375.26 5452.7 375.39 5460.3 376.15\n", + " 5460.9 376.19 5461.5 376.22 5470.2 376.90 5479.1 377.54 5480.3 377.56\n", + " 5484.3 377.56 5487.8 377.70 5490.3 377.84 5496.6 378.07 5500.4 378.24\n", + " 5505.4 378.50 5510.4 378.85 5514.1 379.03 5517.1 379.11 5520.4 379.19\n", + " 5522.9 379.16 5530.5 379.16 5531.1 379.18 5531.7 379.18 5532.0 379.18\n", + "#Mann=3,-1,0\n", + " 4573.3 0.07 0 4996.7 0.07 0 5003.4 0.07 0\n", + "Bank Sta=4996.7,5003.4\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1,111,0,0,0\n", + "BEGIN DESCRIPTION:\n", + "Stream0511 0.5\n", + "END DESCRIPTION:\n", + "XS GIS Cut Line=3\n", + " 807148.05 369310.04 806728.26 369906.93\n", + " 806800.42 370208.69\n", + "#Sta/Elev=322\n", + " 4369.8 391.25 4374.7 390.62 4377.4 390.29 4378.6 390.13 4382.6 389.58\n", + " 4385.5 389.14 4387.4 388.81 4390.1 388.35 4393.6 387.77 4401.5 386.59\n", + " 4401.9 386.55 4409.7 385.54 4411.1 385.36 4413.0 385.06 4417.8 384.34\n", + " 4424.5 383.41 4425.9 383.23 4430.0 382.68 4433.9 382.19 4439.5 381.71\n", + " 4442.0 381.49 4447.5 381.07 4450.1 380.80 4453.7 380.31 4458.2 379.64\n", + " 4458.5 379.57 4458.9 379.49 4466.2 378.32 4470.4 377.74 4472.7 377.45\n", + " 4474.3 377.31 4481.9 376.70 4482.4 376.66 4483.5 376.57 4490.5 376.04\n", + " 4491.7 375.95 4493.4 375.80 4496.4 375.54 4498.5 375.33 4504.9 374.69\n", + " 4505.9 374.60 4506.6 374.54 4510.7 374.22 4514.7 373.93 4516.3 373.81\n", + " 4522.7 373.48 4527.8 373.11 4529.6 372.97 4530.8 372.86 4534.3 372.40\n", + " 4538.9 371.93 4539.3 371.88 4547.0 371.07 4550.8 370.78 4553.3 370.57\n", + " 4555.0 370.51 4562.3 370.07 4563.1 370.01 4565.1 369.81 4571.2 369.17\n", + " 4572.2 369.08 4573.7 368.96 4577.0 368.81 4579.3 368.64 4585.2 368.25\n", + " 4586.5 368.15 4587.3 368.05 4592.4 367.64 4595.4 367.41 4596.7 367.34\n", + " 4603.5 367.06 4605.4 367.02 4608.2 367.02 4611.6 367.05 4614.9 367.05\n", + " 4619.6 367.16 4629.1 367.17 4631.1 367.16 4633.9 367.11 4635.8 367.10\n", + " 4642.6 366.98 4643.9 366.96 4651.9 366.95 4654.1 366.93 4660.0 366.91\n", + " 4665.6 366.67 4668.1 366.48 4671.8 366.26 4676.2 366.17 4676.5 366.15\n", + " 4677.1 366.14 4684.2 365.97 4686.0 365.90 4688.5 365.85 4690.7 365.76\n", + " 4692.3 365.65 4695.5 365.47 4700.0 365.18 4700.4 365.17 4701.2 365.16\n", + " 4708.5 365.12 4711.5 365.08 4716.5 364.93 4723.0 364.55 4723.9 364.49\n", + " 4724.6 364.44 4728.7 364.17 4732.7 364.01 4734.5 364.01 4740.7 364.11\n", + " 4745.9 364.12 4748.8 364.08 4752.4 364.04 4756.9 364.12 4757.4 364.12\n", + " 4765.0 364.14 4766.6 364.17 4768.9 364.12 4773.0 364.08 4780.4 364.06\n", + " 4780.8 364.06 4781.1 364.06 4785.5 363.99 4789.2 363.92 4790.3 363.90\n", + " 4791.9 363.89 4797.3 363.88 4803.3 363.84 4804.5 363.82 4805.3 363.80\n", + " 4810.0 363.72 4813.4 363.66 4814.0 363.63 4814.8 363.65 4821.5 363.68\n", + " 4823.5 363.68 4826.3 363.73 4828.2 363.74 4829.6 363.74 4837.3 363.89\n", + " 4837.6 363.89 4837.8 363.90 4842.4 363.99 4845.7 364.05 4847.2 364.07\n", + " 4849.3 364.09 4851.9 364.10 4853.8 364.12 4860.7 364.07 4861.4 364.06\n", + " 4861.8 364.07 4864.5 363.98 4869.9 363.77 4872.2 363.65 4878.0 363.32\n", + " 4883.7 363.29 4885.1 363.27 4886.1 363.26 4891.7 363.32 4894.1 363.35\n", + " 4895.2 363.35 4902.2 363.29 4904.1 363.18 4906.7 363.09 4908.8 363.02\n", + " 4910.3 362.97 4918.1 362.76 4918.3 362.75 4923.0 362.75 4926.4 362.69\n", + " 4929.6 362.68 4932.5 362.69 4934.5 362.69 4941.1 362.66 4942.0 362.67\n", + " 4946.7 362.55 4950.7 362.41 4952.6 362.37 4958.7 362.24 4960.9 362.17\n", + " 4964.1 362.00 4965.7 361.95 4966.8 361.86 4970.4 361.53 4974.9 361.23\n", + " 4975.5 361.25 4983.0 361.56 4987.0 361.92 4989.4 362.00 4991.0 362.12\n", + " 4996.7 361.23 4997.2 360.73 5002.9 360.73 5003.4 361.23 5003.6 362.55\n", + " 5007.2 362.60 5008.3 362.50 5010.0 362.40 5015.3 362.03 5021.5 361.64\n", + " 5023.3 361.56 5027.3 361.49 5031.4 361.68 5032.9 361.72 5036.8 361.77\n", + " 5039.5 361.85 5041.5 361.91 5044.4 362.02 5046.3 362.05 5047.5 362.10\n", + " 5051.0 362.36 5055.6 362.80 5055.9 362.82 5063.7 363.40 5067.4 363.49\n", + " 5071.8 363.57 5078.9 363.67 5079.8 363.69 5082.2 363.74 5087.9 363.88\n", + " 5090.3 363.88 5096.0 363.88 5099.5 363.93 5101.5 364.04 5103.3 364.12\n", + " 5107.0 364.41 5110.1 364.55 5115.2 364.81 5116.9 364.92 5123.4 365.14\n", + " 5123.7 365.14 5124.2 365.15 5134.4 365.11 5137.3 365.13 5139.9 365.22\n", + " 5144.1 365.33 5150.7 365.65 5150.8 365.66 5150.9 365.66 5157.7 365.92\n", + " 5161.8 366.14 5164.5 366.15 5167.3 366.30 5171.2 366.51 5172.7 366.54\n", + " 5178.0 366.80 5178.2 366.81 5179.1 366.83 5184.8 366.98 5189.2 367.06\n", + " 5191.6 367.15 5195.2 367.28 5196.0 367.28 5198.4 367.38 5200.2 367.51\n", + " 5205.2 367.98 5205.6 368.01 5207.5 368.16 5212.0 368.47 5216.6 368.55\n", + " 5218.8 368.65 5222.3 368.82 5225.6 368.95 5231.3 369.29 5232.4 369.36\n", + " 5233.0 369.42 5235.8 369.70 5238.5 369.97 5244.0 370.48 5245.9 370.62\n", + " 5249.5 370.77 5252.7 370.91 5254.9 370.97 5259.5 371.11 5260.4 371.14\n", + " 5264.3 371.31 5265.9 371.37 5266.3 371.40 5271.4 371.79 5273.1 371.92\n", + " 5276.9 372.15 5279.9 372.42 5282.3 372.69 5286.7 373.19 5292.6 373.60\n", + " 5293.5 373.66 5298.8 374.12 5300.3 374.33 5302.6 374.74 5307.0 375.42\n", + " 5313.8 376.50 5315.2 376.66 5320.6 377.11 5321.1 377.15 5327.4 377.59\n", + " 5329.4 377.80 5334.2 378.20 5337.1 378.52 5341.0 378.97 5347.3 379.36\n", + " 5347.8 379.42 5349.4 379.46 5354.6 379.50 5359.1 379.68 5361.4 379.73\n", + " 5365.1 379.87 5368.2 379.97 5374.0 380.34 5374.9 380.38 5377.8 380.52\n", + " 5381.0 380.66 5381.7 380.70 5386.5 380.85 5388.5 380.96 5391.9 381.21\n", + " 5395.3 381.41 5397.4 381.56 5402.1 381.97 5406.2 382.16 5408.4 382.22\n", + " 5408.9 382.22 5409.8 382.22\n", + "#Mann=3,-1,0\n", + " 4369.8 0.07 0 4996.7 0.07 0 5003.4 0.07 0\n", + "Bank Sta=4996.7,5003.4\n", + "Exp/Cntr=0.3,0.1\n", + "\n", + "Chan Stop Cuts=-1\"]]\n", + "station_elevation_points: [[\"[(4499.1, 241.3), (4502.6, 241.08), (4508.1, 240.72), (4525.5, 239.49), (4538.6, 238.45), (4541.0, 238.23), (4556.0, 236.88), (4574.5, 235.11), (4604.0, 232.37), (4610.5, 231.73), (4646.5, 228.57), (4648.8, 228.37), (4652.0, 228.13), (4669.4, 226.75), (4682.5, 225.74), (4689.9, 225.13), (4699.9, 224.39), (4718.4, 223.19), (4747.9, 221.12), (4754.4, 220.79), (4772.2, 220.03), (4790.4, 218.68), (4795.9, 218.36), (4826.4, 218.5), (4843.8, 220.2), (4854.4, 222.24), (4862.3, 223.75), (4874.9, 226.81), (4891.8, 230.2), (4895.9, 230.7), (4898.3, 230.99), (4917.8, 231.53), (4934.3, 232.1), (4939.7, 231.87), (4970.2, 228.16), (4987.7, 225.95), (4998.0, 218.36), (4998.2, 217.86), (5001.8, 217.86), (5002.1, 218.36), (5010.7, 223.52), (5024.3, 222.97), (5041.7, 222.97), (5056.7, 223.02), (5057.3, 223.02), (5061.7, 223.03), (5188.4, 223.05), (5198.0, 223.04), (5245.5, 223.01), (5255.4, 223.01), (5304.2, 222.95), (5321.4, 223.06), (5336.4, 223.19), (5362.9, 223.22), (5387.5, 223.49), (5420.5, 223.97), (5453.5, 225.03), (5463.2, 225.49), (5480.3, 226.15), (5494.5, 226.65), (5519.6, 227.58), (5539.0, 230.01), (5552.6, 231.77), (5568.8, 234.4), (5578.4, 236.1), (5585.6, 237.38), (5597.7, 238.56), (5611.1, 239.63), (5618.6, 240.34), (5645.5, 241.06), (5651.6, 241.22), (5684.7, 241.94), (5715.1, 242.4), (5716.8, 242.42), (5717.7, 242.44), (5721.0, 242.51), (5750.7, 243.15), (5759.0, 243.35), (5773.8, 243.81), (5783.7, 244.06), (5816.7, 244.98), (5832.5, 245.51), (5849.7, 246.1), (5871.9, 247.04), (5882.8, 247.48), (5906.9, 248.45), (5915.8, 248.77), (5917.0, 248.82)]\",\"[(4596.9, 238.12), (4607.4, 237.3), (4614.9, 236.74), (4665.4, 232.76), (4694.4, 230.63), (4718.0, 228.96), (4723.4, 228.56), (4743.8, 226.84), (4752.4, 226.14), (4769.6, 224.66), (4781.4, 223.73), (4810.4, 221.66), (4829.7, 220.47), (4846.9, 219.48), (4868.4, 218.38), (4872.7, 218.13), (4897.4, 216.99), (4898.5, 216.96), (4926.4, 216.05), (4955.4, 215.76), (4984.4, 215.76), (4998.0, 215.76), (4998.2, 215.26), (5001.8, 215.26), (5002.1, 215.76), (5013.8, 216.26), (5023.9, 216.41), (5038.6, 216.88), (5048.4, 217.27), (5075.8, 218.08), (5080.1, 218.22), (5083.0, 218.36), (5097.4, 219.05), (5117.6, 219.94), (5127.7, 220.6), (5142.4, 221.45), (5152.2, 222.35), (5163.1, 223.12), (5168.7, 223.66), (5179.6, 224.7), (5183.9, 224.98), (5186.8, 225.21), (5201.2, 226.23), (5221.4, 227.59), (5231.5, 228.34), (5256.0, 229.8), (5283.3, 231.49), (5287.7, 231.68), (5290.5, 231.86), (5308.4, 232.7), (5325.1, 233.87), (5329.2, 234.17), (5335.2, 234.67), (5339.5, 234.93), (5359.7, 236.16), (5360.6, 236.21)]\",\"[(4433.8, 246.73), (4461.2, 244.11), (4463.3, 243.94), (4482.6, 241.76), (4501.9, 240.4), (4502.9, 240.29), (4504.0, 240.22), (4523.3, 237.89), (4542.6, 236.45), (4544.7, 236.25), (4583.3, 232.69), (4585.4, 232.51), (4624.0, 229.18), (4625.0, 229.09), (4626.1, 229.0), (4664.7, 225.22), (4665.7, 225.11), (4666.8, 225.02), (4686.1, 223.11), (4705.4, 221.69), (4707.5, 221.53), (4746.1, 219.33), (4748.2, 219.25), (4767.5, 218.53), (4786.8, 217.91), (4788.8, 217.86), (4827.5, 216.55), (4829.5, 216.5), (4848.9, 216.01), (4868.2, 215.56), (4869.2, 215.53), (4870.3, 215.52), (4909.9, 214.99), (4911.0, 214.98), (4930.3, 214.96), (4951.7, 214.68), (4971.0, 214.53), (4992.4, 214.44), (4998.0, 214.44), (4998.2, 213.94), (5001.8, 213.94), (5002.1, 214.44), (5023.2, 214.64), (5052.0, 215.06), (5058.5, 215.17), (5080.8, 215.64), (5103.0, 216.19), (5109.6, 216.34), (5116.1, 216.56), (5138.3, 217.12), (5160.6, 217.92), (5167.1, 218.12), (5195.9, 218.62), (5224.7, 218.95), (5246.9, 219.31), (5253.4, 219.38), (5275.7, 219.92), (5282.2, 220.02), (5288.7, 220.2), (5311.0, 220.94), (5317.5, 221.22), (5331.7, 221.8), (5339.8, 222.13), (5368.6, 223.29), (5397.3, 224.58), (5448.4, 227.28), (5454.9, 227.61), (5461.4, 227.9), (5483.7, 229.06), (5490.2, 229.36), (5512.5, 230.56), (5534.7, 231.71), (5541.2, 232.03), (5547.7, 232.52), (5561.6, 233.45), (5570.0, 234.02), (5592.3, 235.86), (5598.8, 236.59), (5605.3, 237.14), (5627.6, 238.74), (5634.1, 238.95), (5649.5, 239.52)]\",\"[(3931.6, 241.95), (3955.4, 241.31), (3972.5, 240.61), (3993.7, 239.63), (4004.2, 239.07), (4016.2, 238.5), (4031.9, 237.63), (4059.9, 235.96), (4070.1, 235.27), (4085.8, 234.13), (4103.6, 233.09), (4106.2, 232.93), (4108.4, 232.83), (4146.6, 230.97), (4147.3, 230.93), (4184.9, 228.66), (4187.7, 228.47), (4191.0, 228.29), (4208.1, 227.09), (4223.1, 226.17), (4234.7, 225.37), (4261.3, 223.64), (4278.4, 222.5), (4289.7, 221.89), (4299.6, 221.32), (4322.1, 219.94), (4365.8, 218.5), (4371.3, 218.38), (4376.1, 218.35), (4409.5, 217.87), (4414.3, 217.75), (4452.9, 216.59), (4453.2, 216.58), (4490.8, 215.82), (4493.7, 215.76), (4496.9, 215.71), (4529.0, 215.47), (4534.4, 215.44), (4540.6, 215.38), (4584.3, 215.05), (4605.5, 215.0), (4656.8, 215.03), (4671.8, 215.01), (4682.0, 215.02), (4715.5, 214.92), (4718.0, 214.91), (4720.2, 214.9), (4738.4, 214.71), (4758.8, 214.38), (4759.2, 214.38), (4796.7, 213.94), (4802.9, 213.91), (4834.9, 213.87), (4860.8, 213.88), (4873.2, 213.85), (4977.7, 213.83), (4994.6, 213.85), (4997.6, 213.83), (4998.0, 213.33), (5002.1, 213.33), (5002.4, 213.83), (5020.7, 213.84), (5107.7, 213.88), (5115.8, 213.95), (5129.3, 214.01), (5147.5, 214.24), (5158.6, 214.48), (5179.2, 215.06), (5194.4, 215.61), (5210.9, 216.17), (5227.3, 216.51), (5237.8, 216.65), (5242.6, 216.68), (5274.3, 216.91), (5281.1, 216.95), (5324.5, 217.51), (5337.7, 217.72), (5339.6, 217.74), (5346.2, 217.79), (5369.4, 218.11), (5389.6, 218.45), (5401.1, 218.63), (5432.4, 219.23), (5432.8, 219.23), (5433.3, 219.25), (5464.5, 220.54), (5491.2, 222.01), (5496.2, 222.27), (5519.7, 223.59), (5527.9, 224.04), (5541.4, 224.83), (5559.6, 225.63), (5563.1, 225.81), (5570.7, 226.08), (5588.7, 226.88), (5591.3, 227.0), (5606.4, 228.14), (5623.0, 229.29), (5639.3, 231.8), (5654.7, 234.26), (5671.5, 236.98), (5686.4, 238.6), (5708.0, 239.45), (5710.5, 239.55)]\",\"[(3724.5, 242.87), (3734.7, 242.14), (3748.3, 241.26), (3753.8, 240.92), (3775.7, 239.57), (3778.7, 239.38), (3800.7, 238.14), (3809.0, 237.76), (3823.4, 237.04), (3837.6, 236.5), (3839.4, 236.43), (3846.2, 236.06), (3869.7, 234.89), (3900.0, 233.51), (3916.7, 232.93), (3930.4, 232.39), (3937.2, 232.15), (3957.7, 231.53), (3959.9, 231.46), (3991.0, 230.58), (4007.7, 230.16), (4021.4, 229.79), (4028.2, 229.48), (4048.7, 228.93), (4051.7, 228.83), (4053.2, 228.77), (4082.0, 227.41), (4096.4, 226.85), (4112.4, 226.27), (4128.2, 225.76), (4128.3, 225.76), (4164.7, 224.58), (4173.0, 224.34), (4189.7, 223.93), (4230.7, 222.87), (4233.7, 222.78), (4255.7, 222.23), (4264.0, 222.03), (4280.7, 221.92), (4294.4, 221.8), (4301.2, 221.72), (4324.0, 221.37), (4324.7, 221.35), (4355.1, 220.9), (4412.7, 220.21), (4415.0, 220.18), (4415.7, 220.18), (4417.2, 220.16), (4446.1, 219.96), (4460.5, 219.92), (4463.3, 219.89), (4503.7, 219.44), (4506.7, 219.4), (4508.2, 219.38), (4537.1, 219.19), (4567.4, 219.07), (4597.7, 218.89), (4599.2, 218.87), (4628.1, 218.5), (4642.5, 218.25), (4658.4, 218.05), (4719.1, 217.17), (4735.8, 216.87), (4749.4, 216.65), (4752.3, 216.6), (4756.2, 216.54), (4776.7, 216.18), (4779.7, 216.13), (4781.2, 216.11), (4810.1, 215.65), (4824.5, 215.44), (4840.4, 215.26), (4867.7, 215.24), (4870.7, 215.23), (4872.3, 215.2), (4901.1, 214.74), (4931.4, 214.36), (4961.8, 214.04), (4989.5, 213.89), (4992.5, 213.87), (4997.5, 213.84), (4997.9, 213.34), (5002.2, 213.34), (5002.6, 213.84), (5007.0, 213.87), (5019.0, 213.88), (5027.0, 213.88), (5039.8, 213.94), (5058.8, 213.96), (5060.5, 213.96), (5061.6, 213.96), (5081.3, 214.03), (5102.0, 214.02), (5130.8, 214.08), (5143.5, 214.04), (5162.6, 213.9), (5164.3, 213.89), (5200.0, 213.84), (5234.6, 213.85), (5266.4, 213.94), (5268.0, 213.95), (5269.2, 213.97), (5274.7, 214.05), (5281.1, 214.14), (5303.7, 214.47), (5318.3, 214.63), (5330.3, 214.82), (5338.3, 214.84), (5351.1, 215.12), (5370.1, 215.66), (5372.9, 215.73), (5392.6, 216.12), (5407.5, 216.36), (5422.0, 216.72), (5434.1, 217.06), (5442.1, 217.26), (5476.7, 218.25), (5496.3, 219.18), (5511.3, 219.81), (5517.1, 220.32), (5525.8, 221.0), (5537.8, 222.14), (5545.9, 222.85), (5558.6, 224.54), (5576.4, 226.21), (5577.7, 226.33), (5580.4, 226.58), (5600.1, 227.92), (5615.0, 229.16), (5620.8, 229.65), (5629.6, 231.15), (5641.6, 232.77), (5649.6, 234.3), (5681.4, 238.68), (5683.1, 238.85), (5684.2, 238.99), (5703.8, 239.24), (5710.6, 239.51)]\",...,\"[(4675.5, 403.33), (4680.2, 403.38), (4680.6, 403.38), (4681.2, 403.4), (4685.3, 403.62), (4688.6, 403.99), (4691.8, 404.23), (4697.1, 404.57), (4702.3, 404.79), (4705.5, 404.7), (4708.8, 404.51), (4712.9, 404.12), (4714.0, 403.95), (4718.4, 402.69), (4722.4, 401.55), (4723.5, 401.17), (4730.9, 398.26), (4734.0, 397.03), (4739.4, 394.77), (4741.7, 393.63), (4744.6, 392.18), (4746.4, 391.3), (4747.8, 390.68), (4755.2, 387.31), (4756.3, 386.83), (4764.7, 383.43), (4765.7, 383.06), (4769.9, 381.47), (4773.2, 380.39), (4779.3, 378.44), (4781.7, 377.87), (4786.9, 376.7), (4790.1, 376.14), (4797.5, 374.97), (4798.6, 374.81), (4802.8, 374.14), (4807.0, 373.34), (4808.0, 373.12), (4815.5, 371.38), (4816.9, 371.06), (4818.6, 370.75), (4823.9, 369.88), (4826.3, 369.67), (4829.2, 369.62), (4832.4, 369.53), (4835.7, 369.45), (4839.7, 369.42), (4840.9, 369.42), (4849.3, 369.35), (4849.8, 369.34), (4850.3, 369.33), (4857.8, 369.31), (4860.9, 369.39), (4866.2, 369.51), (4871.5, 369.51), (4874.7, 369.48), (4882.0, 369.47), (4883.1, 369.47), (4892.6, 369.58), (4896.7, 369.66), (4900.0, 369.7), (4901.4, 369.72), (4903.2, 369.72), (4906.1, 369.74), (4908.5, 369.71), (4913.8, 369.67), (4917.0, 369.65), (4924.3, 369.64), (4925.4, 369.63), (4929.6, 369.63), (4933.9, 369.62), (4934.3, 369.61), (4934.9, 369.61), (4942.3, 369.51), (4943.7, 369.48), (4945.5, 369.48), (4948.4, 369.49), (4950.8, 369.52), (4953.1, 369.57), (4956.0, 369.6), (4959.3, 369.59), (4962.5, 369.52), (4966.6, 369.39), (4967.2, 369.37), (4967.7, 369.37), (4972.1, 369.49), (4976.2, 369.57), (4976.6, 369.58), (4977.2, 369.6), (4984.6, 369.75), (4987.8, 369.71), (4990.7, 369.62), (4993.1, 369.57), (4995.6, 369.51), (4997.2, 368.51), (4997.7, 368.01), (5002.4, 368.01), (5002.8, 368.51), (5003.9, 369.54), (5004.9, 369.54), (5005.9, 369.55), (5012.3, 369.54), (5018.6, 369.43), (5019.7, 369.4), (5020.7, 369.39), (5024.9, 369.37), (5033.4, 369.48), (5034.4, 369.5), (5041.8, 369.47), (5048.2, 369.39), (5050.2, 369.37), (5054.5, 369.33), (5056.6, 369.3), (5064.0, 369.28), (5065.0, 369.29), (5069.2, 369.32), (5071.3, 369.36), (5077.7, 369.44), (5078.7, 369.45), (5079.8, 369.46), (5086.1, 369.48), (5093.5, 369.4), (5094.6, 369.39), (5100.9, 369.39), (5108.3, 369.41), (5108.6, 369.41), (5109.3, 369.4), (5113.5, 369.36), (5115.7, 369.35), (5118.5, 369.36), (5123.0, 369.33), (5124.1, 369.33), (5128.3, 369.32), (5130.4, 369.32), (5136.8, 369.34), (5137.8, 369.34), (5138.2, 369.34), (5138.9, 369.34), (5143.1, 369.27), (5148.0, 369.22), (5153.6, 369.21), (5160.0, 369.21), (5166.3, 369.24), (5167.3, 369.24), (5168.4, 369.24), (5172.6, 369.2), (5174.7, 369.14), (5177.5, 369.11), (5182.1, 369.05), (5183.1, 369.05), (5187.4, 369.04), (5189.5, 369.01), (5196.9, 368.83), (5197.9, 368.8), (5204.2, 368.79), (5211.6, 368.83), (5212.0, 368.85), (5212.7, 368.83), (5216.9, 368.77), (5219.0, 368.65), (5225.4, 368.52), (5226.4, 368.51), (5227.4, 368.56), (5233.8, 368.96), (5236.6, 369.09), (5241.2, 369.2), (5241.5, 369.19), (5242.2, 369.18), (5248.6, 369.16), (5254.9, 369.27), (5255.9, 369.28), (5257.0, 369.32), (5261.2, 369.48), (5263.3, 369.5), (5270.7, 369.62), (5271.7, 369.64), (5276.0, 369.64), (5278.1, 369.6), (5284.4, 369.73), (5285.5, 369.74), (5286.5, 369.77), (5290.7, 370.01), (5292.9, 370.18), (5295.7, 370.45), (5300.2, 370.7), (5300.6, 370.73), (5301.3, 370.73), (5305.5, 370.75), (5307.6, 370.74), (5313.9, 370.64), (5315.0, 370.62), (5315.4, 370.63), (5316.1, 370.66), (5322.4, 371.0), (5328.7, 371.58), (5329.8, 371.69), (5330.1, 371.71), (5330.8, 371.75), (5337.2, 372.08), (5343.5, 372.16), (5344.5, 372.16), (5345.6, 372.17), (5349.8, 372.19), (5351.9, 372.33), (5358.3, 372.71), (5359.3, 372.77), (5359.7, 372.8), (5360.4, 372.84), (5366.7, 373.1), (5369.5, 373.24), (5374.1, 373.32), (5375.1, 373.37), (5379.3, 373.58), (5381.5, 373.67), (5384.3, 373.72), (5388.8, 373.95), (5389.9, 373.97), (5394.1, 374.06), (5396.2, 374.14), (5402.6, 374.35), (5403.6, 374.38), (5404.7, 374.43), (5408.9, 374.63), (5411.0, 374.71), (5417.3, 374.87), (5418.4, 374.9), (5419.4, 374.9), (5425.8, 374.87), (5428.6, 374.93), (5433.1, 375.08), (5433.5, 375.1), (5440.5, 375.56), (5447.9, 375.83), (5449.0, 375.86), (5453.2, 376.01), (5455.3, 376.08), (5458.1, 376.24), (5462.7, 376.33), (5463.0, 376.35), (5463.7, 376.37), (5467.9, 376.46), (5470.1, 376.48), (5476.4, 376.6), (5477.4, 376.61), (5477.8, 376.61), (5478.5, 376.64), (5484.8, 376.9), (5491.2, 377.07), (5492.2, 377.11), (5493.2, 377.16), (5497.5, 377.34), (5499.6, 377.38), (5507.0, 377.76), (5508.0, 377.83), (5514.4, 378.29), (5517.2, 378.43), (5521.7, 378.66), (5522.8, 378.7), (5529.1, 378.96), (5535.4, 379.18), (5536.5, 379.22), (5536.9, 379.24), (5543.9, 379.31), (5550.2, 379.65), (5551.3, 379.69), (5552.3, 379.73), (5558.7, 380.03), (5566.0, 380.26), (5567.1, 380.33), (5571.3, 380.58), (5573.4, 380.71), (5579.8, 380.87), (5580.8, 380.91), (5581.2, 380.9), (5581.9, 380.9), (5588.2, 380.91), (5591.0, 381.03), (5595.6, 381.36), (5596.6, 381.45), (5600.8, 381.84), (5603.0, 381.99), (5605.8, 382.17), (5610.3, 382.37), (5610.7, 382.39), (5611.4, 382.4), (5617.7, 382.54), (5624.1, 382.67), (5625.1, 382.68), (5626.2, 382.7), (5630.4, 382.74), (5632.5, 382.79), (5638.8, 383.08), (5639.9, 383.13), (5640.9, 383.21), (5647.3, 383.61), (5650.1, 383.73), (5654.6, 383.94), (5655.0, 383.95), (5655.7, 383.98), (5662.0, 384.22), (5669.4, 384.48), (5674.7, 384.69), (5676.8, 384.78), (5683.1, 385.19), (5684.2, 385.25), (5685.2, 385.32), (5691.6, 385.81), (5697.9, 386.41), (5698.9, 386.49), (5699.3, 386.52), (5700.0, 386.6), (5704.2, 386.93), (5706.3, 387.12), (5713.7, 387.55), (5714.1, 387.56), (5714.8, 387.59), (5721.1, 387.82), (5727.4, 388.04), (5728.5, 388.07), (5728.8, 388.08), (5729.5, 388.13), (5735.9, 388.58), (5742.2, 389.05), (5743.3, 389.14), (5744.3, 389.21), (5748.5, 389.43), (5750.6, 389.52), (5753.4, 389.64), (5758.0, 389.78), (5759.1, 389.82), (5763.3, 389.95), (5765.4, 390.03), (5771.7, 390.28), (5772.8, 390.32), (5773.8, 390.41), (5780.2, 390.92), (5786.5, 391.27), (5787.5, 391.33), (5787.9, 391.33), (5788.6, 391.36), (5792.8, 391.59), (5794.9, 391.72), (5801.3, 392.0), (5802.3, 392.05), (5802.7, 392.07), (5803.4, 392.09), (5807.6, 392.2), (5809.7, 392.31), (5812.5, 392.43), (5817.1, 392.58), (5817.4, 392.61), (5818.1, 392.61), (5822.4, 392.76), (5824.5, 392.86), (5827.3, 393.07), (5831.8, 393.28), (5832.9, 393.33), (5839.2, 393.58), (5845.6, 393.77), (5846.6, 393.8), (5847.7, 393.85), (5851.9, 394.04), (5854.0, 394.18), (5856.8, 394.31), (5861.4, 394.63), (5862.4, 394.69), (5868.8, 395.06), (5875.1, 395.39), (5876.2, 395.45), (5876.5, 395.47), (5883.5, 395.8), (5889.9, 396.08), (5890.1, 396.09)]\",\"[(4568.4, 398.04), (4568.6, 398.04), (4574.3, 398.03), (4577.0, 398.04), (4581.4, 397.95), (4583.9, 397.76), (4588.5, 397.36), (4592.3, 397.06), (4595.5, 396.81), (4602.5, 396.17), (4602.6, 396.16), (4607.7, 395.49), (4609.6, 395.2), (4613.7, 394.25), (4616.7, 393.63), (4621.5, 391.55), (4623.7, 390.62), (4625.0, 390.08), (4630.8, 387.19), (4633.4, 386.42), (4637.8, 384.82), (4640.3, 384.16), (4644.9, 382.96), (4648.8, 382.49), (4651.9, 381.81), (4653.9, 381.58), (4659.0, 380.83), (4659.2, 380.81), (4670.2, 379.55), (4673.1, 379.29), (4678.0, 378.4), (4679.5, 378.09), (4680.1, 377.96), (4681.5, 377.8), (4687.2, 377.04), (4692.7, 376.71), (4694.2, 376.62), (4696.8, 376.31), (4701.3, 375.62), (4704.0, 375.1), (4708.4, 374.22), (4715.3, 373.07), (4715.4, 373.05), (4715.6, 373.02), (4722.5, 372.07), (4729.5, 371.18), (4734.4, 370.41), (4736.0, 370.17), (4736.6, 370.1), (4741.1, 369.66), (4743.6, 369.51), (4749.2, 369.5), (4750.7, 369.48), (4751.4, 369.49), (4756.5, 369.48), (4757.7, 369.48), (4760.5, 369.53), (4764.8, 369.56), (4771.9, 369.65), (4772.0, 369.65), (4777.0, 369.62), (4778.9, 369.63), (4783.0, 369.69), (4785.9, 369.7), (4790.8, 369.76), (4792.4, 369.75), (4793.0, 369.73), (4794.3, 369.7), (4800.0, 369.53), (4805.6, 369.34), (4807.1, 369.28), (4807.8, 369.25), (4809.6, 369.21), (4816.9, 369.12), (4821.2, 369.14), (4823.2, 369.17), (4828.3, 369.08), (4828.4, 369.08), (4835.3, 369.36), (4839.4, 369.58), (4842.4, 369.74), (4847.2, 369.97), (4849.4, 370.11), (4850.7, 370.18), (4856.5, 370.45), (4859.1, 370.57), (4863.5, 370.75), (4866.0, 370.9), (4870.6, 371.08), (4874.5, 371.14), (4877.6, 371.27), (4884.6, 371.27), (4884.7, 371.27), (4884.9, 371.27), (4891.7, 371.31), (4895.9, 371.44), (4903.7, 371.72), (4905.2, 371.76), (4905.8, 371.78), (4910.4, 372.13), (4912.9, 372.41), (4918.4, 373.15), (4919.9, 373.32), (4922.5, 373.63), (4927.0, 374.14), (4929.7, 374.21), (4934.1, 374.34), (4936.0, 374.33), (4941.1, 374.43), (4941.3, 374.42), (4948.2, 374.13), (4951.4, 373.8), (4955.2, 373.03), (4960.1, 371.76), (4961.7, 371.3), (4962.3, 371.12), (4963.6, 370.77), (4969.3, 369.08), (4971.9, 368.4), (4976.4, 367.67), (4977.1, 367.59), (4978.9, 367.44), (4983.4, 367.15), (4987.3, 367.08), (4990.5, 367.0), (4995.6, 366.9), (4996.8, 366.87), (4997.1, 366.11), (4997.6, 365.61), (5002.5, 365.61), (5002.9, 366.11), (5006.4, 366.77), (5006.8, 366.76), (5007.4, 366.76), (5011.5, 366.86), (5014.8, 366.84), (5016.2, 366.86), (5017.9, 366.75), (5020.9, 366.66), (5023.3, 366.45), (5025.6, 366.38), (5028.5, 366.46), (5031.7, 366.66), (5039.1, 367.18), (5040.2, 367.23), (5044.4, 367.28), (5048.7, 367.3), (5049.6, 367.32), (5057.1, 367.46), (5058.5, 367.47), (5060.2, 367.45), (5065.6, 367.32), (5070.8, 367.12), (5074.0, 367.06), (5082.0, 367.0), (5082.5, 367.0), (5086.7, 367.01), (5090.9, 367.14), (5091.4, 367.16), (5091.9, 367.17), (5099.4, 367.4), (5102.5, 367.41), (5107.9, 367.41), (5110.2, 367.38), (5113.1, 367.31), (5114.9, 367.27), (5116.3, 367.25), (5119.6, 367.3), (5123.6, 367.33), (5124.8, 367.33), (5129.0, 367.32), (5133.2, 367.25), (5134.2, 367.24), (5141.7, 367.21), (5143.1, 367.21), (5144.8, 367.23), (5147.8, 367.17), (5150.1, 367.12), (5155.4, 367.08), (5158.6, 367.04), (5165.9, 366.81), (5166.6, 366.82), (5167.1, 366.81), (5171.3, 366.72), (5175.5, 366.51), (5176.0, 366.5), (5176.5, 366.5), (5184.0, 366.61), (5192.4, 366.68), (5197.7, 366.82), (5199.4, 366.84), (5200.9, 366.87), (5208.2, 366.95), (5209.3, 366.96), (5213.5, 367.03), (5217.8, 367.05), (5218.8, 367.07), (5226.3, 367.14), (5227.6, 367.14), (5229.4, 367.16), (5234.7, 367.18), (5237.0, 367.19), (5239.9, 367.13), (5243.2, 367.12), (5246.4, 367.16), (5250.5, 367.15), (5251.1, 367.14), (5251.6, 367.13), (5260.1, 367.11), (5261.1, 367.11), (5268.5, 367.15), (5271.6, 367.13), (5274.6, 367.14), (5277.0, 367.1), (5279.3, 367.11), (5282.2, 367.11), (5285.5, 367.15), (5292.8, 367.15), (5293.9, 367.14), (5298.4, 367.24), (5302.4, 367.32), (5302.8, 367.33), (5303.4, 367.33), (5307.5, 367.33), (5310.8, 367.32), (5313.9, 367.16), (5319.3, 366.94), (5324.5, 367.05), (5327.7, 367.04), (5335.1, 366.73), (5336.2, 366.7), (5340.4, 366.64), (5344.7, 366.64), (5345.6, 366.66), (5349.8, 366.66), (5353.1, 366.64), (5354.5, 366.64), (5356.2, 366.71), (5361.6, 366.88), (5363.9, 366.9), (5366.8, 366.89), (5368.6, 366.88), (5370.0, 366.85), (5377.4, 366.76), (5378.0, 366.77), (5378.5, 366.77), (5383.0, 366.8), (5387.0, 366.84), (5387.4, 366.84), (5387.9, 366.83), (5395.4, 366.68), (5398.5, 366.61), (5401.5, 366.51), (5403.9, 366.45), (5406.2, 366.39), (5409.1, 366.36), (5412.3, 366.36), (5419.6, 366.29), (5420.8, 366.27), (5429.2, 366.11), (5430.2, 366.11), (5434.4, 366.18), (5437.7, 366.24), (5440.8, 366.28), (5446.1, 366.34), (5453.2, 366.28), (5454.6, 366.28), (5461.9, 366.32), (5463.1, 366.32), (5467.3, 366.36), (5472.5, 366.33), (5480.0, 366.35), (5481.4, 366.38), (5483.1, 366.39), (5486.0, 366.44), (5488.4, 366.48), (5493.7, 366.55), (5496.9, 366.57), (5504.2, 366.6), (5505.3, 366.6), (5509.5, 366.63), (5513.8, 366.61), (5514.8, 366.62), (5522.3, 366.73), (5525.4, 366.76), (5530.7, 366.75), (5535.9, 366.63), (5537.7, 366.58), (5539.2, 366.55), (5546.5, 366.5), (5547.6, 366.48), (5551.8, 366.42), (5556.1, 366.37), (5557.1, 366.37), (5564.5, 366.52), (5565.9, 366.55), (5567.7, 366.6), (5573.0, 366.73), (5578.2, 366.79), (5581.5, 366.74), (5588.8, 366.71), (5589.4, 366.71), (5589.9, 366.71), (5598.4, 366.91), (5599.4, 366.93), (5609.9, 367.12), (5612.9, 367.22), (5615.3, 367.26), (5620.5, 367.51), (5622.3, 367.59), (5623.8, 367.61), (5631.1, 367.44), (5632.2, 367.41), (5640.7, 367.22), (5641.6, 367.23), (5649.1, 367.46), (5652.2, 367.55), (5655.2, 367.67), (5657.6, 367.77), (5659.9, 367.88), (5666.0, 368.16), (5669.3, 368.34), (5673.4, 368.73), (5674.0, 368.78), (5674.5, 368.82), (5678.7, 369.14), (5683.0, 369.47), (5683.4, 369.5), (5683.9, 369.53), (5691.4, 369.85), (5694.5, 370.08), (5699.9, 370.63), (5705.1, 371.45), (5708.3, 371.95), (5711.6, 372.48), (5715.6, 373.37), (5716.3, 373.48), (5716.8, 373.59), (5721.3, 374.28), (5725.2, 374.88), (5725.7, 374.92), (5726.2, 374.98), (5733.7, 375.39), (5736.8, 375.48), (5742.1, 375.64), (5744.5, 375.64), (5747.4, 375.77), (5750.6, 375.96), (5753.9, 376.1), (5757.9, 376.4), (5767.5, 376.97), (5768.5, 377.02), (5776.0, 377.28), (5784.4, 377.64), (5789.7, 377.95), (5791.5, 378.07), (5792.9, 378.16), (5796.1, 378.27), (5800.2, 378.38), (5801.3, 378.41), (5809.8, 378.5), (5810.3, 378.52), (5810.8, 378.55), (5814.9, 378.81), (5818.3, 378.91), (5821.4, 379.05), (5824.3, 379.25), (5826.7, 379.3), (5829.0, 379.4), (5831.9, 379.56), (5833.7, 379.68), (5835.2, 379.77), (5842.5, 380.22), (5843.1, 380.27), (5843.6, 380.3), (5852.1, 381.03), (5853.1, 381.07), (5860.6, 381.36), (5861.9, 381.45), (5863.7, 381.55), (5869.0, 381.82), (5871.3, 382.0), (5874.2, 382.19), (5876.0, 382.31), (5877.5, 382.39), (5884.8, 382.57), (5885.9, 382.6), (5890.4, 382.64), (5894.4, 382.67), (5894.8, 382.68), (5895.4, 382.69), (5902.8, 382.8), (5905.9, 382.81), (5908.9, 382.8), (5911.3, 382.82), (5916.5, 382.9), (5918.3, 382.93), (5919.8, 382.98), (5923.0, 383.06), (5927.1, 383.29), (5927.7, 383.32), (5928.2, 383.34), (5932.7, 383.54), (5936.7, 383.71), (5937.1, 383.72), (5937.7, 383.72), (5945.1, 383.77), (5948.2, 383.77), (5953.6, 383.79), (5955.9, 383.83), (5956.1, 383.83)]\",\"[(4538.2, 385.23), (4543.7, 385.03), (4544.0, 385.01), (4544.3, 385.0), (4548.7, 384.83), (4553.0, 384.62), (4553.4, 384.6), (4553.8, 384.58), (4561.7, 384.18), (4564.0, 384.06), (4570.4, 383.5), (4572.1, 383.33), (4574.1, 383.09), (4579.1, 382.57), (4581.5, 382.28), (4584.3, 381.9), (4586.2, 381.66), (4587.8, 381.45), (4596.5, 380.5), (4600.2, 380.2), (4604.6, 379.86), (4605.2, 379.82), (4613.9, 379.37), (4614.7, 379.32), (4622.6, 378.62), (4624.9, 378.38), (4631.3, 377.51), (4635.0, 376.9), (4640.0, 375.89), (4642.4, 375.38), (4645.2, 374.83), (4647.1, 374.42), (4648.7, 374.1), (4655.3, 372.84), (4656.4, 372.66), (4657.4, 372.52), (4665.5, 371.54), (4665.8, 371.51), (4666.1, 371.49), (4670.5, 371.25), (4675.6, 370.87), (4683.5, 370.4), (4684.5, 370.32), (4685.7, 370.24), (4692.2, 369.77), (4693.9, 369.62), (4695.9, 369.47), (4700.9, 369.1), (4703.3, 368.97), (4706.0, 368.81), (4709.6, 368.65), (4716.2, 368.48), (4718.3, 368.41), (4722.0, 368.18), (4726.3, 367.95), (4727.0, 367.9), (4731.4, 367.46), (4735.7, 367.3), (4736.5, 367.27), (4740.7, 367.07), (4744.4, 366.91), (4746.6, 366.78), (4750.1, 366.55), (4753.1, 366.46), (4754.8, 366.4), (4756.8, 366.36), (4759.5, 366.3), (4761.8, 366.29), (4768.8, 366.2), (4770.5, 366.2), (4777.1, 366.11), (4779.2, 366.04), (4787.2, 365.86), (4787.6, 365.86), (4787.9, 365.85), (4796.6, 365.71), (4806.3, 365.69), (4807.5, 365.7), (4814.0, 365.74), (4817.7, 365.69), (4822.6, 365.66), (4827.8, 365.67), (4831.3, 365.65), (4834.4, 365.63), (4838.0, 365.65), (4840.0, 365.68), (4848.1, 365.87), (4848.7, 365.89), (4857.4, 365.99), (4858.2, 365.99), (4866.1, 365.88), (4867.2, 365.87), (4868.4, 365.87), (4871.9, 365.79), (4874.8, 365.89), (4878.5, 365.89), (4883.5, 365.85), (4888.7, 365.84), (4892.2, 365.76), (4895.3, 365.7), (4898.8, 365.69), (4900.9, 365.71), (4904.6, 365.7), (4909.0, 365.78), (4909.6, 365.79), (4913.5, 365.84), (4918.3, 365.9), (4919.1, 365.92), (4923.4, 365.99), (4927.0, 366.01), (4935.7, 366.03), (4937.4, 366.07), (4939.4, 366.08), (4944.4, 366.14), (4949.6, 366.23), (4951.5, 366.23), (4953.1, 366.21), (4959.7, 365.83), (4961.8, 365.72), (4965.5, 365.58), (4969.9, 365.46), (4970.2, 365.45), (4970.5, 365.45), (4979.2, 365.66), (4979.6, 365.66), (4980.0, 365.66), (4987.9, 365.69), (4989.0, 365.71), (4990.2, 365.72), (4996.6, 365.74), (4996.8, 364.54), (4997.3, 364.04), (5002.7, 364.04), (5003.2, 364.54), (5005.4, 365.35), (5010.3, 364.97), (5012.4, 364.79), (5014.1, 364.72), (5017.0, 364.54), (5020.4, 364.98), (5022.9, 365.24), (5030.4, 365.65), (5031.7, 365.66), (5040.4, 365.58), (5045.1, 365.45), (5049.2, 365.3), (5050.5, 365.25), (5058.0, 365.04), (5060.5, 364.97), (5063.8, 364.93), (5066.8, 364.92), (5070.5, 364.93), (5073.2, 364.9), (5075.6, 364.96), (5080.5, 365.18), (5082.6, 365.25), (5084.3, 365.28), (5090.6, 365.26), (5091.9, 365.27), (5093.1, 365.29), (5100.6, 365.23), (5101.9, 365.21), (5110.6, 364.94), (5110.9, 364.93), (5119.4, 364.93), (5120.0, 364.94), (5120.7, 364.95), (5128.2, 365.1), (5130.7, 365.17), (5137.0, 365.29), (5140.7, 365.37), (5145.8, 365.47), (5148.1, 365.49), (5150.7, 365.53), (5154.5, 365.54), (5160.8, 365.63), (5163.3, 365.68), (5166.8, 365.72), (5170.8, 365.79), (5172.1, 365.83), (5176.2, 365.93), (5180.8, 366.07), (5189.6, 366.19), (5190.9, 366.19), (5194.9, 366.2), (5198.4, 366.19), (5200.9, 366.2), (5204.2, 366.24), (5207.2, 366.33), (5210.9, 366.5), (5216.0, 366.71), (5218.3, 366.79), (5220.9, 366.84), (5223.0, 366.83), (5224.7, 366.84), (5231.0, 366.8), (5232.3, 366.8), (5233.5, 366.81), (5241.0, 367.06), (5242.3, 367.1), (5251.0, 367.43), (5259.8, 367.71), (5260.4, 367.72), (5261.0, 367.72), (5268.6, 367.69), (5269.8, 367.68), (5271.1, 367.67), (5277.4, 367.81), (5281.1, 368.05), (5288.5, 368.62), (5291.1, 368.84), (5293.2, 368.99), (5294.9, 369.13), (5301.2, 369.68), (5303.7, 369.94), (5311.2, 370.53), (5312.5, 370.58), (5321.2, 370.4), (5330.0, 370.73), (5330.6, 370.75), (5331.3, 370.78), (5338.8, 370.91), (5341.3, 370.93), (5344.6, 370.93), (5347.6, 371.1), (5351.3, 371.44), (5354.0, 371.72), (5356.4, 371.9), (5361.3, 372.29), (5363.4, 372.46), (5365.1, 372.68), (5371.4, 373.4), (5373.9, 373.67), (5377.4, 374.03), (5381.4, 374.3), (5382.7, 374.37), (5386.8, 374.69), (5391.4, 375.14), (5391.7, 375.17), (5400.2, 376.03), (5401.5, 376.11), (5409.0, 376.54), (5411.5, 376.64), (5414.8, 376.8), (5417.8, 377.04), (5421.5, 377.26), (5426.6, 377.5), (5431.5, 377.75), (5435.3, 377.88), (5438.3, 378.04), (5441.6, 378.27), (5442.9, 378.37), (5444.1, 378.45), (5451.6, 378.97), (5452.9, 379.02), (5461.6, 379.17), (5471.0, 379.47), (5479.2, 380.05), (5480.4, 380.12), (5485.1, 380.37), (5488.0, 380.55), (5489.7, 380.64), (5491.7, 380.72), (5496.8, 380.94), (5501.7, 381.18), (5503.8, 381.29), (5505.5, 381.4), (5511.8, 381.61), (5514.3, 381.63), (5517.8, 381.64), (5521.8, 381.68), (5523.1, 381.71), (5530.7, 381.88)]\",\"[(4573.3, 404.53), (4574.0, 404.5), (4579.4, 403.89), (4581.1, 403.75), (4583.8, 403.37), (4588.1, 402.73), (4590.7, 402.3), (4595.2, 401.56), (4602.0, 400.11), (4602.2, 400.06), (4602.6, 399.98), (4607.5, 398.79), (4609.3, 398.41), (4613.3, 397.7), (4616.3, 397.13), (4617.7, 396.88), (4621.4, 396.42), (4623.4, 396.17), (4628.0, 395.5), (4630.5, 395.15), (4635.9, 394.18), (4637.5, 393.9), (4643.4, 392.95), (4644.6, 392.78), (4648.5, 392.29), (4651.6, 391.89), (4658.5, 391.14), (4658.7, 391.11), (4659.0, 391.08), (4663.9, 390.6), (4665.7, 390.44), (4669.0, 390.11), (4672.8, 389.65), (4677.8, 389.15), (4679.8, 388.97), (4686.9, 388.37), (4689.5, 388.19), (4693.9, 387.74), (4694.7, 387.67), (4696.6, 387.45), (4701.0, 386.99), (4703.6, 386.78), (4708.0, 386.39), (4710.1, 386.21), (4715.1, 385.79), (4715.4, 385.74), (4722.1, 384.88), (4726.2, 384.34), (4729.2, 383.98), (4734.3, 383.49), (4736.2, 383.29), (4737.4, 383.19), (4743.3, 382.66), (4748.7, 382.25), (4750.4, 382.11), (4753.1, 381.84), (4756.2, 381.51), (4757.4, 381.4), (4761.4, 381.1), (4764.5, 380.83), (4766.5, 380.67), (4771.5, 380.07), (4771.6, 380.06), (4771.9, 380.03), (4778.6, 379.38), (4782.6, 379.16), (4785.6, 379.02), (4790.7, 378.57), (4792.7, 378.36), (4797.3, 377.7), (4799.7, 377.4), (4802.4, 376.92), (4806.8, 376.01), (4809.5, 375.34), (4812.6, 374.52), (4813.8, 374.24), (4820.9, 372.49), (4827.7, 370.73), (4827.9, 370.67), (4828.3, 370.59), (4835.0, 369.19), (4839.0, 368.62), (4842.0, 368.19), (4847.1, 367.67), (4849.1, 367.5), (4853.7, 367.04), (4856.2, 366.91), (4858.8, 366.72), (4863.2, 366.6), (4865.9, 366.49), (4870.3, 366.31), (4872.9, 366.22), (4877.3, 366.09), (4884.1, 366.22), (4884.4, 366.23), (4884.5, 366.23), (4884.7, 366.23), (4891.4, 366.37), (4895.4, 366.19), (4898.5, 366.02), (4899.8, 365.92), (4903.5, 365.61), (4905.5, 365.42), (4910.1, 365.1), (4912.6, 365.02), (4915.2, 364.97), (4919.6, 364.88), (4920.4, 364.86), (4925.5, 364.64), (4926.7, 364.62), (4929.3, 364.59), (4933.7, 364.52), (4940.6, 364.48), (4940.8, 364.48), (4941.1, 364.48), (4946.0, 364.43), (4947.8, 364.38), (4951.8, 364.21), (4954.9, 364.12), (4960.0, 363.99), (4961.4, 363.97), (4961.9, 363.95), (4963.1, 363.94), (4969.0, 363.79), (4971.7, 363.73), (4976.1, 363.66), (4978.8, 363.6), (4983.1, 363.49), (4987.0, 363.37), (4990.2, 363.29), (4992.2, 363.24), (4996.7, 361.14), (4997.2, 360.64), (5002.9, 360.64), (5003.4, 361.14), (5005.2, 362.65), (5009.0, 361.89), (5011.6, 361.36), (5014.0, 361.14), (5019.0, 361.55), (5022.7, 362.05), (5025.7, 362.54), (5029.0, 362.89), (5031.5, 363.01), (5035.0, 362.93), (5039.0, 362.66), (5039.7, 362.65), (5040.3, 362.68), (5044.4, 362.73), (5049.1, 363.15), (5057.8, 363.43), (5059.1, 363.45), (5066.6, 363.45), (5067.8, 363.5), (5069.1, 363.54), (5072.5, 363.73), (5075.4, 363.79), (5079.2, 363.92), (5081.8, 364.0), (5084.2, 364.03), (5089.2, 364.1), (5092.9, 364.12), (5095.9, 364.08), (5101.7, 364.19), (5109.2, 364.29), (5109.9, 364.29), (5110.5, 364.29), (5119.2, 364.27), (5128.0, 364.22), (5128.6, 364.22), (5129.3, 364.23), (5136.8, 364.29), (5138.0, 364.28), (5139.3, 364.31), (5145.6, 364.29), (5147.4, 364.26), (5149.4, 364.23), (5152.0, 364.18), (5154.4, 364.13), (5156.7, 364.04), (5159.4, 364.01), (5163.1, 364.02), (5166.1, 364.02), (5169.4, 364.02), (5171.9, 364.02), (5175.4, 364.04), (5179.5, 364.09), (5180.1, 364.09), (5180.7, 364.08), (5184.8, 364.11), (5189.5, 364.17), (5194.2, 364.14), (5198.2, 364.14), (5199.5, 364.15), (5203.5, 364.26), (5209.5, 364.4), (5212.9, 364.44), (5215.8, 364.45), (5219.6, 364.45), (5224.6, 364.5), (5226.9, 364.5), (5233.3, 364.64), (5239.6, 364.66), (5242.1, 364.65), (5249.6, 364.61), (5250.9, 364.59), (5259.6, 364.69), (5268.4, 365.28), (5269.7, 365.33), (5277.2, 365.64), (5279.7, 365.69), (5286.0, 365.78), (5289.8, 365.83), (5294.8, 366.04), (5299.8, 366.17), (5303.5, 366.32), (5306.5, 366.47), (5309.8, 366.55), (5312.3, 366.65), (5319.8, 367.15), (5321.1, 367.24), (5329.8, 367.8), (5338.6, 368.04), (5339.2, 368.04), (5339.9, 368.06), (5343.9, 368.12), (5347.4, 368.34), (5349.9, 368.43), (5356.2, 368.72), (5360.0, 369.07), (5365.0, 369.36), (5367.3, 369.45), (5370.0, 369.51), (5373.7, 369.71), (5376.7, 369.8), (5380.0, 370.0), (5382.5, 370.2), (5390.1, 370.91), (5390.7, 370.94), (5391.3, 371.0), (5400.1, 371.76), (5408.8, 372.27), (5410.1, 372.35), (5414.1, 372.59), (5417.6, 372.73), (5420.1, 372.85), (5426.4, 373.3), (5435.2, 374.01), (5440.2, 374.27), (5443.9, 374.57), (5446.9, 374.86), (5450.2, 375.16), (5451.6, 375.26), (5452.7, 375.39), (5460.3, 376.15), (5460.9, 376.19), (5461.5, 376.22), (5470.2, 376.9), (5479.1, 377.54), (5480.3, 377.56), (5484.3, 377.56), (5487.8, 377.7), (5490.3, 377.84), (5496.6, 378.07), (5500.4, 378.24), (5505.4, 378.5), (5510.4, 378.85), (5514.1, 379.03), (5517.1, 379.11), (5520.4, 379.19), (5522.9, 379.16), (5530.5, 379.16), (5531.1, 379.18), (5531.7, 379.18), (5532.0, 379.18)]\",\"[(4369.8, 391.25), (4374.7, 390.62), (4377.4, 390.29), (4378.6, 390.13), (4382.6, 389.58), (4385.5, 389.14), (4387.4, 388.81), (4390.1, 388.35), (4393.6, 387.77), (4401.5, 386.59), (4401.9, 386.55), (4409.7, 385.54), (4411.1, 385.36), (4413.0, 385.06), (4417.8, 384.34), (4424.5, 383.41), (4425.9, 383.23), (4430.0, 382.68), (4433.9, 382.19), (4439.5, 381.71), (4442.0, 381.49), (4447.5, 381.07), (4450.1, 380.8), (4453.7, 380.31), (4458.2, 379.64), (4458.5, 379.57), (4458.9, 379.49), (4466.2, 378.32), (4470.4, 377.74), (4472.7, 377.45), (4474.3, 377.31), (4481.9, 376.7), (4482.4, 376.66), (4483.5, 376.57), (4490.5, 376.04), (4491.7, 375.95), (4493.4, 375.8), (4496.4, 375.54), (4498.5, 375.33), (4504.9, 374.69), (4505.9, 374.6), (4506.6, 374.54), (4510.7, 374.22), (4514.7, 373.93), (4516.3, 373.81), (4522.7, 373.48), (4527.8, 373.11), (4529.6, 372.97), (4530.8, 372.86), (4534.3, 372.4), (4538.9, 371.93), (4539.3, 371.88), (4547.0, 371.07), (4550.8, 370.78), (4553.3, 370.57), (4555.0, 370.51), (4562.3, 370.07), (4563.1, 370.01), (4565.1, 369.81), (4571.2, 369.17), (4572.2, 369.08), (4573.7, 368.96), (4577.0, 368.81), (4579.3, 368.64), (4585.2, 368.25), (4586.5, 368.15), (4587.3, 368.05), (4592.4, 367.64), (4595.4, 367.41), (4596.7, 367.34), (4603.5, 367.06), (4605.4, 367.02), (4608.2, 367.02), (4611.6, 367.05), (4614.9, 367.05), (4619.6, 367.16), (4629.1, 367.17), (4631.1, 367.16), (4633.9, 367.11), (4635.8, 367.1), (4642.6, 366.98), (4643.9, 366.96), (4651.9, 366.95), (4654.1, 366.93), (4660.0, 366.91), (4665.6, 366.67), (4668.1, 366.48), (4671.8, 366.26), (4676.2, 366.17), (4676.5, 366.15), (4677.1, 366.14), (4684.2, 365.97), (4686.0, 365.9), (4688.5, 365.85), (4690.7, 365.76), (4692.3, 365.65), (4695.5, 365.47), (4700.0, 365.18), (4700.4, 365.17), (4701.2, 365.16), (4708.5, 365.12), (4711.5, 365.08), (4716.5, 364.93), (4723.0, 364.55), (4723.9, 364.49), (4724.6, 364.44), (4728.7, 364.17), (4732.7, 364.01), (4734.5, 364.01), (4740.7, 364.11), (4745.9, 364.12), (4748.8, 364.08), (4752.4, 364.04), (4756.9, 364.12), (4757.4, 364.12), (4765.0, 364.14), (4766.6, 364.17), (4768.9, 364.12), (4773.0, 364.08), (4780.4, 364.06), (4780.8, 364.06), (4781.1, 364.06), (4785.5, 363.99), (4789.2, 363.92), (4790.3, 363.9), (4791.9, 363.89), (4797.3, 363.88), (4803.3, 363.84), (4804.5, 363.82), (4805.3, 363.8), (4810.0, 363.72), (4813.4, 363.66), (4814.0, 363.63), (4814.8, 363.65), (4821.5, 363.68), (4823.5, 363.68), (4826.3, 363.73), (4828.2, 363.74), (4829.6, 363.74), (4837.3, 363.89), (4837.6, 363.89), (4837.8, 363.9), (4842.4, 363.99), (4845.7, 364.05), (4847.2, 364.07), (4849.3, 364.09), (4851.9, 364.1), (4853.8, 364.12), (4860.7, 364.07), (4861.4, 364.06), (4861.8, 364.07), (4864.5, 363.98), (4869.9, 363.77), (4872.2, 363.65), (4878.0, 363.32), (4883.7, 363.29), (4885.1, 363.27), (4886.1, 363.26), (4891.7, 363.32), (4894.1, 363.35), (4895.2, 363.35), (4902.2, 363.29), (4904.1, 363.18), (4906.7, 363.09), (4908.8, 363.02), (4910.3, 362.97), (4918.1, 362.76), (4918.3, 362.75), (4923.0, 362.75), (4926.4, 362.69), (4929.6, 362.68), (4932.5, 362.69), (4934.5, 362.69), (4941.1, 362.66), (4942.0, 362.67), (4946.7, 362.55), (4950.7, 362.41), (4952.6, 362.37), (4958.7, 362.24), (4960.9, 362.17), (4964.1, 362.0), (4965.7, 361.95), (4966.8, 361.86), (4970.4, 361.53), (4974.9, 361.23), (4975.5, 361.25), (4983.0, 361.56), (4987.0, 361.92), (4989.4, 362.0), (4991.0, 362.12), (4996.7, 361.23), (4997.2, 360.73), (5002.9, 360.73), (5003.4, 361.23), (5003.6, 362.55), (5007.2, 362.6), (5008.3, 362.5), (5010.0, 362.4), (5015.3, 362.03), (5021.5, 361.64), (5023.3, 361.56), (5027.3, 361.49), (5031.4, 361.68), (5032.9, 361.72), (5036.8, 361.77), (5039.5, 361.85), (5041.5, 361.91), (5044.4, 362.02), (5046.3, 362.05), (5047.5, 362.1), (5051.0, 362.36), (5055.6, 362.8), (5055.9, 362.82), (5063.7, 363.4), (5067.4, 363.49), (5071.8, 363.57), (5078.9, 363.67), (5079.8, 363.69), (5082.2, 363.74), (5087.9, 363.88), (5090.3, 363.88), (5096.0, 363.88), (5099.5, 363.93), (5101.5, 364.04), (5103.3, 364.12), (5107.0, 364.41), (5110.1, 364.55), (5115.2, 364.81), (5116.9, 364.92), (5123.4, 365.14), (5123.7, 365.14), (5124.2, 365.15), (5134.4, 365.11), (5137.3, 365.13), (5139.9, 365.22), (5144.1, 365.33), (5150.7, 365.65), (5150.8, 365.66), (5150.9, 365.66), (5157.7, 365.92), (5161.8, 366.14), (5164.5, 366.15), (5167.3, 366.3), (5171.2, 366.51), (5172.7, 366.54), (5178.0, 366.8), (5178.2, 366.81), (5179.1, 366.83), (5184.8, 366.98), (5189.2, 367.06), (5191.6, 367.15), (5195.2, 367.28), (5196.0, 367.28), (5198.4, 367.38), (5200.2, 367.51), (5205.2, 367.98), (5205.6, 368.01), (5207.5, 368.16), (5212.0, 368.47), (5216.6, 368.55), (5218.8, 368.65), (5222.3, 368.82), (5225.6, 368.95), (5231.3, 369.29), (5232.4, 369.36), (5233.0, 369.42), (5235.8, 369.7), (5238.5, 369.97), (5244.0, 370.48), (5245.9, 370.62), (5249.5, 370.77), (5252.7, 370.91), (5254.9, 370.97), (5259.5, 371.11), (5260.4, 371.14), (5264.3, 371.31), (5265.9, 371.37), (5266.3, 371.4), (5271.4, 371.79), (5273.1, 371.92), (5276.9, 372.15), (5279.9, 372.42), (5282.3, 372.69), (5286.7, 373.19), (5292.6, 373.6), (5293.5, 373.66), (5298.8, 374.12), (5300.3, 374.33), (5302.6, 374.74), (5307.0, 375.42), (5313.8, 376.5), (5315.2, 376.66), (5320.6, 377.11), (5321.1, 377.15), (5327.4, 377.59), (5329.4, 377.8), (5334.2, 378.2), (5337.1, 378.52), (5341.0, 378.97), (5347.3, 379.36), (5347.8, 379.42), (5349.4, 379.46), (5354.6, 379.5), (5359.1, 379.68), (5361.4, 379.73), (5365.1, 379.87), (5368.2, 379.97), (5374.0, 380.34), (5374.9, 380.38), (5377.8, 380.52), (5381.0, 380.66), (5381.7, 380.7), (5386.5, 380.85), (5388.5, 380.96), (5391.9, 381.21), (5395.3, 381.41), (5397.4, 381.56), (5402.1, 381.97), (5406.2, 382.16), (5408.4, 382.22), (5408.9, 382.22), (5409.8, 382.22)]\"]]\n", + "bank_stations: [[\"['4998', '5002.1']\",\"['4998', '5002.1']\",\"['4998', '5002.1']\",\"['4997.6', '5002.4']\",\"['4997.5', '5002.6']\",...,\"['4997.2', '5002.8']\",\"['4997.1', '5002.9']\",\"['4996.8', '5003.2']\",\"['4996.7', '5003.4']\",\"['4996.7', '5003.4']\"]]\n", + "number_of_station_elevation_points: [[88,56,82,104,138,...,373,411,273,275,322]]\n", + "number_of_coords: [[3,3,3,3,3,...,3,3,3,3,3]]\n", + "flows: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "profile_names: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "geometry: [[01020000000300000051D82178BFE13F418B8DCDCF0A03464163A5A3B9F3DF3F41DEC07FA06C0346414848E85781DD3F4106877FA6BA044641,010200000003000000C908AB77A6E13F41BDB3B473D4024641B8223D432DE03F4131A40DC78C0246419B4CE3F923DF3F41A38D4E5506034641,010200000003000000A823A14D64E13F419F50E5944B014641191211EC80DF3F41C88DAED5DD01464114E39692E7DE3F416B4D989918034641,0102000000030000006EA7910A92E13F4189118FF1830046418D5FD38E2CDE3F413F15D84DB401464176F943F0B6DE3F417D1C7BAA12034641,0102000000030000004E06BF6BFEDF3F41317CDB199FFF454130D740445EDD3F417D14E8C8B401464182D23FB655DE3F415FD376D106034641,...,0102000000030000008D015B39241640415605BE8E8FA545412A6FC13093154041382078E3D2A5454101C89951721440410860DD5B27A74541,0102000000030000004D624513F3154041612340CD1CA545412160B21A1F1540415C18F81C36A5454141FDFDF46B134041A1E1B01B00A64541,010200000003000000BE699A542A154041447683BA9EA44541C8839BE35C144041A72757B106A54541FC6B7F4371134041845B4FF780A54541,01020000000300000067F8B4257F1440416EB87174A7A34541374AC1FF06144041A088659957A44541C15F15BA2D1340418FF5200DF0A44541,010200000003000000A02869ED301440418B117EF772A34541C802227B1E1340416A4E959962A4454150193BD01D134041BF158676FDA44541]]\n", + "huc: [[\"01020002\",\"01020002\",\"01020002\",\"01020002\",\"01020002\",...,\"01020002\",\"01020002\",\"01020002\",\"01020002\",\"01020002\"]]\n", + "model_id: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", + "...\n" + ] + } + ], + "source": [ + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "catalog_name = 'xs'\n", + "namespace = 'mip'\n", + "tablename = 'huc_01020002'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "print(iceberg_table.to_string(preview_cols=20))" + ] + }, { "cell_type": "markdown", "id": "d69402cf-d224-45e8-9680-74b28205ea44", @@ -563,7 +1276,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 8, "id": "aec525f7-6753-4ca5-ba5e-916c8c6659ec", "metadata": {}, "outputs": [ @@ -571,9 +1284,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "List of tables under bathymetry_ml_auxiliary within dev:\n", + "List of tables under mip within xs:\n", "\n", - "[('bathymetry_ml_auxiliary', 'vpuid=01'), ('bathymetry_ml_auxiliary', 'vpuid=02'), ('bathymetry_ml_auxiliary', 'vpuid=03N'), ('bathymetry_ml_auxiliary', 'vpuid=03S'), ('bathymetry_ml_auxiliary', 'vpuid=03W'), ('bathymetry_ml_auxiliary', 'vpuid=04'), ('bathymetry_ml_auxiliary', 'vpuid=05'), ('bathymetry_ml_auxiliary', 'vpuid=06'), ('bathymetry_ml_auxiliary', 'vpuid=07'), ('bathymetry_ml_auxiliary', 'vpuid=08'), ('bathymetry_ml_auxiliary', 'vpuid=09'), ('bathymetry_ml_auxiliary', 'vpuid=10L'), ('bathymetry_ml_auxiliary', 'vpuid=10U'), ('bathymetry_ml_auxiliary', 'vpuid=11'), ('bathymetry_ml_auxiliary', 'vpuid=12'), ('bathymetry_ml_auxiliary', 'vpuid=13'), ('bathymetry_ml_auxiliary', 'vpuid=14'), ('bathymetry_ml_auxiliary', 'vpuid=15'), ('bathymetry_ml_auxiliary', 'vpuid=16'), ('bathymetry_ml_auxiliary', 'vpuid=17'), ('bathymetry_ml_auxiliary', 'vpuid=18')]\n" + "[('mip', 'huc_01020002'), ('mip', 'huc_02060006'), ('mip', 'huc_03170004'), ('mip', 'huc_04030101'), ('mip', 'huc_05020006'), ('mip', 'huc_06040002'), ('mip', 'huc_07130010'), ('mip', 'huc_08060202'), ('mip', 'huc_09020301'), ('mip', 'huc_10120203'), ('mip', 'huc_11060002'), ('mip', 'huc_12030107'), ('mip', 'huc_13020102'), ('mip', 'huc_14050005'), ('mip', 'huc_15040007'), ('mip', 'huc_16020203'), ('mip', 'huc_17060305'), ('mip', 'huc_18070204')]\n" ] } ], @@ -587,12 +1300,12 @@ "id": "c5b0cacc-8f92-49db-b080-5c1ecb72f57b", "metadata": {}, "source": [ - "#### Query Iceberg Catalog's Table by Conditions" + "#### Query Iceberg Catalog's Table by Conditions (Note: Against the catalog_name = 'bathymetry_ml_auxiliary_dev')" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 12, "id": "28153d1a-46de-43f0-962a-5b613bdbaa73", "metadata": {}, "outputs": [ @@ -643,13 +1356,15 @@ "..." ] }, - "execution_count": 6, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Filter Iceberg table based on threshold set for a given feature\n", + "namespace='bathymetry_ml_auxiliary'\n", + "tablename = 'vpuid=01'\n", "feature_name = 'owp_ahg_c'\n", "thresh_val = 0.25\n", "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=LessThan(feature_name, thresh_val)).to_arrow()" @@ -657,7 +1372,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 13, "id": "6320114d-8115-4e1f-b8fd-3c80aeaa07de", "metadata": {}, "outputs": [ @@ -708,12 +1423,14 @@ "..." ] }, - "execution_count": 7, + "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "namespace='bathymetry_ml_auxiliary'\n", + "tablename = 'vpuid=01'\n", "feature_name = 'owp_ahg_c'\n", "thresh_lower, thresh_upper = 0.25, 0.28\n", "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=And(GreaterThan(feature_name, thresh_lower), \n", @@ -722,11 +1439,33 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 14, "id": "3acdfde0-d34d-442e-87eb-724dbcef5d1b", "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "owp_ahg_f: double\n", + "owp_ahg_m: double\n", + "LENGTHKM: double\n", + "slope: double\n", + "----\n", + "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4067888855934143,0.3982747495174408,0.4000049829483032,0.41463810205459595,0.4620860517024994]]\n", + "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3738446533679962,0.4299301207065582,0.4191203713417053,0.40392443537712097,0.3803613483905792]]\n", + "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,2.891987367172746,3.1182578724544983,3.6554421303734443,5.662275879263775,0.760075523461262]]\n", + "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.02001729,0.01911396,0.02483032,0.04333816,0.00001]]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ + "namespace='bathymetry_ml_auxiliary'\n", + "tablename = 'vpuid=01'\n", "feature_name = 'owp_ahg_c'\n", "thresh = 0.25\n", "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=GreaterThanOrEqual(feature_name, thresh),\n", @@ -738,12 +1477,74 @@ "id": "01dc1ff0-bfd5-4b7a-82d0-1d60e237e2cd", "metadata": {}, "source": [ - "# Cross-Check & Verify Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" + "# Cross-Check & Verify:\n", + "## Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 15, + "id": "5117aae1-40fb-4392-b424-b488245ace52", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "river: string\n", + "reach: string\n", + "river_reach: string\n", + "river_station: double\n", + "river_reach_rs: string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: string\n", + "station_elevation_points: string\n", + "bank_stations: string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: string\n", + "profile_names: string\n", + "geometry: binary\n", + "huc: string\n", + "model_id: string\n", + "us_reach_id: string\n", + "us_network_to_id: string\n", + "ds_reach_id: string\n", + "ds_network_to_id: string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", + "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", + "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", + "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", + "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", + "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", + "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", + "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "..." + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load a XS parquet file into a DataFrame\n", + "parquet_file_path = f'{os.getcwd()}//xs_data/mip_01020002/huc_01020002.parquet'\n", + "df = pq.read_table(parquet_file_path)\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", "metadata": {}, "outputs": [ @@ -794,22 +1595,36 @@ "..." ] }, - "execution_count": 8, + "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "# Load the Parquet file into a DataFrame\n", + "# Load a m1_auxiliary parquet file into a DataFrame\n", "parquet_file_path = f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet'\n", "df = pq.read_table(parquet_file_path)\n", "df" ] }, + { + "attachments": { + "224c4550-7d87-455e-8193-0364425d439b.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "655127c1-3bc5-4f7e-b224-fb9655102134", + "metadata": {}, + "source": [ + "# Result:\n", + "![image.png](attachment:224c4550-7d87-455e-8193-0364425d439b.png)" + ] + }, { "cell_type": "code", "execution_count": null, - "id": "86ec5e38-ab4c-4185-bc0f-3306e670f968", + "id": "f0020ac6-1f0b-4344-b83f-33f9d73a390c", "metadata": {}, "outputs": [], "source": [] diff --git a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb new file mode 100644 index 0000000..0186920 --- /dev/null +++ b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb @@ -0,0 +1,7589 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a24f20d0-abb4-413a-a70b-0fb6d3ca1e22", + "metadata": {}, + "source": [ + "# Introduction:\n", + "#### - Mapping cross-sections with IDs\n", + "#### - Converting the proccessed cross-sections to parquets, geopackages, Iceberg tables by HUC \n", + "#### - Querying for cross-sections By IDs " + ] + }, + { + "cell_type": "markdown", + "id": "4318dbc0-f266-4078-a4e6-59898e1e2c43", + "metadata": {}, + "source": [ + "## Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "6788bf1c-12cf-4d48-a880-2e30762b0378", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas\n", + "import pyarrow as pa\n", + "import pyarrow.parquet as pq\n", + "import collections\n", + "import pandas as pd\n", + "import numpy as np\n", + "import re\n", + "import json\n", + "import pickle\n", + "import os\n", + "import warnings\n", + "warnings.filterwarnings('ignore')" + ] + }, + { + "cell_type": "markdown", + "id": "b9e39188-c6e6-4849-907d-bef852afab0d", + "metadata": {}, + "source": [ + "## Mapping FIM-C Data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "623c0d59-46be-40a5-8470-2d367345df40", + "metadata": {}, + "outputs": [], + "source": [ + "class MapData(object):\n", + " '''\n", + " '''\n", + " def __init__(self, data_dir):\n", + " self.data_dir = data_dir\n", + "\n", + " # Parent directory of the FIM-C files.\n", + " # Note: All the jsons & geopackages are relevant \n", + " # to map the files to IDs.\n", + " self.fim_data_dirs = []\n", + "\n", + " # List of directories associated with each file type of \n", + " # the FIM-C data sample (e.g. geopackage of a given model @ HUC#, json, \n", + " # source_models.gpkg, ripple.gpkg) \n", + " self.model_gpkg_dirs = []\n", + " self.src_models_gpkg_dirs = []\n", + " self.rip_gpkg_dirs = []\n", + " self.gpkg_dirs = []\n", + " self.json_dirs = []\n", + " self.xs_df_list = []\n", + " \n", + " # Variables to be used later\n", + " self.model_gpkg_tablenames = []\n", + " self.src_models_gpkg_tablenames = []\n", + " self.rip_gpkg_tablenames = []\n", + " self.gpkg_tablenames = []\n", + " self.json_tablenames = []\n", + " \n", + " self.id2json = collections.defaultdict(dict)\n", + " self.model_id2gpkg = collections.defaultdict(dict)\n", + " self.us_ref_dict = collections.defaultdict(dict)\n", + " self.ds_ref_dict = collections.defaultdict(dict)\n", + " self.rip_huc2gpkg = collections.defaultdict(dict)\n", + " self.groupbyriver_dict = collections.defaultdict(dict)\n", + " self.crs_dict = collections.defaultdict(dict)\n", + " self.consolidated_id2xs = geopandas.GeoDataFrame()\n", + " \n", + " self.read_data_dirs()\n", + " self.cat_data_dirs()\n", + " self.map_model2huc()\n", + " self.filter_model2huc_map(keys_to_drop={'metrics','low_flow', \n", + " 'high_flow', 'eclipsed', \n", + " 'lengths', 'coverage'})\n", + " \n", + " # Generate maps of model_id & HUC # to xs (for both us & ds cross-section)\n", + " # to reach ID & \"network_to_id\" from each model @ HUC's json file \n", + " self.map_modelhuc_xs2ids()\n", + "\n", + " # Generate maps of model_id & HUC # to gpkg from each model @ HUC's geopackage\n", + " self.map_model2huc_gpkg()\n", + "\n", + " # Generate maps of HUC # to ripple gpkg\n", + " self.map_huc2ripple_gpkg()\n", + "\n", + " # Map IDs to each model's cross-section instance\n", + " self.map_model_xs2ids()\n", + "\n", + " # [Optional: Per HUC, save each river's set of XS data as geoparquetss & geopackages]\n", + " #self.save_xs_data()\n", + "\n", + " # Save map of inherited CRS to HUC, model_id, river name\n", + " self.save_crs_map()\n", + "\n", + " # Consolidated all HEC RAS models' cross-sections featuring IDs\n", + " self.consolidate_id2xs_dfs()\n", + "\n", + " # Save HEC RAS models' cross-sections consolidated by HUC as geoparquets & geopackages\n", + " self.save_xsbyhuc_data()\n", + " \n", + "\n", + "\n", + " def read_data_dirs(self):\n", + " '''\n", + " Extract the list of fim-c data sample's directories.\n", + " \n", + " Args:\n", + " data_dir (str): Parent directory of the fim-c files.\n", + " Note: All the jsons & geopackages are relevant \n", + " to map the files to IDs.\n", + "\n", + " Return (list): List of directories associated with each file type of \n", + " the FIM-C data sample.\n", + " \n", + " ''' \n", + " fim_data_dirs = []\n", + " for folder, subfolders, files in os.walk(self.data_dir):\n", + " if folder != self.data_dir:\n", + " for file in files:\n", + " self.fim_data_dirs.append(f'{folder}/{file}')\n", + "\n", + " return\n", + " \n", + " def cat_data_dirs(self):\n", + " '''\n", + " Categorize FIM-C data sample files.\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + " \n", + " ''' \n", + " # Extract a list of directories corresponding to each set of files \n", + " for x in self.fim_data_dirs:\n", + " \n", + " # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains reach_id & nwm_to_id \n", + " # for network layer & reaches layer. The rating curves layer only has reach_id. The models layer \n", + " # contains collection_id & model_id)\n", + " if re.search('ripple.gpkg', x):\n", + " self.rip_gpkg_dirs.append(x)\n", + " t = re.search('/mip(.*)', x)\n", + " rip_gpkg_tblname = t.group()\n", + " self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip('/').replace('/', '_'))\n", + "\n", + " # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id)\n", + " elif not x.endswith('source_models.gpkg') and not x.endswith('.json') and not re.search('ripple.gpkg', x):\n", + " self.model_gpkg_dirs.append(x)\n", + " t = re.search('/mip(.*)', x)\n", + " model_gpkg_tblname = t.group()\n", + " self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip('/').replace('/', '_'))\n", + "\n", + " # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines)\n", + " elif x.endswith('source_models.gpkg'):\n", + " self.src_models_gpkg_dirs.append(x)\n", + " t = re.search('/mip(.*)', x)\n", + " src_models_gpkg_tblname = t.group()\n", + " self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip('/').replace('/', '_'))\n", + " \n", + " # Covers all HEC-RAS models + Ripple gpkg per HUC\n", + " if x.endswith('.gpkg'):\n", + " self.gpkg_dirs.append(x)\n", + " t = re.search('/mip(.*)', x)\n", + " gpkg_tblname = t.group()\n", + " self.gpkg_tablenames.append(gpkg_tblname.lstrip('/').replace('/', '_'))\n", + "\n", + " # Covers each HEC-RAS models' result of conflating its model w/ the NWM network\n", + " elif x.endswith('.json'):\n", + " self.json_dirs.append(x)\n", + " t = re.search('/mip(.*)', x)\n", + " json_tblname = t.group()\n", + " self.json_tablenames.append(json_tblname.lstrip('/').replace('/', '_')) \n", + "\n", + " return \n", + " \n", + " def drop_nested_keys(self, map_dict, keys_to_drop):\n", + " '''\n", + " Drop keys irrelevant for linking each XS to IDs\n", + " \n", + " Args:\n", + " map_dict (dict): Dictionary to filter\n", + "\n", + " keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs.\n", + "\n", + " Return: None\n", + "\n", + " '''\n", + " if isinstance(map_dict, dict):\n", + " return {k: self.drop_nested_keys(v, keys_to_drop) for k, v in map_dict.items() if k not in keys_to_drop}\n", + " elif isinstance(map_dict, list):\n", + " return [self.drop_nested_keys(i, keys_to_drop) for i in map_dict]\n", + " else:\n", + " return map_dict\n", + " \n", + " def map_model2huc(self):\n", + " '''\n", + " Map each conflation json file to their corresponding model_id & HUC #.\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " ''' \n", + " for x in self.json_dirs:\n", + " # Note: model_ids found in each src source_models.gpkg is featured is declared as\n", + " # sub-foldername of where model gpkg file resides\n", + " model_id = x.split(\"/\")[-2]\n", + " huc_num = x.split(\"/\")[-4].split('_')[1]\n", + " self.id2json[model_id][huc_num] = {}\n", + " try:\n", + " with open(x, 'r') as f:\n", + " json2dict = json.loads(f.read()) \n", + " self.id2json[model_id][huc_num].update(json2dict)\n", + " except:\n", + " pass\n", + "\n", + " return \n", + " \n", + " def filter_model2huc_map(self, keys_to_drop):\n", + " '''\n", + " Extract only relevant keys from model2huc map for linking each XS to a feature ID. \n", + " \n", + " Args:\n", + " keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs.\n", + " (e.g. {'metrics','low_flow', 'high_flow', 'eclipsed', \n", + " 'lengths', 'coverage'})\n", + "\n", + " Return: None\n", + "\n", + " ''' \n", + " self.id2json = self.drop_nested_keys(self.id2json, keys_to_drop)\n", + " \n", + " return\n", + " \n", + " def map_modelhuc_xs2ids(self):\n", + " '''\n", + " Parse JSONs & map model_id & HUC # to xs to reach ID & \"network_to_id\"\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: Per model @ HUC cross-section layer, the attribute of interest is \"river_reach_rs\" \n", + " in order to link the IDs to each individual cross-section & their associated xs_id.\n", + "\n", + " To map each cross-section of a model @ HUC#, there has to be a shared attribute between a \n", + " model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s \n", + " conflation json file.\n", + " \n", + " - Each conflation json file reveals ...\n", + " - Per reach, there is a set of cross-sections.\n", + " - Within each model's cross-section (XS) layers, there are a set of cross-section \n", + " instances - each instance featuring a unique \"thalweg\" (aka \"min_elevation\"), \n", + " \"xs_max_elevation\" (aka \"max_elevation\"), \"reach_id\" (\"reaches\"), & \"river_station\" (aka \"xs_id\")\n", + "\n", + " - Each model @ HUC#'s XS layer contains a collection of cross-section instancees. \n", + " Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in \n", + " such a way to allow each cross-section to be associated with a feature ID (aka \"reach_id\" and/or\n", + " \"network_to_id\"). \n", + " \n", + " - \"river_reach_rs\" is formatted differently across models' XS layers, however multplie keys \n", + " referenced in the conflation jsons can be referenced to obtain the \"river_reach_rs\" from the jsons \n", + " As a result, the mapping of IDs to each model's cross-section instance will be based on the info.\n", + " extracted from a model @ HUC#'s conflation.json\n", + "\n", + " - There can be multiple reach_ids tied to same nwm_to_id (aka \"network_to_id).\n", + "\n", + " ''' \n", + " # Keys to join values from that makes up the 'river_reach_rs' reflected in each model's XS layer\n", + " keys_to_join = ['river', 'reach', 'xs_id'] \n", + " for model_id, huc_dict in self.id2json.items():\n", + " for huc_num, reach_dict in huc_dict.items():\n", + " for reach_id, v_dict in reach_dict['reaches'].items():\n", + " # Joining the attribute because each model's xs layer features three atttrib concat (to be used as reference)\n", + " if \"us_xs\" in v_dict:\n", + " usxs_joined_values = ' '.join(str(v_dict[\"us_xs\"][key]) for key in keys_to_join)\n", + " if \"min_elevation\" in v_dict[\"us_xs\"]:\n", + " us_xs_min_elev = v_dict[\"us_xs\"][\"min_elevation\"]\n", + " if \"max_elevation\" in v_dict[\"us_xs\"]:\n", + " us_xs_max_elev = v_dict[\"us_xs\"][\"max_elevation\"]\n", + " \n", + " if \"ds_xs\" in v_dict:\n", + " dsxs_joined_values = ' '.join(str(v_dict[\"ds_xs\"][key]) for key in keys_to_join)\n", + " if \"min_elevation\" in v_dict[\"ds_xs\"]:\n", + " ds_xs_min_elev = v_dict[\"ds_xs\"][\"min_elevation\"]\n", + " if \"max_elevation\" in v_dict[\"ds_xs\"]:\n", + " ds_xs_max_elev = v_dict[\"ds_xs\"][\"max_elevation\"]\n", + " \n", + " if \"network_to_id\" in v_dict:\n", + " nwm2id = v_dict[\"network_to_id\"]\n", + "\n", + " # Generated maps of model_id & HUC # to xs (for both us & ds cross-section)\n", + " # to reach ID & \"network_to_id\" \n", + " self.us_ref_dict[(model_id, huc_num)].update({(usxs_joined_values, us_xs_min_elev , us_xs_max_elev):[reach_id, nwm2id]})\n", + " self.ds_ref_dict[(model_id, huc_num)].update({(dsxs_joined_values, ds_xs_min_elev , ds_xs_max_elev):[reach_id, nwm2id]}) \n", + " \n", + " return\n", + "\n", + " def map_model2huc_gpkg(self):\n", + " '''\n", + " Map model_id & HUC # to each HEC-RAS model's geopackage.\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: model_ids found in each source_models.gpkg is featured in last\n", + " sub-foldername of where model gpkg file resides\n", + "\n", + " ''' \n", + " # Each HEC-RAS model gpkg per model per HUC\n", + " for x in self.model_gpkg_dirs:\n", + " model_id = x.split(\"/\")[-2]\n", + " huc_num = x.split(\"/\")[-4].split('_')[1]\n", + " self.model_id2gpkg[(model_id, huc_num)] = {'XS': None}\n", + " self.model_id2gpkg[(model_id, huc_num)] = {\"XS concave hull\": None}\n", + " self.model_id2gpkg[(model_id, huc_num)] = {\"River\": None}\n", + "\n", + " try:\n", + " self.model_id2gpkg[(model_id, huc_num)].update({'XS': geopandas.read_file(x, engine='pyogrio',\n", + " use_arrow=True, \n", + " layer=\"XS\")})\n", + "\n", + " self.model_id2gpkg[(model_id, huc_num)].update({\"River\": geopandas.read_file(x, \n", + " engine='pyogrio', \n", + " use_arrow=True, \n", + " layer=\"River\")})\n", + " self.model_id2gpkg[(model_id, huc_num)].update({\"XS concave hull\": geopandas.read_file(x, \n", + " engine='pyogrio', \n", + " use_arrow=True, \n", + " layer=\"XS concave hull\")})\n", + " except:\n", + " pass\n", + " \n", + " return\n", + " \n", + " def map_huc2ripple_gpkg(self):\n", + " '''\n", + " Map HUC # to ripple geopackage (features HEC RAS 1D model flowlines).\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: ripple.gpkg features the HEC RAS 1D model flowlines categorized by HUC #.\n", + "\n", + " ''' \n", + " for x in self.rip_gpkg_dirs:\n", + " huc_num = x.split(\"/\")[-2].split('_')[1]\n", + " self.rip_huc2gpkg[huc_num] = {'reaches': None}\n", + " self.rip_huc2gpkg[huc_num] = {\"rating curves\": None}\n", + " self.rip_huc2gpkg[huc_num] = {\"network\": None}\n", + " self.rip_huc2gpkg[huc_num] = {'models': None}\n", + " self.rip_huc2gpkg[huc_num] = {\"metadata\": None}\n", + " self.rip_huc2gpkg[huc_num] = {\"rating_curves_no_map\": None}\n", + " self.rip_huc2gpkg[huc_num] = {\"processing\": None}\n", + "\n", + " try:\n", + " self.rip_huc2gpkg[huc_num].update({\"reaches\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"reaches\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"rating_curves\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"rating_curves\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"network\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"network\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"models\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"models\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"metadata\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"metadata\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"rating_curves_no_map\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"rating_curves_no_map\")})\n", + " self.rip_huc2gpkg[huc_num].update({\"processing\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"processing\")})\n", + " except:\n", + " \n", + " pass\n", + " return\n", + " \n", + " def map_model_xs2ids(self):\n", + " '''\n", + " Map each cross-section instance featured in HEC-RAS model's cross-section layer to their corresponding IDs.\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " ''' \n", + " \n", + " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", + " df = model_gpkg_dict['XS']\n", + " df['huc'] = huc_num\n", + " df['model_id'] = model_id\n", + " array_of_lists = [[None, None] for _ in range(len(df))]\n", + " df['us_ids'] = pd.DataFrame([array_of_lists]).T\n", + " df['ds_ids'] = pd.DataFrame([array_of_lists]).T\n", + " \n", + " # Covers us_xs\n", + " if (model_id, huc_num) in self.us_ref_dict:\n", + " df['us_ids'] = df.set_index([\"river_reach_rs\", \"thalweg\", \"xs_max_elevation\"]).index.map(self.us_ref_dict[(model_id, huc_num)].get)\n", + " #print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.\")\n", + " else:\n", + " print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.\")\n", + " continue\n", + "\n", + " # Covers ds_xs\n", + " if (model_id, huc_num) in self.ds_ref_dict:\n", + " df['ds_ids'] = df.set_index([\"river_reach_rs\", \"thalweg\", \"xs_max_elevation\"]).index.map(self.ds_ref_dict[(model_id, huc_num)].get)\n", + " #print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.\")\n", + " else:\n", + " print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.\")\n", + " continue\n", + "\n", + " # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS \n", + " us_id_df = df['us_ids'].apply(pd.Series)\n", + " us_id_df.columns=['us_reach_id', 'us_network_to_id']\n", + " ds_id_df = df['ds_ids'].apply(pd.Series)\n", + " ds_id_df.columns=['ds_reach_id', 'ds_network_to_id']\n", + " \n", + " # Fill any nan to string \n", + " us_id_df[['us_reach_id', 'us_network_to_id']] = us_id_df[['us_reach_id', 'us_network_to_id']].fillna('None')\n", + " ds_id_df[['ds_reach_id', 'ds_network_to_id']] = ds_id_df[['ds_reach_id', 'ds_network_to_id']].fillna('None')\n", + " df = df.fillna('None')\n", + " df = pd.concat([df, us_id_df, ds_id_df], axis=1)\n", + " df = df.drop(['us_ids', 'ds_ids'], axis=1)\n", + " \n", + " model_gpkg_dict['XS'] = df\n", + " self.xs_df_list.append(model_gpkg_dict['XS'])\n", + " \n", + " return\n", + " \n", + " def save_xs_data(self):\n", + " '''\n", + " Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: These saved parquet files will preserve each river @ HUC's inherited CRS. \n", + "\n", + " '''\n", + " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", + "\n", + " # Generate data folder per HUC\n", + " if not os.path.exists(f'{os.getcwd()}/xs_data/huc_{huc_num}'):\n", + " os.makedirs(f'{os.getcwd()}/xs_data/huc_{huc_num}')\n", + "\n", + " # Save each river's geopandas as a geoparquet & geopackage under each HUC folder \n", + " grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river'])\n", + " for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']):\n", + " filterbyriver = grouped_xslayers.get_group(river_name)\n", + "\n", + " # Generate map of each river's set of XS to HUC & model ID to be used as a\n", + " # look-up reference\n", + " self.groupbyriver_dict[huc_num].update({model_id: filterbyriver})\n", + "\n", + " # Save XS as geoparquet per river per HUC\n", + " filterbyriver.to_parquet(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.parquet', \n", + " engine=\"pyarrow\")\n", + "\n", + " # Save XS as geopackage per river per HUC\n", + " filterbyriver.to_file(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.gpkg', \n", + " driver='GPKG') \n", + " \n", + " return\n", + " \n", + " def save_crs_map(self):\n", + " '''\n", + " Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: This saved pickle file will map each river @ HUC's inherited CRS for one to \n", + " analyze & reference. \n", + "\n", + " '''\n", + " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", + "\n", + " # Generate data folder per HUC\n", + " if not os.path.exists(f'{os.getcwd()}/xs_data/crs_map'):\n", + " os.makedirs(f'{os.getcwd()}/xs_data/crs_map')\n", + "\n", + " # Generate map of the CRS to each river's geopandas per HUC \n", + " grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river'])\n", + " for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']):\n", + " filterbyriver = grouped_xslayers.get_group(river_name)\n", + " self.crs_dict[(huc_num, model_id)].update({river_name: f'ESPG: {str(filterbyriver.crs.to_epsg()) if \\\n", + " filterbyriver.crs.to_epsg() else None}, {filterbyriver.crs.name},'})\n", + "\n", + " # Save map of inherited CRS to HUC, model_id, river name\n", + " with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'wb') as handle:\n", + " pickle.dump(self.crs_dict, handle, protocol=pickle.HIGHEST_PROTOCOL)\n", + " \n", + " return\n", + "\n", + " def consolidate_id2xs_dfs(self):\n", + " '''\n", + " Consolidate HEC-RAS models cross-sections featuring their corresponding IDs.\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: A set CRS standard is needed in order to consolidates all XS layers of all models\n", + " under a single dataframe to maintain a consistent CRS. This consolidation will check if the XS \n", + " dataframes have a consistent CRS if it does not then it will not consolidate the XS dataframes. \n", + " As of 05/14/25, only CRS in this condition is considering the\n", + " NAD83, but additional CRS can be added to this methods as new findings are made.\n", + " \n", + " '''\n", + " crs_list = []\n", + " for xs_df in self.xs_df_list:\n", + " if 'NAD83' in xs_df.crs.name or 'NAD_1983' in xs_df.crs.name:\n", + " # Convert all GeoDataFrames in the list to the target CRS\n", + " crs_list.append(\"EPSG:5070\")\n", + " else:\n", + " print(False)\n", + "\n", + " # Will consolidate ONLY if the CRS is consistent across XS geodpandas dataframes\n", + " if len(set(crs_list)) == 1:\n", + " target_crs = str(np.unique(crs_list)[0])\n", + " self.consolidated_id2xs = geopandas.GeoDataFrame(pd.concat([xs_df.to_crs(target_crs) for xs_df in self.xs_df_list], \n", + " ignore_index=True))\n", + " print(f\"The consolidated XS geopandas dataframes now has a standardized CRS of:\\n{self.consolidated_id2xs.crs.name}\")\n", + " else:\n", + " print(\"Cannot consolidate XS geodpandas dataframes because the CRS is inconsistent across XS geodpandas dataframes.\")\n", + " \n", + " return\n", + "\n", + " def save_xsbyhuc_data(self):\n", + " '''\n", + " Consolidate HEC-RAS models cross-sections based on HUC & save to storage\n", + " \n", + " Args:\n", + " None\n", + "\n", + " Return: None\n", + "\n", + " Note: These saved parquet files will be the transformed CRS of all XS per HUC to ensure\n", + " a consistent standardized CRS. \n", + "\n", + " '''\n", + " unique_huc_nums = set(self.consolidated_id2xs['huc'])\n", + " for huc_num in unique_huc_nums:\n", + " \n", + " # Generate data folder per HUC\n", + " if not os.path.exists(f'{os.getcwd()}/xs_data/mip_{huc_num}'):\n", + " os.makedirs(f'{os.getcwd()}/xs_data/mip_{huc_num}')\n", + " \n", + " # Filter consolidated XS geopanda dataframe by HUC\n", + " filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs['huc'] == huc_num]\n", + " \n", + " # Save XS as geoparquet per HUC\n", + " filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.parquet', \n", + " engine=\"pyarrow\")\n", + " \n", + " # Save XS as geopackage per HUC\n", + " filterbyhuc.to_file(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.gpkg', \n", + " driver='GPKG') \n", + " \n", + " return\n", + "\n", + "\n", + " " + ] + }, + { + "cell_type": "markdown", + "id": "a4372bf1-9031-41c8-8567-5cfe3c56a0b1", + "metadata": {}, + "source": [ + "## Demo I:\n", + "### Mapping FIM-C Data to Model ID, HUC #, Reach ID, Network ID, etc" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3bd859e1-1b0a-45e9-a3aa-03aaca2cc5e2", + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The model_id @ HUC# (('SHR6_1', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('SandHillRiver7', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('SandHillRiver7_1', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('SHR6', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Kelly_Creek_T1', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Duck_River_Trib4', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Bell_Buckle_CrT1', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Trib_to_Holland', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Stream0510', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Martin_Stream', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Stream0526', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('Stream0527', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT115_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT79_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT61_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT119_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT45_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT84_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT91_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT115_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT66_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT120_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT107_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT34_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT84_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT55_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT2_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT106_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT103_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT71_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT103_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT120_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT25_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT8_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT65_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT110_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT105_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT73_in_BluffCr_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT55_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT72_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT72_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT35_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT129_in_Edith_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT89_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT25_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT89_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT102_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT120_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT114_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT33_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT95_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT62_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT70_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT52_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT110_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT35_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT85_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT146_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT53_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT34_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT94_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT96_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT52_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT148_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT112_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT127_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT119_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT112_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT94_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT104_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT120_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT100_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT95_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT33_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT147_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT61_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT129_in_Edith_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT162_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT45_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT235_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT82_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT98_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT86_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT2_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT53_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT86_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT118_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT85_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT235_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT62_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT98_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT100_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT152_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT73_in_BluffCr_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT118_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT96_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT108_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT127_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT107_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT103_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT108_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT66_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT147_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT106_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT71_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT105_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT102_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT79_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT70_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT114_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT113_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT82_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT103_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT113_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT91_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT65_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT8_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT152_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT104_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT162_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT146_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UNT148_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioTusasTrib2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaJarita', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeBorracho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoMiranda', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeRancho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPunche', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPuncheT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadelaOrill', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT3b1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaSarcoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('FernandodeTaos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AguajePetacaT1a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioTusas_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPuncheT3a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioPuebloTrib1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPino', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT11b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioOjoCalienteT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitosT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT12c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyolaMina', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT6', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AguajedelaPetacaT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaAnchaNorth', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoRancho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoelRitoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaPueblo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RedRiver', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT13', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10f', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CabrestoCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RiodeTruchas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1b4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT11c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioOjoCaliente_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaCorral', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PuebloArroyo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('FernandodeTaosT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10e', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioTusasTrib3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeApodaca', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AguajePetacaT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT7', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadelAgua', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPuncheT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('EmbudoCreekTrib1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LaMaderaT1a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT9', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitos_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PiedraLumbre', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1b2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitosT2b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoLagunitas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AngelCanyon', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LagunitasT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoelRito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT9a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LaMaderaT1b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioPueblo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10d1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaLemitas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1d', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPuncheT3b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitosT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ChamizalCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeOso', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaEntranasT', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitosT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioOjoCaliente', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaTioPula', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT4a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeOso_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaAlamos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioHondo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioOjoCalienteT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RedRiverTrib2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaOjoSarco', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaAbeque', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioLucero', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LatirCreekTrib2a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT8a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RiodeTruchasT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaMontecito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioTusas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT12', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeOjito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AlmagreT3a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT12a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1b1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrande', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT12b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeLorenzo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT4b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeRancho_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AcequiadelJaral', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT9c2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('JarosoCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaEntranas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ArroyoPuncheT6', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRito_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LagunitasT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RiodelasTrampas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('GrandeRanchoT1c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioVallecitosT9', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaPinoReale', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioTusasTrib4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadadeJacinto', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT11c1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('LatirCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('PueblodeTaosT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('ElRitoT5', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CanadaAncha', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('AnchaNorthT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('RioGrandeT10d', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KingsCreekTrib1B_4', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KingsCreekTrib1B_1', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KingsCreekTrib1B_3', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KingsCreekTrib1B_2', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KingsCreekTrib1B', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('KC1_KC1B_LOMR', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('NP708', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('NP720', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('NP719', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('NP180', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CB18_CorrectedEffective', '02060006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('CB18_Proposed', '02060006')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UT81Milw', '04030101')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The model_id @ HUC# (('UT5Milw', '04030101')) IS NOT featured in current model @ HUC's conflation json file.\n", + "The consolidated XS geopandas dataframes now has a standardized CRS of:\n", + "NAD83 / Conus Albers\n" + ] + } + ], + "source": [ + "# Instantiate class\n", + "obj = MapData(data_dir=f'{os.getcwd()}/fema_mip_sample/')\n", + "\n", + "# Extract list of fim-c data sample's directories.\n", + "fim_data_dirs = obj.fim_data_dirs\n", + "\n", + "# Categorize FIM-C data sample files (e.g. geopackage of a given model @ HUC#, json, source_models.gpkg, ripple.gpkg)\n", + "model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = obj.model_gpkg_dirs, obj.src_models_gpkg_dirs, obj.rip_gpkg_dirs\n", + "gpkg_dirs, json_dirs = obj.gpkg_dirs, obj.json_dirs\n", + "\n", + "model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = obj.model_gpkg_tablenames, obj.src_models_gpkg_tablenames, obj.rip_gpkg_tablenames\n", + "gpkg_tablenames, json_tablenames = obj.gpkg_tablenames, obj.json_tablenames\n", + "\n", + "# Generate a dictionary to map each conflation json files to their corresponding model_id & HUC #.\n", + "model2huc_map = obj.id2json\n", + "\n", + "# Generated maps of model_id & HUC # to xs (for both us & ds cross-section) to reach ID & \"network_to_id\"\n", + "us_xs2id_map = obj.us_ref_dict\n", + "ds_xs2id_map = obj.ds_ref_dict\n", + "\n", + "# Generated map of model_id & HUC # to each HEC-RAS model's geopackage.\n", + "model_id2gpkg_map = obj.model_id2gpkg\n", + "\n", + "# Generated map of HUC # to each ripple geopackage.\n", + "rip_huc2gpkg_map = obj.rip_huc2gpkg\n", + "\n", + "# Map IDs to each model's cross-section instance\n", + "id2xs_dfs = obj.xs_df_list\n", + "\n", + "# [OPTIONAL: If a user wants to extract individual river geopandas, parquet, &/or gpkg]\n", + "# Map of XS as geopandas per river per HUC w/ their inherited CRS by HUC\n", + "#xsbyriver_map = obj.groupbyriver_dict\n", + "\n", + "# [OPTIONAL: Map of inherited CRS to HUC, model_id, river name]\n", + "crs_map = obj.crs_dict\n", + "\n", + "# Conslidate all HEC-RAS models' cross-sections featuring their corresponding IDs.\n", + "consolidated_id2xs = obj.consolidated_id2xs" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "86bfa6f3-0c8d-4cdc-8f1d-2b4e73b4d00b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
0BapCrReach1BapCr ,Reach148077.80BapCr Reach1 48077.8743.50756.11207.08207.08207.08...3607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436369.214 1962609.838, 436369.691...07130010sa_11380162613801634NoneNone
1BapCrReach1BapCr ,Reach147870.72BapCr Reach1 47870.72742.54755.74259.78259.78259.78...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436352.44 1962575.103, 436311.185 ...07130010sa_1NoneNoneNoneNone
2BapCrReach1BapCr ,Reach147610.94BapCr Reach1 47610.94741.94755.17374.57374.57374.57...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436323.593 1962531.597, 436264.538...07130010sa_1NoneNoneNoneNone
3BapCrReach1BapCr ,Reach147236.37BapCr Reach1 47236.37740.62754.18333.59333.59333.59...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436310.242 1962416.052, 436236.357...07130010sa_1NoneNoneNoneNone
4BapCrReach1BapCr ,Reach146902.78BapCr Reach1 46902.78739.04757.19375.07375.07375.07...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436292.364 1962322.688, 436219.117...07130010sa_1NoneNoneNoneNone
\n", + "

5 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " river reach river_reach river_station \\\n", + "0 BapCr Reach1 BapCr ,Reach1 48077.80 \n", + "1 BapCr Reach1 BapCr ,Reach1 47870.72 \n", + "2 BapCr Reach1 BapCr ,Reach1 47610.94 \n", + "3 BapCr Reach1 BapCr ,Reach1 47236.37 \n", + "4 BapCr Reach1 BapCr ,Reach1 46902.78 \n", + "\n", + " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", + "0 BapCr Reach1 48077.8 743.50 756.11 207.08 \n", + "1 BapCr Reach1 47870.72 742.54 755.74 259.78 \n", + "2 BapCr Reach1 47610.94 741.94 755.17 374.57 \n", + "3 BapCr Reach1 47236.37 740.62 754.18 333.59 \n", + "4 BapCr Reach1 46902.78 739.04 757.19 375.07 \n", + "\n", + " right_reach_length channel_reach_length ... number_of_coords \\\n", + "0 207.08 207.08 ... 3 \n", + "1 259.78 259.78 ... 2 \n", + "2 374.57 374.57 ... 2 \n", + "3 333.59 333.59 ... 2 \n", + "4 375.07 375.07 ... 2 \n", + "\n", + " flows profile_names \\\n", + "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "1 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "2 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "3 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "4 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "\n", + " geometry huc model_id \\\n", + "0 LINESTRING (436369.214 1962609.838, 436369.691... 07130010 sa_1 \n", + "1 LINESTRING (436352.44 1962575.103, 436311.185 ... 07130010 sa_1 \n", + "2 LINESTRING (436323.593 1962531.597, 436264.538... 07130010 sa_1 \n", + "3 LINESTRING (436310.242 1962416.052, 436236.357... 07130010 sa_1 \n", + "4 LINESTRING (436292.364 1962322.688, 436219.117... 07130010 sa_1 \n", + "\n", + " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", + "0 13801626 13801634 None None \n", + "1 None None None None \n", + "2 None None None None \n", + "3 None None None None \n", + "4 None None None None \n", + "\n", + "[5 rows x 24 columns]" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "consolidated_id2xs.head(5)\n", + "# consolidated_id2xs.shape" + ] + }, + { + "attachments": { + "6667e33a-9f14-4aeb-9078-49fc7dd265d2.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "00d552bf-d39e-40f0-ace5-54a09f1f35e8", + "metadata": {}, + "source": [ + "## Demo I Result:\n", + "![image.png](attachment:6667e33a-9f14-4aeb-9078-49fc7dd265d2.png)\n" + ] + }, + { + "cell_type": "markdown", + "id": "2959553a-f779-46ef-9dca-2f2a20eb6554", + "metadata": {}, + "source": [ + "## Demo II: \n", + "### Querying XS Instance by Network ID" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8d337a5c-0f7a-42c4-91cf-72e7f0da98cb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
28507BattleCrCypress1BattleCrCypress ,113227.35BattleCrCypress 1 13227.3517.8882.69464.51459.84462.47...21230.0\\n1330.01%\\n1% UltimateLINESTRING (1665550.543 1889977.407, 1664479.0...02060006BattleCreekCypressSwamp1190819011908200NoneNone
\n", + "

1 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " river reach river_reach \\\n", + "28507 BattleCrCypress 1 BattleCrCypress ,1 \n", + "\n", + " river_station river_reach_rs thalweg xs_max_elevation \\\n", + "28507 13227.35 BattleCrCypress 1 13227.35 17.88 82.69 \n", + "\n", + " left_reach_length right_reach_length channel_reach_length ... \\\n", + "28507 464.51 459.84 462.47 ... \n", + "\n", + " number_of_coords flows profile_names \\\n", + "28507 2 1230.0\\n1330.0 1%\\n1% Ultimate \n", + "\n", + " geometry huc \\\n", + "28507 LINESTRING (1665550.543 1889977.407, 1664479.0... 02060006 \n", + "\n", + " model_id us_reach_id us_network_to_id ds_reach_id \\\n", + "28507 BattleCreekCypressSwamp 11908190 11908200 None \n", + "\n", + " ds_network_to_id \n", + "28507 None \n", + "\n", + "[1 rows x 24 columns]" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario I\n", + "us_network_to_id = '11908200'\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "queried_xsbyid" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "0e5adb81-5ba0-41ad-a1f1-1196b822f1f7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
0BapCrReach1BapCr ,Reach148077.8BapCr Reach1 48077.8743.5756.11207.08207.08207.08...3607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436369.214 1962609.838, 436369.691...07130010sa_11380162613801634NoneNone
\n", + "

1 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " river reach river_reach river_station \\\n", + "0 BapCr Reach1 BapCr ,Reach1 48077.8 \n", + "\n", + " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", + "0 BapCr Reach1 48077.8 743.5 756.11 207.08 \n", + "\n", + " right_reach_length channel_reach_length ... number_of_coords \\\n", + "0 207.08 207.08 ... 3 \n", + "\n", + " flows profile_names \\\n", + "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "\n", + " geometry huc model_id \\\n", + "0 LINESTRING (436369.214 1962609.838, 436369.691... 07130010 sa_1 \n", + "\n", + " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", + "0 13801626 13801634 None None \n", + "\n", + "[1 rows x 24 columns]" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario II\n", + "us_network_to_id = '13801634'\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "queried_xsbyid" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "38a9c0ba-388b-41a5-a282-2c245e42c12c", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
307961242151242,15789.62141242 15 789.62143520.5583568.42085.1441693.2765793.45487...10193.0\\n359.0\\n522.0\\n723.0\\n919.0\\n569.0\\n1347.010yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5...LINESTRING (-1355141.15 1253454.057, -1355086....150400071242_ras2129430921294311NoneNone
3087811951091195 ,1096071.47501195 109 6071.4753534.4503616.780206.69170147.98750195.85400...81746.0\\n3146.0\\n4514.0\\n6152.0\\n7819.0\\n4840.0...10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n500yrLINESTRING (-1355056.984 1253633.24, -1355173....150400071195_ras21294309212943112129424321294309
309661236611236,61725.29791236 61 725.29793533.8293587.055151.74160139.83360148.79750...7433.0\\n796.0\\n1152.0\\n1584.0\\n2014.0\\n1247.0\\n...10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5...LINESTRING (-1355130.287 1253615.579, -1355168...150400071236_ras21294309212943112129555121294309
\n", + "

3 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " river reach river_reach river_station \\\n", + "30796 1242 15 1242,15 789.6214 \n", + "30878 1195 109 1195 ,109 6071.4750 \n", + "30966 1236 61 1236,61 725.2979 \n", + "\n", + " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", + "30796 1242 15 789.6214 3520.558 3568.420 85.14416 \n", + "30878 1195 109 6071.475 3534.450 3616.780 206.69170 \n", + "30966 1236 61 725.2979 3533.829 3587.055 151.74160 \n", + "\n", + " right_reach_length channel_reach_length ... number_of_coords \\\n", + "30796 93.27657 93.45487 ... 10 \n", + "30878 147.98750 195.85400 ... 8 \n", + "30966 139.83360 148.79750 ... 7 \n", + "\n", + " flows \\\n", + "30796 193.0\\n359.0\\n522.0\\n723.0\\n919.0\\n569.0\\n1347.0 \n", + "30878 1746.0\\n3146.0\\n4514.0\\n6152.0\\n7819.0\\n4840.0... \n", + "30966 433.0\\n796.0\\n1152.0\\n1584.0\\n2014.0\\n1247.0\\n... \n", + "\n", + " profile_names \\\n", + "30796 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5... \n", + "30878 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n500yr \n", + "30966 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5... \n", + "\n", + " geometry huc model_id \\\n", + "30796 LINESTRING (-1355141.15 1253454.057, -1355086.... 15040007 1242_ras \n", + "30878 LINESTRING (-1355056.984 1253633.24, -1355173.... 15040007 1195_ras \n", + "30966 LINESTRING (-1355130.287 1253615.579, -1355168... 15040007 1236_ras \n", + "\n", + " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", + "30796 21294309 21294311 None None \n", + "30878 21294309 21294311 21294243 21294309 \n", + "30966 21294309 21294311 21295551 21294309 \n", + "\n", + "[3 rows x 24 columns]" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario III\n", + "us_network_to_id = '21294311'\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "queried_xsbyid" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "94b5df36-a194-402b-b795-e47487fef291", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
19216cottonwood_creek45cottonwood_creek,451773.175cottonwood_creek 45 1773.1751342.2951450.915166.0375330.7853294.9549...147096.0\\n9743.0\\n4449.0100yr\\n100yrplus\\n100yrminusLINESTRING (-1536837.566 2728068.167, -1536849...17060305cottonwood_creek_1_ras23597195235971932359719723597195
\n", + "

1 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " river reach river_reach river_station \\\n", + "19216 cottonwood_creek 45 cottonwood_creek,45 1773.175 \n", + "\n", + " river_reach_rs thalweg xs_max_elevation \\\n", + "19216 cottonwood_creek 45 1773.175 1342.295 1450.915 \n", + "\n", + " left_reach_length right_reach_length channel_reach_length ... \\\n", + "19216 166.0375 330.7853 294.9549 ... \n", + "\n", + " number_of_coords flows profile_names \\\n", + "19216 14 7096.0\\n9743.0\\n4449.0 100yr\\n100yrplus\\n100yrminus \n", + "\n", + " geometry huc \\\n", + "19216 LINESTRING (-1536837.566 2728068.167, -1536849... 17060305 \n", + "\n", + " model_id us_reach_id us_network_to_id ds_reach_id \\\n", + "19216 cottonwood_creek_1_ras 23597195 23597193 23597197 \n", + "\n", + " ds_network_to_id \n", + "19216 23597195 \n", + "\n", + "[1 rows x 24 columns]" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario IV\n", + "us_network_to_id = '23597193'\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "queried_xsbyid" + ] + }, + { + "cell_type": "markdown", + "id": "64d121ff-4622-4863-ab1e-16514c28581f", + "metadata": {}, + "source": [ + "## Demo III: \n", + "### Querying Each XS Layer by Model ID & HUC Number" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "c8659230-af75-48ff-b988-d1b0dffc260b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
009020301GF_EGF_FIS_Submittal120493982327066766NoneNoneRRN GFEGF 170.0774.37834.80170.0...700.0934.0Type RM Length L Ch R = 1 ,170 ,900,934,70...[(44883.4, 834.0), (47186.0, 832.44), (49148.8...['50124', '50484']238749000.0\\n71000.0\\n89000.0\\n139000.010-Year\\n50-Year\\n100-Year\\n500 YearLINESTRING (2818284.13 354233.597, 2818770.518...
109020301GF_EGF_FIS_Submittal1204NoneNoneNoneNoneRRN GFEGF 169.0772.69842.37169.0...340.0344.0Type RM Length L Ch R = 1 ,169 ,450,344,34...[(45195.48, 833.55), (45220.07, 833.6), (45256...['50192', '50563']263849000.0\\n71000.0\\n89000.0\\n139000.010-Year\\n50-Year\\n100-Year\\n500 YearLINESTRING (2815855.489 354032.803, 2816473.50...
\n", + "

2 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " huc model_id us_reach_id us_network_to_id \\\n", + "0 09020301 GF_EGF_FIS_Submittal1204 9398232 7066766 \n", + "1 09020301 GF_EGF_FIS_Submittal1204 None None \n", + "\n", + " ds_reach_id ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", + "0 None None RRN GFEGF 170.0 774.37 834.80 \n", + "1 None None RRN GFEGF 169.0 772.69 842.37 \n", + "\n", + " river_station ... right_reach_length channel_reach_length \\\n", + "0 170.0 ... 700.0 934.0 \n", + "1 169.0 ... 340.0 344.0 \n", + "\n", + " ras_data \\\n", + "0 Type RM Length L Ch R = 1 ,170 ,900,934,70... \n", + "1 Type RM Length L Ch R = 1 ,169 ,450,344,34... \n", + "\n", + " station_elevation_points bank_stations \\\n", + "0 [(44883.4, 834.0), (47186.0, 832.44), (49148.8... ['50124', '50484'] \n", + "1 [(45195.48, 833.55), (45220.07, 833.6), (45256... ['50192', '50563'] \n", + "\n", + " number_of_station_elevation_points number_of_coords \\\n", + "0 238 7 \n", + "1 263 8 \n", + "\n", + " flows profile_names \\\n", + "0 49000.0\\n71000.0\\n89000.0\\n139000.0 10-Year\\n50-Year\\n100-Year\\n500 Year \n", + "1 49000.0\\n71000.0\\n89000.0\\n139000.0 10-Year\\n50-Year\\n100-Year\\n500 Year \n", + "\n", + " geometry \n", + "0 LINESTRING (2818284.13 354233.597, 2818770.518... \n", + "1 LINESTRING (2815855.489 354032.803, 2816473.50... \n", + "\n", + "[2 rows x 24 columns]" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario I\n", + "model_id = 'GF_EGF_FIS_Submittal1204'\n", + "huc_num = '09020301'\n", + "\n", + "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", + "tt.insert(0, 'huc', tt.pop('huc')) \n", + "tt.insert(1, 'model_id', tt.pop('model_id')) \n", + "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", + "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", + "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", + "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", + "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", + "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", + "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", + "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "eb406b80-c188-47ec-8025-2446f54e0575", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
007130010sa_11380162613801634NoneNoneBapCr Reach1 48077.8743.50756.1148077.80...207.08207.08Type RM Length L Ch R = 1 ,48077.80,207.08,207...[(0.0, 754.17), (3.42, 753.96), (6.85, 753.88)...['99.27', '143.86']673607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (2120750.469 1421598.418, 2120758.2...
107130010sa_1NoneNoneNoneNoneBapCr Reach1 47870.72742.54755.7447870.72...259.78259.78Type RM Length L Ch R = 1 ,47870.72,259.78,259...[(0.0, 755.74), (6.92, 755.26), (10.38, 755.11...['65.75', '107.27']582607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (2120687.969 1421489.043, 2120560.3...
\n", + "

2 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", + "0 07130010 sa_1 13801626 13801634 None \n", + "1 07130010 sa_1 None None None \n", + "\n", + " ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", + "0 None BapCr Reach1 48077.8 743.50 756.11 \n", + "1 None BapCr Reach1 47870.72 742.54 755.74 \n", + "\n", + " river_station ... right_reach_length channel_reach_length \\\n", + "0 48077.80 ... 207.08 207.08 \n", + "1 47870.72 ... 259.78 259.78 \n", + "\n", + " ras_data \\\n", + "0 Type RM Length L Ch R = 1 ,48077.80,207.08,207... \n", + "1 Type RM Length L Ch R = 1 ,47870.72,259.78,259... \n", + "\n", + " station_elevation_points bank_stations \\\n", + "0 [(0.0, 754.17), (3.42, 753.96), (6.85, 753.88)... ['99.27', '143.86'] \n", + "1 [(0.0, 755.74), (6.92, 755.26), (10.38, 755.11... ['65.75', '107.27'] \n", + "\n", + " number_of_station_elevation_points number_of_coords \\\n", + "0 67 3 \n", + "1 58 2 \n", + "\n", + " flows profile_names \\\n", + "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "1 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", + "\n", + " geometry \n", + "0 LINESTRING (2120750.469 1421598.418, 2120758.2... \n", + "1 LINESTRING (2120687.969 1421489.043, 2120560.3... \n", + "\n", + "[2 rows x 24 columns]" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario II\n", + "model_id = 'sa_1'\n", + "huc_num = '07130010'\n", + "\n", + "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", + "tt.insert(0, 'huc', tt.pop('huc')) \n", + "tt.insert(1, 'model_id', tt.pop('model_id')) \n", + "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", + "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", + "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", + "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", + "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", + "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", + "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", + "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "f65f2e37-c7b3-4061-8990-b0f73a98e01e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
018070204BorregoCyn_ExistingNoneNoneNoneNoneBorrego Cyn Reach 1 US 1345.913681.12697.361345.913...149.24148.80Type RM Length L Ch R = 1 ,1345.913,155.13,148...[(0.0, 692.38), (121.89, 691.88), (205.0, 692....['205', '255']2321126.0PF 1LINESTRING (6127868.943 2194456.933, 6127820.9...
118070204BorregoCyn_ExistingNoneNoneNoneNoneBorrego Cyn Reach 1 US 1197.11680.18697.561197.110...200.51200.29Type RM Length L Ch R = 1 ,1197.11 ,203.67,200...[(0.0, 692.64), (14.99, 692.64), (16.4, 692.64...['164', '256']3721126.0PF 1LINESTRING (6127720.709 2194447.582, 6127672.7...
\n", + "

2 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", + "0 18070204 BorregoCyn_Existing None None None \n", + "1 18070204 BorregoCyn_Existing None None None \n", + "\n", + " ds_network_to_id river_reach_rs thalweg \\\n", + "0 None Borrego Cyn Reach 1 US 1345.913 681.12 \n", + "1 None Borrego Cyn Reach 1 US 1197.11 680.18 \n", + "\n", + " xs_max_elevation river_station ... right_reach_length \\\n", + "0 697.36 1345.913 ... 149.24 \n", + "1 697.56 1197.110 ... 200.51 \n", + "\n", + " channel_reach_length ras_data \\\n", + "0 148.80 Type RM Length L Ch R = 1 ,1345.913,155.13,148... \n", + "1 200.29 Type RM Length L Ch R = 1 ,1197.11 ,203.67,200... \n", + "\n", + " station_elevation_points bank_stations \\\n", + "0 [(0.0, 692.38), (121.89, 691.88), (205.0, 692.... ['205', '255'] \n", + "1 [(0.0, 692.64), (14.99, 692.64), (16.4, 692.64... ['164', '256'] \n", + "\n", + " number_of_station_elevation_points number_of_coords flows profile_names \\\n", + "0 23 2 1126.0 PF 1 \n", + "1 37 2 1126.0 PF 1 \n", + "\n", + " geometry \n", + "0 LINESTRING (6127868.943 2194456.933, 6127820.9... \n", + "1 LINESTRING (6127720.709 2194447.582, 6127672.7... \n", + "\n", + "[2 rows x 24 columns]" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario III\n", + "model_id = 'BorregoCyn_Existing'\n", + "huc_num = '18070204'\n", + "\n", + "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", + "tt.insert(0, 'huc', tt.pop('huc')) \n", + "tt.insert(1, 'model_id', tt.pop('model_id')) \n", + "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", + "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", + "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", + "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", + "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", + "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", + "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", + "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt.head(2)" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "28c8bfb6-9cf9-4215-9bcd-605dcd0797c8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
017060305cottonwood_creek_ras2359728323597281NoneNonecottonwood_creek 874 89457.283764.9973862.72489457.28...99.942199.9421Type RM Length L Ch R = 1 ,89457.28,99.942100,...[(9649.015, 3806.544), (9649.124, 3806.528), (...['9649.015', '10350.99']86892.0PF 1LINESTRING (2462395.976 1602716.665, 2462389.5...
117060305cottonwood_creek_rasNoneNoneNoneNonecottonwood_creek 874 89357.333762.6663867.24889357.33...99.942199.9421Type RM Length L Ch R = 1 ,89357.33,99.942100,...[(9649.021, 3808.923), (9652.402, 3808.42), (9...['9649.021', '10350.98']83992.0PF 1LINESTRING (2462481.133 1602698.905, 2462480.8...
\n", + "

2 rows × 24 columns

\n", + "
" + ], + "text/plain": [ + " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", + "0 17060305 cottonwood_creek_ras 23597283 23597281 None \n", + "1 17060305 cottonwood_creek_ras None None None \n", + "\n", + " ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", + "0 None cottonwood_creek 874 89457.28 3764.997 3862.724 \n", + "1 None cottonwood_creek 874 89357.33 3762.666 3867.248 \n", + "\n", + " river_station ... right_reach_length channel_reach_length \\\n", + "0 89457.28 ... 99.9421 99.9421 \n", + "1 89357.33 ... 99.9421 99.9421 \n", + "\n", + " ras_data \\\n", + "0 Type RM Length L Ch R = 1 ,89457.28,99.942100,... \n", + "1 Type RM Length L Ch R = 1 ,89357.33,99.942100,... \n", + "\n", + " station_elevation_points \\\n", + "0 [(9649.015, 3806.544), (9649.124, 3806.528), (... \n", + "1 [(9649.021, 3808.923), (9652.402, 3808.42), (9... \n", + "\n", + " bank_stations number_of_station_elevation_points \\\n", + "0 ['9649.015', '10350.99'] 86 \n", + "1 ['9649.021', '10350.98'] 83 \n", + "\n", + " number_of_coords flows profile_names \\\n", + "0 8 92.0 PF 1 \n", + "1 9 92.0 PF 1 \n", + "\n", + " geometry \n", + "0 LINESTRING (2462395.976 1602716.665, 2462389.5... \n", + "1 LINESTRING (2462481.133 1602698.905, 2462480.8... \n", + "\n", + "[2 rows x 24 columns]" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario IV\n", + "model_id = 'cottonwood_creek_ras'\n", + "huc_num = '17060305'\n", + "\n", + "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", + "tt.insert(0, 'huc', tt.pop('huc')) \n", + "tt.insert(1, 'model_id', tt.pop('model_id')) \n", + "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", + "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", + "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", + "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", + "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", + "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", + "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", + "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt.head(2)\n", + "#tt.tail()" + ] + }, + { + "cell_type": "markdown", + "id": "dcbab67e-335d-4d5c-89b6-892228fd1e67", + "metadata": {}, + "source": [ + "## Demo IVa: \n", + "### Per HUC, save & verify each river's XS data as parquet & geopackage" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "ccc7bb03-6669-4bca-8f2e-161f683c6b9a", + "metadata": {}, + "outputs": [], + "source": [ + "# # # Scenario I\n", + "# # Read Parquet file\n", + "# df1 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_07130010/BapCr.parquet',\n", + "# engine='pyarrow')\n", + "\n", + "# # Display the first few rows\n", + "# print(df1.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "c907f518-7d65-490a-a31b-395fc02eaa81", + "metadata": {}, + "outputs": [], + "source": [ + "# # # Scenario II\n", + "\n", + "# # Read Parquet file\n", + "# df2 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_01020002/Martin Stream.parquet', \n", + "# engine='pyarrow')\n", + "\n", + "# # Display the first few rows\n", + "# print(df2.head())" + ] + }, + { + "cell_type": "markdown", + "id": "bbd6c174-53b6-4472-b5a2-1ed76e736600", + "metadata": {}, + "source": [ + "## Demo IVb: \n", + "### Per HUC, save & verify each HUC's XS data as parquet & geopackage " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "8304726d-8564-4f4a-9729-f3fe887757d4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucrivermodel_idus_reach_idds_reach_id
704210120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
704310120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
704410120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
704510120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
704610120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
..................
722510120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
722610120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
722710120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
722810120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
722910120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
\n", + "

188 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " huc river model_id \\\n", + "7042 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", + "7043 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", + "7044 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", + "7045 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", + "7046 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", + "... ... ... ... \n", + "7225 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", + "7226 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", + "7227 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", + "7228 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", + "7229 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", + "\n", + " us_reach_id ds_reach_id \n", + "7042 None None \n", + "7043 None None \n", + "7044 None None \n", + "7045 None None \n", + "7046 None None \n", + "... ... ... \n", + "7225 None None \n", + "7226 None None \n", + "7227 None None \n", + "7228 None None \n", + "7229 None None \n", + "\n", + "[188 rows x 5 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# # Scenario I\n", + "# Read Parquet file\n", + "df1 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_10120203/huc_10120203.parquet',\n", + " engine='pyarrow')\n", + "\n", + "#set(df1['river'])\n", + "#set(df1['huc'])\n", + "df1[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "32a5e23d-ba5e-45fc-ab95-a894d69f70a3", + "metadata": {}, + "source": [ + "#### Cross-checking iceberg table with parquet @ huc_10120203\n", + "\n", + "huc: [[\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\",...,\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\"]]\n", + "model_id: [[\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",...,\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\"]]\n", + "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "__index_level_0__: [[7042,7043,7044,7045,7046,...,7225,7226,7227,7228,7229]]" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "a5806256-a6a2-4e47-b206-cd1c4d378ebb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucrivermodel_idus_reach_idds_reach_id
1917817060305cottonwood_creekcottonwood_creek_1_ras23597201None
1917917060305cottonwood_creekcottonwood_creek_1_rasNoneNone
1918017060305cottonwood_creekcottonwood_creek_1_ras2359719923597201
1918117060305cottonwood_creekcottonwood_creek_1_rasNoneNone
1918217060305cottonwood_creekcottonwood_creek_1_rasNoneNone
..................
2440317060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
2440417060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
2440517060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
2440617060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
2440717060305south_fork_clearsouth_fork_clearwater_river_1_rasNone23597347
\n", + "

5230 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " huc river model_id \\\n", + "19178 17060305 cottonwood_creek cottonwood_creek_1_ras \n", + "19179 17060305 cottonwood_creek cottonwood_creek_1_ras \n", + "19180 17060305 cottonwood_creek cottonwood_creek_1_ras \n", + "19181 17060305 cottonwood_creek cottonwood_creek_1_ras \n", + "19182 17060305 cottonwood_creek cottonwood_creek_1_ras \n", + "... ... ... ... \n", + "24403 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", + "24404 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", + "24405 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", + "24406 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", + "24407 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", + "\n", + " us_reach_id ds_reach_id \n", + "19178 23597201 None \n", + "19179 None None \n", + "19180 23597199 23597201 \n", + "19181 None None \n", + "19182 None None \n", + "... ... ... \n", + "24403 None None \n", + "24404 None None \n", + "24405 None None \n", + "24406 None None \n", + "24407 None 23597347 \n", + "\n", + "[5230 rows x 5 columns]" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario II\n", + "# Read Parquet file\n", + "df2 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_17060305/huc_17060305.parquet',\n", + " engine='pyarrow')\n", + "\n", + "#set(df2['river'])\n", + "#set(df2['huc'])\n", + "df2[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "8784d040-695c-421a-85bf-27f585b4186e", + "metadata": {}, + "source": [ + "#### Cross-checking iceberg table with parquet @ huc_17060305\n", + "\n", + "huc: [[\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\",...,\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\"]]\n", + "model_id: [[\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",...,\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\"]]\n", + "us_reach_id: [[\"23597201\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"23597201\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597347\"]]" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "abc4da53-c0d5-45a1-a0d6-0c4ee28df1b0", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
hucrivermodel_idus_reach_idds_reach_id
307871504000712421242_rasNoneNone
307881504000712421242_rasNoneNone
307891504000712421242_rasNoneNone
307901504000712421242_rasNoneNone
307911504000712421242_rasNoneNone
..................
309661504000712361236_ras2129430921295551
309671504000712361236_rasNoneNone
309681504000712361236_rasNoneNone
309691504000712361236_rasNoneNone
309701504000712361236_rasNone21294309
\n", + "

184 rows × 5 columns

\n", + "
" + ], + "text/plain": [ + " huc river model_id us_reach_id ds_reach_id\n", + "30787 15040007 1242 1242_ras None None\n", + "30788 15040007 1242 1242_ras None None\n", + "30789 15040007 1242 1242_ras None None\n", + "30790 15040007 1242 1242_ras None None\n", + "30791 15040007 1242 1242_ras None None\n", + "... ... ... ... ... ...\n", + "30966 15040007 1236 1236_ras 21294309 21295551\n", + "30967 15040007 1236 1236_ras None None\n", + "30968 15040007 1236 1236_ras None None\n", + "30969 15040007 1236 1236_ras None None\n", + "30970 15040007 1236 1236_ras None 21294309\n", + "\n", + "[184 rows x 5 columns]" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Scenario III\n", + "# Read Parquet file\n", + "df3 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_15040007/huc_15040007.parquet',\n", + " engine='pyarrow')\n", + "\n", + "#set(df2['river'])\n", + "#set(df2['huc'])\n", + "df3[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" + ] + }, + { + "cell_type": "markdown", + "id": "d576de82-bed6-4d89-953f-cde2eeb7ba81", + "metadata": {}, + "source": [ + "#### Cross-checking iceberg table with parquet @ huc_15040007\n", + "\n", + "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", + "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", + "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", + "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294311\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]\n", + "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"21294311\"]]\n", + "__index_level_0__: [[30787,30788,30789,30790,30791,...,30966,30967,30968,30969,30970]]" + ] + }, + { + "cell_type": "markdown", + "id": "a4738ea4-8890-4f50-a372-a66eb5865830", + "metadata": { + "scrolled": true + }, + "source": [ + "## Demo Va: \n", + "### Transform parquet into Iceberg tables via calling iceberg_xs_table.py (scenario for sourcing parquet from local)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "a2bf23b0-3449-43e9-a461-934a1fabd0d7", + "metadata": {}, + "outputs": [], + "source": [ + "from iceberg_table import *\n", + "\n", + "# Instantiate iceberg class\n", + "iceberg_obj = IcebergTable()\n", + "\n", + "# Extract list of parquets\n", + "file_list = iceberg_obj.read_data_dirs(data_dir=f'{os.getcwd()}/xs_data/')\n", + "parquet_list = [file for file in file_list if file.endswith('.parquet')]\n", + " \n", + "#Establish new Iceberg catalog for XS data\n", + "iceberg_obj.establish_catalog(catalog_name='xs',\n", + " namespace='mip')\n", + "\n", + "# Generate tables w/in the new Iceberg catalog for all parquets detected \n", + "iceberg_obj.create_table_for_all_parquets(parquet_list,\n", + " app_name='mip_xs')" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "id": "39a187bf-cfba-4aaa-9c8f-69146b699307", + "metadata": {}, + "source": [ + "## Demo Vb: \n", + "### Establish A New Iceberg Catalog & Generate Tables For All Parquets in S3 (scenario for sourcing parquet from s3)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "5082de29-3548-48e6-a741-ddd6342d3341", + "metadata": {}, + "outputs": [], + "source": [ + "# # Instantiate class\n", + "# obj = IcebergTable()\n", + "\n", + "# # Establish new Iceberg catalog\n", + "# obj.establish_catalog(catalog_name='xs_dev2',\n", + "# namespace='mip')\n", + "\n", + "# # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", + "# obj.create_table_for_all_s3parquets(app_name='mip_xs',\n", + "# bucket_name='ngwpc-xs',\n", + "# profile_name='default')" + ] + }, + { + "attachments": { + "ca580451-2f38-43d8-8a8e-7e8767aedc95.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "365d1563-c753-4b72-a202-04cf8c7a95d8", + "metadata": {}, + "source": [ + "## Demo V Result:\n", + "![image.png](attachment:ca580451-2f38-43d8-8a8e-7e8767aedc95.png)" + ] + }, + { + "cell_type": "markdown", + "id": "f20bbfc9-6806-434d-afbe-45fd932105a2", + "metadata": {}, + "source": [ + "### Query XS by HUC & additional attributes of interest @ a given HUC from Iceberg Tables" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "7bf79944-1da0-4aa2-a6d3-c6f9a976e3ae", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "river: large_string\n", + "reach: large_string\n", + "river_reach: large_string\n", + "river_station: double\n", + "river_reach_rs: large_string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: large_string\n", + "station_elevation_points: large_string\n", + "bank_stations: large_string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: large_string\n", + "profile_names: large_string\n", + "geometry: large_binary\n", + "huc: large_string\n", + "model_id: large_string\n", + "us_reach_id: large_string\n", + "us_network_to_id: large_string\n", + "ds_reach_id: large_string\n", + "ds_network_to_id: large_string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",...,\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\"]]\n", + "reach: [[\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",...,\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\"]]\n", + "river_reach: [[\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",...,\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\"]]\n", + "river_station: [[733,665,553,356,254,...,1796,1502,1236,814,253]]\n", + "river_reach_rs: [[\"Spearfish Creek Breakout Channel 733.0\",\"Spearfish Creek Breakout Channel 665.0\",\"Spearfish Creek Breakout Channel 553.0\",\"Spearfish Creek Breakout Channel 356.0\",\"Spearfish Creek Breakout Channel 254.0\",...,\"Spearfish Creek Old US14 Breakou 1796.0\",\"Spearfish Creek Old US14 Breakou 1502.0\",\"Spearfish Creek Old US14 Breakou 1236.0\",\"Spearfish Creek Old US14 Breakou 814.0\",\"Spearfish Creek Old US14 Breakou 253.0\"]]\n", + "thalweg: [[3563.87,3562.9,3561.47,3558.17,3557.05,...,3488.63,3486.35,3484.18,3481.92,3477.64]]\n", + "xs_max_elevation: [[3574.46,3573.83,3570.78,3568.95,3566,...,3499.78,3496.02,3490.04,3488,3482]]\n", + "left_reach_length: [[73.3,113.86,195.76,101.29,62.19,...,289.59,293.56,321.77,551.53,0]]\n", + "right_reach_length: [[64.03,108.6,199.45,101.26,67.59,...,304.33,193.56,284.8,570.49,0]]\n", + "channel_reach_length: [[68.79,111.37,197.46,101.84,65.19,...,293.78,265.51,422.78,560.74,0]]\n", + "ras_data: [[\"Type RM Length L Ch R = 1 ,733 ,73.3,68.79,64.03\n", + "XS GIS Cut Line=6\n", + "960048.214101717268250.980046898960110.800918803268271.043983147\n", + " 960143.17913489 268329.91263181960142.516406551268354.240339056\n", + "960184.587844715268375.098565057960362.015967548 268336.91753906\n", + "Node Last Edited Time=Sep/04/2015 10:51:51\n", + "#Sta/Elev= 134 \n", + " 0 3574.41 2.99 3574.46 5.97 3574.38 8.96 3574.3 11.95 3574.26\n", + " 14.94 3574.29 17.92 3574.21 20.91 3574.12 23.9 3574.1 26.89 3574.15\n", + " 29.87 3574.2 32.86 3574.21 35.85 3574.1 38.84 3573.99 41.82 3574.02\n", + " 44.81 3573.91 47.8 3573.74 50.79 3573.66 53.77 3573.6 56.76 3573.39\n", + " 59.75 3573.24 62.74 3573.13 65.72 3572.96 68.65 3572.78 71.57 3572.64\n", + " 74.49 3572.58 77.41 3572.28 80.33 3572.15 83.25 3572.04 86.17 3571.89\n", + " 89.09 3571.76 92.01 3571.57 94.94 3571.33 97.86 3571.17 100.78 3571.08\n", + " 103.7 3570.9 106.62 3570.73 109.54 3570.64 112.46 3570.53 115.38 3570.39\n", + " 118.3 3570.28 121.23 3570.09 124.15 3569.84 127.07 3569.54 129.99 3569.35\n", + " 132.91 3569.06 135.61 3568.76 138.32 3568.55 141.02 3568.31 143.73 3568.06\n", + " 146.43 3567.8 149.13 3567.56 151.84 3567.36 154.54 3567.21 157.25 3567.02\n", + " 160.18 3566.79 163.12 3566.64 166.05 3566.52 166.06 3566.52 168.99 3566.11\n", + " 171.92 3565.19 174.86 3564.5 177.79 3564.13 180.73 3563.93 183.66 3563.87\n", + " 186.6 3563.95 189.53 3564.27 192.46 3564.58 193.82 3564.71 195.4 3564.86\n", + " 198.33 3565.06 201.27 3565.12 204.2 3565 207.18 3565.01 210.15 3565.06\n", + " 213.13 3565.15 216.11 3565.32 219.08 3565.42 222.06 3565.53 225.03 3565.65\n", + " 228.01 3565.71 230.98 3565.72 233.96 3565.74 236.93 3565.77 239.91 3565.88\n", + " 242.88 3566.02 245.86 3566.22 248.83 3566.48 251.81 3566.79 254.78 3567.09\n", + " 257.76 3567.32 260.73 3567.56 263.71 3567.78 266.68 3568.01 269.66 3568.22\n", + " 272.64 3568.35 275.61 3568.51 278.59 3568.61 281.56 3568.69 284.54 3568.74\n", + " 287.51 3568.86 290.49 3569.03 293.46 3569.18 296.44 3569.26 299.41 3569.36\n", + " 302.39 3569.47 305.36 3569.52 308.34 3569.63 311.31 3569.71 314.29 3569.84\n", + " 317.26 3569.98 320.24 3570.07 323.21 3570.1 326.19 3570.23 329.16 3570.3\n", + " 332.14 3570.47 335.12 3570.49 338.09 3570.6 341.07 3570.65 344.04 3570.73\n", + " 347.02 3570.84 349.99 3570.94 352.97 3571.02 355.94 3571 358.92 3570.94\n", + " 361.89 3570.85 364.87 3570.83 367.84 3571.01 370.82 3571.24 373.79 3571.35\n", + " 376.77 3571.52 379.74 3571.52 382.72 3571.53 385.69 3571.63\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .05 0 171.92 .035 0 201.27 .05 0\n", + "Bank Sta=171.92,201.27\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,665 ,113.86,111.37,108.6\n", + "XS GIS Cut Line=4\n", + "959963.651606798268352.968359977960118.028922722268425.752335146\n", + "960197.031061307268438.418320313960326.476996645268399.388870806\n", + "Node Last Edited Time=Sep/17/2015 21:01:33\n", + "#Sta/Elev= 133 \n", + " 0 3573.83 2.99 3573.73 5.99 3573.64 8.98 3573.59 11.98 3573.52\n", + " 14.97 3573.43 17.97 3573.35 20.96 3573.27 23.95 3573.19 26.95 3573.15\n", + " 29.94 3573.07 32.94 3573 35.93 3572.88 38.93 3572.75 41.92 3572.6\n", + " 44.91 3572.47 47.91 3572.33 50.9 3572.27 53.9 3572.11 56.89 3572.04\n", + " 59.89 3571.88 62.88 3571.78 65.87 3571.61 68.87 3571.5 71.86 3571.43\n", + " 74.86 3571.35 77.85 3571.19 80.85 3571.02 83.84 3570.89 86.83 3570.71\n", + " 89.83 3570.61 92.82 3570.53 95.82 3570.4 98.81 3570.36 101.81 3570.32\n", + " 104.8 3570.21 107.79 3570.06 110.79 3569.88 113.78 3569.74 116.78 3569.53\n", + " 119.77 3569.46 122.77 3569.35 125.76 3569.2 128.75 3569 131.75 3568.93\n", + " 134.74 3568.8 137.74 3568.58 140.73 3568.35 143.73 3568.31 146.72 3568.24\n", + " 149.71 3568.16 152.71 3568.02 155.7 3567.87 158.7 3567.75 161.69 3567.67\n", + " 164.69 3567.51 167.68 3567.23 170.67 3567.03 173.64 3566.75 176.6 3566.31\n", + " 179.56 3565.72 182.53 3565.25 184.9 3564.95 185.49 3564.87 188.46 3564.75\n", + " 191.42 3564.48 194.38 3564.03 197.35 3563.46 200.31 3563.18 203.27 3562.95\n", + " 206.24 3562.9 209.2 3562.95 212.16 3563.24 215.13 3563.64 218.09 3563.91\n", + " 221.05 3564.27 222.45 3564.39 224.02 3564.52 226.98 3564.69 229.94 3564.95\n", + " 232.91 3565.16 235.87 3565.3 238.83 3565.39 241.8 3565.53 244.76 3565.61\n", + " 247.72 3565.66 250.69 3565.9 253.62 3566.02 256.56 3566.12 259.5 3566.15\n", + " 262.44 3566.16 265.38 3566.21 268.32 3566.27 271.26 3566.39 274.2 3566.52\n", + " 277.14 3566.55 280.08 3566.59 283.02 3566.71 285.96 3566.87 288.9 3567.05\n", + " 291.83 3567.22 294.77 3567.39 297.71 3567.51 300.65 3567.66 303.59 3567.79\n", + " 306.53 3567.85 309.47 3567.92 312.41 3568.06 315.35 3568.16 318.29 3568.19\n", + " 321.23 3568.21 324.16 3568.2 327.1 3568.32 330.04 3568.45 332.98 3568.68\n", + " 335.92 3568.85 338.86 3569.06 341.8 3569.2 344.74 3569.26 347.68 3569.32\n", + " 350.62 3569.44 353.56 3569.58 356.5 3569.64 359.43 3569.78 362.37 3569.94\n", + " 365.31 3570.04 368.25 3569.95 371.19 3570.05 374.13 3570.09 377.07 3570.2\n", + " 380.01 3570.18 382.95 3570.13 385.89 3570.06\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 191.42 .016 0 222.45 .035 0\n", + "Bank Sta=191.42,222.45\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,553 ,195.76,197.46,199.45\n", + "XS GIS Cut Line=5\n", + " 959968.78676714268478.844748646960110.713976726 268541.34462364\n", + "960190.140983224268542.646786392960266.963992298268490.563557222\n", + "960335.974352971268474.938260391\n", + "Node Last Edited Time=Sep/17/2015 21:02:28\n", + "#Sta/Elev= 137 \n", + " 0 3570.7 2.98 3570.67 5.96 3570.54 8.95 3570.46 11.93 3570.37\n", + " 14.91 3570.31 17.89 3570.32 20.88 3570.41 23.86 3570.38 26.84 3570.33\n", + " 29.82 3570.23 32.81 3570.09 35.79 3570.01 38.77 3569.89 41.75 3569.84\n", + " 44.73 3569.74 47.72 3569.6 50.7 3569.57 53.68 3569.5 56.66 3569.43\n", + " 59.65 3569.35 62.63 3569.29 65.61 3569.25 68.59 3569.22 71.57 3569.13\n", + " 74.56 3569.04 77.54 3568.99 80.52 3568.82 83.5 3568.78 86.49 3568.64\n", + " 89.47 3568.44 92.45 3568.22 95.43 3568.09 98.42 3568.07 101.4 3567.9\n", + " 104.38 3567.66 107.36 3567.43 110.34 3567.29 113.33 3567.14 116.31 3567.01\n", + " 119.29 3566.81 122.27 3566.66 125.26 3566.47 128.24 3566.27 131.22 3566.08\n", + " 134.2 3565.8 137.19 3565.57 140.17 3565.64 143.15 3565.47 146.13 3565.26\n", + " 149.11 3565.11 152.1 3564.97 155.08 3564.75 158.02 3564.61 160.96 3564.31\n", + " 163.91 3563.79 166.85 3563.39 168.12 3563.29 169.79 3563.16 172.73 3562.91\n", + " 175.67 3562.73 178.62 3562.48 181.56 3562.03 184.5 3561.71 187.44 3561.54\n", + " 190.38 3561.47 193.33 3561.53 196.27 3561.93 199.21 3562.46 202.15 3562.81\n", + " 204.26 3562.99 205.1 3563.06 208.04 3563.26 210.98 3563.46 213.92 3563.65\n", + " 216.86 3563.83 219.81 3564.03 222.75 3564.18 225.69 3564.38 228.63 3564.53\n", + " 231.57 3564.53 234.52 3564.51 237.51 3564.54 240.5 3564.69 243.5 3564.75\n", + " 246.49 3564.81 249.49 3564.9 252.48 3565.03 255.47 3565.14 258.47 3565.19\n", + " 261.46 3565.27 264.46 3565.32 267.45 3565.38 270.44 3565.45 273.44 3565.56\n", + " 276.43 3565.58 279.43 3565.67 282.42 3565.78 285.41 3565.84 288.41 3565.78\n", + " 291.4 3565.67 294.4 3565.81 297.39 3566.03 300.38 3566.24 303.38 3566.34\n", + " 306.37 3566.5 309.37 3566.61 312.36 3566.65 315.35 3566.65 318.35 3566.71\n", + " 321.34 3566.81 324.34 3566.91 327.33 3566.81 330.28 3566.73 333.23 3566.61\n", + " 336.18 3566.45 339.12 3566.43 342.07 3566.56 345.02 3566.79 347.97 3567.08\n", + " 350.92 3567.41 353.86 3567.81 356.81 3568.22 359.76 3568.63 362.71 3569.06\n", + " 365.66 3569.42 368.61 3569.76 371.55 3570.05 374.5 3570.21 377.45 3570.34\n", + " 380.4 3570.39 383.35 3570.54 386.3 3570.67 389.24 3570.69 392.19 3570.75\n", + " 395.14 3570.75 398.09 3570.78\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 172.73 .016 0 204.26 .035 0\n", + "Bank Sta=172.73,204.26\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,356 ,101.29,101.84,101.26\n", + "Node Name=Q\n", + "XS GIS Cut Line=5\n", + "959963.578444228268601.240501225960097.693005383268735.355062395\n", + "960161.495043144268743.167710811960259.151343882268653.323730394\n", + "960343.787001386 268632.49043873\n", + "Node Last Edited Time=Sep/17/2015 21:02:30\n", + "#Sta/Elev= 164 \n", + " 0 3568.28 2.96 3568.25 5.93 3568.17 8.89 3568.1 11.85 3568.07\n", + " 14.82 3567.98 17.78 3567.89 20.75 3567.93 23.71 3567.88 26.67 3567.74\n", + " 29.64 3567.71 32.6 3567.67 35.56 3567.68 38.53 3567.64 41.49 3567.61\n", + " 44.45 3567.61 47.42 3567.61 50.38 3567.64 53.34 3567.67 56.31 3567.68\n", + " 59.27 3567.71 62.23 3567.7 65.2 3567.64 68.16 3567.58 71.12 3567.6\n", + " 74.09 3567.58 77.05 3567.51 80.02 3567.41 82.98 3567.34 85.94 3567.22\n", + " 88.91 3567.11 91.87 3567.06 94.83 3566.93 97.8 3566.8 100.76 3566.71\n", + " 103.72 3566.64 106.69 3566.52 109.65 3566.42 112.61 3566.36 115.58 3566.32\n", + " 118.54 3566.31 121.51 3566.28 124.47 3566.29 127.43 3566.23 130.4 3566.19\n", + " 133.36 3566.08 136.32 3565.96 139.29 3565.79 142.25 3565.65 145.21 3565.53\n", + " 148.18 3565.37 151.14 3565.17 154.1 3565 157.07 3564.95 160.03 3564.88\n", + " 162.99 3564.73 165.96 3564.68 168.92 3564.61 171.89 3564.38 174.85 3564.18\n", + " 177.81 3563.99 180.78 3563.8 183.74 3563.5 186.7 3563.23 189.67 3562.81\n", + " 192.59 3562.07 195.51 3561.34 198.43 3560.82 201.35 3560.51 201.51 3560.49\n", + " 204.28 3560.21 207.2 3560.04 210.12 3559.89 213.04 3559.3 215.96 3558.68\n", + " 218.88 3558.47 221.81 3558.17 224.73 3558.18 227.65 3558.32 230.57 3558.75\n", + " 233.49 3559.13 234.76 3559.3 236.41 3559.53 239.34 3559.91 242.26 3560.17\n", + " 245.18 3560.32 248.1 3560.49 251.02 3560.57 253.95 3560.62 256.89 3560.76\n", + " 259.84 3560.95 262.79 3561.15 265.74 3561.33 268.69 3561.52 271.64 3561.62\n", + " 274.59 3561.61 277.54 3561.62 280.48 3561.66 283.43 3561.74 286.38 3561.89\n", + " 289.33 3561.98 292.28 3562.06 295.23 3562.19 298.18 3562.2 301.13 3562.24\n", + " 304.08 3562.3 307.02 3562.34 309.97 3562.36 312.92 3562.42 315.87 3562.49\n", + " 318.82 3562.57 321.77 3562.71 324.72 3562.9 327.67 3563 330.62 3563.11\n", + " 333.56 3563.23 336.51 3563.44 339.46 3563.69 342.41 3563.88 345.36 3563.88\n", + " 348.31 3563.89 351.26 3563.94 354.21 3564.01 357.15 3564.13 360.1 3564.19\n", + " 363.05 3564.19 366 3564.22 368.95 3564.31 371.9 3564.44 374.85 3564.69\n", + " 377.8 3564.71 380.75 3564.65 383.69 3564.69 386.64 3564.81 389.55 3564.91\n", + " 392.45 3564.81 395.36 3564.75 398.26 3564.81 401.17 3564.45 404.08 3564.39\n", + " 406.98 3564.28 409.89 3564.27 412.79 3564.45 415.7 3564.69 418.6 3565.01\n", + " 421.51 3565.34 424.41 3565.59 427.32 3565.81 430.22 3566.07 433.13 3566.35\n", + " 436.03 3566.59 438.94 3566.74 441.85 3567.05 444.75 3567.19 447.66 3567.22\n", + " 450.56 3567.28 453.47 3567.38 456.37 3567.41 459.28 3567.47 462.18 3567.43\n", + " 465.09 3567.47 467.99 3568.3 470.9 3568.92 473.8 3568.95\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 213.04 .016 0 234.76 .035 0\n", + "Bank Sta=213.04,234.76\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,254 ,62.19,65.19,67.59\n", + "XS GIS Cut Line=7\n", + "960051.049069807268716.112318724960078.876770049 268794.23322548\n", + "960092.627726808268835.981501564960164.099368632268846.032334477\n", + "960274.776312634268825.198714733 960325.67743562268790.328950138\n", + "960429.483335241268797.924503769\n", + "Node Last Edited Time=Sep/17/2015 21:02:32\n", + "#Sta/Elev= 131 \n", + " 0 3565.98 2.96 3565.75 5.92 3565.56 8.89 3565.4 11.85 3565.21\n", + " 14.81 3564.97 17.77 3564.71 20.73 3564.5 23.69 3564.37 26.66 3564.25\n", + " 29.62 3564.14 32.58 3564.02 35.54 3563.97 38.5 3563.87 41.46 3563.61\n", + " 44.43 3563.51 47.39 3563.55 50.35 3563.54 53.31 3563.49 56.27 3563.46\n", + " 59.24 3563.37 62.2 3563.22 65.16 3563.06 68.12 3562.89 71.08 3562.76\n", + " 74.04 3562.66 77.01 3562.58 79.97 3562.48 82.93 3562.33 85.86 3562.2\n", + " 88.79 3562.09 91.72 3562.01 94.65 3561.9 97.58 3561.86 100.51 3561.84\n", + " 103.44 3561.75 106.37 3561.71 109.3 3561.72 112.23 3561.7 115.16 3561.63\n", + " 118.09 3561.51 121.02 3561.34 123.95 3561.15 126.88 3560.98 129.77 3560.58\n", + " 132.66 3560.17 135.54 3559.8 138.43 3559.51 140.72 3559.31 141.32 3559.26\n", + " 144.21 3559.02 147.09 3558.67 149.98 3558.03 152.87 3557.32 155.75 3557.05\n", + " 158.64 3557.08 161.53 3557.14 164.41 3557.6 167.3 3558.09 167.51 3558.11\n", + " 170.19 3558.41 173.08 3558.6 175.96 3558.67 178.85 3558.82 181.74 3559.05\n", + " 184.62 3559.19 187.51 3559.28 190.4 3559.47 193.28 3559.63 196.17 3559.64\n", + " 199.06 3559.65 202.02 3559.73 204.99 3559.83 207.95 3559.89 210.91 3559.93\n", + " 213.88 3560.01 216.84 3560.13 219.8 3560.25 222.77 3560.38 225.73 3560.49\n", + " 228.7 3560.52 231.66 3560.53 234.62 3560.6 237.59 3560.65 240.55 3560.72\n", + " 243.51 3560.82 246.48 3560.9 249.44 3560.98 252.41 3561.11 255.37 3561.21\n", + " 258.33 3561.38 261.3 3561.41 264.26 3561.41 267.22 3561.53 270.19 3561.6\n", + " 273.15 3561.56 276.11 3561.67 279.08 3561.89 282.04 3562.09 285.01 3562.13\n", + " 287.97 3562.01 290.93 3562.09 293.9 3562.25 296.86 3562.29 299.82 3562.34\n", + " 302.79 3562.5 305.75 3562.61 308.72 3562.64 311.68 3562.64 314.59 3562.57\n", + " 317.51 3562.52 320.42 3562.5 323.34 3562.44 326.25 3562.41 329.17 3562.41\n", + " 332.08 3562.49 335 3562.69 337.91 3563.01 340.83 3563.15 343.74 3563.31\n", + " 346.66 3563.41 349.57 3563.54 352.49 3563.65 355.4 3563.77 358.32 3563.95\n", + " 361.23 3564.03 364.15 3564.16 367.06 3564.27 369.98 3564.34 372.89 3564.34\n", + " 478 3566\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 149.98 .016 0 167.51 .035 0\n", + "Bank Sta=149.98,167.51\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",...,\"Type RM Length L Ch R = 1 ,1796 ,289.59,293.78,304.33\n", + "Node Name=C\n", + "XS GIS Cut Line=5\n", + "957019.704410717274956.661189303957880.381495133274810.827819556\n", + "958159.027263299274750.931941971958409.027419478274678.015421137\n", + "959028.818830803274605.098572224\n", + "Node Last Edited Time=Sep/17/2015 21:28:25\n", + "#Sta/Elev= 230 \n", + " 0 3499.57 5 3499.78 11 3499.56 21 3499.33 24 3499.05\n", + " 35 3498.91 43 3498.68 48 3498.42 53 3498.67 55 3498.43\n", + " 57 3498.17 60 3498.44 71 3498.25 76 3498.04 81 3497.81\n", + " 89.99 3497.59 95.99 3497.37 102.99 3497.59 108.99 3497.35 117.99 3497.15\n", + " 123.99 3496.92 133.99 3496.78 138.99 3497.02 143.99 3496.79 146.99 3496.57\n", + " 150.99 3496.36 161.99 3496.22 172.99 3496.13 183.99 3496.17 191.99 3495.92\n", + " 202.99 3495.75 211.99 3495.54 222.99 3495.65 226.99 3495.35 237.99 3495.22\n", + " 250.98 3494.95 260.98 3494.73 272.98 3494.72 283.98 3494.61 289.98 3494.41\n", + " 300.98 3494.39 311.98 3494.44 318.98 3494.21 329.98 3494.14 340.98 3494.21\n", + " 351.98 3494.2 362.98 3493.97 368.98 3493.74 379.98 3493.73 390.98 3493.72\n", + " 401.98 3493.59 412.98 3493.43 423.97 3493.36 434.97 3493.18 445.97 3493.11\n", + " 456.97 3493.02 465.97 3493.25 471.97 3492.96 478.97 3492.75 489.97 3492.75\n", + " 497.97 3492.51 508.97 3492.45 519.97 3492.31 530.97 3492.28 536.97 3492.05\n", + " 547.97 3491.93 558.97 3491.98 569.97 3491.84 576.97 3491.57 587.97 3491.66\n", + " 598.96 3491.49 601.96 3491.28 612.96 3491.15 623.96 3491.08 634.96 3491.32\n", + " 642.96 3491.08 653.96 3490.92 664.96 3490.9 675.96 3490.91 686.96 3490.74\n", + " 692.96 3490.95 703.96 3491 714.96 3491.05 722.96 3490.81 733.96 3490.8\n", + " 744.96 3490.66 750.96 3490.35 755.96 3490.14 764.96 3489.85 769.96 3489.64\n", + " 774.95 3489.43 778.95 3489.21 783.95 3488.99 790.95 3488.68 801.95 3488.63\n", + " 812.95 3488.76 823.95 3488.68 826.95 3488.9 830.95 3489.13 836.95 3489.39\n", + " 838.95 3489.63 842.95 3489.88 845.95 3490.11 849.95 3490.34 855.95 3490.58\n", + " 861.95 3490.84 867.95 3490.63 872.95 3490.92 883.91 3490.94 894.87 3491.04\n", + " 905.84 3491.27 916.8 3491.07 924.77 3491.29 930.75 3491.5 941.71 3491.6\n", + " 946.69 3491.82 952.67 3492.04 954.67 3492.26 965.63 3492.1 973.6 3492.32\n", + " 982.57 3492.53 993.53 3492.72 1004.49 3492.67 1015.46 3492.72 1026.42 3492.75\n", + " 1030.4 3492.47 1036.38 3492.69 1047.34 3492.63 1058.31 3492.5 1069.27 3492.52\n", + " 1080.23 3492.41 1091.19 3492.46 1102.15 3492.57 1105.14 3492.31 1112.12 3492.59\n", + " 1123.08 3492.58 1134.04 3492.49 1145 3492.62 1150.98 3492.85 1157.96 3493.07\n", + " 1160.95 3493.32 1166.94 3492.87 1169.93 3492.61 1172.92 3492.31 1174.92 3492.01\n", + " 1176.92 3491.78 1187.89 3491.69 1197.87 3491.48 1208.84 3491.62 1216.83 3491.93\n", + " 1218.82 3492.25 1220.82 3492.6 1226.8 3492.32 1235.78 3492.53 1246.76 3492.5\n", + " 1257.73 3492.44 1268.71 3492.47 1279.68 3492.48 1290.66 3492.47 1301.64 3492.65\n", + " 1312.61 3492.69 1323.59 3492.6 1334.56 3492.65 1340.55 3492.85 1351.52 3492.84\n", + " 1362.5 3493.03 1373.47 3493.11 1384.45 3493.26 1396.42 3493.14 1407.4 3493.22\n", + " 1418.37 3493.1 1429.36 3493.25 1440.34 3493.18 1451.32 3492.99 1462.31 3493.04\n", + " 1473.29 3493.13 1484.27 3493.06 1495.26 3493.12 1506.24 3493.09 1515.23 3492.86\n", + " 1526.21 3492.94 1537.2 3492.8 1548.18 3492.59 1559.16 3492.8 1570.15 3493\n", + " 1581.13 3493.09 1592.11 3493.13 1603.1 3493.26 1614.08 3493.43 1625.06 3493.48\n", + " 1636.05 3493.65 1647.03 3493.51 1658.02 3493.57 1671.99 3493.43 1682.98 3493.33\n", + " 1693.96 3493.45 1704.95 3493.58 1715.93 3493.69 1725.91 3493.9 1736.9 3493.94\n", + " 1747.88 3494.03 1758.87 3493.94 1769.85 3493.96 1780.83 3494.15 1791.82 3494.06\n", + " 1801.8 3494.29 1812.79 3494.39 1823.77 3494.34 1834.75 3494.41 1845.74 3494.45\n", + " 1856.72 3494.51 1867.7 3494.31 1878.69 3494.33 1881.68 3494.12 1892.67 3494.23\n", + " 1903.65 3494.35 1914.63 3494.45 1925.62 3494.47 1936.6 3494.35 1947.58 3494.42\n", + " 1958.57 3494.4 1969.55 3494.4 1980.54 3494.52 1991.52 3494.74 1995.51 3495.01\n", + " 2006.5 3494.82 2017.48 3494.86 2028.46 3494.94 2035.45 3495.15 2042.44 3495.26\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 714.96 .035 0 861.95 .035 0\n", + "#XS Ineff= 3 ,-1 \n", + " 0 200 3499 200 677.95 3496.65 923.95 2050 3496.65\n", + "Permanent Ineff=\n", + " F F F\n", + "Bank Sta=714.96,861.95\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1502 ,293.56,265.51,193.56\n", + "Node Name=B\n", + "XS GIS Cut Line=4\n", + "957069.183642477275235.306957483958195.485523716275053.015327305\n", + "958294.443987221275077.754779145959097.829519555274944.942380726\n", + "Node Last Edited Time=Sep/03/2015 14:11:45\n", + "#Sta/Elev= 230 \n", + " 0 3495.24 4 3494.99 11 3494.72 15 3494.51 20 3494.72\n", + " 31 3494.85 40 3494.56 42 3494.22 52 3494 56 3494.23\n", + " 67 3494.14 74 3493.9 83 3493.67 94 3493.7 105 3493.77\n", + " 110 3493.54 112 3493.32 123 3493.38 132 3493.17 141.99 3492.96\n", + " 146.99 3492.74 157.99 3492.58 168.99 3492.39 177.99 3492.61 183.99 3492.41\n", + " 193.99 3492.19 204.99 3492.25 208.99 3492.46 219.99 3492.27 228.99 3492.06\n", + " 239.99 3491.93 242.99 3492.15 253.99 3492.09 260.99 3491.86 271.99 3491.93\n", + " 282.99 3491.9 292.99 3491.65 303.99 3491.73 314.99 3491.62 322.99 3491.41\n", + " 333.99 3491.32 344.99 3491.18 351.99 3490.97 363.99 3490.98 374.99 3490.95\n", + " 382.99 3490.71 393.99 3490.83 404.99 3490.79 415.99 3490.85 424.99 3490.65\n", + " 435.99 3490.6 445.99 3490.37 456.98 3490.37 467.98 3490.45 477.98 3490.21\n", + " 483.98 3489.96 490.98 3490.24 498.98 3490.02 509.98 3489.85 513.98 3489.64\n", + " 524.98 3489.49 535.98 3489.48 544.98 3489.27 555.98 3489.06 566.98 3488.94\n", + " 577.98 3488.84 583.98 3488.64 595.98 3488.51 606.98 3488.54 610.98 3488.78\n", + " 619.98 3488.55 630.98 3488.41 638.98 3488.62 644.98 3488.41 651.98 3488.2\n", + " 662.98 3487.95 665.98 3487.69 675.98 3487.48 682.98 3487.72 685.98 3487.98\n", + " 694.98 3487.75 697.98 3487.46 708.98 3487.27 719.98 3487.2 724.98 3487.45\n", + " 735.98 3487.53 741.98 3487.77 752.97 3487.58 755.97 3487.21 757.97 3486.87\n", + " 759.97 3486.58 765.97 3486.35 774.97 3486.59 776.97 3486.85 778.97 3487.1\n", + " 780.97 3487.41 783.97 3487.63 787.97 3487.85 790.97 3488.09 801.97 3488.06\n", + " 806.97 3487.82 812.97 3487.49 823.97 3487.63 831.97 3487.84 842.97 3487.83\n", + " 846.97 3488.05 857.97 3488.22 861.97 3488.01 864.97 3487.77 875.97 3487.67\n", + " 886.97 3487.56 897.97 3487.6 908.97 3487.81 919.97 3487.82 930.97 3487.84\n", + " 941.97 3487.86 947.97 3487.64 958.97 3487.69 967.97 3487.91 970.97 3488.12\n", + " 981.97 3488.21 983.97 3487.89 986.97 3487.63 997.97 3487.73 1001.97 3487.97\n", + " 1004.97 3488.19 1015.97 3488.3 1026.97 3488.46 1037.96 3488.55 1048.96 3488.59\n", + " 1059.96 3488.52 1070.96 3488.65 1081.96 3488.79 1092.96 3488.96 1103.96 3488.94\n", + " 1114.96 3488.95 1124.96 3489.22 1127.96 3489.48 1134.96 3489.26 1142.94 3489.48\n", + " 1147.89 3489.7 1152.84 3489.97 1158.78 3489.75 1169.68 3489.7 1180.57 3489.97\n", + " 1183.54 3490.18 1187.5 3490.48 1189.48 3490.73 1196.42 3491.01 1208.3 3491.26\n", + " 1219.19 3491.22 1231.08 3491.1 1241.97 3491.18 1252.95 3491.21 1263.94 3491.32\n", + " 1274.93 3491.45 1285.92 3491.59 1296.91 3491.7 1307.91 3491.82 1318.9 3491.89\n", + " 1322.89 3492.11 1333.88 3492.13 1339.88 3492.35 1350.87 3492.41 1358.86 3492.62\n", + " 1369.85 3492.75 1381.84 3492.87 1392.83 3493.05 1403.82 3493.21 1415.81 3493.32\n", + " 1426.8 3493.47 1437.79 3493.59 1448.78 3493.72 1459.77 3493.83 1470.76 3494.02\n", + " 1481.75 3494.07 1492.74 3494.23 1503.73 3494.3 1514.72 3494.34 1525.71 3494.3\n", + " 1536.7 3494.35 1547.69 3494.4 1558.68 3494.53 1569.67 3494.7 1580.66 3494.68\n", + " 1591.65 3494.73 1602.64 3494.77 1610.64 3494.98 1621.63 3494.91 1632.62 3494.88\n", + " 1642.61 3495.09 1653.6 3495.06 1664.59 3494.92 1669.58 3495.13 1680.57 3495.11\n", + " 1691.56 3495.17 1702.55 3495.11 1713.54 3495.1 1724.53 3495.21 1735.52 3495.32\n", + " 1746.51 3495.12 1751.51 3495.4 1762.5 3495.42 1773.49 3495.35 1784.48 3495.3\n", + " 1795.47 3495.27 1806.46 3495.3 1817.45 3495.42 1828.44 3495.5 1839.43 3495.72\n", + " 1850.42 3495.66 1861.41 3495.72 1872.4 3495.68 1883.39 3495.85 1894.38 3495.8\n", + " 1905.37 3495.99 1916.36 3495.9 1927.35 3496.02 1938.34 3495.9 1949.33 3495.87\n", + " 1960.32 3495.86 1971.31 3495.88 1982.3 3495.77 1993.29 3495.79 2004.28 3495.84\n", + " 2015.27 3495.88 2026.26 3495.85 2037.26 3495.95 2048.25 3495.84 2057.24 3495.9\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 638.98 .035 0 857.97 .035 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 736.72 3488.65 789.59 0 3488.65\n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=638.98,857.97\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1236 ,321.77,422.78,284.8\n", + "XS GIS Cut Line=5\n", + "957333.506604642275382.442489982957761.891902715275433.223556399\n", + "958113.454519808275266.556894973958215.016980723275237.911282972\n", + "958216.318815395275106.400719225\n", + "Node Last Edited Time=Sep/03/2015 14:13:08\n", + "#Sta/Elev= 122 \n", + " 0 3490.01 10.98 3489.9 21.97 3489.72 27.96 3489.5 31.95 3489.73\n", + " 39.94 3489.49 52.92 3489.24 63.91 3489.27 74.89 3489.2 85.88 3489\n", + " 96.86 3489.03 104.85 3488.78 115.83 3488.73 126.82 3488.79 137.8 3488.66\n", + " 146.79 3488.41 157.77 3488.28 168.76 3488.2 179.74 3488.18 190.73 3488.21\n", + " 201.71 3488.23 212.7 3488.21 223.68 3488.08 234.67 3488.09 245.65 3488.05\n", + " 256.63 3488.19 267.62 3488.01 278.6 3487.87 289.59 3487.97 298.57 3487.75\n", + " 309.56 3487.68 320.54 3487.66 331.53 3487.64 342.51 3487.46 353.5 3487.48\n", + " 359.49 3487.26 370.47 3487.42 377.46 3487.19 388.45 3487.21 399.43 3487.23\n", + " 406.42 3487.02 408.42 3486.81 413.41 3486.58 424.4 3486.56 435.38 3486.58\n", + " 441.36 3486.79 452.34 3486.69 460.32 3486.48 471.29 3486.54 482.26 3486.51\n", + " 492.24 3486.27 500.22 3486.06 506.21 3485.84 517.18 3485.64 521.17 3485.4\n", + " 532.14 3485.33 537.13 3485.13 548.11 3485.01 553.09 3484.78 564.07 3484.69\n", + " 575.04 3484.58 579.03 3484.82 584.02 3484.6 589.01 3484.39 592 3484.18\n", + " 602.98 3484.3 613.95 3484.3 624.92 3484.29 635.9 3484.34 646.87 3484.38\n", + " 657.84 3484.42 668.82 3484.61 675.8 3484.88 682.78 3485.1 690.76 3484.9\n", + " 701.74 3484.94 704.73 3485.23 715.71 3485.37 726.68 3485.53 737.65 3485.44\n", + " 748.63 3485.57 759.6 3485.53 765.59 3485.76 776.56 3485.9 787.53 3486.08\n", + " 792.52 3486.34 797.51 3486.56 806.49 3486.77 810.48 3486.99 813.47 3487.25\n", + " 824.44 3487.19 828.42 3487.42 835.39 3487.91 848.33 3488.17 859.28 3488.06\n", + " 863.26 3487.68 864.26 3487.43 875.21 3487.57 886.16 3487.5 898.1 3487.38\n", + " 905.07 3487.07 909.06 3486.84 913.04 3486.59 917.02 3486.81 920.01 3487.06\n", + " 922.99 3487.3 933.95 3487.44 946.9 3487.57 957.86 3487.75 965.83 3487.97\n", + " 976.79 3487.9 986.76 3488.11 997.72 3488.22 1008.68 3488.35 1019.64 3488.59\n", + " 1030.6 3488.75 1035.58 3488.98 1041.56 3489.19 1046.54 3489.41 1051.52 3489.65\n", + " 1056.5 3489.95 1057.5 3490.04\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 548.11 .035 0 682.78 .035 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 480.89 3486.65 684.5 0 3486.65\n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=548.11,682.78\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,814 ,551.53,560.74,570.49\n", + "Node Name=A\n", + "XS GIS Cut Line=5\n", + "957510.099099219275712.325032309957911.631432638275573.848603234\n", + "958287.933501557275499.629919648958445.485679895275313.432129309\n", + "958573.253182212275162.434365524\n", + "Node Last Edited Time=Sep/15/2015 08:47:30\n", + "#Sta/Elev= 114 \n", + " 0 3486.61 7 3486.41 17.99 3486.27 24.98 3486.06 35.98 3485.99\n", + " 42.97 3485.78 53.97 3485.65 63.96 3485.43 74.95 3485.53 85.95 3485.38\n", + " 96.94 3485.42 107.93 3485.34 118.93 3485.33 129.92 3485.25 140.91 3485.21\n", + " 151.91 3485.3 162.9 3485.26 173.89 3485.41 184.89 3485.27 195.88 3485.32\n", + " 206.87 3485.45 217.87 3485.48 228.86 3485.39 239.85 3485.48 249.85 3485.23\n", + " 260.84 3485.34 271.83 3485.17 277.83 3484.96 288.82 3484.96 298.82 3484.65\n", + " 309.81 3484.52 319.8 3484.29 330.8 3484.06 342.79 3483.95 353.78 3483.99\n", + " 363.78 3483.75 374.77 3483.77 385.76 3483.79 396.76 3483.84 407.75 3483.82\n", + " 418.74 3483.69 429.74 3483.78 440.72 3483.51 451.71 3483.3 462.7 3483.2\n", + " 473.68 3483.06 484.67 3482.93 495.66 3482.88 506.65 3482.69 517.63 3482.72\n", + " 528.62 3482.78 539.61 3482.84 550.59 3482.84 561.58 3482.88 572.57 3482.88\n", + " 583.56 3482.78 594.54 3482.87 605.53 3482.8 616.52 3482.75 627.5 3482.73\n", + " 638.49 3482.74 649.48 3482.56 660.46 3482.57 671.45 3482.64 682.44 3482.56\n", + " 693.43 3482.59 704.41 3482.53 715.4 3482.67 718.4 3482.88 722.39 3482.67\n", + " 725.39 3482.46 729.38 3482.21 739.37 3482.57 741.37 3482.9 743.37 3483.18\n", + " 750.36 3483.43 761.34 3483.23 764.34 3482.95 767.34 3482.71 771.33 3482.45\n", + " 774.33 3482.17 778.32 3481.92 784.32 3482.16 786.32 3482.42 788.31 3482.63\n", + " 793.31 3482.85 796.3 3483.06 807.29 3483.16 818.29 3483.13 829.28 3483.12\n", + " 840.28 3483.27 851.27 3483.13 855.27 3483.36 866.27 3483.3 877.26 3483.45\n", + " 883.26 3483.67 891.26 3483.87 897.26 3484.09 908.25 3484.03 919.25 3483.96\n", + " 930.25 3484.06 941.24 3484.19 952.24 3484.34 963.23 3484.44 974.23 3484.59\n", + " 985.23 3484.57 996.22 3484.71 1007.22 3484.55 1015.22 3484.77 1021.21 3485\n", + " 1032.21 3485.16 1044.2 3485.15 1052.2 3485.37 1250 3488\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 718.4 .035 0 796.3 .035 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 796 0 3484\n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=718.4,796.3\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,253 ,0,0,0\n", + "XS GIS Cut Line=5\n", + "957737.846675217276018.727306649957894.096690804276104.143802479\n", + "958321.874378562276067.338429898958435.763258383 275768.72715047\n", + "958471.391777778275675.310850499\n", + "Node Last Edited Time=Sep/23/2015 12:07:50\n", + "#Sta/Elev= 101 \n", + " 0 3481.6 10.94 3481.46 21.89 3481.25 32.83 3481.37 37.8 3481.16\n", + " 48.75 3480.89 59.69 3480.79 70.63 3480.69 79.59 3480.48 91.52 3480.47\n", + " 102.47 3480.28 113.41 3480.17 124.35 3479.99 132.31 3479.78 143.25 3479.55\n", + " 154.2 3479.48 165.14 3479.32 176.08 3479.25 187.06 3479.25 191.05 3479.03\n", + " 202.04 3478.85 213.02 3478.79 218.01 3478.49 229 3478.38 239.98 3478.2\n", + " 250.96 3478.1 261.95 3478.06 272.93 3478.19 283.91 3478.24 294.9 3478.22\n", + " 305.88 3478.25 316.86 3478.35 327.85 3478.44 338.83 3478.6 349.82 3478.62\n", + " 360.8 3478.62 371.78 3478.83 382.77 3478.95 389.76 3478.68 400.74 3478.59\n", + " 411.72 3478.43 422.71 3478.28 433.69 3478.28 444.67 3478.27 455.66 3478.21\n", + " 466.64 3478.31 477.62 3478.36 488.61 3478.56 499.59 3478.69 508.58 3478.94\n", + " 514.57 3479.22 520.56 3478.95 523.55 3478.67 525.55 3478.34 527.55 3478.1\n", + " 529.54 3477.87 534.54 3478.26 537.53 3478.51 541.53 3478.74 552.51 3478.91\n", + " 557.5 3478.69 561.5 3478.37 563.49 3478.11 568.49 3477.76 579.47 3477.64\n", + " 582.47 3477.89 593.45 3477.89 597.44 3478.14 608.43 3478.18 619.41 3478.41\n", + " 630.4 3478.34 641.38 3478.62 652.37 3478.75 657.36 3478.54 669.35 3478.42\n", + " 676.34 3478.63 687.33 3478.68 698.31 3478.51 709.3 3478.63 720.28 3478.8\n", + " 731.27 3478.98 742.26 3479.09 753.24 3479.04 764.23 3479.2 774.21 3479.42\n", + " 785.2 3479.55 796.19 3479.6 804.18 3479.82 815.16 3479.92 819.16 3480.17\n", + " 830.14 3480.29 841.13 3480.31 852.11 3480.38 863.1 3480.55 875.08 3480.54\n", + " 886.07 3480.61 897.06 3480.61 908.04 3480.71 919.03 3480.84 927.02 3480.9\n", + " 1027 3482\n", + "#Mann= 3 , 0 , 0 \n", + " 0 .035 0 514.57 .035 0 652.37 .035 0\n", + "Bank Sta=514.57,652.37\n", + "XS Rating Curve= 0 ,0\n", + "Exp/Cntr=0.3,0.1\n", + "\n", + "Stream Node=CityDrain ,CityDrain , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=CityDrain ,CityDrain , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Evans-Tonn ,US , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Evans-Tonn ,US , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Spearfish_Cr ,Old_Channel , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Spearfish_Cr ,Old_Channel , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Spearfish_cr1 ,Old_us14 , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Spearfish_cr1 ,Old_us14 , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,Spearfish_Creek , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,Spearfish_Creek , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,SpearfishDS , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,SpearfishDS , 0 , 1 ,Downstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,Spearfish_Cr_DS , 0 , 0 ,Upstream end \n", + "\n", + "Stream Node=Spearfish_Creek ,Spearfish_Cr_DS , 0 , 1 ,Downstream end \n", + "\n", + "Chan Stop Cuts=-1 \n", + "\n", + "\n", + "\n", + "Geom Raster=..\\3748.jpg,True,image,, 0 \n", + "Geom Raster=..\\FW US.jpg,True,image,, 0 \n", + "Geom Raster=..\\FW MID.jpg,True,image,, 0 \n", + "Geom Raster=..\\FW DS.jpg,True,image,, 0 \n", + "Use User Specified Reach Order=0\n", + "GIS Units=\n", + "GIS DTM Type=TIN\n", + "GIS DTM=\\\n", + "GIS Stream Layer=\\CityDrainageChannel\n", + "GIS Cross Section Layer=\\XSCutLines_citydrainage\n", + "GIS Map Projection=\n", + "GIS Projection Zone=\n", + "GIS Datum=\n", + "GIS Vertical Datum=\n", + "GIS Data Extents=960025.2397382,268286.1364726,960233.5437836,269067.0043335\n", + "\n", + "GIS Ratio Cuts To Invert=-1\n", + "GIS Limit At Bridges=0\n", + "Composite Channel Slope=5\"]]\n", + "station_elevation_points: [[\"[(0.0, 3574.41), (2.99, 3574.46), (5.97, 3574.38), (8.96, 3574.3), (11.95, 3574.26), (14.94, 3574.29), (17.92, 3574.21), (20.91, 3574.12), (23.9, 3574.1), (26.89, 3574.15), (29.87, 3574.2), (32.86, 3574.21), (35.85, 3574.1), (38.84, 3573.99), (41.82, 3574.02), (44.81, 3573.91), (47.8, 3573.74), (50.79, 3573.66), (53.77, 3573.6), (56.76, 3573.39), (59.75, 3573.24), (62.74, 3573.13), (65.72, 3572.96), (68.65, 3572.78), (71.57, 3572.64), (74.49, 3572.58), (77.41, 3572.28), (80.33, 3572.15), (83.25, 3572.04), (86.17, 3571.89), (89.09, 3571.76), (92.01, 3571.57), (94.94, 3571.33), (97.86, 3571.17), (100.78, 3571.08), (103.7, 3570.9), (106.62, 3570.73), (109.54, 3570.64), (112.46, 3570.53), (115.38, 3570.39), (118.3, 3570.28), (121.23, 3570.09), (124.15, 3569.84), (127.07, 3569.54), (129.99, 3569.35), (132.91, 3569.06), (135.61, 3568.76), (138.32, 3568.55), (141.02, 3568.31), (143.73, 3568.06), (146.43, 3567.8), (149.13, 3567.56), (151.84, 3567.36), (154.54, 3567.21), (157.25, 3567.02), (160.18, 3566.79), (163.12, 3566.64), (166.05, 3566.52), (166.06, 3566.52), (168.99, 3566.11), (171.92, 3565.19), (174.86, 3564.5), (177.79, 3564.13), (180.73, 3563.93), (183.66, 3563.87), (186.6, 3563.95), (189.53, 3564.27), (192.46, 3564.58), (193.82, 3564.71), (195.4, 3564.86), (198.33, 3565.06), (201.27, 3565.12), (204.2, 3565.0), (207.18, 3565.01), (210.15, 3565.06), (213.13, 3565.15), (216.11, 3565.32), (219.08, 3565.42), (222.06, 3565.53), (225.03, 3565.65), (228.01, 3565.71), (230.98, 3565.72), (233.96, 3565.74), (236.93, 3565.77), (239.91, 3565.88), (242.88, 3566.02), (245.86, 3566.22), (248.83, 3566.48), (251.81, 3566.79), (254.78, 3567.09), (257.76, 3567.32), (260.73, 3567.56), (263.71, 3567.78), (266.68, 3568.01), (269.66, 3568.22), (272.64, 3568.35), (275.61, 3568.51), (278.59, 3568.61), (281.56, 3568.69), (284.54, 3568.74), (287.51, 3568.86), (290.49, 3569.03), (293.46, 3569.18), (296.44, 3569.26), (299.41, 3569.36), (302.39, 3569.47), (305.36, 3569.52), (308.34, 3569.63), (311.31, 3569.71), (314.29, 3569.84), (317.26, 3569.98), (320.24, 3570.07), (323.21, 3570.1), (326.19, 3570.23), (329.16, 3570.3), (332.14, 3570.47), (335.12, 3570.49), (338.09, 3570.6), (341.07, 3570.65), (344.04, 3570.73), (347.02, 3570.84), (349.99, 3570.94), (352.97, 3571.02), (355.94, 3571.0), (358.92, 3570.94), (361.89, 3570.85), (364.87, 3570.83), (367.84, 3571.01), (370.82, 3571.24), (373.79, 3571.35), (376.77, 3571.52), (379.74, 3571.52), (382.72, 3571.53), (385.69, 3571.63)]\",\"[(0.0, 3573.83), (2.99, 3573.73), (5.99, 3573.64), (8.98, 3573.59), (11.98, 3573.52), (14.97, 3573.43), (17.97, 3573.35), (20.96, 3573.27), (23.95, 3573.19), (26.95, 3573.15), (29.94, 3573.07), (32.94, 3573.0), (35.93, 3572.88), (38.93, 3572.75), (41.92, 3572.6), (44.91, 3572.47), (47.91, 3572.33), (50.9, 3572.27), (53.9, 3572.11), (56.89, 3572.04), (59.89, 3571.88), (62.88, 3571.78), (65.87, 3571.61), (68.87, 3571.5), (71.86, 3571.43), (74.86, 3571.35), (77.85, 3571.19), (80.85, 3571.02), (83.84, 3570.89), (86.83, 3570.71), (89.83, 3570.61), (92.82, 3570.53), (95.82, 3570.4), (98.81, 3570.36), (101.81, 3570.32), (104.8, 3570.21), (107.79, 3570.06), (110.79, 3569.88), (113.78, 3569.74), (116.78, 3569.53), (119.77, 3569.46), (122.77, 3569.35), (125.76, 3569.2), (128.75, 3569.0), (131.75, 3568.93), (134.74, 3568.8), (137.74, 3568.58), (140.73, 3568.35), (143.73, 3568.31), (146.72, 3568.24), (149.71, 3568.16), (152.71, 3568.02), (155.7, 3567.87), (158.7, 3567.75), (161.69, 3567.67), (164.69, 3567.51), (167.68, 3567.23), (170.67, 3567.03), (173.64, 3566.75), (176.6, 3566.31), (179.56, 3565.72), (182.53, 3565.25), (184.9, 3564.95), (185.49, 3564.87), (188.46, 3564.75), (191.42, 3564.48), (194.38, 3564.03), (197.35, 3563.46), (200.31, 3563.18), (203.27, 3562.95), (206.24, 3562.9), (209.2, 3562.95), (212.16, 3563.24), (215.13, 3563.64), (218.09, 3563.91), (221.05, 3564.27), (222.45, 3564.39), (224.02, 3564.52), (226.98, 3564.69), (229.94, 3564.95), (232.91, 3565.16), (235.87, 3565.3), (238.83, 3565.39), (241.8, 3565.53), (244.76, 3565.61), (247.72, 3565.66), (250.69, 3565.9), (253.62, 3566.02), (256.56, 3566.12), (259.5, 3566.15), (262.44, 3566.16), (265.38, 3566.21), (268.32, 3566.27), (271.26, 3566.39), (274.2, 3566.52), (277.14, 3566.55), (280.08, 3566.59), (283.02, 3566.71), (285.96, 3566.87), (288.9, 3567.05), (291.83, 3567.22), (294.77, 3567.39), (297.71, 3567.51), (300.65, 3567.66), (303.59, 3567.79), (306.53, 3567.85), (309.47, 3567.92), (312.41, 3568.06), (315.35, 3568.16), (318.29, 3568.19), (321.23, 3568.21), (324.16, 3568.2), (327.1, 3568.32), (330.04, 3568.45), (332.98, 3568.68), (335.92, 3568.85), (338.86, 3569.06), (341.8, 3569.2), (344.74, 3569.26), (347.68, 3569.32), (350.62, 3569.44), (353.56, 3569.58), (356.5, 3569.64), (359.43, 3569.78), (362.37, 3569.94), (365.31, 3570.04), (368.25, 3569.95), (371.19, 3570.05), (374.13, 3570.09), (377.07, 3570.2), (380.01, 3570.18), (382.95, 3570.13), (385.89, 3570.06)]\",\"[(0.0, 3570.7), (2.98, 3570.67), (5.96, 3570.54), (8.95, 3570.46), (11.93, 3570.37), (14.91, 3570.31), (17.89, 3570.32), (20.88, 3570.41), (23.86, 3570.38), (26.84, 3570.33), (29.82, 3570.23), (32.81, 3570.09), (35.79, 3570.01), (38.77, 3569.89), (41.75, 3569.84), (44.73, 3569.74), (47.72, 3569.6), (50.7, 3569.57), (53.68, 3569.5), (56.66, 3569.43), (59.65, 3569.35), (62.63, 3569.29), (65.61, 3569.25), (68.59, 3569.22), (71.57, 3569.13), (74.56, 3569.04), (77.54, 3568.99), (80.52, 3568.82), (83.5, 3568.78), (86.49, 3568.64), (89.47, 3568.44), (92.45, 3568.22), (95.43, 3568.09), (98.42, 3568.07), (101.4, 3567.9), (104.38, 3567.66), (107.36, 3567.43), (110.34, 3567.29), (113.33, 3567.14), (116.31, 3567.01), (119.29, 3566.81), (122.27, 3566.66), (125.26, 3566.47), (128.24, 3566.27), (131.22, 3566.08), (134.2, 3565.8), (137.19, 3565.57), (140.17, 3565.64), (143.15, 3565.47), (146.13, 3565.26), (149.11, 3565.11), (152.1, 3564.97), (155.08, 3564.75), (158.02, 3564.61), (160.96, 3564.31), (163.91, 3563.79), (166.85, 3563.39), (168.12, 3563.29), (169.79, 3563.16), (172.73, 3562.91), (175.67, 3562.73), (178.62, 3562.48), (181.56, 3562.03), (184.5, 3561.71), (187.44, 3561.54), (190.38, 3561.47), (193.33, 3561.53), (196.27, 3561.93), (199.21, 3562.46), (202.15, 3562.81), (204.26, 3562.99), (205.1, 3563.06), (208.04, 3563.26), (210.98, 3563.46), (213.92, 3563.65), (216.86, 3563.83), (219.81, 3564.03), (222.75, 3564.18), (225.69, 3564.38), (228.63, 3564.53), (231.57, 3564.53), (234.52, 3564.51), (237.51, 3564.54), (240.5, 3564.69), (243.5, 3564.75), (246.49, 3564.81), (249.49, 3564.9), (252.48, 3565.03), (255.47, 3565.14), (258.47, 3565.19), (261.46, 3565.27), (264.46, 3565.32), (267.45, 3565.38), (270.44, 3565.45), (273.44, 3565.56), (276.43, 3565.58), (279.43, 3565.67), (282.42, 3565.78), (285.41, 3565.84), (288.41, 3565.78), (291.4, 3565.67), (294.4, 3565.81), (297.39, 3566.03), (300.38, 3566.24), (303.38, 3566.34), (306.37, 3566.5), (309.37, 3566.61), (312.36, 3566.65), (315.35, 3566.65), (318.35, 3566.71), (321.34, 3566.81), (324.34, 3566.91), (327.33, 3566.81), (330.28, 3566.73), (333.23, 3566.61), (336.18, 3566.45), (339.12, 3566.43), (342.07, 3566.56), (345.02, 3566.79), (347.97, 3567.08), (350.92, 3567.41), (353.86, 3567.81), (356.81, 3568.22), (359.76, 3568.63), (362.71, 3569.06), (365.66, 3569.42), (368.61, 3569.76), (371.55, 3570.05), (374.5, 3570.21), (377.45, 3570.34), (380.4, 3570.39), (383.35, 3570.54), (386.3, 3570.67), (389.24, 3570.69), (392.19, 3570.75), (395.14, 3570.75), (398.09, 3570.78)]\",\"[(0.0, 3568.28), (2.96, 3568.25), (5.93, 3568.17), (8.89, 3568.1), (11.85, 3568.07), (14.82, 3567.98), (17.78, 3567.89), (20.75, 3567.93), (23.71, 3567.88), (26.67, 3567.74), (29.64, 3567.71), (32.6, 3567.67), (35.56, 3567.68), (38.53, 3567.64), (41.49, 3567.61), (44.45, 3567.61), (47.42, 3567.61), (50.38, 3567.64), (53.34, 3567.67), (56.31, 3567.68), (59.27, 3567.71), (62.23, 3567.7), (65.2, 3567.64), (68.16, 3567.58), (71.12, 3567.6), (74.09, 3567.58), (77.05, 3567.51), (80.02, 3567.41), (82.98, 3567.34), (85.94, 3567.22), (88.91, 3567.11), (91.87, 3567.06), (94.83, 3566.93), (97.8, 3566.8), (100.76, 3566.71), (103.72, 3566.64), (106.69, 3566.52), (109.65, 3566.42), (112.61, 3566.36), (115.58, 3566.32), (118.54, 3566.31), (121.51, 3566.28), (124.47, 3566.29), (127.43, 3566.23), (130.4, 3566.19), (133.36, 3566.08), (136.32, 3565.96), (139.29, 3565.79), (142.25, 3565.65), (145.21, 3565.53), (148.18, 3565.37), (151.14, 3565.17), (154.1, 3565.0), (157.07, 3564.95), (160.03, 3564.88), (162.99, 3564.73), (165.96, 3564.68), (168.92, 3564.61), (171.89, 3564.38), (174.85, 3564.18), (177.81, 3563.99), (180.78, 3563.8), (183.74, 3563.5), (186.7, 3563.23), (189.67, 3562.81), (192.59, 3562.07), (195.51, 3561.34), (198.43, 3560.82), (201.35, 3560.51), (201.51, 3560.49), (204.28, 3560.21), (207.2, 3560.04), (210.12, 3559.89), (213.04, 3559.3), (215.96, 3558.68), (218.88, 3558.47), (221.81, 3558.17), (224.73, 3558.18), (227.65, 3558.32), (230.57, 3558.75), (233.49, 3559.13), (234.76, 3559.3), (236.41, 3559.53), (239.34, 3559.91), (242.26, 3560.17), (245.18, 3560.32), (248.1, 3560.49), (251.02, 3560.57), (253.95, 3560.62), (256.89, 3560.76), (259.84, 3560.95), (262.79, 3561.15), (265.74, 3561.33), (268.69, 3561.52), (271.64, 3561.62), (274.59, 3561.61), (277.54, 3561.62), (280.48, 3561.66), (283.43, 3561.74), (286.38, 3561.89), (289.33, 3561.98), (292.28, 3562.06), (295.23, 3562.19), (298.18, 3562.2), (301.13, 3562.24), (304.08, 3562.3), (307.02, 3562.34), (309.97, 3562.36), (312.92, 3562.42), (315.87, 3562.49), (318.82, 3562.57), (321.77, 3562.71), (324.72, 3562.9), (327.67, 3563.0), (330.62, 3563.11), (333.56, 3563.23), (336.51, 3563.44), (339.46, 3563.69), (342.41, 3563.88), (345.36, 3563.88), (348.31, 3563.89), (351.26, 3563.94), (354.21, 3564.01), (357.15, 3564.13), (360.1, 3564.19), (363.05, 3564.19), (366.0, 3564.22), (368.95, 3564.31), (371.9, 3564.44), (374.85, 3564.69), (377.8, 3564.71), (380.75, 3564.65), (383.69, 3564.69), (386.64, 3564.81), (389.55, 3564.91), (392.45, 3564.81), (395.36, 3564.75), (398.26, 3564.81), (401.17, 3564.45), (404.08, 3564.39), (406.98, 3564.28), (409.89, 3564.27), (412.79, 3564.45), (415.7, 3564.69), (418.6, 3565.01), (421.51, 3565.34), (424.41, 3565.59), (427.32, 3565.81), (430.22, 3566.07), (433.13, 3566.35), (436.03, 3566.59), (438.94, 3566.74), (441.85, 3567.05), (444.75, 3567.19), (447.66, 3567.22), (450.56, 3567.28), (453.47, 3567.38), (456.37, 3567.41), (459.28, 3567.47), (462.18, 3567.43), (465.09, 3567.47), (467.99, 3568.3), (470.9, 3568.92), (473.8, 3568.95)]\",\"[(0.0, 3565.98), (2.96, 3565.75), (5.92, 3565.56), (8.89, 3565.4), (11.85, 3565.21), (14.81, 3564.97), (17.77, 3564.71), (20.73, 3564.5), (23.69, 3564.37), (26.66, 3564.25), (29.62, 3564.14), (32.58, 3564.02), (35.54, 3563.97), (38.5, 3563.87), (41.46, 3563.61), (44.43, 3563.51), (47.39, 3563.55), (50.35, 3563.54), (53.31, 3563.49), (56.27, 3563.46), (59.24, 3563.37), (62.2, 3563.22), (65.16, 3563.06), (68.12, 3562.89), (71.08, 3562.76), (74.04, 3562.66), (77.01, 3562.58), (79.97, 3562.48), (82.93, 3562.33), (85.86, 3562.2), (88.79, 3562.09), (91.72, 3562.01), (94.65, 3561.9), (97.58, 3561.86), (100.51, 3561.84), (103.44, 3561.75), (106.37, 3561.71), (109.3, 3561.72), (112.23, 3561.7), (115.16, 3561.63), (118.09, 3561.51), (121.02, 3561.34), (123.95, 3561.15), (126.88, 3560.98), (129.77, 3560.58), (132.66, 3560.17), (135.54, 3559.8), (138.43, 3559.51), (140.72, 3559.31), (141.32, 3559.26), (144.21, 3559.02), (147.09, 3558.67), (149.98, 3558.03), (152.87, 3557.32), (155.75, 3557.05), (158.64, 3557.08), (161.53, 3557.14), (164.41, 3557.6), (167.3, 3558.09), (167.51, 3558.11), (170.19, 3558.41), (173.08, 3558.6), (175.96, 3558.67), (178.85, 3558.82), (181.74, 3559.05), (184.62, 3559.19), (187.51, 3559.28), (190.4, 3559.47), (193.28, 3559.63), (196.17, 3559.64), (199.06, 3559.65), (202.02, 3559.73), (204.99, 3559.83), (207.95, 3559.89), (210.91, 3559.93), (213.88, 3560.01), (216.84, 3560.13), (219.8, 3560.25), (222.77, 3560.38), (225.73, 3560.49), (228.7, 3560.52), (231.66, 3560.53), (234.62, 3560.6), (237.59, 3560.65), (240.55, 3560.72), (243.51, 3560.82), (246.48, 3560.9), (249.44, 3560.98), (252.41, 3561.11), (255.37, 3561.21), (258.33, 3561.38), (261.3, 3561.41), (264.26, 3561.41), (267.22, 3561.53), (270.19, 3561.6), (273.15, 3561.56), (276.11, 3561.67), (279.08, 3561.89), (282.04, 3562.09), (285.01, 3562.13), (287.97, 3562.01), (290.93, 3562.09), (293.9, 3562.25), (296.86, 3562.29), (299.82, 3562.34), (302.79, 3562.5), (305.75, 3562.61), (308.72, 3562.64), (311.68, 3562.64), (314.59, 3562.57), (317.51, 3562.52), (320.42, 3562.5), (323.34, 3562.44), (326.25, 3562.41), (329.17, 3562.41), (332.08, 3562.49), (335.0, 3562.69), (337.91, 3563.01), (340.83, 3563.15), (343.74, 3563.31), (346.66, 3563.41), (349.57, 3563.54), (352.49, 3563.65), (355.4, 3563.77), (358.32, 3563.95), (361.23, 3564.03), (364.15, 3564.16), (367.06, 3564.27), (369.98, 3564.34), (372.89, 3564.34), (478.0, 3566.0)]\",...,\"[(0.0, 3499.57), (5.0, 3499.78), (11.0, 3499.56), (21.0, 3499.33), (24.0, 3499.05), (35.0, 3498.91), (43.0, 3498.68), (48.0, 3498.42), (53.0, 3498.67), (55.0, 3498.43), (57.0, 3498.17), (60.0, 3498.44), (71.0, 3498.25), (76.0, 3498.04), (81.0, 3497.81), (89.99, 3497.59), (95.99, 3497.37), (102.99, 3497.59), (108.99, 3497.35), (117.99, 3497.15), (123.99, 3496.92), (133.99, 3496.78), (138.99, 3497.02), (143.99, 3496.79), (146.99, 3496.57), (150.99, 3496.36), (161.99, 3496.22), (172.99, 3496.13), (183.99, 3496.17), (191.99, 3495.92), (202.99, 3495.75), (211.99, 3495.54), (222.99, 3495.65), (226.99, 3495.35), (237.99, 3495.22), (250.98, 3494.95), (260.98, 3494.73), (272.98, 3494.72), (283.98, 3494.61), (289.98, 3494.41), (300.98, 3494.39), (311.98, 3494.44), (318.98, 3494.21), (329.98, 3494.14), (340.98, 3494.21), (351.98, 3494.2), (362.98, 3493.97), (368.98, 3493.74), (379.98, 3493.73), (390.98, 3493.72), (401.98, 3493.59), (412.98, 3493.43), (423.97, 3493.36), (434.97, 3493.18), (445.97, 3493.11), (456.97, 3493.02), (465.97, 3493.25), (471.97, 3492.96), (478.97, 3492.75), (489.97, 3492.75), (497.97, 3492.51), (508.97, 3492.45), (519.97, 3492.31), (530.97, 3492.28), (536.97, 3492.05), (547.97, 3491.93), (558.97, 3491.98), (569.97, 3491.84), (576.97, 3491.57), (587.97, 3491.66), (598.96, 3491.49), (601.96, 3491.28), (612.96, 3491.15), (623.96, 3491.08), (634.96, 3491.32), (642.96, 3491.08), (653.96, 3490.92), (664.96, 3490.9), (675.96, 3490.91), (686.96, 3490.74), (692.96, 3490.95), (703.96, 3491.0), (714.96, 3491.05), (722.96, 3490.81), (733.96, 3490.8), (744.96, 3490.66), (750.96, 3490.35), (755.96, 3490.14), (764.96, 3489.85), (769.96, 3489.64), (774.95, 3489.43), (778.95, 3489.21), (783.95, 3488.99), (790.95, 3488.68), (801.95, 3488.63), (812.95, 3488.76), (823.95, 3488.68), (826.95, 3488.9), (830.95, 3489.13), (836.95, 3489.39), (838.95, 3489.63), (842.95, 3489.88), (845.95, 3490.11), (849.95, 3490.34), (855.95, 3490.58), (861.95, 3490.84), (867.95, 3490.63), (872.95, 3490.92), (883.91, 3490.94), (894.87, 3491.04), (905.84, 3491.27), (916.8, 3491.07), (924.77, 3491.29), (930.75, 3491.5), (941.71, 3491.6), (946.69, 3491.82), (952.67, 3492.04), (954.67, 3492.26), (965.63, 3492.1), (973.6, 3492.32), (982.57, 3492.53), (993.53, 3492.72), (1004.49, 3492.67), (1015.46, 3492.72), (1026.42, 3492.75), (1030.4, 3492.47), (1036.38, 3492.69), (1047.34, 3492.63), (1058.31, 3492.5), (1069.27, 3492.52), (1080.23, 3492.41), (1091.19, 3492.46), (1102.15, 3492.57), (1105.14, 3492.31), (1112.12, 3492.59), (1123.08, 3492.58), (1134.04, 3492.49), (1145.0, 3492.62), (1150.98, 3492.85), (1157.96, 3493.07), (1160.95, 3493.32), (1166.94, 3492.87), (1169.93, 3492.61), (1172.92, 3492.31), (1174.92, 3492.01), (1176.92, 3491.78), (1187.89, 3491.69), (1197.87, 3491.48), (1208.84, 3491.62), (1216.83, 3491.93), (1218.82, 3492.25), (1220.82, 3492.6), (1226.8, 3492.32), (1235.78, 3492.53), (1246.76, 3492.5), (1257.73, 3492.44), (1268.71, 3492.47), (1279.68, 3492.48), (1290.66, 3492.47), (1301.64, 3492.65), (1312.61, 3492.69), (1323.59, 3492.6), (1334.56, 3492.65), (1340.55, 3492.85), (1351.52, 3492.84), (1362.5, 3493.03), (1373.47, 3493.11), (1384.45, 3493.26), (1396.42, 3493.14), (1407.4, 3493.22), (1418.37, 3493.1), (1429.36, 3493.25), (1440.34, 3493.18), (1451.32, 3492.99), (1462.31, 3493.04), (1473.29, 3493.13), (1484.27, 3493.06), (1495.26, 3493.12), (1506.24, 3493.09), (1515.23, 3492.86), (1526.21, 3492.94), (1537.2, 3492.8), (1548.18, 3492.59), (1559.16, 3492.8), (1570.15, 3493.0), (1581.13, 3493.09), (1592.11, 3493.13), (1603.1, 3493.26), (1614.08, 3493.43), (1625.06, 3493.48), (1636.05, 3493.65), (1647.03, 3493.51), (1658.02, 3493.57), (1671.99, 3493.43), (1682.98, 3493.33), (1693.96, 3493.45), (1704.95, 3493.58), (1715.93, 3493.69), (1725.91, 3493.9), (1736.9, 3493.94), (1747.88, 3494.03), (1758.87, 3493.94), (1769.85, 3493.96), (1780.83, 3494.15), (1791.82, 3494.06), (1801.8, 3494.29), (1812.79, 3494.39), (1823.77, 3494.34), (1834.75, 3494.41), (1845.74, 3494.45), (1856.72, 3494.51), (1867.7, 3494.31), (1878.69, 3494.33), (1881.68, 3494.12), (1892.67, 3494.23), (1903.65, 3494.35), (1914.63, 3494.45), (1925.62, 3494.47), (1936.6, 3494.35), (1947.58, 3494.42), (1958.57, 3494.4), (1969.55, 3494.4), (1980.54, 3494.52), (1991.52, 3494.74), (1995.51, 3495.01), (2006.5, 3494.82), (2017.48, 3494.86), (2028.46, 3494.94), (2035.45, 3495.15), (2042.44, 3495.26)]\",\"[(0.0, 3495.24), (4.0, 3494.99), (11.0, 3494.72), (15.0, 3494.51), (20.0, 3494.72), (31.0, 3494.85), (40.0, 3494.56), (42.0, 3494.22), (52.0, 3494.0), (56.0, 3494.23), (67.0, 3494.14), (74.0, 3493.9), (83.0, 3493.67), (94.0, 3493.7), (105.0, 3493.77), (110.0, 3493.54), (112.0, 3493.32), (123.0, 3493.38), (132.0, 3493.17), (141.99, 3492.96), (146.99, 3492.74), (157.99, 3492.58), (168.99, 3492.39), (177.99, 3492.61), (183.99, 3492.41), (193.99, 3492.19), (204.99, 3492.25), (208.99, 3492.46), (219.99, 3492.27), (228.99, 3492.06), (239.99, 3491.93), (242.99, 3492.15), (253.99, 3492.09), (260.99, 3491.86), (271.99, 3491.93), (282.99, 3491.9), (292.99, 3491.65), (303.99, 3491.73), (314.99, 3491.62), (322.99, 3491.41), (333.99, 3491.32), (344.99, 3491.18), (351.99, 3490.97), (363.99, 3490.98), (374.99, 3490.95), (382.99, 3490.71), (393.99, 3490.83), (404.99, 3490.79), (415.99, 3490.85), (424.99, 3490.65), (435.99, 3490.6), (445.99, 3490.37), (456.98, 3490.37), (467.98, 3490.45), (477.98, 3490.21), (483.98, 3489.96), (490.98, 3490.24), (498.98, 3490.02), (509.98, 3489.85), (513.98, 3489.64), (524.98, 3489.49), (535.98, 3489.48), (544.98, 3489.27), (555.98, 3489.06), (566.98, 3488.94), (577.98, 3488.84), (583.98, 3488.64), (595.98, 3488.51), (606.98, 3488.54), (610.98, 3488.78), (619.98, 3488.55), (630.98, 3488.41), (638.98, 3488.62), (644.98, 3488.41), (651.98, 3488.2), (662.98, 3487.95), (665.98, 3487.69), (675.98, 3487.48), (682.98, 3487.72), (685.98, 3487.98), (694.98, 3487.75), (697.98, 3487.46), (708.98, 3487.27), (719.98, 3487.2), (724.98, 3487.45), (735.98, 3487.53), (741.98, 3487.77), (752.97, 3487.58), (755.97, 3487.21), (757.97, 3486.87), (759.97, 3486.58), (765.97, 3486.35), (774.97, 3486.59), (776.97, 3486.85), (778.97, 3487.1), (780.97, 3487.41), (783.97, 3487.63), (787.97, 3487.85), (790.97, 3488.09), (801.97, 3488.06), (806.97, 3487.82), (812.97, 3487.49), (823.97, 3487.63), (831.97, 3487.84), (842.97, 3487.83), (846.97, 3488.05), (857.97, 3488.22), (861.97, 3488.01), (864.97, 3487.77), (875.97, 3487.67), (886.97, 3487.56), (897.97, 3487.6), (908.97, 3487.81), (919.97, 3487.82), (930.97, 3487.84), (941.97, 3487.86), (947.97, 3487.64), (958.97, 3487.69), (967.97, 3487.91), (970.97, 3488.12), (981.97, 3488.21), (983.97, 3487.89), (986.97, 3487.63), (997.97, 3487.73), (1001.97, 3487.97), (1004.97, 3488.19), (1015.97, 3488.3), (1026.97, 3488.46), (1037.96, 3488.55), (1048.96, 3488.59), (1059.96, 3488.52), (1070.96, 3488.65), (1081.96, 3488.79), (1092.96, 3488.96), (1103.96, 3488.94), (1114.96, 3488.95), (1124.96, 3489.22), (1127.96, 3489.48), (1134.96, 3489.26), (1142.94, 3489.48), (1147.89, 3489.7), (1152.84, 3489.97), (1158.78, 3489.75), (1169.68, 3489.7), (1180.57, 3489.97), (1183.54, 3490.18), (1187.5, 3490.48), (1189.48, 3490.73), (1196.42, 3491.01), (1208.3, 3491.26), (1219.19, 3491.22), (1231.08, 3491.1), (1241.97, 3491.18), (1252.95, 3491.21), (1263.94, 3491.32), (1274.93, 3491.45), (1285.92, 3491.59), (1296.91, 3491.7), (1307.91, 3491.82), (1318.9, 3491.89), (1322.89, 3492.11), (1333.88, 3492.13), (1339.88, 3492.35), (1350.87, 3492.41), (1358.86, 3492.62), (1369.85, 3492.75), (1381.84, 3492.87), (1392.83, 3493.05), (1403.82, 3493.21), (1415.81, 3493.32), (1426.8, 3493.47), (1437.79, 3493.59), (1448.78, 3493.72), (1459.77, 3493.83), (1470.76, 3494.02), (1481.75, 3494.07), (1492.74, 3494.23), (1503.73, 3494.3), (1514.72, 3494.34), (1525.71, 3494.3), (1536.7, 3494.35), (1547.69, 3494.4), (1558.68, 3494.53), (1569.67, 3494.7), (1580.66, 3494.68), (1591.65, 3494.73), (1602.64, 3494.77), (1610.64, 3494.98), (1621.63, 3494.91), (1632.62, 3494.88), (1642.61, 3495.09), (1653.6, 3495.06), (1664.59, 3494.92), (1669.58, 3495.13), (1680.57, 3495.11), (1691.56, 3495.17), (1702.55, 3495.11), (1713.54, 3495.1), (1724.53, 3495.21), (1735.52, 3495.32), (1746.51, 3495.12), (1751.51, 3495.4), (1762.5, 3495.42), (1773.49, 3495.35), (1784.48, 3495.3), (1795.47, 3495.27), (1806.46, 3495.3), (1817.45, 3495.42), (1828.44, 3495.5), (1839.43, 3495.72), (1850.42, 3495.66), (1861.41, 3495.72), (1872.4, 3495.68), (1883.39, 3495.85), (1894.38, 3495.8), (1905.37, 3495.99), (1916.36, 3495.9), (1927.35, 3496.02), (1938.34, 3495.9), (1949.33, 3495.87), (1960.32, 3495.86), (1971.31, 3495.88), (1982.3, 3495.77), (1993.29, 3495.79), (2004.28, 3495.84), (2015.27, 3495.88), (2026.26, 3495.85), (2037.26, 3495.95), (2048.25, 3495.84), (2057.24, 3495.9)]\",\"[(0.0, 3490.01), (10.98, 3489.9), (21.97, 3489.72), (27.96, 3489.5), (31.95, 3489.73), (39.94, 3489.49), (52.92, 3489.24), (63.91, 3489.27), (74.89, 3489.2), (85.88, 3489.0), (96.86, 3489.03), (104.85, 3488.78), (115.83, 3488.73), (126.82, 3488.79), (137.8, 3488.66), (146.79, 3488.41), (157.77, 3488.28), (168.76, 3488.2), (179.74, 3488.18), (190.73, 3488.21), (201.71, 3488.23), (212.7, 3488.21), (223.68, 3488.08), (234.67, 3488.09), (245.65, 3488.05), (256.63, 3488.19), (267.62, 3488.01), (278.6, 3487.87), (289.59, 3487.97), (298.57, 3487.75), (309.56, 3487.68), (320.54, 3487.66), (331.53, 3487.64), (342.51, 3487.46), (353.5, 3487.48), (359.49, 3487.26), (370.47, 3487.42), (377.46, 3487.19), (388.45, 3487.21), (399.43, 3487.23), (406.42, 3487.02), (408.42, 3486.81), (413.41, 3486.58), (424.4, 3486.56), (435.38, 3486.58), (441.36, 3486.79), (452.34, 3486.69), (460.32, 3486.48), (471.29, 3486.54), (482.26, 3486.51), (492.24, 3486.27), (500.22, 3486.06), (506.21, 3485.84), (517.18, 3485.64), (521.17, 3485.4), (532.14, 3485.33), (537.13, 3485.13), (548.11, 3485.01), (553.09, 3484.78), (564.07, 3484.69), (575.04, 3484.58), (579.03, 3484.82), (584.02, 3484.6), (589.01, 3484.39), (592.0, 3484.18), (602.98, 3484.3), (613.95, 3484.3), (624.92, 3484.29), (635.9, 3484.34), (646.87, 3484.38), (657.84, 3484.42), (668.82, 3484.61), (675.8, 3484.88), (682.78, 3485.1), (690.76, 3484.9), (701.74, 3484.94), (704.73, 3485.23), (715.71, 3485.37), (726.68, 3485.53), (737.65, 3485.44), (748.63, 3485.57), (759.6, 3485.53), (765.59, 3485.76), (776.56, 3485.9), (787.53, 3486.08), (792.52, 3486.34), (797.51, 3486.56), (806.49, 3486.77), (810.48, 3486.99), (813.47, 3487.25), (824.44, 3487.19), (828.42, 3487.42), (835.39, 3487.91), (848.33, 3488.17), (859.28, 3488.06), (863.26, 3487.68), (864.26, 3487.43), (875.21, 3487.57), (886.16, 3487.5), (898.1, 3487.38), (905.07, 3487.07), (909.06, 3486.84), (913.04, 3486.59), (917.02, 3486.81), (920.01, 3487.06), (922.99, 3487.3), (933.95, 3487.44), (946.9, 3487.57), (957.86, 3487.75), (965.83, 3487.97), (976.79, 3487.9), (986.76, 3488.11), (997.72, 3488.22), (1008.68, 3488.35), (1019.64, 3488.59), (1030.6, 3488.75), (1035.58, 3488.98), (1041.56, 3489.19), (1046.54, 3489.41), (1051.52, 3489.65), (1056.5, 3489.95), (1057.5, 3490.04)]\",\"[(0.0, 3486.61), (7.0, 3486.41), (17.99, 3486.27), (24.98, 3486.06), (35.98, 3485.99), (42.97, 3485.78), (53.97, 3485.65), (63.96, 3485.43), (74.95, 3485.53), (85.95, 3485.38), (96.94, 3485.42), (107.93, 3485.34), (118.93, 3485.33), (129.92, 3485.25), (140.91, 3485.21), (151.91, 3485.3), (162.9, 3485.26), (173.89, 3485.41), (184.89, 3485.27), (195.88, 3485.32), (206.87, 3485.45), (217.87, 3485.48), (228.86, 3485.39), (239.85, 3485.48), (249.85, 3485.23), (260.84, 3485.34), (271.83, 3485.17), (277.83, 3484.96), (288.82, 3484.96), (298.82, 3484.65), (309.81, 3484.52), (319.8, 3484.29), (330.8, 3484.06), (342.79, 3483.95), (353.78, 3483.99), (363.78, 3483.75), (374.77, 3483.77), (385.76, 3483.79), (396.76, 3483.84), (407.75, 3483.82), (418.74, 3483.69), (429.74, 3483.78), (440.72, 3483.51), (451.71, 3483.3), (462.7, 3483.2), (473.68, 3483.06), (484.67, 3482.93), (495.66, 3482.88), (506.65, 3482.69), (517.63, 3482.72), (528.62, 3482.78), (539.61, 3482.84), (550.59, 3482.84), (561.58, 3482.88), (572.57, 3482.88), (583.56, 3482.78), (594.54, 3482.87), (605.53, 3482.8), (616.52, 3482.75), (627.5, 3482.73), (638.49, 3482.74), (649.48, 3482.56), (660.46, 3482.57), (671.45, 3482.64), (682.44, 3482.56), (693.43, 3482.59), (704.41, 3482.53), (715.4, 3482.67), (718.4, 3482.88), (722.39, 3482.67), (725.39, 3482.46), (729.38, 3482.21), (739.37, 3482.57), (741.37, 3482.9), (743.37, 3483.18), (750.36, 3483.43), (761.34, 3483.23), (764.34, 3482.95), (767.34, 3482.71), (771.33, 3482.45), (774.33, 3482.17), (778.32, 3481.92), (784.32, 3482.16), (786.32, 3482.42), (788.31, 3482.63), (793.31, 3482.85), (796.3, 3483.06), (807.29, 3483.16), (818.29, 3483.13), (829.28, 3483.12), (840.28, 3483.27), (851.27, 3483.13), (855.27, 3483.36), (866.27, 3483.3), (877.26, 3483.45), (883.26, 3483.67), (891.26, 3483.87), (897.26, 3484.09), (908.25, 3484.03), (919.25, 3483.96), (930.25, 3484.06), (941.24, 3484.19), (952.24, 3484.34), (963.23, 3484.44), (974.23, 3484.59), (985.23, 3484.57), (996.22, 3484.71), (1007.22, 3484.55), (1015.22, 3484.77), (1021.21, 3485.0), (1032.21, 3485.16), (1044.2, 3485.15), (1052.2, 3485.37), (1250.0, 3488.0)]\",\"[(0.0, 3481.6), (10.94, 3481.46), (21.89, 3481.25), (32.83, 3481.37), (37.8, 3481.16), (48.75, 3480.89), (59.69, 3480.79), (70.63, 3480.69), (79.59, 3480.48), (91.52, 3480.47), (102.47, 3480.28), (113.41, 3480.17), (124.35, 3479.99), (132.31, 3479.78), (143.25, 3479.55), (154.2, 3479.48), (165.14, 3479.32), (176.08, 3479.25), (187.06, 3479.25), (191.05, 3479.03), (202.04, 3478.85), (213.02, 3478.79), (218.01, 3478.49), (229.0, 3478.38), (239.98, 3478.2), (250.96, 3478.1), (261.95, 3478.06), (272.93, 3478.19), (283.91, 3478.24), (294.9, 3478.22), (305.88, 3478.25), (316.86, 3478.35), (327.85, 3478.44), (338.83, 3478.6), (349.82, 3478.62), (360.8, 3478.62), (371.78, 3478.83), (382.77, 3478.95), (389.76, 3478.68), (400.74, 3478.59), (411.72, 3478.43), (422.71, 3478.28), (433.69, 3478.28), (444.67, 3478.27), (455.66, 3478.21), (466.64, 3478.31), (477.62, 3478.36), (488.61, 3478.56), (499.59, 3478.69), (508.58, 3478.94), (514.57, 3479.22), (520.56, 3478.95), (523.55, 3478.67), (525.55, 3478.34), (527.55, 3478.1), (529.54, 3477.87), (534.54, 3478.26), (537.53, 3478.51), (541.53, 3478.74), (552.51, 3478.91), (557.5, 3478.69), (561.5, 3478.37), (563.49, 3478.11), (568.49, 3477.76), (579.47, 3477.64), (582.47, 3477.89), (593.45, 3477.89), (597.44, 3478.14), (608.43, 3478.18), (619.41, 3478.41), (630.4, 3478.34), (641.38, 3478.62), (652.37, 3478.75), (657.36, 3478.54), (669.35, 3478.42), (676.34, 3478.63), (687.33, 3478.68), (698.31, 3478.51), (709.3, 3478.63), (720.28, 3478.8), (731.27, 3478.98), (742.26, 3479.09), (753.24, 3479.04), (764.23, 3479.2), (774.21, 3479.42), (785.2, 3479.55), (796.19, 3479.6), (804.18, 3479.82), (815.16, 3479.92), (819.16, 3480.17), (830.14, 3480.29), (841.13, 3480.31), (852.11, 3480.38), (863.1, 3480.55), (875.08, 3480.54), (886.07, 3480.61), (897.06, 3480.61), (908.04, 3480.71), (919.03, 3480.84), (927.02, 3480.9), (1027.0, 3482.0)]\"]]\n", + "bank_stations: [[\"['171.92', '201.27']\",\"['191.42', '222.45']\",\"['172.73', '204.26']\",\"['213.04', '234.76']\",\"['149.98', '167.51']\",...,\"['714.96', '861.95']\",\"['638.98', '857.97']\",\"['548.11', '682.78']\",\"['718.4', '796.3']\",\"['514.57', '652.37']\"]]\n", + "number_of_station_elevation_points: [[134,133,137,164,131,...,230,230,122,114,101]]\n", + "number_of_coords: [[6,4,5,5,7,...,5,4,5,5,5]]\n", + "flows: [[\"1.0\n", + "255.0\n", + "1540.0\n", + "9405.0\",\"1.0\n", + "255.0\n", + "1540.0\n", + "9405.0\",\"1.0\n", + "255.0\n", + "1540.0\n", + "9405.0\",\"1.0\n", + "255.0\n", + "1540.0\n", + "9405.0\",\"1.0\n", + "255.0\n", + "1540.0\n", + "9405.0\",...,\"1.0\n", + "1.0\n", + "1.0\n", + "1.0\",\"1.0\n", + "1.0\n", + "1.0\n", + "1.0\",\"1.0\n", + "1.0\n", + "1.0\n", + "1.0\",\"1.0\n", + "1.0\n", + "1.0\n", + "1.0\",\"1.0\n", + "1.0\n", + "1.0\n", + "1.0\"]]\n", + "profile_names: [[\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",...,\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\",\"10yr FIS\n", + "50yr FIS\n", + "100yr FIS\n", + "500yr FIS\"]]\n", + "geometry: [[010200000006000000BE4C8CE1A50523C1206B1025266F42419AC8EC697F0523C132F6A6E0286F42419A0006786A0523C17F92F0B1316F4241F0D4F7586A0523C13C43C669356F42418A5AA654500523C159EC2A60386F424133B5B753E50423C10A0FA39B316F4241,01020000000400000016D0FC12D70523C15084122A366F4241E79442B0770523C186A13776406F4241DAB89867470523C1B04E6AFA416F4241157F3194F90423C15BF0A5553B6F4241,0102000000050000008AF5EF3DD10523C185E9765B496F4241D1DFD6A4790523C13D297626526F42417349BC58490523C19953E3ED516F42417EDA28C81B0523C104EC1292496F4241417CFD2DF20423C155BDEBD1466F4241,010200000005000000FC7247C5D10523C1218ACB125C6F42418538B3607D0523C1CFECADD76F6F424144418C6F560523C199DFBBB2706F4241E59308061D0523C14394B776626F4241481EA709EA0423C1D703D9D55E6F4241,0102000000070000003B4C7E239A0523C170FC9E266D6F42412A7B5E8B870523C1148A9AEE786F4241F267D3497E0523C155BEE03B7F6F4241B1E51DA3520523C1C7AE0A64806F424177B850D30F0523C1E0B9EC9F7C6F4241B9769DA4F10423C1B8CB0908776F42412D6C0265B20423C1D74578A4776F4241,...,0102000000050000008A09B101460C23C17CAB3305367342412DA30C133E0A23C1BEF7F0341B734241DAC1C704960923C1AB66DF9610734241C71810A7FF0823C13D30972204734241622B728C880723C177CF00BAF5724241,010200000004000000FB552DF0210C23C12829C54D607342410FF4975B790923C182EB27853E734241EAB104AF3C0923C1176B4AC641734241AD573D4A570723C158C2304029734241,010200000005000000EEF043217E0B23C1830A685F7573424133FBEFAF780A23C14C14E6DC7A73424187CC4B9DA60923C1A9B2D98E5F73424117D0CA81690923C1C554CBA55A7342416F09108C6B0923C175CBA88F46734241,010200000005000000C1089CB40B0B23C1159AB7CEA673424106CF01A81A0A23C15C7FFC8A8F7342416180C58E370923C1992DFC3882734241B17690D0DB0823C1194EEDF56473424124F1636A910823C1CD36043B4D734241,010200000005000000A0EC58B27A0A23C1B0660763D473424126DCAAE5190A23C1327A5B9AE07342411DFA3EB5160923C1F1541AB9D87342417C1FCCEBD70823C1B0E03987AA734241330E7747C40823C17EE9A9139C734241]]\n", + "huc: [[\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\",...,\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\"]]\n", + "model_id: [[\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",...,\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\"]]\n", + "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "__index_level_0__: [[7042,7043,7044,7045,7046,...,7225,7226,7227,7228,7229]]\n" + ] + } + ], + "source": [ + "# Scenario I\n", + "# User Args\n", + "catalog_name = 'xs'\n", + "huc_num = 10120203\n", + "\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "tablename = f'huc_{huc_num}'\n", + "namespace = 'mip'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "print(iceberg_table.to_string(preview_cols=30))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "8b8254a1-dce8-42f0-8e38-87b0d1192760", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "river: large_string\n", + "reach: large_string\n", + "river_reach: large_string\n", + "river_station: double\n", + "river_reach_rs: large_string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: large_string\n", + "station_elevation_points: large_string\n", + "bank_stations: large_string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: large_string\n", + "profile_names: large_string\n", + "geometry: large_binary\n", + "huc: large_string\n", + "model_id: large_string\n", + "us_reach_id: large_string\n", + "us_network_to_id: large_string\n", + "ds_reach_id: large_string\n", + "ds_network_to_id: large_string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",...,\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\"]]\n", + "reach: [[\"45\",\"45\",\"45\",\"45\",\"45\",...,\"173\",\"173\",\"173\",\"173\",\"173\"]]\n", + "river_reach: [[\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",...,\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\"]]\n", + "river_station: [[12970.38,12672.1,12299.53,12153.37,11649.77,...,1595.506,1196.63,797.7532,398.8766,0]]\n", + "river_reach_rs: [[\"cottonwood_creek 45 12970.38\",\"cottonwood_creek 45 12672.1\",\"cottonwood_creek 45 12299.53\",\"cottonwood_creek 45 12153.37\",\"cottonwood_creek 45 11649.77\",...,\"south_fork_clear 173 1595.506\",\"south_fork_clear 173 1196.63\",\"south_fork_clear 173 797.7532\",\"south_fork_clear 173 398.8766\",\"south_fork_clear 173 0.0\"]]\n", + "thalweg: [[1441.132,1440.028,1435.111,1432.966,1430.307,...,1573.805,1570.469,1570.177,1569.928,1568.771]]\n", + "xs_max_elevation: [[1588.847,1669.48,1654.026,1558.699,1527.284,...,1786.711,1767.658,1763.571,1818.624,1873.877]]\n", + "left_reach_length: [[284.287,323.3077,227.909,360.3609,210.6718,...,401.7363,330.3242,391.7664,429.1667,0]]\n", + "right_reach_length: [[303.1325,369.12,136.7996,342.1801,217.7682,...,396.9099,438.9131,407.5078,364.8997,0]]\n", + "channel_reach_length: [[298.2864,372.5664,146.1611,503.6007,210.0612,...,398.8766,398.8766,398.8766,398.8766,0]]\n", + "ras_data: [[\"Type RM Length L Ch R = 1 ,12970.38,284.287,298.2864,303.1325\n", + "XS GIS Cut Line= 10\n", + " 2557013.62452871613905.405064322557170.01356711 1613144.049169\n", + "2557179.463565481613034.761952912557187.667479591612919.42676206\n", + "2557187.802633431612917.431333932557190.014987551612880.65587562\n", + "2557193.545626411612777.654764992557194.857639491612645.33335081\n", + "2557193.914288551612519.076795222557191.264243681612417.61287668\n", + "#Sta/Elev=194\n", + "8996.4271486.1168999.6651484.945 9009.751481.6349012.3051480.7349019.8341478.072\n", + "9029.9191474.7179040.0031471.7099050.0881468.0159057.7621465.1049060.1721464.198\n", + "9070.2571460.2889080.3411456.826 9088.941455.1989090.4251454.917 9100.511452.727\n", + "9103.2191452.4039110.5941451.4969120.6791450.4729130.763 1450.229140.8481449.938\n", + "9148.6771449.7829150.9321449.7419161.0171449.4439171.1011449.1259181.1861449.709\n", + "9187.5131449.774 9191.271449.8129194.1341449.8399201.3551449.9599211.4391449.922\n", + "9221.524 1450.199231.6081450.4949239.5921450.4839241.6931450.4759251.7771450.553\n", + "9261.8621451.0499271.946 1451.569282.0311451.5039285.0491451.3289286.0871451.265\n", + "9292.115 1450.9 9302.21450.8589312.2841450.7749322.3691450.3739330.5061450.322\n", + "9332.453 1450.349342.5381450.4939352.6221450.5529362.7071449.8589372.7911449.142\n", + "9375.9641448.9989382.8761448.817 9384.661448.841 9392.961448.9519403.0451449.256\n", + "9413.1291449.2399421.4211449.0479423.2141449.0229433.2981448.6999443.383 1449.3\n", + "9453.4671449.9689463.5521450.3829466.8781450.4069473.6361450.4379483.7211450.084\n", + "9493.8051450.313 9503.891450.3519512.3361450.3999513.9741450.4169524.0591450.226\n", + "9534.1431450.2029544.227 1450.399554.3121450.3999557.7931450.4069564.3961450.395\n", + "9574.4811450.2219584.5651450.199 9594.651450.1179603.2511449.8449604.7341449.797\n", + "9614.8191449.5739624.9031449.2749634.9881448.5759645.0721447.8959648.7081447.717\n", + "9655.1571447.4279665.241 1447.569675.3261447.676 9685.411447.5339694.165 1447.33\n", + "9695.4951447.2969705.5791446.9549715.6641446.6819725.7481446.8869735.8331446.944\n", + "9739.6231446.9839745.917 1447.039756.002 1447.039766.0861446.9499773.6781446.636\n", + "9776.1241446.4949786.0211446.6349795.9171446.7399797.9361446.6559805.8141446.378\n", + " 9815.711445.9549825.6071445.8099835.5041445.575 9845.41445.4169855.2971446.119\n", + "9865.1931446.894 9875.091446.7479883.3731445.9719884.9841445.8099894.866 1445.09\n", + "9896.6261445.0669904.7481444.9529914.6311446.6029924.5131445.3079934.3951443.526\n", + "9944.2781443.559 9954.161443.4459964.042 1443.569973.9241443.2379977.7911443.054\n", + " 99781443.0449983.807 1442.779993.6891442.084 99991441.571 100011441.378\n", + "10003.571441.13210010.011444.45910011.711445.33710013.441446.24710023.321454.194\n", + "10033.19 1456.4710037.841456.86310043.051457.32510052.911458.83210062.771460.466\n", + "10072.631462.36510077.581463.48410082.481464.59110092.341466.139 10102.21468.718\n", + "10112.061472.43610121.911476.67310131.771482.372 10140.91486.71610141.631487.069\n", + "10151.481492.71410161.321499.17210171.171505.26910177.83 1509.1310181.02 1510.98\n", + "10190.871517.24110200.721524.20110210.571529.88110220.411535.70610230.261541.737\n", + "10240.111547.268 10246.91550.70910249.961552.26810259.811557.01510269.661561.212\n", + "10273.231562.24710278.381563.776 10279.51564.10910289.351565.99310299.191567.332\n", + "10309.041567.87610318.881567.67110328.731565.63110338.58 1563.9210348.42 1563.27\n", + "10358.271563.71210368.111563.92410377.961564.78610379.291564.924 10387.81565.808\n", + "10397.651568.82410399.491569.15310407.491570.67410417.341573.67110427.191576.583\n", + "10437.031579.69510446.881580.83610456.721582.29110466.571583.43810476.41 1583.68\n", + "10480.531584.50110486.261585.64310496.11 1587.6910500.991588.847\n", + "#Mann= 13 , -1 , 0 \n", + "8996.427 0.035 0 9088.94 0.05 09187.513 0.035 0\n", + "9286.087 0.06 0 9384.66 0.035 09914.631 0.03 0\n", + "9977.791 0.05 010013.44 0.12 010077.58 0.035 0\n", + "10177.83 0.12 010278.38 0.035 010379.29 0.12 0\n", + "10480.53 0.035 0\n", + "Bank Sta=9914.631,10013.44\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,12672.1,323.3077,372.5664,369.12\n", + "XS GIS Cut Line= 10\n", + " 2557287.06202871613874.155064322557404.471304131613263.03441516\n", + "2557476.989646171612950.247379152557481.560806741612927.83306148\n", + "2557481.932942281612925.867987662557501.930132851612812.78317349\n", + "2557513.530362521612724.937654172557521.67234582 1612630.8707731\n", + "2557525.149238181612532.339724532557523.51763574 1612428.8570291\n", + "#Sta/Elev=188\n", + "9014.974 1564.519020.8471563.3889030.9041560.9069040.4921556.855 9040.96 1556.66\n", + "9051.0171551.9619061.0741547.3229071.1311539.7779081.1881531.6769088.7321523.734\n", + "9091.2441521.5199101.3011514.7229111.3581505.0389121.4151493.8269131.4721471.925\n", + "9136.973 1467.449141.5281463.8429151.5851457.4919161.6421454.4489171.6991453.282\n", + "9181.756 1454.889185.2141454.8839191.812 1454.59201.8691453.0079211.926 1450.38\n", + "9221.9831449.5499232.0391447.4079233.4551447.3179242.0961446.7999252.1531446.579\n", + " 9262.211446.3059272.2671446.5669281.695 1446.529282.3231446.515 9292.381446.515\n", + "9302.437 1446.049312.4941445.5149316.2161445.1149322.5511444.4339329.9361444.398\n", + "9332.6071444.3779342.6641444.3649352.7211445.8049362.7781446.8449372.8351446.533\n", + "9378.1771446.3459382.8911446.1839392.9481446.0189403.005 1445.919413.062 1445.87\n", + "9423.1191446.0769426.4181446.1479433.1751446.2729443.2321446.2069453.2891446.235\n", + "9463.3461446.4039473.4021446.4629474.6581446.4399483.4591446.2819493.5161446.047\n", + "9503.5731445.9719513.3921445.975 9513.631445.9759522.899 1445.759523.6861445.732\n", + "9533.7431445.612 9543.81445.6859553.8571445.7919563.9141445.998 9571.141446.223\n", + " 9573.971446.3149584.0271446.6699594.0841446.9349604.1411446.9949614.1981446.909\n", + "9619.3811446.9729624.2541447.0119634.3111447.0529637.2711447.026 9644.431446.996\n", + "9654.5741446.6029662.9571446.3439664.7191446.2769674.8631446.1459685.0081447.103\n", + "9695.1521447.1989703.7851447.5629705.2971447.6149715.4411447.7489725.586 1447.41\n", + " 9735.731446.3459744.6131445.4529745.8751445.3459756.0191445.2779766.1641444.929\n", + "9776.3081444.593 9785.441444.4119786.453 1444.399796.5971444.2119806.7421443.952\n", + "9816.8861443.5529826.2681443.4459827.0311443.4359837.1751443.045 9847.321442.712\n", + "9857.4641442.1039867.0961441.6469867.6091441.6179877.753 1441.889887.8981441.987\n", + "9898.042 1442.079907.923 1442.279908.1871442.2739918.3311441.6829928.4751441.859\n", + " 9938.621442.0559948.7511441.7269948.7641441.7259958.3551441.0869958.9051441.047\n", + "9968.9871440.2549977.0581440.0739979.0681440.028 9981.23 1440.15 9983.231440.266\n", + "9989.1121440.6149994.8531440.7569999.1391440.87910006.351440.98910009.171441.032\n", + "10019.191441.44810025.311441.24910029.221441.12210039.251445.66610046.781447.947\n", + "10049.271448.687 10059.3 1448.3610069.331449.83310079.35 1452.7610089.381454.956\n", + "10098.071456.006 10098.91456.123 10099.41456.18810109.35 1455.56 10119.31455.611\n", + "10129.261457.42610139.211458.30610149.161458.99110159.111460.44210166.111461.487\n", + "10169.071461.93610179.02 1464.6710186.681468.52210188.96 1469.6810198.851475.282\n", + "10208.751481.60210218.651488.73710228.541496.13310238.441504.14110248.34 1509.76\n", + "10253.741514.08710258.231517.68210268.131524.92710278.031534.054 10281.11536.538\n", + " 10287.91542.13310297.761549.95110307.611557.99410317.471565.18510327.331572.197\n", + "10337.191579.24310347.051585.504 10356.91592.38310366.76 1600.4110376.621606.408\n", + "10379.691608.89210386.471614.32510396.311620.80610406.161626.685 104161633.488\n", + "10425.851639.77410435.691645.09910445.541650.30610455.38 1655.710465.231660.954\n", + "10475.071665.69310476.051666.15110483.18 1669.48\n", + "#Mann= 7 , -1 , 0 \n", + "9014.974 0.035 09316.216 0.06 09513.392 0.035 0\n", + " 9938.62 0.03 010006.35 0.05 010039.25 0.12 0\n", + "10476.05 0.07 0\n", + "#XS Ineff= 2 , 0 \n", + " 9716.005 0 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9938.62,10039.25\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,12299.53,227.909,146.1611,136.7996\n", + "XS GIS Cut Line= 16\n", + " 2557535.24779261613918.048293492557639.174358991613468.19124465\n", + "2557659.220609351613370.060636922557683.373493861613274.19429828\n", + "2557727.511369281613120.553925662557735.40572159 1613081.3753766\n", + "2557738.736435691613051.186009912557738.897791651613049.19252947\n", + " 2557741.02184811613026.416694342557745.293586961613000.61611636\n", + "2557778.035496571612884.934559932557790.467898631612830.30736832\n", + "2557800.564067161612756.439908522557803.672983651612693.70734845\n", + "2557802.275557361612619.59424265 2557797.69423381612556.62741067\n", + "#Sta/Elev=189\n", + "8796.0531654.0268800.4951652.6918810.6381649.6818812.1561649.1938820.7811646.419\n", + "8830.9231642.9178841.0661639.5998851.2081636.5618853.1121635.8898861.3511633.015\n", + "8871.4931629.6028881.6361626.4658891.7781623.2968894.0691622.2378901.9211618.516\n", + "8912.0631614.1918922.2061610.5138932.3481607.5588935.0261606.7538942.4911604.455\n", + "8952.6331601.1418962.7761598.2488972.9181595.7138975.9821594.9968983.0611593.262\n", + "8993.2031590.5799003.3461587.4269013.4881584.3589016.9391583.4739023.6311581.758\n", + "9033.7731578.2889043.9161574.4189054.0581570.2279057.895 1568.329064.2011565.235\n", + "9074.3441557.8179084.4861547.4599094.6291541.6019098.8521538.8679104.7711534.571\n", + "9114.9141523.8349125.0561509.7549135.1991499.9929139.8081497.6449145.3411495.136\n", + "9155.4841489.6629165.6261483.5869175.7691468.5059180.7651460.6429185.9111451.301\n", + "9196.0541447.7489206.1961446.4869216.339 1445.199221.7221445.2089226.4811445.296\n", + "9236.6241445.0989246.766 1444.659256.9091444.1459257.7591444.1289263.2461443.982\n", + "9266.9961443.8699277.0781443.659 9287.161443.5369297.2421443.4129307.3241443.314\n", + "9308.9261443.3229317.4061443.3619327.4881443.239 9337.571443.2219347.6531443.148\n", + "9354.6061443.1439357.7351443.1239357.9161443.1149367.9271442.5269378.1211442.655\n", + "9384.7691442.9459388.316 1443.19393.103 1443.11 9398.511443.0999408.705 1442.97\n", + "9418.8991441.5229429.0931442.3039431.0391442.2129439.2881441.7999449.4821441.956\n", + "9456.7781442.0529459.7041442.1149467.6481442.0119469.995 1441.989480.2861441.749\n", + "9483.4631441.6589490.5771441.4549500.8691441.3319501.459 1441.33 9511.161441.267\n", + "9521.4511441.2999531.7421441.3399535.2691441.3859542.0331441.4529552.3241441.639\n", + "9562.6151441.908 9569.081441.6699572.9061441.5239583.1971441.4259593.4881441.445\n", + "9602.8911441.5569603.7791441.565 9614.071441.6159616.6331441.614 9624.21441.634\n", + "9634.2761441.7629644.0791441.6259644.352 1441.629654.4291441.2639656.5991441.175\n", + "9664.3851440.8359674.3081439.6399684.2311435.1119686.971 1435.339688.9711435.504\n", + "9694.138 14369704.0411437.0639711.8461437.7179713.9671437.9049715.7621437.808\n", + "9723.973 1437.27 9733.981437.7339737.9981437.9129744.1491438.4189754.4281439.416\n", + "9758.4161439.4939764.7071439.6549774.9861440.1179785.265 1440.639792.6681440.317\n", + "9795.5431440.2389805.8221440.4119816.1011440.118 9826.381440.0649826.9211440.055\n", + "9836.6591439.9159846.938 1438.859857.2171437.4459858.2241437.6289861.798 1438.32\n", + "9867.3651439.546 9877.51440.6839887.6341439.7489897.7681440.3159903.3021440.228\n", + "9907.9031440.1889914.2481439.9349917.972 1439.799927.9311439.625 9937.891439.473\n", + " 9947.851439.0819957.8091438.766 9962.261438.3159967.7681437.7159977.6761437.002\n", + "9977.7271436.9989987.6871437.0159988.8021436.8449997.5631435.48710007.431435.938\n", + "10010.53 1437.81 10017.31441.89810027.161442.61810037.031443.75310046.891449.367\n", + "10051.611453.19610056.751457.40710066.591462.82310076.441463.889 10077.51464.003\n", + "10086.281464.94910096.13 1470.4410105.971486.16410115.821489.21510125.671489.507\n", + "10125.74 1489.5410135.531493.99110145.391508.98410155.251515.44810165.111520.333\n", + "10174.971526.87810182.271531.31310184.831532.86810188.871535.676\n", + "#Mann= 7 , -1 , 0 \n", + "8796.053 0.035 09384.769 0.06 09483.463 0.035 0\n", + "9977.676 0.03 010010.53 0.035 0 10077.5 0.12 0\n", + "10182.27 0.035 0\n", + "#XS Ineff= 2 , 0 \n", + " 9634.593 0 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9977.676,10010.53\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,12153.37,360.3609,503.6007,342.1801\n", + "XS GIS Cut Line= 13\n", + "2558005.837845531613629.286573512558001.071123921613447.86874134\n", + "2558001.936595571613301.260953872558004.91408231 1613240.9687236\n", + "2558009.284893191613190.459930822558017.914136131613130.27051659\n", + "2558018.205822091613128.291901082558024.661629811613084.20905222\n", + "2558025.23134723 1613041.9582129 2558021.85871811613013.41343009\n", + "2558017.051115461612989.615294132557969.286263831612813.16956088\n", + "2557878.207862041612525.19673098\n", + "#Sta/Elev=147\n", + "9100.3271558.6999108.8191555.0969118.6651550.465 9128.511546.3879138.3561541.929\n", + "9148.2021537.2249158.0471533.0689167.8931529.0679177.7391525.6539187.584 1521.84\n", + " 9197.431517.8619207.2761513.0119217.1211508.6059226.9671504.5189236.8131500.944\n", + "9246.6581497.8529256.5041494.312 9266.351490.7979276.1951488.1899281.8071487.128\n", + "9286.0421486.3219295.8891485.0549305.7371483.2319315.5841481.1819325.4321478.986\n", + "9335.2791476.8729345.1261474.9639354.9741473.4839364.8211471.5219374.669 1469.3\n", + "9384.516 1467.29394.3641465.2289404.2111461.5549414.0581461.3349415.4771461.294\n", + "9423.9061461.0559428.4181459.7329430.1261459.2339433.7631458.1669443.6291452.886\n", + "9453.4951448.3489463.361 1444.939473.2271442.3299483.0931440.8549488.7831440.392\n", + "9492.9721440.0589502.8691439.6669512.7661439.4339515.2661439.3899522.6621439.258\n", + "9532.5591439.1019539.481 1439.199542.4771439.2239544.9891439.2519552.4471439.325\n", + "9562.4161439.0729572.3861438.4499582.3551433.7069592.325 1433.469600.2861433.061\n", + "9602.2861432.9679602.2951432.9669607.3681433.183 9612.271433.3989622.2441434.224\n", + "9632.2181435.6179642.1931436.8689646.8391437.095 9652.11437.339 9661.951437.471\n", + "9671.7991437.2269681.6481436.1739689.0931436.5159691.5091436.6369701.4061436.855\n", + "9711.3021436.9879717.8371436.6829721.2381436.5319731.2521436.5399741.2651436.546\n", + "9742.1161436.4639742.9681436.381 9751.411435.6539761.5681436.6819771.7251436.609\n", + "9781.8831436.7369782.9731436.8359792.0411437.5879802.1981437.9569812.3561438.299\n", + "9822.5131438.3259822.9781438.3239832.671 1438.239842.8281436.3659852.9861434.769\n", + "9862.9831437.1929863.1431437.2299873.3011437.3029883.4581437.3989893.6161436.822\n", + "9902.9881436.9459903.7731436.9519913.9311436.9969924.0881436.5099924.9121436.475\n", + "9934.3551436.1239940.4421436.2269944.6311436.2669954.9071436.6889965.1831436.605\n", + "9974.8021436.3349975.4591436.3149976.0031436.2789985.7351435.6419996.0111433.617\n", + "10006.291435.39510009.161435.43910016.561435.50710022.421437.23410026.841438.537\n", + "10037.111439.09510043.521439.13310047.391439.14410048.87 1439.1510057.671439.183\n", + "10067.941439.00710077.88 1440.1810078.22 1440.2310088.491441.97310098.771446.052\n", + "10109.05 1452.0410112.241454.09410119.321458.404 10129.61463.25510139.871467.458\n", + " 10146.61470.83910150.151472.85810160.431479.171 10170.71481.27910180.961486.683\n", + "10180.981486.69310191.251493.79610201.531499.66810211.811506.57610215.321508.435\n", + "10222.081511.70510226.941514.078\n", + "#Mann= 6 , -1 , 0 \n", + "9100.327 0.035 09415.477 0.06 09515.266 0.035 0\n", + "9976.003 0.03 010022.42 0.035 010048.87 0.12 0\n", + "Bank Sta=9976.003,10022.42\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,11649.77,210.6718,210.0612,217.7682\n", + "XS GIS Cut Line= 4\n", + "2558491.236043721613362.263242862558300.723085611612976.14609283\n", + "2558025.777306481612611.134230982557961.150826171612534.09331362\n", + "#Sta/Elev=149\n", + "9506.1761527.2849511.8241526.4519519.6191525.4329522.7191524.9299533.6141522.478\n", + "9542.604 1519.76 9544.511519.1989555.4051516.5989565.5891514.284 9566.31514.153\n", + "9577.1951512.603 9588.091510.3939588.5741510.2689598.9851507.4379609.8811504.865\n", + "9611.5591504.5889620.7761502.9729631.6711501.0859634.544 1500.579642.5661499.227\n", + "9653.4611496.5849657.5291495.3749664.3561493.2879675.2511487.8169680.5141485.129\n", + "9686.1471482.2459688.2431482.1819697.0421481.9119703.499 1481.489707.9371481.173\n", + "9718.8321475.7579726.4841474.0159729.7271473.2599740.6221471.8329749.4691470.431\n", + "9751.5181470.1229756.352 1469.49762.4131468.4949772.4541467.0679773.3081466.946\n", + "9784.2031465.4789795.0981463.7769795.4391463.7289805.993 1462.339813.6381461.388\n", + "9816.8891460.9889818.4241460.8049827.7841459.5869838.6791458.0019841.4091457.637\n", + "9849.5741456.5549860.4691455.2049864.3941454.7289871.3641453.779 9882.261452.831\n", + "9887.3791451.6869893.1551450.355 9904.051447.1079910.3641445.0749914.9451443.675\n", + "9915.6111443.463 9925.84 1440.219933.3491438.1149936.7351436.9349939.4831435.857\n", + "9948.918 1432.169950.9871431.6329961.1011431.1569967.7011431.3299973.2841431.357\n", + " 99781431.2659984.4151431.1419985.4671431.089 9997.651430.30710001.13 1430.33\n", + "10009.831430.32510017.841430.342 100221430.66110022.021430.663 10034.21437.179\n", + "10034.561437.23310046.381438.82810051.271437.39210058.561435.54910067.991435.717\n", + "10070.751435.67810082.931435.326 10084.71435.32410089.451435.39610095.111435.482\n", + "10101.411435.556 10107.31435.51610118.131436.35410119.481436.48110131.661435.154\n", + "10134.841435.18510143.841435.78710151.561436.26410156.031436.36410168.21 1436.64\n", + "10168.271436.64710180.391437.47410184.981437.57810192.581438.155 10201.71437.726\n", + "10204.761437.59310216.941437.49610218.411437.47610229.131437.20510235.131437.226\n", + "10241.311437.25810251.841437.05510253.491437.01910265.671437.22210268.551437.341\n", + "10277.861437.79910285.27 1438.1110290.041438.19610301.981438.37210302.221438.376\n", + "10314.411438.283 10318.71438.16510326.591438.04710335.411438.07410338.771438.116\n", + "10350.951438.09510352.12 1438.110363.141438.05110368.841438.00410375.321438.049\n", + "10385.551438.645 10387.51438.82110389.371438.99410393.711439.39510399.931440.086\n", + " 10401.71440.36610412.621442.30410417.321444.291 10425.31448.52410432.931453.957\n", + "10437.991457.69110448.541466.08910450.671467.66510463.361472.58810464.161472.801\n", + "10476.041475.49610479.771476.37510488.721480.09310494.271483.038\n", + "#Mann= 9 , -1 , 0 \n", + "9506.176 0.035 09688.243 0.06 09756.352 0.035 0\n", + "9813.638 0.05 09915.611 0.035 09939.483 0.05 0\n", + " 10034.2 0.12 010089.45 0.035 010389.37 0.12 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 10198.34 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9939.483,10034.2\n", + "Exp/Cntr=0.3,0.1\n", + "\",...,\"Type RM Length L Ch R = 1 ,1595.506,401.7363,398.8766,396.9099\n", + "XS GIS Cut Line= 11\n", + "2569866.855332031569170.360780212569930.926198271569166.69678087\n", + " 2570006.2559641 1569159.9022742570068.28737536 1569152.1884285\n", + "2570141.366381391569140.409234492570195.624875831569129.64314001\n", + "2570257.327370751569115.202519972570358.472903061569087.20764276\n", + "2570360.393819351569086.650793942570461.87762149 1569059.3065258\n", + "2570477.554173541569056.01259492\n", + "#Sta/Elev=87\n", + "9499.0231786.7119505.066 1783.769514.9191782.2499524.7731780.4139534.6261776.614\n", + " 9544.481773.2269554.3331770.7029563.1991768.4059564.1891768.1419574.0611765.398\n", + "9583.9331762.6119591.8091760.1999593.8061759.5879603.6781756.031 9613.551752.038\n", + "9623.4221746.9359633.2951742.4739638.8341738.601 9643.181735.6029653.0831729.608\n", + "9662.986 1727.939672.8891726.5149682.7911719.4619692.6941713.8439697.7821711.044\n", + "9701.3431709.0559702.6031708.3459712.5511702.0669722.4991696.6599732.4471691.508\n", + "9742.3951686.5139752.3431681.2889762.2921676.3699767.2171673.832 9772.241671.195\n", + "9775.3661669.6549782.2281666.2839792.2351661.6089802.2421656.835 9812.251652.599\n", + "9822.2571648.6719823.768 1648.129830.6821645.5589832.2741644.955 9842.351641.233\n", + "9852.4251637.243 9862.5 1632.499871.1661628.6879872.5761628.0669882.6511623.418\n", + "9892.7261617.2279894.0521616.5089902.8861611.9049913.0581608.0639913.8451607.623\n", + " 9923.231602.3369933.4031593.6629943.5751584.7739952.9751580.5029953.7471580.155\n", + "9963.9191576.4719969.9981574.8789974.0921573.8059984.2641573.8129992.1051573.817\n", + "9994.4361573.819 99991573.824 100011573.82610004.611573.82910014.761573.838\n", + "10024.921573.84510030.011573.84910031.961573.85110035.071573.85410045.231573.862\n", + "10055.381573.86910065.541573.87810072.141574.22610075.691574.48410077.981575.238\n", + "10085.841577.827 100961581.007 10106.11591.97110106.151592.02710114.121592.944\n", + "10116.181593.10110122.121593.023\n", + "#Mann= 3 , -1 , 0 \n", + "9499.023 0.12 09953.747 0.05 010085.84 0.06 0\n", + "Bank Sta=9953.747,10085.84\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1196.63,330.3242,398.8766,438.9131\n", + "XS GIS Cut Line= 12\n", + " 2569973.83429441569523.920553592570074.614466151569526.71344698\n", + "2570143.887681351569526.113518212570201.084971381569523.59966273\n", + "2570268.613317321569517.59688189 2570319.03802861569510.39962544\n", + "2570376.176272521569498.677135652570421.021740971569486.32491607\n", + "2570467.553377281569470.860472212570469.443049681569470.20538578\n", + "2570537.419084781569448.859015632570577.076295591569439.29613939\n", + "#Sta/Elev=87\n", + "9499.0441767.6589502.116 1767.12 9511.971765.3949521.8241764.0059531.6791762.473\n", + "9541.5331762.2149551.3871760.1399561.2411757.3799571.0961755.655 9580.951754.537\n", + "9590.8041753.1369597.9551752.0899599.8631751.7989600.6581751.6779610.5031748.984\n", + "9620.3491745.9329630.1941742.6639640.039 1738.999649.8841735.936 9659.731732.624\n", + "9669.1391729.1069669.5751728.9419679.4241725.5879689.2731721.8239689.3141721.807\n", + "9699.1221717.8429708.9711714.446 9718.821708.5269726.3921707.9369728.674 1707.76\n", + "9738.5451704.9649748.4171700.3479758.2881696.4319768.1591692.5399778.0311690.202\n", + "9787.9021687.1019794.186 1685.569797.7921684.6599807.7161682.208 9817.641679.506\n", + "9824.8451677.4339827.5641676.6749837.4881673.7199845.1221670.5129847.4331669.371\n", + "9857.4521664.1929867.4711655.9919877.4911645.0969884.4311642.052 9887.511640.739\n", + "9897.5291635.133 9903.451632.0249907.6091629.9819917.7781624.2799927.9471622.071\n", + "9928.6721620.5019938.1161598.7729948.2851584.6919949.9661582.642 9955.92 1575.44\n", + "9958.5821572.7479964.9871571.4319968.904 1570.649969.9971570.6229979.2261570.469\n", + "9989.548 1570.479997.754 1570.47 9999 1570.479999.873 1570.47 100011570.471\n", + "10010.151570.47110020.421570.47310030.011570.47210030.691570.47210032.081570.472\n", + "10040.961570.64610051.231575.051 10061.51581.59910066.671585.63410071.771589.385\n", + "10072.251589.46410081.871590.81110091.961591.04210102.05 1591.1410109.93 1597.35\n", + "10112.141599.32610113.04 1600.57\n", + "#Mann= 3 , -1 , 0 \n", + "9499.044 0.12 0 9955.92 0.05 010051.23 0.06 0\n", + "Bank Sta=9955.92,10051.23\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,797.7532,391.7664,398.8766,407.5078\n", + "XS GIS Cut Line= 12\n", + "2569950.142438951569685.925139022570048.453772321569708.27646943\n", + "2570115.47023832 1569725.82628252570193.948911681569749.71266599\n", + " 2570251.99762231569770.426299572570343.346052731569809.42124964\n", + "2570421.221551271569847.912041382570423.004423261569848.81833464\n", + " 2570514.30180711569894.483971712570612.319257981569939.66964625\n", + "2570723.795974861569986.118438442570882.17984215 1570045.6387451\n", + "#Sta/Elev=150\n", + "9499.0451760.1459499.8811759.9029508.9351757.2739519.0681754.2149529.2021751.713\n", + "9539.3361748.6779541.4281748.1389549.4691746.1769559.6031744.0319569.7371741.689\n", + " 9579.871739.9229582.9741739.3549590.0041738.1119599.8651734.969 9600.141734.879\n", + " 9610.361730.5419620.5811730.0769621.6271729.9839630.8011728.9819641.0211726.543\n", + "9651.2411724.7539658.2971723.8569661.4621723.4459669.1411722.1059671.7121721.657\n", + "9682.0541719.8129691.7891717.5489692.3951717.4179702.7371714.9969713.0781712.146\n", + " 9723.421706.8149723.947 1706.519733.7621701.7979744.1031700.8319751.1741697.386\n", + "9754.4991695.3579755.4771694.7319765.0121688.9169775.5251685.0939783.5411681.224\n", + "9786.0391679.9699796.5521674.9359807.0651669.6849811.6041667.5119812.8081666.939\n", + "9817.6981664.4899828.476 1658.919835.9611654.8019839.2541652.8619850.0321646.999\n", + "9860.1511641.408 9860.811641.0439871.5881635.7919882.367 1630.119884.3411629.338\n", + "9893.1451625.2479903.9231619.2569908.5311616.1559912.1321613.985 9914.771612.528\n", + "9925.8391608.4939930.464 1604.479936.9081599.1549947.9771582.9719952.002 1577.41\n", + "9959.0461573.7999969.9981570.3989970.1161570.361 9973.541570.1779981.1851570.177\n", + "9992.2541570.1779995.0781570.177 99991570.177 100011570.17710003.341570.177\n", + "10014.441570.17710016.431570.17710025.531570.177 100301570.17710036.631570.177\n", + "10037.771570.17710047.731570.17710050.04 1570.4110058.821571.29610059.11 1571.52\n", + "10063.54 1575.7510069.921581.70210080.451588.52110081.011588.79110092.111589.495\n", + "10101.791589.72110103.08 1589.7510103.211589.75310114.131591.30610124.451598.483\n", + "10125.051598.86810135.971605.57910146.891610.947 10147.21611.09110157.811616.286\n", + "10168.731621.33310169.941621.89110179.651626.65910190.57 1631.5910192.691632.637\n", + " 10201.51637.02410211.011641.64110212.391642.32710215.811643.96410223.131647.531\n", + "10233.871652.65710240.481656.144 10244.61658.30910251.821661.89310255.34 1663.64\n", + "10265.151668.30110266.081668.74410276.811673.79910287.551678.82310289.821679.919\n", + "10298.291683.95610309.031689.08610314.491691.50410319.76 1693.93 10330.51699.035\n", + "10331.781699.60910339.821703.274 10341.11703.85910351.681708.23710362.261712.604\n", + "10366.691714.48210372.841717.09110383.421721.60110393.561725.405 103941725.564\n", + "10404.581729.47410415.171733.58110420.431735.63510425.751737.71110436.33 1741.85\n", + "10446.911746.07410447.291746.21310451.211747.56210457.491749.72410468.071753.488\n", + "10474.161755.50210478.651756.95110489.231760.31310499.811763.26910500.981763.571\n", + "#Mann= 5 , -1 , 0 \n", + "9499.045 0.12 09952.002 0.05 010063.54 0.06 0\n", + "10251.82 0.12 010451.21 0.035 0\n", + "Bank Sta=9952.002,10063.54\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,398.8766,429.1667,398.8766,364.8997\n", + "XS GIS Cut Line= 12\n", + "2569757.246055221569959.51847817 2569814.56280451569980.11342874\n", + "2569885.318804391570008.405213072569967.552871981570045.55613195\n", + "2570028.083227011570076.09690963 2570137.49744321570138.27234724\n", + "2570203.802289011570181.144349242570205.433244961570182.30192545\n", + "2570271.536427261570225.492995912570395.693569811570299.81847222\n", + "2570510.975880571570362.558521342570641.118864671570426.59477915\n", + "#Sta/Elev=155\n", + "9499.0541818.6249499.0821818.5999509.6041811.2749514.1451809.4639520.1261806.754\n", + "9530.6481798.425 9541.171791.1249542.0451790.5769551.6921784.6629559.9581779.483\n", + "9562.2461778.0419569.0931774.3469572.9171772.2739583.5881766.4029594.2591760.056\n", + "9594.6121759.858 9604.931754.0739615.6011748.0139620.1311744.8979626.2731740.899\n", + "9636.1611737.4479636.9591737.1689644.7561732.3999647.8411730.4069658.7221725.227\n", + "9667.8691720.7379669.6041719.8449680.4851713.6669690.9821706.4799691.3671706.196\n", + "9702.2481695.765 9713.131690.7389714.0951690.2179724.0111684.4599726.3971683.834\n", + "9735.0761682.3229736.3131681.8299746.1931676.128 9757.311666.3259757.5111666.175\n", + "9768.426 1657.69 9778.711651.1559779.543 1650.79790.6591646.8449794.196 1645.95\n", + "9799.423 1644.559801.9871643.6269813.4141639.2439818.8171636.6979824.8411633.296\n", + "9836.268 1626.959838.2111625.8579847.6951621.2099857.6041616.6019859.1221616.027\n", + "9870.5481610.6839876.998 1607.349881.9751604.9199893.402 15989896.3921596.172\n", + "9904.8291591.4869915.7861585.8149916.2561585.5199920.0421582.4469927.9631575.781\n", + "9933.8611572.3789939.8081570.3929951.5661569.9399951.6531569.9399963.4991569.938\n", + " 9969.271569.9379969.9731569.9379975.3441569.9369986.9741569.9359987.1891569.935\n", + " 99991569.9339999.0361569.933 100011569.93310004.531569.93310010.971569.932\n", + "10022.111569.93110022.861569.93110030.02 1569.9310034.741569.92910039.681569.929\n", + "10046.621569.92810057.261570.30410058.511570.38710070.391570.57710074.84 1570.22\n", + "10079.961570.04210082.211570.123 10093.21573.386 10093.81573.53310101.141574.419\n", + "10105.381574.93110111.881578.69710116.971581.53210128.551588.59410130.561589.137\n", + "10140.141591.61510149.241592.07410151.721592.13210163.311592.19810167.921592.684\n", + "10174.891594.41510186.481606.578 10186.61606.66610198.061612.17810205.281613.909\n", + "10209.641614.92410221.231618.63710223.961619.68410224.671619.96410232.621623.076\n", + "10243.921627.03910243.931627.04110255.231631.18910263.951634.44410266.541635.437\n", + "10277.841639.73410283.97 1641.8810289.151643.63410300.461646.78610303.991647.778\n", + "10308.021648.80110311.761649.75110323.071652.70610324.011653.03710334.381656.457\n", + "10344.041659.59110345.681660.14810355.921663.39510356.971663.728 10364.71666.051\n", + "10368.031667.05410379.081669.78810386.321671.32510390.141672.087 10401.21673.664\n", + "10407.93 1674.3910412.261674.82310423.321675.67310429.541675.88210434.381675.954\n", + "10445.441676.05610451.161676.401 10456.51676.65710467.561676.32710472.771676.053\n", + "10478.62 1675.7210489.671675.48310494.381675.31510500.731675.10910500.96 1675.11\n", + "#Mann= 5 , -1 , 0 \n", + "9499.054 0.12 09927.963 0.05 0 10093.8 0.12 0\n", + "10101.14 0.06 010308.02 0.12 0\n", + "Bank Sta=9927.963,10093.8\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,0,0,0,0\n", + "XS GIS Cut Line= 10\n", + "2569556.392519861570394.849359422569690.133119311570435.64742042\n", + "2569933.359502841570513.352483592569991.295723561570529.88925296\n", + "2570034.571152841570540.58333442 2570036.52014131570541.03215952\n", + "2570079.734807231570551.962645572570137.595155541570569.73952895\n", + "2570271.679746921570618.656330962570506.19388341 1570711.2792319\n", + "#Sta/Elev=144\n", + " 9499.011873.8779499.997 1873.11 9510.341865.4919519.8111859.1689520.6841858.597\n", + "9531.0281851.5389541.3721844.9459551.7151838.6519551.9061838.5379562.0591832.394\n", + "9572.4031825.4559582.7461818.2339584.0011817.144 9593.091809.0379603.4341802.518\n", + "9613.7781798.3199616.0961796.5729624.121 1790.939634.4651782.8959638.8351779.932\n", + "9644.8351775.9999647.8251774.0819655.2231769.0939665.6121761.888 96761753.752\n", + "9678.6651751.7229686.389 1745.899696.7781737.5479707.1661729.8059709.5051728.147\n", + "9717.5551721.8049727.9431713.6179738.3321704.3349740.3461702.581 9748.72 1695.47\n", + "9759.1091687.0669769.4981678.4899771.1861677.0359779.8861668.8889790.2751656.492\n", + "9800.6631651.3149802.0261651.1179811.052 1649.729821.4411641.6849831.8291631.131\n", + "9832.866 1630.199842.2181621.7469852.6061613.9749862.995 1605.879863.706 1605.38\n", + "9873.3841598.7089883.7721591.4899894.1611584.9519894.1731584.9419894.5841584.605\n", + "9904.4461576.3069914.7321570.3419925.0181568.7719928.5891568.7729935.3031568.772\n", + "9945.5891568.7749954.4231568.775 9955.861568.7759963.6961568.7789966.0411568.779\n", + "9969.9961568.7799976.223 1568.789986.4051568.7829996.5871568.787 99991568.787\n", + " 100011568.78710002.381568.78710006.771568.78710016.97 1568.7910027.161568.793\n", + "10030.011568.79310037.361568.79210040.191568.79310045.581568.79710047.591568.798\n", + "10057.941568.79810068.291568.80110072.931569.66710078.641570.96310088.991575.078\n", + "10099.341579.42910104.831581.29110106.111581.70410109.751582.846 10120.31585.176\n", + "10130.841588.90610132.551589.29910141.381590.23110151.921590.69810160.091590.545\n", + "10162.46 1590.49 101731590.28310183.541591.69710187.341595.19910187.641595.475\n", + "10194.091601.85810204.631608.45410215.171612.18810215.181612.19310225.711617.106\n", + "10236.251620.31210242.721621.06410246.791621.32110248.831621.53910257.421622.471\n", + "10268.081623.748 10268.91623.86210278.731625.02710289.381625.88610294.681626.305\n", + "10300.031626.64810310.69 1627.510320.46 1628.8210321.341628.89910331.991628.687\n", + "10342.641628.81810346.241629.31910353.291630.36310363.951632.14610372.021632.802\n", + " 10374.61633.03610385.251633.84110386.531633.911 10395.91634.421 10397.81634.615\n", + "10406.561635.68510417.211636.91210423.581637.87410427.861638.61410438.511640.054\n", + "10449.171641.34110449.361641.37410459.821643.45610470.471644.98410475.131645.411\n", + "10481.121645.97310491.781646.60310500.911646.89710500.981646.905\n", + "#Mann= 5 , -1 , 0 \n", + " 9499.01 0.12 09904.446 0.05 010088.99 0.12 0\n", + "10187.34 0.06 010386.53 0.12 0\n", + "Bank Sta=9904.446,10088.99\n", + "Exp/Cntr=0.3,0.1\n", + "\n", + "LCMann Time=Dec/30/1899 00:00:00\n", + "LCMann Region Time=Dec/30/1899 00:00:00\n", + "LCMann Table=0\n", + "Chan Stop Cuts=-1\n", + "Use User Specified Reach Order=0\n", + "GIS Ratio Cuts To Invert=-1\n", + "GIS Limit At Bridges=0\n", + "Composite Channel Slope=5\"]]\n", + "station_elevation_points: [[\"[(8996.427, 1486.116), (8999.665, 1484.945), (9009.75, 1481.634), (9012.305, 1480.734), (9019.834, 1478.072), (9029.919, 1474.717), (9040.003, 1471.709), (9050.088, 1468.015), (9057.762, 1465.104), (9060.172, 1464.198), (9070.257, 1460.288), (9080.341, 1456.826), (9088.94, 1455.198), (9090.425, 1454.917), (9100.51, 1452.727), (9103.219, 1452.403), (9110.594, 1451.496), (9120.679, 1450.472), (9130.763, 1450.22), (9140.848, 1449.938), (9148.677, 1449.782), (9150.932, 1449.741), (9161.017, 1449.443), (9171.101, 1449.125), (9181.186, 1449.709), (9187.513, 1449.774), (9191.27, 1449.812), (9194.134, 1449.839), (9201.355, 1449.959), (9211.439, 1449.922), (9221.524, 1450.19), (9231.608, 1450.494), (9239.592, 1450.483), (9241.693, 1450.475), (9251.777, 1450.553), (9261.862, 1451.049), (9271.946, 1451.56), (9282.031, 1451.503), (9285.049, 1451.328), (9286.087, 1451.265), (9292.115, 1450.9), (9302.2, 1450.858), (9312.284, 1450.774), (9322.369, 1450.373), (9330.506, 1450.322), (9332.453, 1450.34), (9342.538, 1450.493), (9352.622, 1450.552), (9362.707, 1449.858), (9372.791, 1449.142), (9375.964, 1448.998), (9382.876, 1448.817), (9384.66, 1448.841), (9392.96, 1448.951), (9403.045, 1449.256), (9413.129, 1449.239), (9421.421, 1449.047), (9423.214, 1449.022), (9433.298, 1448.699), (9443.383, 1449.3), (9453.467, 1449.968), (9463.552, 1450.382), (9466.878, 1450.406), (9473.636, 1450.437), (9483.721, 1450.084), (9493.805, 1450.313), (9503.89, 1450.351), (9512.336, 1450.399), (9513.974, 1450.416), (9524.059, 1450.226), (9534.143, 1450.202), (9544.227, 1450.39), (9554.312, 1450.399), (9557.793, 1450.406), (9564.396, 1450.395), (9574.481, 1450.221), (9584.565, 1450.199), (9594.65, 1450.117), (9603.251, 1449.844), (9604.734, 1449.797), (9614.819, 1449.573), (9624.903, 1449.274), (9634.988, 1448.575), (9645.072, 1447.895), (9648.708, 1447.717), (9655.157, 1447.427), (9665.241, 1447.56), (9675.326, 1447.676), (9685.41, 1447.533), (9694.165, 1447.33), (9695.495, 1447.296), (9705.579, 1446.954), (9715.664, 1446.681), (9725.748, 1446.886), (9735.833, 1446.944), (9739.623, 1446.983), (9745.917, 1447.03), (9756.002, 1447.03), (9766.086, 1446.949), (9773.678, 1446.636), (9776.124, 1446.494), (9786.021, 1446.634), (9795.917, 1446.739), (9797.936, 1446.655), (9805.814, 1446.378), (9815.71, 1445.954), (9825.607, 1445.809), (9835.504, 1445.575), (9845.4, 1445.416), (9855.297, 1446.119), (9865.193, 1446.894), (9875.09, 1446.747), (9883.373, 1445.971), (9884.984, 1445.809), (9894.866, 1445.09), (9896.626, 1445.066), (9904.748, 1444.952), (9914.631, 1446.602), (9924.513, 1445.307), (9934.395, 1443.526), (9944.278, 1443.559), (9954.16, 1443.445), (9964.042, 1443.56), (9973.924, 1443.237), (9977.791, 1443.054), (9978.0, 1443.044), (9983.807, 1442.77), (9993.689, 1442.084), (9999.0, 1441.571), (10001.0, 1441.378), (10003.57, 1441.132), (10010.01, 1444.459), (10011.71, 1445.337), (10013.44, 1446.247), (10023.32, 1454.194), (10033.19, 1456.47), (10037.84, 1456.863), (10043.05, 1457.325), (10052.91, 1458.832), (10062.77, 1460.466), (10072.63, 1462.365), (10077.58, 1463.484), (10082.48, 1464.591), (10092.34, 1466.139), (10102.2, 1468.718), (10112.06, 1472.436), (10121.91, 1476.673), (10131.77, 1482.372), (10140.9, 1486.716), (10141.63, 1487.069), (10151.48, 1492.714), (10161.32, 1499.172), (10171.17, 1505.269), (10177.83, 1509.13), (10181.02, 1510.98), (10190.87, 1517.241), (10200.72, 1524.201), (10210.57, 1529.881), (10220.41, 1535.706), (10230.26, 1541.737), (10240.11, 1547.268), (10246.9, 1550.709), (10249.96, 1552.268), (10259.81, 1557.015), (10269.66, 1561.212), (10273.23, 1562.247), (10278.38, 1563.776), (10279.5, 1564.109), (10289.35, 1565.993), (10299.19, 1567.332), (10309.04, 1567.876), (10318.88, 1567.671), (10328.73, 1565.631), (10338.58, 1563.92), (10348.42, 1563.27), (10358.27, 1563.712), (10368.11, 1563.924), (10377.96, 1564.786), (10379.29, 1564.924), (10387.8, 1565.808), (10397.65, 1568.824), (10399.49, 1569.153), (10407.49, 1570.674), (10417.34, 1573.671), (10427.19, 1576.583), (10437.03, 1579.695), (10446.88, 1580.836), (10456.72, 1582.291), (10466.57, 1583.438), (10476.41, 1583.68), (10480.53, 1584.501), (10486.26, 1585.643), (10496.11, 1587.69), (10500.99, 1588.847)]\",\"[(9014.974, 1564.51), (9020.847, 1563.388), (9030.904, 1560.906), (9040.492, 1556.855), (9040.96, 1556.66), (9051.017, 1551.961), (9061.074, 1547.322), (9071.131, 1539.777), (9081.188, 1531.676), (9088.732, 1523.734), (9091.244, 1521.519), (9101.301, 1514.722), (9111.358, 1505.038), (9121.415, 1493.826), (9131.472, 1471.925), (9136.973, 1467.44), (9141.528, 1463.842), (9151.585, 1457.491), (9161.642, 1454.448), (9171.699, 1453.282), (9181.756, 1454.88), (9185.214, 1454.883), (9191.812, 1454.5), (9201.869, 1453.007), (9211.926, 1450.38), (9221.983, 1449.549), (9232.039, 1447.407), (9233.455, 1447.317), (9242.096, 1446.799), (9252.153, 1446.579), (9262.21, 1446.305), (9272.267, 1446.566), (9281.695, 1446.52), (9282.323, 1446.515), (9292.38, 1446.515), (9302.437, 1446.04), (9312.494, 1445.514), (9316.216, 1445.114), (9322.551, 1444.433), (9329.936, 1444.398), (9332.607, 1444.377), (9342.664, 1444.364), (9352.721, 1445.804), (9362.778, 1446.844), (9372.835, 1446.533), (9378.177, 1446.345), (9382.891, 1446.183), (9392.948, 1446.018), (9403.005, 1445.91), (9413.062, 1445.87), (9423.119, 1446.076), (9426.418, 1446.147), (9433.175, 1446.272), (9443.232, 1446.206), (9453.289, 1446.235), (9463.346, 1446.403), (9473.402, 1446.462), (9474.658, 1446.439), (9483.459, 1446.281), (9493.516, 1446.047), (9503.573, 1445.971), (9513.392, 1445.975), (9513.63, 1445.975), (9522.899, 1445.75), (9523.686, 1445.732), (9533.743, 1445.612), (9543.8, 1445.685), (9553.857, 1445.791), (9563.914, 1445.998), (9571.14, 1446.223), (9573.97, 1446.314), (9584.027, 1446.669), (9594.084, 1446.934), (9604.141, 1446.994), (9614.198, 1446.909), (9619.381, 1446.972), (9624.254, 1447.011), (9634.311, 1447.052), (9637.271, 1447.026), (9644.43, 1446.996), (9654.574, 1446.602), (9662.957, 1446.343), (9664.719, 1446.276), (9674.863, 1446.145), (9685.008, 1447.103), (9695.152, 1447.198), (9703.785, 1447.562), (9705.297, 1447.614), (9715.441, 1447.748), (9725.586, 1447.41), (9735.73, 1446.345), (9744.613, 1445.452), (9745.875, 1445.345), (9756.019, 1445.277), (9766.164, 1444.929), (9776.308, 1444.593), (9785.44, 1444.411), (9786.453, 1444.39), (9796.597, 1444.211), (9806.742, 1443.952), (9816.886, 1443.552), (9826.268, 1443.445), (9827.031, 1443.435), (9837.175, 1443.045), (9847.32, 1442.712), (9857.464, 1442.103), (9867.096, 1441.646), (9867.609, 1441.617), (9877.753, 1441.88), (9887.898, 1441.987), (9898.042, 1442.07), (9907.923, 1442.27), (9908.187, 1442.273), (9918.331, 1441.682), (9928.475, 1441.859), (9938.62, 1442.055), (9948.751, 1441.726), (9948.764, 1441.725), (9958.355, 1441.086), (9958.905, 1441.047), (9968.987, 1440.254), (9977.058, 1440.073), (9979.068, 1440.028), (9981.23, 1440.15), (9983.23, 1440.266), (9989.112, 1440.614), (9994.853, 1440.756), (9999.139, 1440.879), (10006.35, 1440.989), (10009.17, 1441.032), (10019.19, 1441.448), (10025.31, 1441.249), (10029.22, 1441.122), (10039.25, 1445.666), (10046.78, 1447.947), (10049.27, 1448.687), (10059.3, 1448.36), (10069.33, 1449.833), (10079.35, 1452.76), (10089.38, 1454.956), (10098.07, 1456.006), (10098.9, 1456.123), (10099.4, 1456.188), (10109.35, 1455.56), (10119.3, 1455.611), (10129.26, 1457.426), (10139.21, 1458.306), (10149.16, 1458.991), (10159.11, 1460.442), (10166.11, 1461.487), (10169.07, 1461.936), (10179.02, 1464.67), (10186.68, 1468.522), (10188.96, 1469.68), (10198.85, 1475.282), (10208.75, 1481.602), (10218.65, 1488.737), (10228.54, 1496.133), (10238.44, 1504.141), (10248.34, 1509.76), (10253.74, 1514.087), (10258.23, 1517.682), (10268.13, 1524.927), (10278.03, 1534.054), (10281.1, 1536.538), (10287.9, 1542.133), (10297.76, 1549.951), (10307.61, 1557.994), (10317.47, 1565.185), (10327.33, 1572.197), (10337.19, 1579.243), (10347.05, 1585.504), (10356.9, 1592.383), (10366.76, 1600.41), (10376.62, 1606.408), (10379.69, 1608.892), (10386.47, 1614.325), (10396.31, 1620.806), (10406.16, 1626.685), (10416.0, 1633.488), (10425.85, 1639.774), (10435.69, 1645.099), (10445.54, 1650.306), (10455.38, 1655.7), (10465.23, 1660.954), (10475.07, 1665.693), (10476.05, 1666.151), (10483.18, 1669.48)]\",\"[(8796.053, 1654.026), (8800.495, 1652.691), (8810.638, 1649.681), (8812.156, 1649.193), (8820.781, 1646.419), (8830.923, 1642.917), (8841.066, 1639.599), (8851.208, 1636.561), (8853.112, 1635.889), (8861.351, 1633.015), (8871.493, 1629.602), (8881.636, 1626.465), (8891.778, 1623.296), (8894.069, 1622.237), (8901.921, 1618.516), (8912.063, 1614.191), (8922.206, 1610.513), (8932.348, 1607.558), (8935.026, 1606.753), (8942.491, 1604.455), (8952.633, 1601.141), (8962.776, 1598.248), (8972.918, 1595.713), (8975.982, 1594.996), (8983.061, 1593.262), (8993.203, 1590.579), (9003.346, 1587.426), (9013.488, 1584.358), (9016.939, 1583.473), (9023.631, 1581.758), (9033.773, 1578.288), (9043.916, 1574.418), (9054.058, 1570.227), (9057.895, 1568.32), (9064.201, 1565.235), (9074.344, 1557.817), (9084.486, 1547.459), (9094.629, 1541.601), (9098.852, 1538.867), (9104.771, 1534.571), (9114.914, 1523.834), (9125.056, 1509.754), (9135.199, 1499.992), (9139.808, 1497.644), (9145.341, 1495.136), (9155.484, 1489.662), (9165.626, 1483.586), (9175.769, 1468.505), (9180.765, 1460.642), (9185.911, 1451.301), (9196.054, 1447.748), (9206.196, 1446.486), (9216.339, 1445.19), (9221.722, 1445.208), (9226.481, 1445.296), (9236.624, 1445.098), (9246.766, 1444.65), (9256.909, 1444.145), (9257.759, 1444.128), (9263.246, 1443.982), (9266.996, 1443.869), (9277.078, 1443.659), (9287.16, 1443.536), (9297.242, 1443.412), (9307.324, 1443.314), (9308.926, 1443.322), (9317.406, 1443.361), (9327.488, 1443.239), (9337.57, 1443.221), (9347.653, 1443.148), (9354.606, 1443.143), (9357.735, 1443.123), (9357.916, 1443.114), (9367.927, 1442.526), (9378.121, 1442.655), (9384.769, 1442.945), (9388.316, 1443.1), (9393.103, 1443.11), (9398.51, 1443.099), (9408.705, 1442.97), (9418.899, 1441.522), (9429.093, 1442.303), (9431.039, 1442.212), (9439.288, 1441.799), (9449.482, 1441.956), (9456.778, 1442.052), (9459.704, 1442.114), (9467.648, 1442.011), (9469.995, 1441.98), (9480.286, 1441.749), (9483.463, 1441.658), (9490.577, 1441.454), (9500.869, 1441.331), (9501.459, 1441.33), (9511.16, 1441.267), (9521.451, 1441.299), (9531.742, 1441.339), (9535.269, 1441.385), (9542.033, 1441.452), (9552.324, 1441.639), (9562.615, 1441.908), (9569.08, 1441.669), (9572.906, 1441.523), (9583.197, 1441.425), (9593.488, 1441.445), (9602.891, 1441.556), (9603.779, 1441.565), (9614.07, 1441.615), (9616.633, 1441.614), (9624.2, 1441.634), (9634.276, 1441.762), (9644.079, 1441.625), (9644.352, 1441.62), (9654.429, 1441.263), (9656.599, 1441.175), (9664.385, 1440.835), (9674.308, 1439.639), (9684.231, 1435.111), (9686.971, 1435.33), (9688.971, 1435.504), (9694.138, 1436.0), (9704.041, 1437.063), (9711.846, 1437.717), (9713.967, 1437.904), (9715.762, 1437.808), (9723.973, 1437.27), (9733.98, 1437.733), (9737.998, 1437.912), (9744.149, 1438.418), (9754.428, 1439.416), (9758.416, 1439.493), (9764.707, 1439.654), (9774.986, 1440.117), (9785.265, 1440.63), (9792.668, 1440.317), (9795.543, 1440.238), (9805.822, 1440.411), (9816.101, 1440.118), (9826.38, 1440.064), (9826.921, 1440.055), (9836.659, 1439.915), (9846.938, 1438.85), (9857.217, 1437.445), (9858.224, 1437.628), (9861.798, 1438.32), (9867.365, 1439.546), (9877.5, 1440.683), (9887.634, 1439.748), (9897.768, 1440.315), (9903.302, 1440.228), (9907.903, 1440.188), (9914.248, 1439.934), (9917.972, 1439.79), (9927.931, 1439.625), (9937.89, 1439.473), (9947.85, 1439.081), (9957.809, 1438.766), (9962.26, 1438.315), (9967.768, 1437.715), (9977.676, 1437.002), (9977.727, 1436.998), (9987.687, 1437.015), (9988.802, 1436.844), (9997.563, 1435.487), (10007.43, 1435.938), (10010.53, 1437.81), (10017.3, 1441.898), (10027.16, 1442.618), (10037.03, 1443.753), (10046.89, 1449.367), (10051.61, 1453.196), (10056.75, 1457.407), (10066.59, 1462.823), (10076.44, 1463.889), (10077.5, 1464.003), (10086.28, 1464.949), (10096.13, 1470.44), (10105.97, 1486.164), (10115.82, 1489.215), (10125.67, 1489.507), (10125.74, 1489.54), (10135.53, 1493.991), (10145.39, 1508.984), (10155.25, 1515.448), (10165.11, 1520.333), (10174.97, 1526.878), (10182.27, 1531.313), (10184.83, 1532.868), (10188.87, 1535.676)]\",\"[(9100.327, 1558.699), (9108.819, 1555.096), (9118.665, 1550.465), (9128.51, 1546.387), (9138.356, 1541.929), (9148.202, 1537.224), (9158.047, 1533.068), (9167.893, 1529.067), (9177.739, 1525.653), (9187.584, 1521.84), (9197.43, 1517.861), (9207.276, 1513.011), (9217.121, 1508.605), (9226.967, 1504.518), (9236.813, 1500.944), (9246.658, 1497.852), (9256.504, 1494.312), (9266.35, 1490.797), (9276.195, 1488.189), (9281.807, 1487.128), (9286.042, 1486.321), (9295.889, 1485.054), (9305.737, 1483.231), (9315.584, 1481.181), (9325.432, 1478.986), (9335.279, 1476.872), (9345.126, 1474.963), (9354.974, 1473.483), (9364.821, 1471.521), (9374.669, 1469.3), (9384.516, 1467.2), (9394.364, 1465.228), (9404.211, 1461.554), (9414.058, 1461.334), (9415.477, 1461.294), (9423.906, 1461.055), (9428.418, 1459.732), (9430.126, 1459.233), (9433.763, 1458.166), (9443.629, 1452.886), (9453.495, 1448.348), (9463.361, 1444.93), (9473.227, 1442.329), (9483.093, 1440.854), (9488.783, 1440.392), (9492.972, 1440.058), (9502.869, 1439.666), (9512.766, 1439.433), (9515.266, 1439.389), (9522.662, 1439.258), (9532.559, 1439.101), (9539.481, 1439.19), (9542.477, 1439.223), (9544.989, 1439.251), (9552.447, 1439.325), (9562.416, 1439.072), (9572.386, 1438.449), (9582.355, 1433.706), (9592.325, 1433.46), (9600.286, 1433.061), (9602.286, 1432.967), (9602.295, 1432.966), (9607.368, 1433.183), (9612.27, 1433.398), (9622.244, 1434.224), (9632.218, 1435.617), (9642.193, 1436.868), (9646.839, 1437.095), (9652.1, 1437.339), (9661.95, 1437.471), (9671.799, 1437.226), (9681.648, 1436.173), (9689.093, 1436.515), (9691.509, 1436.636), (9701.406, 1436.855), (9711.302, 1436.987), (9717.837, 1436.682), (9721.238, 1436.531), (9731.252, 1436.539), (9741.265, 1436.546), (9742.116, 1436.463), (9742.968, 1436.381), (9751.41, 1435.653), (9761.568, 1436.681), (9771.725, 1436.609), (9781.883, 1436.736), (9782.973, 1436.835), (9792.041, 1437.587), (9802.198, 1437.956), (9812.356, 1438.299), (9822.513, 1438.325), (9822.978, 1438.323), (9832.671, 1438.23), (9842.828, 1436.365), (9852.986, 1434.769), (9862.983, 1437.192), (9863.143, 1437.229), (9873.301, 1437.302), (9883.458, 1437.398), (9893.616, 1436.822), (9902.988, 1436.945), (9903.773, 1436.951), (9913.931, 1436.996), (9924.088, 1436.509), (9924.912, 1436.475), (9934.355, 1436.123), (9940.442, 1436.226), (9944.631, 1436.266), (9954.907, 1436.688), (9965.183, 1436.605), (9974.802, 1436.334), (9975.459, 1436.314), (9976.003, 1436.278), (9985.735, 1435.641), (9996.011, 1433.617), (10006.29, 1435.395), (10009.16, 1435.439), (10016.56, 1435.507), (10022.42, 1437.234), (10026.84, 1438.537), (10037.11, 1439.095), (10043.52, 1439.133), (10047.39, 1439.144), (10048.87, 1439.15), (10057.67, 1439.183), (10067.94, 1439.007), (10077.88, 1440.18), (10078.22, 1440.23), (10088.49, 1441.973), (10098.77, 1446.052), (10109.05, 1452.04), (10112.24, 1454.094), (10119.32, 1458.404), (10129.6, 1463.255), (10139.87, 1467.458), (10146.6, 1470.839), (10150.15, 1472.858), (10160.43, 1479.171), (10170.7, 1481.279), (10180.96, 1486.683), (10180.98, 1486.693), (10191.25, 1493.796), (10201.53, 1499.668), (10211.81, 1506.576), (10215.32, 1508.435), (10222.08, 1511.705), (10226.94, 1514.078)]\",\"[(9506.176, 1527.284), (9511.824, 1526.451), (9519.619, 1525.432), (9522.719, 1524.929), (9533.614, 1522.478), (9542.604, 1519.76), (9544.51, 1519.198), (9555.405, 1516.598), (9565.589, 1514.284), (9566.3, 1514.153), (9577.195, 1512.603), (9588.09, 1510.393), (9588.574, 1510.268), (9598.985, 1507.437), (9609.881, 1504.865), (9611.559, 1504.588), (9620.776, 1502.972), (9631.671, 1501.085), (9634.544, 1500.57), (9642.566, 1499.227), (9653.461, 1496.584), (9657.529, 1495.374), (9664.356, 1493.287), (9675.251, 1487.816), (9680.514, 1485.129), (9686.147, 1482.245), (9688.243, 1482.181), (9697.042, 1481.911), (9703.499, 1481.48), (9707.937, 1481.173), (9718.832, 1475.757), (9726.484, 1474.015), (9729.727, 1473.259), (9740.622, 1471.832), (9749.469, 1470.431), (9751.518, 1470.122), (9756.352, 1469.4), (9762.413, 1468.494), (9772.454, 1467.067), (9773.308, 1466.946), (9784.203, 1465.478), (9795.098, 1463.776), (9795.439, 1463.728), (9805.993, 1462.33), (9813.638, 1461.388), (9816.889, 1460.988), (9818.424, 1460.804), (9827.784, 1459.586), (9838.679, 1458.001), (9841.409, 1457.637), (9849.574, 1456.554), (9860.469, 1455.204), (9864.394, 1454.728), (9871.364, 1453.779), (9882.26, 1452.831), (9887.379, 1451.686), (9893.155, 1450.355), (9904.05, 1447.107), (9910.364, 1445.074), (9914.945, 1443.675), (9915.611, 1443.463), (9925.84, 1440.21), (9933.349, 1438.114), (9936.735, 1436.934), (9939.483, 1435.857), (9948.918, 1432.16), (9950.987, 1431.632), (9961.101, 1431.156), (9967.701, 1431.329), (9973.284, 1431.357), (9978.0, 1431.265), (9984.415, 1431.141), (9985.467, 1431.089), (9997.65, 1430.307), (10001.13, 1430.33), (10009.83, 1430.325), (10017.84, 1430.342), (10022.0, 1430.661), (10022.02, 1430.663), (10034.2, 1437.179), (10034.56, 1437.233), (10046.38, 1438.828), (10051.27, 1437.392), (10058.56, 1435.549), (10067.99, 1435.717), (10070.75, 1435.678), (10082.93, 1435.326), (10084.7, 1435.324), (10089.45, 1435.396), (10095.11, 1435.482), (10101.41, 1435.556), (10107.3, 1435.516), (10118.13, 1436.354), (10119.48, 1436.481), (10131.66, 1435.154), (10134.84, 1435.185), (10143.84, 1435.787), (10151.56, 1436.264), (10156.03, 1436.364), (10168.21, 1436.64), (10168.27, 1436.647), (10180.39, 1437.474), (10184.98, 1437.578), (10192.58, 1438.155), (10201.7, 1437.726), (10204.76, 1437.593), (10216.94, 1437.496), (10218.41, 1437.476), (10229.13, 1437.205), (10235.13, 1437.226), (10241.31, 1437.258), (10251.84, 1437.055), (10253.49, 1437.019), (10265.67, 1437.222), (10268.55, 1437.341), (10277.86, 1437.799), (10285.27, 1438.11), (10290.04, 1438.196), (10301.98, 1438.372), (10302.22, 1438.376), (10314.41, 1438.283), (10318.7, 1438.165), (10326.59, 1438.047), (10335.41, 1438.074), (10338.77, 1438.116), (10350.95, 1438.095), (10352.12, 1438.1), (10363.14, 1438.051), (10368.84, 1438.004), (10375.32, 1438.049), (10385.55, 1438.645), (10387.5, 1438.821), (10389.37, 1438.994), (10393.71, 1439.395), (10399.93, 1440.086), (10401.7, 1440.366), (10412.62, 1442.304), (10417.32, 1444.291), (10425.3, 1448.524), (10432.93, 1453.957), (10437.99, 1457.691), (10448.54, 1466.089), (10450.67, 1467.665), (10463.36, 1472.588), (10464.16, 1472.801), (10476.04, 1475.496), (10479.77, 1476.375), (10488.72, 1480.093), (10494.27, 1483.038)]\",...,\"[(9499.023, 1786.711), (9505.066, 1783.76), (9514.919, 1782.249), (9524.773, 1780.413), (9534.626, 1776.614), (9544.48, 1773.226), (9554.333, 1770.702), (9563.199, 1768.405), (9564.189, 1768.141), (9574.061, 1765.398), (9583.933, 1762.611), (9591.809, 1760.199), (9593.806, 1759.587), (9603.678, 1756.031), (9613.55, 1752.038), (9623.422, 1746.935), (9633.295, 1742.473), (9638.834, 1738.601), (9643.18, 1735.602), (9653.083, 1729.608), (9662.986, 1727.93), (9672.889, 1726.514), (9682.791, 1719.461), (9692.694, 1713.843), (9697.782, 1711.044), (9701.343, 1709.055), (9702.603, 1708.345), (9712.551, 1702.066), (9722.499, 1696.659), (9732.447, 1691.508), (9742.395, 1686.513), (9752.343, 1681.288), (9762.292, 1676.369), (9767.217, 1673.832), (9772.24, 1671.195), (9775.366, 1669.654), (9782.228, 1666.283), (9792.235, 1661.608), (9802.242, 1656.835), (9812.25, 1652.599), (9822.257, 1648.671), (9823.768, 1648.12), (9830.682, 1645.558), (9832.274, 1644.955), (9842.35, 1641.233), (9852.425, 1637.243), (9862.5, 1632.49), (9871.166, 1628.687), (9872.576, 1628.066), (9882.651, 1623.418), (9892.726, 1617.227), (9894.052, 1616.508), (9902.886, 1611.904), (9913.058, 1608.063), (9913.845, 1607.623), (9923.23, 1602.336), (9933.403, 1593.662), (9943.575, 1584.773), (9952.975, 1580.502), (9953.747, 1580.155), (9963.919, 1576.471), (9969.998, 1574.878), (9974.092, 1573.805), (9984.264, 1573.812), (9992.105, 1573.817), (9994.436, 1573.819), (9999.0, 1573.824), (10001.0, 1573.826), (10004.61, 1573.829), (10014.76, 1573.838), (10024.92, 1573.845), (10030.01, 1573.849), (10031.96, 1573.851), (10035.07, 1573.854), (10045.23, 1573.862), (10055.38, 1573.869), (10065.54, 1573.878), (10072.14, 1574.226), (10075.69, 1574.484), (10077.98, 1575.238), (10085.84, 1577.827), (10096.0, 1581.007), (10106.1, 1591.971), (10106.15, 1592.027), (10114.12, 1592.944), (10116.18, 1593.101), (10122.12, 1593.023)]\",\"[(9499.044, 1767.658), (9502.116, 1767.12), (9511.97, 1765.394), (9521.824, 1764.005), (9531.679, 1762.473), (9541.533, 1762.214), (9551.387, 1760.139), (9561.241, 1757.379), (9571.096, 1755.655), (9580.95, 1754.537), (9590.804, 1753.136), (9597.955, 1752.089), (9599.863, 1751.798), (9600.658, 1751.677), (9610.503, 1748.984), (9620.349, 1745.932), (9630.194, 1742.663), (9640.039, 1738.99), (9649.884, 1735.936), (9659.73, 1732.624), (9669.139, 1729.106), (9669.575, 1728.941), (9679.424, 1725.587), (9689.273, 1721.823), (9689.314, 1721.807), (9699.122, 1717.842), (9708.971, 1714.446), (9718.82, 1708.526), (9726.392, 1707.936), (9728.674, 1707.76), (9738.545, 1704.964), (9748.417, 1700.347), (9758.288, 1696.431), (9768.159, 1692.539), (9778.031, 1690.202), (9787.902, 1687.101), (9794.186, 1685.56), (9797.792, 1684.659), (9807.716, 1682.208), (9817.64, 1679.506), (9824.845, 1677.433), (9827.564, 1676.674), (9837.488, 1673.719), (9845.122, 1670.512), (9847.433, 1669.371), (9857.452, 1664.192), (9867.471, 1655.991), (9877.491, 1645.096), (9884.431, 1642.052), (9887.51, 1640.739), (9897.529, 1635.133), (9903.45, 1632.024), (9907.609, 1629.981), (9917.778, 1624.279), (9927.947, 1622.071), (9928.672, 1620.501), (9938.116, 1598.772), (9948.285, 1584.691), (9949.966, 1582.642), (9955.92, 1575.44), (9958.582, 1572.747), (9964.987, 1571.431), (9968.904, 1570.64), (9969.997, 1570.622), (9979.226, 1570.469), (9989.548, 1570.47), (9997.754, 1570.47), (9999.0, 1570.47), (9999.873, 1570.47), (10001.0, 1570.471), (10010.15, 1570.471), (10020.42, 1570.473), (10030.01, 1570.472), (10030.69, 1570.472), (10032.08, 1570.472), (10040.96, 1570.646), (10051.23, 1575.051), (10061.5, 1581.599), (10066.67, 1585.634), (10071.77, 1589.385), (10072.25, 1589.464), (10081.87, 1590.811), (10091.96, 1591.042), (10102.05, 1591.14), (10109.93, 1597.35), (10112.14, 1599.326), (10113.04, 1600.57)]\",\"[(9499.045, 1760.145), (9499.881, 1759.902), (9508.935, 1757.273), (9519.068, 1754.214), (9529.202, 1751.713), (9539.336, 1748.677), (9541.428, 1748.138), (9549.469, 1746.176), (9559.603, 1744.031), (9569.737, 1741.689), (9579.87, 1739.922), (9582.974, 1739.354), (9590.004, 1738.111), (9599.865, 1734.969), (9600.14, 1734.879), (9610.36, 1730.541), (9620.581, 1730.076), (9621.627, 1729.983), (9630.801, 1728.981), (9641.021, 1726.543), (9651.241, 1724.753), (9658.297, 1723.856), (9661.462, 1723.445), (9669.141, 1722.105), (9671.712, 1721.657), (9682.054, 1719.812), (9691.789, 1717.548), (9692.395, 1717.417), (9702.737, 1714.996), (9713.078, 1712.146), (9723.42, 1706.814), (9723.947, 1706.51), (9733.762, 1701.797), (9744.103, 1700.831), (9751.174, 1697.386), (9754.499, 1695.357), (9755.477, 1694.731), (9765.012, 1688.916), (9775.525, 1685.093), (9783.541, 1681.224), (9786.039, 1679.969), (9796.552, 1674.935), (9807.065, 1669.684), (9811.604, 1667.511), (9812.808, 1666.939), (9817.698, 1664.489), (9828.476, 1658.91), (9835.961, 1654.801), (9839.254, 1652.861), (9850.032, 1646.999), (9860.151, 1641.408), (9860.81, 1641.043), (9871.588, 1635.791), (9882.367, 1630.11), (9884.341, 1629.338), (9893.145, 1625.247), (9903.923, 1619.256), (9908.531, 1616.155), (9912.132, 1613.985), (9914.77, 1612.528), (9925.839, 1608.493), (9930.464, 1604.47), (9936.908, 1599.154), (9947.977, 1582.971), (9952.002, 1577.41), (9959.046, 1573.799), (9969.998, 1570.398), (9970.116, 1570.361), (9973.54, 1570.177), (9981.185, 1570.177), (9992.254, 1570.177), (9995.078, 1570.177), (9999.0, 1570.177), (10001.0, 1570.177), (10003.34, 1570.177), (10014.44, 1570.177), (10016.43, 1570.177), (10025.53, 1570.177), (10030.0, 1570.177), (10036.63, 1570.177), (10037.77, 1570.177), (10047.73, 1570.177), (10050.04, 1570.41), (10058.82, 1571.296), (10059.11, 1571.52), (10063.54, 1575.75), (10069.92, 1581.702), (10080.45, 1588.521), (10081.01, 1588.791), (10092.11, 1589.495), (10101.79, 1589.721), (10103.08, 1589.75), (10103.21, 1589.753), (10114.13, 1591.306), (10124.45, 1598.483), (10125.05, 1598.868), (10135.97, 1605.579), (10146.89, 1610.947), (10147.2, 1611.091), (10157.81, 1616.286), (10168.73, 1621.333), (10169.94, 1621.891), (10179.65, 1626.659), (10190.57, 1631.59), (10192.69, 1632.637), (10201.5, 1637.024), (10211.01, 1641.641), (10212.39, 1642.327), (10215.81, 1643.964), (10223.13, 1647.531), (10233.87, 1652.657), (10240.48, 1656.144), (10244.6, 1658.309), (10251.82, 1661.893), (10255.34, 1663.64), (10265.15, 1668.301), (10266.08, 1668.744), (10276.81, 1673.799), (10287.55, 1678.823), (10289.82, 1679.919), (10298.29, 1683.956), (10309.03, 1689.086), (10314.49, 1691.504), (10319.76, 1693.93), (10330.5, 1699.035), (10331.78, 1699.609), (10339.82, 1703.274), (10341.1, 1703.859), (10351.68, 1708.237), (10362.26, 1712.604), (10366.69, 1714.482), (10372.84, 1717.091), (10383.42, 1721.601), (10393.56, 1725.405), (10394.0, 1725.564), (10404.58, 1729.474), (10415.17, 1733.581), (10420.43, 1735.635), (10425.75, 1737.711), (10436.33, 1741.85), (10446.91, 1746.074), (10447.29, 1746.213), (10451.21, 1747.562), (10457.49, 1749.724), (10468.07, 1753.488), (10474.16, 1755.502), (10478.65, 1756.951), (10489.23, 1760.313), (10499.81, 1763.269), (10500.98, 1763.571)]\",\"[(9499.054, 1818.624), (9499.082, 1818.599), (9509.604, 1811.274), (9514.145, 1809.463), (9520.126, 1806.754), (9530.648, 1798.425), (9541.17, 1791.124), (9542.045, 1790.576), (9551.692, 1784.662), (9559.958, 1779.483), (9562.246, 1778.041), (9569.093, 1774.346), (9572.917, 1772.273), (9583.588, 1766.402), (9594.259, 1760.056), (9594.612, 1759.858), (9604.93, 1754.073), (9615.601, 1748.013), (9620.131, 1744.897), (9626.273, 1740.899), (9636.161, 1737.447), (9636.959, 1737.168), (9644.756, 1732.399), (9647.841, 1730.406), (9658.722, 1725.227), (9667.869, 1720.737), (9669.604, 1719.844), (9680.485, 1713.666), (9690.982, 1706.479), (9691.367, 1706.196), (9702.248, 1695.765), (9713.13, 1690.738), (9714.095, 1690.217), (9724.011, 1684.459), (9726.397, 1683.834), (9735.076, 1682.322), (9736.313, 1681.829), (9746.193, 1676.128), (9757.31, 1666.325), (9757.511, 1666.175), (9768.426, 1657.69), (9778.71, 1651.155), (9779.543, 1650.7), (9790.659, 1646.844), (9794.196, 1645.95), (9799.423, 1644.55), (9801.987, 1643.626), (9813.414, 1639.243), (9818.817, 1636.697), (9824.841, 1633.296), (9836.268, 1626.95), (9838.211, 1625.857), (9847.695, 1621.209), (9857.604, 1616.601), (9859.122, 1616.027), (9870.548, 1610.683), (9876.998, 1607.34), (9881.975, 1604.919), (9893.402, 1598.0), (9896.392, 1596.172), (9904.829, 1591.486), (9915.786, 1585.814), (9916.256, 1585.519), (9920.042, 1582.446), (9927.963, 1575.781), (9933.861, 1572.378), (9939.808, 1570.392), (9951.566, 1569.939), (9951.653, 1569.939), (9963.499, 1569.938), (9969.27, 1569.937), (9969.973, 1569.937), (9975.344, 1569.936), (9986.974, 1569.935), (9987.189, 1569.935), (9999.0, 1569.933), (9999.036, 1569.933), (10001.0, 1569.933), (10004.53, 1569.933), (10010.97, 1569.932), (10022.11, 1569.931), (10022.86, 1569.931), (10030.02, 1569.93), (10034.74, 1569.929), (10039.68, 1569.929), (10046.62, 1569.928), (10057.26, 1570.304), (10058.51, 1570.387), (10070.39, 1570.577), (10074.84, 1570.22), (10079.96, 1570.042), (10082.21, 1570.123), (10093.2, 1573.386), (10093.8, 1573.533), (10101.14, 1574.419), (10105.38, 1574.931), (10111.88, 1578.697), (10116.97, 1581.532), (10128.55, 1588.594), (10130.56, 1589.137), (10140.14, 1591.615), (10149.24, 1592.074), (10151.72, 1592.132), (10163.31, 1592.198), (10167.92, 1592.684), (10174.89, 1594.415), (10186.48, 1606.578), (10186.6, 1606.666), (10198.06, 1612.178), (10205.28, 1613.909), (10209.64, 1614.924), (10221.23, 1618.637), (10223.96, 1619.684), (10224.67, 1619.964), (10232.62, 1623.076), (10243.92, 1627.039), (10243.93, 1627.041), (10255.23, 1631.189), (10263.95, 1634.444), (10266.54, 1635.437), (10277.84, 1639.734), (10283.97, 1641.88), (10289.15, 1643.634), (10300.46, 1646.786), (10303.99, 1647.778), (10308.02, 1648.801), (10311.76, 1649.751), (10323.07, 1652.706), (10324.01, 1653.037), (10334.38, 1656.457), (10344.04, 1659.591), (10345.68, 1660.148), (10355.92, 1663.395), (10356.97, 1663.728), (10364.7, 1666.051), (10368.03, 1667.054), (10379.08, 1669.788), (10386.32, 1671.325), (10390.14, 1672.087), (10401.2, 1673.664), (10407.93, 1674.39), (10412.26, 1674.823), (10423.32, 1675.673), (10429.54, 1675.882), (10434.38, 1675.954), (10445.44, 1676.056), (10451.16, 1676.401), (10456.5, 1676.657), (10467.56, 1676.327), (10472.77, 1676.053), (10478.62, 1675.72), (10489.67, 1675.483), (10494.38, 1675.315), (10500.73, 1675.109), (10500.96, 1675.11)]\",\"[(9499.01, 1873.877), (9499.997, 1873.11), (9510.34, 1865.491), (9519.811, 1859.168), (9520.684, 1858.597), (9531.028, 1851.538), (9541.372, 1844.945), (9551.715, 1838.651), (9551.906, 1838.537), (9562.059, 1832.394), (9572.403, 1825.455), (9582.746, 1818.233), (9584.001, 1817.144), (9593.09, 1809.037), (9603.434, 1802.518), (9613.778, 1798.319), (9616.096, 1796.572), (9624.121, 1790.93), (9634.465, 1782.895), (9638.835, 1779.932), (9644.835, 1775.999), (9647.825, 1774.081), (9655.223, 1769.093), (9665.612, 1761.888), (9676.0, 1753.752), (9678.665, 1751.722), (9686.389, 1745.89), (9696.778, 1737.547), (9707.166, 1729.805), (9709.505, 1728.147), (9717.555, 1721.804), (9727.943, 1713.617), (9738.332, 1704.334), (9740.346, 1702.581), (9748.72, 1695.47), (9759.109, 1687.066), (9769.498, 1678.489), (9771.186, 1677.035), (9779.886, 1668.888), (9790.275, 1656.492), (9800.663, 1651.314), (9802.026, 1651.117), (9811.052, 1649.72), (9821.441, 1641.684), (9831.829, 1631.131), (9832.866, 1630.19), (9842.218, 1621.746), (9852.606, 1613.974), (9862.995, 1605.87), (9863.706, 1605.38), (9873.384, 1598.708), (9883.772, 1591.489), (9894.161, 1584.951), (9894.173, 1584.941), (9894.584, 1584.605), (9904.446, 1576.306), (9914.732, 1570.341), (9925.018, 1568.771), (9928.589, 1568.772), (9935.303, 1568.772), (9945.589, 1568.774), (9954.423, 1568.775), (9955.86, 1568.775), (9963.696, 1568.778), (9966.041, 1568.779), (9969.996, 1568.779), (9976.223, 1568.78), (9986.405, 1568.782), (9996.587, 1568.787), (9999.0, 1568.787), (10001.0, 1568.787), (10002.38, 1568.787), (10006.77, 1568.787), (10016.97, 1568.79), (10027.16, 1568.793), (10030.01, 1568.793), (10037.36, 1568.792), (10040.19, 1568.793), (10045.58, 1568.797), (10047.59, 1568.798), (10057.94, 1568.798), (10068.29, 1568.801), (10072.93, 1569.667), (10078.64, 1570.963), (10088.99, 1575.078), (10099.34, 1579.429), (10104.83, 1581.291), (10106.11, 1581.704), (10109.75, 1582.846), (10120.3, 1585.176), (10130.84, 1588.906), (10132.55, 1589.299), (10141.38, 1590.231), (10151.92, 1590.698), (10160.09, 1590.545), (10162.46, 1590.49), (10173.0, 1590.283), (10183.54, 1591.697), (10187.34, 1595.199), (10187.64, 1595.475), (10194.09, 1601.858), (10204.63, 1608.454), (10215.17, 1612.188), (10215.18, 1612.193), (10225.71, 1617.106), (10236.25, 1620.312), (10242.72, 1621.064), (10246.79, 1621.321), (10248.83, 1621.539), (10257.42, 1622.471), (10268.08, 1623.748), (10268.9, 1623.862), (10278.73, 1625.027), (10289.38, 1625.886), (10294.68, 1626.305), (10300.03, 1626.648), (10310.69, 1627.5), (10320.46, 1628.82), (10321.34, 1628.899), (10331.99, 1628.687), (10342.64, 1628.818), (10346.24, 1629.319), (10353.29, 1630.363), (10363.95, 1632.146), (10372.02, 1632.802), (10374.6, 1633.036), (10385.25, 1633.841), (10386.53, 1633.911), (10395.9, 1634.421), (10397.8, 1634.615), (10406.56, 1635.685), (10417.21, 1636.912), (10423.58, 1637.874), (10427.86, 1638.614), (10438.51, 1640.054), (10449.17, 1641.341), (10449.36, 1641.374), (10459.82, 1643.456), (10470.47, 1644.984), (10475.13, 1645.411), (10481.12, 1645.973), (10491.78, 1646.603), (10500.91, 1646.897), (10500.98, 1646.905)]\"]]\n", + "bank_stations: [[\"['9914.631', '10013.44']\",\"['9938.62', '10039.25']\",\"['9977.676', '10010.53']\",\"['9976.003', '10022.42']\",\"['9939.483', '10034.2']\",...,\"['9953.747', '10085.84']\",\"['9955.92', '10051.23']\",\"['9952.002', '10063.54']\",\"['9927.963', '10093.8']\",\"['9904.446', '10088.99']\"]]\n", + "number_of_station_elevation_points: [[194,188,189,147,149,...,87,87,150,155,144]]\n", + "number_of_coords: [[10,10,16,13,4,...,11,12,12,12,10]]\n", + "flows: [[\"7012.0\n", + "9628.0\n", + "4397.0\",\"7012.0\n", + "9628.0\n", + "4397.0\",\"7023.0\n", + "9643.0\n", + "4404.0\",\"7023.0\n", + "9643.0\n", + "4404.0\",\"7023.0\n", + "9643.0\n", + "4404.0\",...,\"12672.0\n", + "14408.0\n", + "11146.0\",\"12676.0\n", + "14413.0\n", + "11149.0\",\"12676.0\n", + "14413.0\n", + "11149.0\",\"12676.0\n", + "14413.0\n", + "11149.0\",\"12676.0\n", + "14413.0\n", + "11149.0\"]]\n", + "profile_names: [[\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",...,\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\",\" 100yr\n", + "100yrplus\n", + "100yrminus\"]]\n", + "geometry: [[01020000000A000000DCC40DDA3A7C37C1C81D669AFFD34441158974CC3B7C37C1AE2DED5389D3444146F790D13F7C37C1452D35C278D34441E898F396447C37C18B1BFA5367D34441B80D9AAC447C37C11E75D40667D3444142A7EA50467C37C1B7A3427B61D3444154180DB64B7C37C1F601C10852D3444108CBED9A537C37C10D7A7B4A3ED344412E431ACB5B7C37C1B3A385852BD34441AB9F60F0627C37C14BED4F7F1CD34441,01020000000A0000004872D21AEB7B37C14D3CD35BF2D3444158679F4AEE7B37C1E84367AD93D3444171D3C735EC7B37C1A8AE93D362D344412202723FEC7B37C18C8A70585FD34441D75E7B42EC7B37C1D11B8B0A5FD34441BF20B75DED7B37C1F8253A934DD344417223A566EF7B37C181D37F2140D3444161EAD7DBF27B37C1BD0072DE31D34441BC7474FDF77B37C1B457C01623D34441DBF935F5FE7B37C1B1EF66BB13D34441,010200000010000000FAE994329E7B37C145E29018F1D34441154092509B7B37C187687AD9AAD344410C8650789B7B37C1F363CB9B9BD34441D147A2419A7B37C1EEE261938CD34441BB146FB0967B37C12B570A5074D34441A3DEA6C8967B37C171B92B3B6ED34441713DD9AD977B37C10E82A6A169D344416BC676C1977B37C1BDF05D5469D3444162151D8C987B37C1455C22DF65D34441E4ACF8E2987B37C1A2E854E561D34441DACCF858967B37C116D885A44FD34441513DBA0D967B37C106494A1E47D344413CDDA2A9977B37C1CC0E77CD3BD34441194E83A99A7B37C105C1455D32D344417FB489B89F7B37C11148885F27D34441A8166B08A57B37C18CF643241ED34441,01020000000D00000081E7BFAA237B37C14D909050B7D34441A89EBD73307B37C18603D4739CD34441400ADC5F397B37C18F26A19886D34441BB72AB423C7B37C181EF85867DD3444110220F1E3E7B37C1B0871FDE75D344412834E74E3F7B37C188DD78A26CD3444151AB4F583F7B37C10CFDB4546CD34441C6A2322D407B37C185BE789065D344417891F5A6427B37C1BCC369415FD34441B6018E72457B37C12DF17F1C5BD34441C9E2D15F487B37C1CE910EB857D34441297A29B2617B37C1219EACF23ED3444137C899F18E7B37C1BD1796EE16D34441,0102000000040000008997E759A37A37C13E63F84D80D34441D534E274F47A37C15E8DD5CC4CD344414865EE775D7B37C1512D44171FD34441C6D1749A757B37C1CBA786A615D34441,...,01020000000B0000006DB260972D7837C1AEAA43CF65B844419B4B0CAF1A7837C1E9C31F4063B84441954B0C9C047837C1EAB00ADF5FB844411080A590F27737C1F5C5E2C55CB84441FB8EBB79DD7737C1C98FD7B858B844417E21A8F1CD7737C1A463D56955B844414AF2576BBC7737C1FD53D45251B8444148CF8BF69F7737C1FC5EB0F949B8444138A7996C9F7737C139BD00D549B84441F8B680D3827737C19E18F29142B844415145AA597E7737C12E823B9641B84441,01020000000C000000B9505A7AF77737C1C11CCF1B97B84441D5D07433D97737C191ED8B5B94B84441A700288CC47737C16CB2611792B84441077CF19EB37737C129F862EB8FB844419180C1D39F7737C1483A3FE78CB84441A7468D37917737C1C758283F8AB8444129029DE2807737C1F61083B486B84441C3DEBC43747737C13288BF7483B844414684DE55677737C1441DC0B07FB84441945FE3CF667737C1B9E691887FB8444115F7ABD8537737C1A9CDC6377AB844416235C299487737C1F9581B8C77B84441,01020000000C00000053178766F47737C164F197FBAFB8444163F593A2D57737C100F1F238B0B8444178A59C84C07737C1A292FBBAB0B84441E8788594A77737C122166AD2B1B84441D0A280F1947737C130733915B3B844417914E836777737C1C04D3305B6B84441ABD7988A5D7737C14F9E564EB9B84441FA91BAF35C7737C116498D62B9B84441C3ABFED13E7737C1F55C4851BDB84441F7A01CB61E7737C1A76BA5F7C0B84441EC20CD80FA7637C1B43DE361C4B844413AF60277C77637C1F2E42945C8B84441,01020000000C000000FB2166DE1C7837C19CBF6ACBDEB8444184CE3F750A7837C155A1980FE0B84441D485F98CF37737C15ABC220DE2B844416EC0E2A8D87737C1032A2100E5B8444140ED6BAAC47737C1DD67AEA5E7B84441C3407B16A07737C14EF92E78EDB844416BEB9B98897737C16C9375C5F1B844419B295309897737C1BFEC79E4F1B84441100DC095727737C1CFBD893FF6B84441005387D7487737C10F38B26AFDB84441BACECD79227737C1B1AD7F2303B9444142BCF496F77637C1881A2A9608B94441,01020000000A000000FF2FBA933D7837C1E47833F225B94441696EAA12137837C1A4A6E7D127B94441C39C9A8DC57737C105FB0DC02BB94441DA722E36B37737C1856581642CB944413A928A9DA57737C14CE31EA02CB9444176824F01A57737C10E068EA12CB944417AEF8569977737C1AE0EACE62CB94441FFA30004857737C141DE03BB2DB944418BC359E6597737C1C9577CCD30B944417AD9110C0E7737C1E9007B3A37B94441]]\n", + "huc: [[\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\",...,\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\"]]\n", + "model_id: [[\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",...,\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\"]]\n", + "us_reach_id: [[\"23597201\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "us_network_to_id: [[\"23597199\",\"None\",\"23597197\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"23597201\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597347\"]]\n", + "ds_network_to_id: [[\"None\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597345\"]]\n", + "__index_level_0__: [[19178,19179,19180,19181,19182,...,24403,24404,24405,24406,24407]]\n" + ] + } + ], + "source": [ + "# Scenario II\n", + "# User Args\n", + "catalog_name = 'xs'\n", + "huc_num = 17060305\n", + "\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "tablename = f'huc_{huc_num}'\n", + "namespace = 'mip'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "print(iceberg_table.to_string(preview_cols=30))" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "e10ffe0a-3811-4a48-9524-d55e3c26807a", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "river: large_string\n", + "reach: large_string\n", + "river_reach: large_string\n", + "river_station: double\n", + "river_reach_rs: large_string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: large_string\n", + "station_elevation_points: large_string\n", + "bank_stations: large_string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: large_string\n", + "profile_names: large_string\n", + "geometry: large_binary\n", + "huc: large_string\n", + "model_id: large_string\n", + "us_reach_id: large_string\n", + "us_network_to_id: large_string\n", + "ds_reach_id: large_string\n", + "ds_network_to_id: large_string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"1242\",\"1242\",\"1242\",\"1242\",\"1242\",...,\"1236\",\"1236\",\"1236\",\"1236\",\"1236\"]]\n", + "reach: [[\"15\",\"15\",\"15\",\"15\",\"15\",...,\"61\",\"61\",\"61\",\"61\",\"61\"]]\n", + "river_reach: [[\"1242,15\",\"1242,15\",\"1242,15\",\"1242,15\",\"1242,15\",...,\"1236,61\",\"1236,61\",\"1236,61\",\"1236,61\",\"1236,61\"]]\n", + "river_station: [[1645.9,1552.446,1458.841,1365.072,1271.617,...,725.2979,576.5005,427.703,231.8489,35.9949]]\n", + "river_reach_rs: [[\"1242 15 1645.9\",\"1242 15 1552.446\",\"1242 15 1458.841\",\"1242 15 1365.072\",\"1242 15 1271.617\",...,\"1236 61 725.2979\",\"1236 61 576.5005\",\"1236 61 427.703\",\"1236 61 231.8489\",\"1236 61 35.9949\"]]\n", + "thalweg: [[3550.146,3547.128,3543.629,3540.886,3537.79,...,3533.829,3531.006,3528.091,3525.665,3521.963]]\n", + "xs_max_elevation: [[3577.866,3562.288,3580.739,3569.751,3569.955,...,3587.055,3592.946,3565.975,3588.964,3583.562]]\n", + "left_reach_length: [[96.61742,96.73559,95.70554,94.16392,92.93386,...,151.7416,150.1448,198.9483,156.1958,0]]\n", + "right_reach_length: [[89.80285,90.02276,91.58722,92.05128,94.53484,...,139.8336,130.2688,186.9168,195.4554,0]]\n", + "channel_reach_length: [[93.45487,93.60503,93.76862,93.45487,93.45487,...,148.7975,148.7975,195.854,195.854,0]]\n", + "ras_data: [[\"Type RM Length L Ch R = 1 ,1645.9,96.61742,93.45487,89.80285\n", + "XS GIS Cut Line= 8\n", + "528894.279452703873971.621611987528907.966560143873946.488329754\n", + " 528925.01586739 873921.27277097528926.208395569 873919.66719427\n", + " 528948.49023709873885.841779061528972.766208581873836.497337306\n", + "528991.974043957873781.439473717529008.465616347 873712.3025376\n", + "#Sta/Elev=85\n", + "9939.9433565.3739944.636 3565.289946.6773565.0169950.3293564.4819956.0233562.989\n", + "9957.1313562.6999961.716 3561.11 9967.413558.7359967.5863558.6679968.5613558.316\n", + "9973.3763556.6879976.6553555.5799979.4123554.5829985.4473552.5949985.5823552.554\n", + "9989.947 3551.419991.4833551.0079994.5083550.4899997.5193550.146 99993550.156\n", + " 100013550.17710003.353550.234 10003.6 3550.2510009.583550.66310012.443550.833\n", + "10012.953550.88810015.573551.17110021.533551.94810021.563551.95110027.543551.831\n", + "10030.623551.68510033.533551.50210039.523551.507 10039.73551.502 10041.53551.458\n", + "10045.233551.39110050.593551.513 10050.83551.52310056.373551.82710061.913551.735\n", + "10061.953551.73510067.52 3551.8910073.093551.94810073.243551.94810078.663551.913\n", + "10084.243551.87410084.573551.87810089.813551.78510095.38 3551.3310095.893551.318\n", + " 10096.53551.32810100.73 3551.4210106.03 3551.510110.87 3551.6110111.323551.618\n", + "10116.623551.61310121.913551.37610126.053551.38510127.213551.406 10132.53551.669\n", + " 10137.8 3551.8810141.233553.033 10143.13553.61110148.393555.77510153.693558.897\n", + "10154.813559.54510157.083560.85410158.863561.722 101643562.68510169.143564.403\n", + "10174.283566.15410178.633567.54110179.423567.77110184.563569.051 10189.73570.504\n", + "10194.843571.85610199.983572.85910200.183572.89210205.123573.82610210.263574.735\n", + " 10215.43576.35310220.543577.12910221.723577.28210225.683577.80710225.893577.866\n", + "#Mann= 3 , 0 , 0 \n", + "9939.943 0.065 09989.947 0.04 010012.95 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 10026.37 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9989.947,10012.95\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1552.446,96.73559,93.60503,90.02276\n", + "XS GIS Cut Line= 8\n", + "528995.492298483874005.011416777529006.956371507873965.884739773\n", + "529007.476454129873963.953544789529024.844213126873907.219206723\n", + "529036.479831966873862.946674337529049.075311191873800.032525587\n", + " 529056.98887746873744.890768309529062.422368085873707.030186743\n", + "#Sta/Elev=83\n", + "9958.2283555.8889960.8453556.1439965.3693554.7539966.0563554.6179971.2663553.203\n", + "9976.4763551.1859981.6863549.0219983.1513548.7059986.8963548.0059987.5453547.907\n", + "9992.1073547.2179997.3173547.168 99993547.157 10001 3547.1410001.083547.139\n", + "10002.523547.12810007.753547.873 10010 3548.3610012.983549.00410018.163549.255\n", + "10018.213549.25710023.443549.08610028.673548.62510033.893548.38710035.243548.332\n", + "10039.123548.19310044.353548.14810049.58 3548.3510052.323548.42210054.813548.473\n", + "10060.043548.82310060.333548.81410065.213548.64610070.383548.63410070.783548.623\n", + "10075.553548.52710080.723548.32710085.893548.34410090.453548.35510091.063548.349\n", + "10096.233548.271 10101.43548.32710106.113548.43710106.563548.44610111.313548.733\n", + "10111.663548.75610116.763549.14710121.863549.31510126.96 3549.7410132.063549.646\n", + "10136.783549.66610137.163549.66410142.263550.17410147.363550.21810152.463550.027\n", + "10157.56 3550.110162.25 3550.0210162.663550.01710167.763549.85510170.273549.796\n", + "10172.833549.73210177.883549.56410182.93 3549.8110187.983549.65110193.043549.445\n", + "10194.383549.39710198.093549.23210203.143549.61410208.19 3550.1610213.243550.864\n", + "10218.293551.86610223.343552.58110225.983553.16410228.39 3553.6810229.583553.997\n", + "10233.443555.068 10238.53556.43410243.553557.723 10248.63559.01210253.653560.127\n", + " 10258.73561.51510263.753562.18910264.233562.288\n", + "#Mann= 3 , 0 , 0 \n", + "9958.228 0.065 09987.545 0.04 0 10010 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 10020.61 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9987.545,10010\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1458.841,95.70554,93.76862,91.58722\n", + "XS GIS Cut Line= 7\n", + "528939.960137047874200.795523874529100.822893173874025.728232764\n", + "529099.580756519873976.581178352529099.535324253873974.581694439\n", + " 529096.29245545 873887.78082598529098.715297006873749.681707554\n", + "529099.584481761873700.139198773\n", + "#Sta/Elev=143\n", + "9714.2233580.7399717.9773579.8719718.6993579.6989725.3673577.5819725.4893577.538\n", + " 9732.283574.8249732.757 3574.54 9739.07 3571.249740.1473570.608 9745.863567.194\n", + "9747.5373566.255 9752.653563.5169754.9273562.5489759.4413560.5079762.3173559.655\n", + "9766.2313558.2369769.706 3557.339773.0213556.5619777.0963555.7859779.8113555.284\n", + "9784.4863554.3979786.6023554.0559791.8763552.8179793.3923552.5119799.2663551.275\n", + "9800.182 3551.119806.656 3549.399806.9723549.3039813.7633548.0419814.0463548.018\n", + "9820.5533547.5899821.435 3547.539827.3433546.9769828.8253546.9169834.133 3546.75\n", + "9836.2153546.7379840.924 3546.559843.6053546.2729847.7143546.0259850.9953545.656\n", + "9854.5043545.0719858.3853544.7329861.2953544.3719865.7753544.0089868.0853543.956\n", + "9873.1643543.8639874.8753543.8029880.5543543.6399881.6653543.6299887.9443543.648\n", + "9888.456 3543.659895.2463543.7259895.3343543.7269902.0363543.9969902.7243544.016\n", + "9908.826 3543.829910.1143543.8489915.6173544.4249917.5043544.8069922.4073546.124\n", + "9924.8933547.0979929.1973548.7379932.2833550.4329935.9873551.5719939.6733552.412\n", + "9942.7783553.3389947.0633554.3479949.5683555.0749951.9743554.8669955.2033554.534\n", + "9960.2053551.9559965.2073548.9489970.2083546.657 9975.213545.2379980.2113544.921\n", + "9985.2133544.8819989.9993544.6019990.2153544.5889995.2163544.05910000.223543.943\n", + "10001.143544.04510003.143544.26810005.223544.505 100103544.83810010.223544.853\n", + "10015.23 3544.7810020.233544.85510025.233544.87210030.243544.88310035.243545.252\n", + "10040.243545.42410045.253545.74710050.253545.55110055.253544.99910057.653544.887\n", + "10060.263544.76810065.263544.90810070.273544.99410075.273545.48510080.273545.851\n", + "10085.283546.052 100903546.30210090.283546.31710095.283546.62510100.283546.704\n", + "10105.283546.51310110.283546.52510115.283546.58810120.283546.92810125.283546.947\n", + "10130.293546.76510135.29 3546.7610140.293546.75510145.293547.06310150.293547.783\n", + "10155.293547.99110158.843548.10310160.293548.14710165.29 3547.9210170.293547.729\n", + "10175.293547.45610180.293547.00810185.293547.05410190.293546.894 10195.33546.724\n", + " 10200.33546.661 10205.33546.686 10210.33547.078 10215.33547.468 10220.33548.114\n", + " 10225.33548.93310228.123549.435 10230.33549.821 10235.33550.456 10240.33551.019\n", + " 10245.33551.515 10250.33552.706 10255.33554.77510260.313556.81910265.313558.775\n", + "10270.313560.87510275.313562.78410277.673563.809\n", + "#Mann= 3 , 0 , 0 \n", + "9714.223 0.065 09989.999 0.04 0 10010 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 10027.45 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9989.999,10010\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1365.072,94.16392,93.45487,92.05128\n", + "XS GIS Cut Line= 9\n", + "529001.675946645874239.547311321529201.119119138874000.243455119\n", + "529191.763228342 873960.87840718529191.324142441873958.927201517\n", + "529176.948447131873901.361748397 529167.57804532873856.554701865\n", + " 529158.05513791873793.101931393529152.643961862873737.657823615\n", + "529148.104175694873691.142169438\n", + "#Sta/Elev=171\n", + " 9647.023563.8869648.3073563.4789649.6853563.0299656.1173560.4649656.1943560.432\n", + "9662.7033558.1199663.9263557.6469669.2113555.6599671.7363554.795 9675.723553.434\n", + "9679.5463551.9869682.2293550.7919687.3553548.3329688.7383547.8599695.1653545.559\n", + "9695.2473545.5479701.7563544.9819702.9753544.8179708.265 3545.259710.7853545.607\n", + "9714.7733546.1539718.5943546.9349721.2823546.8639726.4043546.4619727.7913546.156\n", + "9734.2143544.655 9734.33544.6369740.8093542.9979742.023 3542.659747.3183541.795\n", + "9749.8333541.6839753.8263541.6759757.6433541.6359760.3353541.5119765.4523541.152\n", + "9766.844 3541.099773.262 3540.899773.3533540.8939779.8623541.1129781.0723541.146\n", + "9786.371 3541.259788.8823541.239 9792.883541.1959796.6913541.2159799.3883541.248\n", + "9804.5013541.2759805.8973541.2969812.3113541.2489812.4063541.2469818.9153541.478\n", + " 9820.123541.6159825.4243542.536 9827.933542.7299831.9333542.515 9835.743541.977\n", + "9838.4423541.615 9843.553541.596 9844.953541.6189851.3593541.2389851.4593541.234\n", + "9857.9683541.9219859.169 3542.399864.4773544.5589866.9793545.8269870.9863547.686\n", + "9874.7883549.5619877.4953551.0959882.5983554.0469884.0043554.8289890.4083558.221\n", + "9890.5123558.2759897.0213561.3979898.2183561.903 9903.533564.4479906.027 3565.75\n", + "9910.0393567.5179913.8373568.7179916.548 3569.549921.6473569.6369923.0573569.751\n", + "9929.4563568.7129929.5663568.6979936.0743567.3589937.2663567.1569942.583 3565.97\n", + "9945.0763565.3729949.0923564.4179952.8863563.2369955.6013562.3529958.538 3561.26\n", + "9961.3583559.7489966.4983556.8949971.6373554.171 9974.193552.9459976.7763551.717\n", + "9981.9153548.2369987.0553544.938 99903543.6019992.1943542.6059995.8143541.533\n", + "9997.3333541.097 99993541.022 100013540.93910002.473540.88610007.623540.993\n", + "10012.783541.21510016.783541.27310017.933541.30110020.073541.42610023.093541.603\n", + "10028.24 3541.6910033.39 3541.3610037.42 3541.2810038.553541.268 10043.73541.463\n", + "10048.853541.73310054.013542.07610058.063542.12710059.163542.14410060.333542.228\n", + "10064.283542.53110069.393542.73510074.493542.813 10079.63543.04510082.063543.101\n", + "10084.713543.17410089.823543.06510094.933543.08710100.043543.56210105.143543.552\n", + "10106.113543.53110106.643543.51910110.213543.44310115.273543.28810120.32 3543.22\n", + "10125.383543.49610130.433543.58710135.493543.51210140.323543.56110140.553543.565\n", + " 10145.63543.50410150.663543.67510155.713543.83310160.773544.01810165.833544.206\n", + "10170.273544.47810170.883544.516 10175.93544.57910175.993544.57710180.933544.408\n", + "10185.953544.28910190.973544.219 101963543.96110201.02 3543.9410206.043544.246\n", + "10211.07 3544.6510216.093545.27810221.123546.11910225.983547.28410226.143547.322\n", + "10227.463547.68610231.163548.74110236.193550.20410241.213551.80610246.233553.363\n", + "10251.263554.99610256.283557.08310261.31 3559.4410266.333560.94910271.353562.239\n", + "10272.723562.722\n", + "#Mann= 3 , 0 , 0 \n", + " 9647.02 0.065 0 9990 0.04 010020.07 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 0 10029.07 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9990,10020.07\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,1271.617,92.93386,93.45487,94.53484\n", + "XS GIS Cut Line= 9\n", + "529096.402538124874226.630048841529291.136116724873965.340484001\n", + "529281.160512496873933.368848823529280.539923787873931.467567764\n", + "529260.458404757873869.366725214529246.694877774 873820.92953106\n", + " 529234.49263446873768.678213991529224.435840491 873713.88693098\n", + "529217.886055201 873678.20248317\n", + "#Sta/Elev=173\n", + "9639.6353546.8549641.4713547.1879644.7863547.6549649.8393546.3619651.0223545.987\n", + "9657.2583543.5499658.2063543.2469663.4933541.3719666.573 3540.869669.7293540.326\n", + " 9674.94 3540.119675.9653540.0439682.201 3539.59683.3073539.4389688.4373539.276\n", + "9691.6743539.2479694.6733539.2569700.0423539.0879700.9093539.0519707.1443539.027\n", + "9708.4093538.991 9713.383539.1129716.7763539.2819719.6163539.3889725.1433539.594\n", + "9725.8523539.6069732.0883539.755 9733.513539.6699738.3243539.4349741.8773539.355\n", + " 9744.563539.3379750.2453539.5739750.7963539.5799757.0313539.4249758.6123539.354\n", + "9763.267 3539.159766.9793539.0359769.5033538.9969775.3463539.0129775.7393539.019\n", + "9781.9753538.8329783.7133538.7929788.2113538.828 9792.083538.7759794.447 3538.64\n", + "9800.4473538.2119800.6823538.1979806.9183537.9789808.815 3537.949813.154 3537.86\n", + "9817.1823537.811 9819.39 3537.799825.5493537.8329825.6263537.8319831.862 3537.93\n", + "9833.9163538.3399838.0983539.2089842.2833539.8879844.3343540.1499850.5693540.613\n", + " 9850.65 3540.639856.805 3542.369859.0183542.5889863.0413542.9089867.3853543.112\n", + "9869.2773543.2649875.5133543.5279875.7523543.5369881.7493543.5859884.1193543.717\n", + "9887.9853544.2149892.4863544.779 9894.223545.0589900.4563546.0969900.8533546.156\n", + "9906.692 3546.589909.221 3546.629912.9283546.6589917.588 3546.749919.1643546.787\n", + " 9925.43547.2759925.955 3547.329931.6363548.0959934.3223548.3249937.8713548.203\n", + "9942.6893548.1899944.1073548.1219950.3433548.1569951.0563548.0299956.5793546.725\n", + "9959.4233545.8389962.8153544.9089965.5083543.7619968.4843543.1159973.7223541.401\n", + "9977.7163540.3719978.9593539.9879984.1973538.7089989.0873538.3729989.4353538.348\n", + "9994.5033538.1019994.672 3538.09 99993537.8319999.914 3537.79 100013537.805\n", + "10005.173537.87110010.423537.94210010.883537.95710015.683538.17610020.93 3538.36\n", + "10022.773538.31710026.193538.23610027.133538.21410031.443538.134 10036.73538.214\n", + "10041.95 3538.6210043.383538.65510047.213538.69710052.463538.54810057.723538.349\n", + "10059.633538.49210062.973538.76510066.273538.88310068.213538.94610073.413539.106\n", + "10077.093539.302 10078.63539.406 10083.83539.632 100893539.212 10094.23539.109\n", + "10095.383539.174 10099.43539.42910104.593539.71610109.793539.81710113.683540.055\n", + "10114.993540.11910116.623540.10610120.143540.08510125.283540.10510130.413539.754\n", + "10135.073539.57810135.553539.56510140.683539.72610145.823540.07610150.953540.192\n", + "10156.09 3540.0810157.053540.05210161.223539.88910166.353540.00310170.283540.116\n", + "10171.483540.12810176.563540.31410181.323540.22410181.643540.22410186.733540.473\n", + "10191.813540.92210196.893542.04510201.983543.28710207.063544.38410209.013544.794\n", + "10212.153545.51910217.233547.64610222.313549.83210225.993551.557 10227.43552.223\n", + "10232.48 3555.5210236.713557.93610237.563558.40810242.653560.37310247.733562.807\n", + "10252.813565.466 10257.9 356810262.273569.955\n", + "#Mann= 3 , 0 , 0 \n", + "9639.635 0.065 09989.087 0.04 010022.77 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9969.878 10029.06 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9989.087,10022.77\n", + "Exp/Cntr=0.3,0.1\n", + "\",...,\"Type RM Length L Ch R = 1 ,725.2979,151.7416,148.7975,139.8336\n", + "XS GIS Cut Line= 7\n", + "529405.410995461875042.252827398529301.519406822874883.885089681\n", + "529203.977137379874726.011445515529202.863384519874724.350254804\n", + "529187.979780465874701.015540011529164.169527918 874660.62754067\n", + "528943.574487675874457.566758506\n", + "#Sta/Elev=217\n", + " 9624.023567.6659629.327 3567.389629.7043567.3619635.6843566.9689638.4423566.905\n", + "9641.6643566.8819647.5583566.7739647.644 3566.779653.6243566.4169656.6733566.274\n", + "9659.6033566.2379665.5833566.0199665.789 3566.019671.563 3565.889674.9043565.754\n", + "9677.543 3565.559683.5233565.042 9684.023564.9829689.5033564.2069693.1353563.616\n", + "9695.4833563.2219701.4633562.256 9702.253562.1269707.4423561.5889711.3663561.167\n", + "9713.4223560.8689719.4023559.7859720.4813559.5759725.3823558.7049729.5973557.885\n", + "9731.362 3557.589737.3423556.7799738.712 3556.559743.3223555.6689747.8283554.889\n", + "9749.3023554.6239755.281 3553.719756.9433553.5049761.2613552.8499766.0593552.169\n", + "9767.2413552.0029773.2213551.4099775.1743551.2739779.2013551.058 9784.293550.691\n", + "9785.1813550.6369791.1613550.5629793.4053550.4299797.141 3550.16 9802.52 3549.99\n", + " 9803.123549.953 9809.13549.4579811.6363549.3939813.424 3549.349815.0523549.294\n", + "9820.9293549.2629821.0713549.2589826.8073548.8749830.5833548.4729832.6843548.303\n", + "9838.5613547.9239840.0963547.8529844.4393547.6119849.6083547.3259850.3163547.275\n", + "9856.1933545.7189859.1213544.1579862.0713542.3739867.9483539.2539868.6343538.831\n", + "9873.8253536.0489878.1463534.7139879.7033534.393 9885.583533.8299887.6593533.921\n", + "9891.4583534.2499897.1723534.9959897.3353535.0119903.2123534.9829906.6843535.076\n", + " 9909.093535.1679914.9673535.5439916.1973535.5729920.8443535.6279925.7093535.747\n", + "9926.7223535.7779932.5993535.7959935.2223535.8899938.4773536.0629944.3543535.968\n", + "9944.7353535.9659950.2313535.8599954.2473535.5829956.1093535.4539961.9863535.273\n", + " 9963.763535.3569967.8633535.5549973.2723535.2699973.7413535.2519977.7553535.315\n", + "9979.6183535.3459982.7853535.4489985.4963535.5529991.3733535.8759992.2983535.867\n", + " 9997.253535.791 9999 3535.79 100013535.80310001.683535.80810003.193535.747\n", + "10009.13 3535.3210010.973535.17910015.063535.22810020.273535.79510020.993535.838\n", + "10026.923535.66610028.683535.72110029.623535.75510030.433535.77610032.763535.837\n", + "10038.563535.79610039.473535.81210044.373535.94110049.313536.09510050.173536.124\n", + "10055.983536.14110059.16 3536.0710061.783536.03310067.583535.933 100693536.023\n", + "10073.393536.28910075.563536.35510077.833536.46210080.183536.43710084.633536.093\n", + "10087.563535.92910091.423535.65210094.943535.48610098.22 3535.3810102.333535.593\n", + "10105.013535.78910109.71 3536.1910111.813536.19310117.093535.88910118.613535.976\n", + "10124.483536.419 10125.43536.50510131.863537.726 10132.23537.85210138.993540.595\n", + "10139.24 3540.6610145.793540.37610146.623540.31610152.583540.15410154.013540.137\n", + "10159.383540.23110161.393540.27810166.183540.45110168.773540.67810172.973541.234\n", + "10176.153541.91210179.77 3542.9410183.543544.53610186.56 3545.8210190.923547.511\n", + "10193.363548.201 10198.33548.38410200.16 3548.4210205.683548.06110206.953547.822\n", + "10213.073546.65810213.753546.60410220.453546.27110220.543546.26610227.343545.856\n", + "10227.833545.84810234.143545.81310235.223545.82410240.933545.955 10242.63545.974\n", + "10247.733546.00910249.983545.98810254.523545.93810257.363545.93710261.323545.799\n", + "10264.753545.70310268.113545.64510272.133545.61110274.913545.63510279.513546.092\n", + "10281.713546.30110286.893547.292 10288.53547.80110294.283550.324 10295.33550.848\n", + "10301.663554.17910302.093554.41810308.893558.55110309.043558.62310315.693562.229\n", + "10316.423562.70310322.483566.34610323.813566.99410329.283569.69610331.193570.772\n", + "10336.07 3573.3710338.573574.66810342.873577.05510345.963578.51610349.663580.007\n", + "10353.34 3581.610356.463582.92710360.723584.49110363.263585.314 10368.13586.512\n", + "10370.053586.82210375.393587.055\n", + "#Mann= 3 , 0 , 0 \n", + " 9624.02 0.065 09977.755 0.04 010030.43 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9944.498 10060.43 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9977.755,10030.43\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,576.5005,150.1448,148.7975,130.2688\n", + "XS GIS Cut Line= 7\n", + "529575.760648519874884.549223147529481.701193254874788.105902128\n", + "529340.709909569874655.622377299529308.019624803874622.156504385\n", + "529306.846605174874620.536620133529286.260644916874599.150820695\n", + "528993.921709903874402.011202961\n", + "#Sta/Elev=222\n", + "9624.0323592.1739626.8943592.3779628.7023592.6439633.8783592.8039635.8633592.946\n", + "9640.8623592.7149643.0243592.6389647.8473591.8669650.1853591.6179654.8313591.228\n", + "9657.3473591.2529661.8153591.1429664.5083591.1719668.7993591.1029671.6693591.313\n", + "9675.7843591.689 9678.833591.8159682.7683592.2289685.9913592.5369689.7523592.653\n", + "9693.1533592.4059696.7363591.6319700.3143590.741 9703.723590.0389707.4753589.124\n", + "9710.7053588.4529714.6363587.9589717.689 3587.539721.7983587.2279724.6733587.044\n", + "9728.9593586.8449731.6573586.754 9736.123586.4459738.642 3586.359743.2813585.914\n", + "9745.6263585.5999750.4433584.926 9752.613584.5989757.6043583.6059758.7483583.361\n", + "9759.6333583.1449764.5133581.7099766.9343580.9339771.3743579.2979774.2363578.295\n", + "9778.2353576.7989781.5383575.5489785.0963574.0639788.8393572.5929791.9573571.255\n", + "9796.1413569.6739798.8183568.5899803.4433566.7229805.6793565.7789810.7443563.372\n", + " 9812.543562.4919818.0463559.9079819.4013559.2429825.3473556.2089826.2623555.787\n", + "9832.649 3552.939833.1233552.7089839.9513549.9629839.9843549.9489846.8453547.682\n", + "9847.2523547.5499853.7063545.6149854.5543545.5229860.5673544.7849861.856 3544.76\n", + "9867.4283544.7749869.1573544.6859874.2893543.6469876.4593542.8599881.1513541.816\n", + "9883.7613541.4779888.012 3541.349891.0623541.3049894.8733541.1829898.3643540.944\n", + "9901.7343540.3729905.6663539.7179908.5953538.8429912.967 3537.099915.4563536.276\n", + "9920.2693533.9199922.317 3533.14 9927.573531.9459929.178 3531.679934.8723531.449\n", + "9936.0393531.4469942.1743531.391 9942.93531.3629949.4753531.2059949.7613531.196\n", + "9952.2173531.2119956.5823531.1939956.8113531.1869963.572 3531.129963.9663531.121\n", + "9970.5613532.1279971.079 3532.199971.1223532.1959977.5513532.3039978.2773532.347\n", + "9984.5413532.3679985.4333532.357 9991.533532.3559992.5883532.378 9998.523532.197\n", + " 9999 3532.169999.8863532.086 10001 3532.0110005.213531.74910007.273531.789\n", + "10012.15 3532.1910014.483532.427 10019.13532.63110021.693532.57510026.043532.533\n", + " 10028.93532.51610030.683532.46610033.643532.40110035.223532.35510038.653531.949\n", + "10041.253531.64110042.583531.60510047.283531.56410051.523531.79910053.313531.916\n", + "10059.343531.25810060.473531.20710065.373531.00610069.413531.431 10071.43531.696\n", + "10077.433532.50410078.353532.66610083.463533.00810087.293532.838 10089.53532.709\n", + "10095.533531.86510096.243531.77910101.563531.46810105.183531.62810107.593532.032\n", + "10113.623534.19910114.123534.45510119.653537.60910123.073539.03910125.683539.494\n", + "10131.713539.70310132.013539.70710137.743539.67710140.953539.72910143.773539.729\n", + " 10149.83538.93110149.893538.91710155.833538.20110158.843538.11210161.863538.053\n", + "10167.783537.80310167.893537.79710173.923537.89110176.723537.94510179.963537.971\n", + "10185.673537.80710185.993537.80610192.023538.50810194.613538.88510198.053539.558\n", + "10203.553540.81710204.083540.91410210.113542.14510212.493542.81910216.143544.081\n", + "10221.443546.75110222.173547.079 10228.23547.97710230.383547.74210234.233547.056\n", + "10239.32 3545.6210240.263545.37310246.293544.64410248.273544.61210252.323544.631\n", + "10257.21 3544.6810258.35 3544.710264.383544.81110266.153544.77810270.423544.562\n", + "10275.093544.15110276.453544.05310282.483543.72410284.043543.71210288.51 3543.85\n", + "10292.98 3544.3910294.543544.62710300.573545.89510301.923546.326 10306.63547.999\n", + "10310.873550.08910312.633550.87510318.663553.76910319.813554.32310324.693556.503\n", + "10328.753558.38710330.723559.27210336.753561.66710337.693562.00510342.783563.541\n", + "10346.643564.98710348.813565.73610354.84 3567.5710355.583567.80610360.883568.995\n", + "10364.523569.08110366.913569.02310372.94 3568.9210373.47 3568.8610378.973568.234\n", + "10382.413567.25410383.283566.953\n", + "#Mann= 3 , 0 , 0 \n", + "9624.032 0.065 09971.079 0.04 010038.65 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9948.735 10064.77 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9971.079,10038.65\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,427.703,198.9483,195.854,186.9168\n", + "XS GIS Cut Line= 9\n", + "529658.080554807874618.768312156529655.736253011874617.592208416\n", + "529569.605152394 874579.93999139529420.726571074874521.247015554\n", + "529381.078011687874500.914201135529379.340527011874499.923672488\n", + "529336.012479558874477.222474185529159.993883578874397.186279567\n", + "529096.352265451874363.593741251\n", + "#Sta/Elev=175\n", + "9697.7873565.9759698.4373565.899 9700.413565.837 9700.643565.8279703.9423565.534\n", + "9709.3993564.7619713.123 3564.149714.8563563.8199720.3133562.3059725.6063560.699\n", + " 9725.773560.6689731.2273559.8399736.6833558.5149738.0893558.172 9742.143557.659\n", + "9747.5973556.5249750.5723555.8489753.054 3555.269758.5113554.0619763.0553552.928\n", + "9763.9683552.6779769.4253551.5619774.8823550.5729775.5373550.4649780.3383549.696\n", + "9785.7953548.981 9788.023548.6479791.2523548.1939794.4123547.6929796.6743547.228\n", + "9801.0643546.6539802.0493546.5359807.423 3545.989812.7983545.4179814.6973545.206\n", + "9818.1723544.8239823.5473544.436 9828.333544.1639828.921 3544.129834.2963543.789\n", + "9839.6713543.5449841.9633543.4249845.0453543.278 9850.423543.2359855.5963542.862\n", + "9855.7943542.8519861.1693542.4519866.5433542.1049869.2283541.9059871.918 3541.92\n", + "9877.2923542.1659882.6673541.7929882.8613541.7849888.0413541.4489893.4163541.353\n", + "9896.4943541.213 9898.793541.1239904.1653541.0629909.5393541.1039910.1273541.108\n", + "9914.9143541.1489920.2883540.993 9923.763540.9919925.6633540.9169931.0373540.187\n", + "9936.412 3539.849937.3933539.7779941.7873539.5369947.1613539.7699951.0253539.812\n", + "9952.5363539.7959954.4423539.4569958.068 3538.949962.6533537.8569963.6873537.435\n", + "9969.3063533.789 9973.613531.5989974.9253530.9059980.545 3530.279984.5683529.666\n", + "9986.1643529.3799986.2283529.3679991.7833528.3539995.525 3528.399997.4023528.394\n", + " 99993528.416 100013528.46910003.083528.55610006.223528.93610008.723529.292\n", + "10014.373529.414 100173529.25710020.013529.01610025.663528.57710027.773528.447\n", + " 10031.33528.32210036.953528.36310038.543528.53210042.593528.88810048.243529.045\n", + "10049.323528.98710049.913528.938 10051.73528.78610053.773528.61110059.273528.091\n", + "10061.323528.14710064.763528.60110070.253530.449 10073.43531.52410075.743532.043\n", + "10081.243532.43310085.48 3532.2810086.733532.20410092.223531.80410097.563531.795\n", + "10097.713531.79810103.213531.877 10108.73532.02810109.643532.16610114.193533.046\n", + "10119.683534.49810121.723534.55710125.183534.28210130.673534.254 10133.83534.279\n", + "10136.163534.25610141.663534.01710145.883533.53210147.153533.35310152.643532.693\n", + "10157.963532.71610158.133532.72210163.633533.26310169.123534.58510170.043534.653\n", + "10174.613535.112 10180.13535.31110182.123535.352 10185.63535.39310191.093535.432\n", + " 10194.23535.49810196.583535.56310202.073536.58110206.28 3537.7410207.573538.073\n", + "10213.063539.63310218.363541.64110218.553541.70810224.043543.75310229.543546.488\n", + "10230.443546.78110235.03 3547.5310240.523546.51610242.523545.88210243.283545.636\n", + " 10246.13544.77510251.75 3543.7510253.313543.655 10257.43543.47410263.063543.396\n", + "10264.03 3543.3810268.71 3543.2910274.363543.23510274.743543.22710280.023543.119\n", + "10285.453543.11410285.673543.11310291.333543.07110296.163543.05610296.983543.053\n", + "10302.633543.04210306.873543.02410308.293543.02210313.94 3542.9710315.243542.965\n", + "#Mann= 3 , 0 , 0 \n", + "9697.787 0.065 09986.228 0.04 0 10051.7 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9923.07 10092.4 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9986.228,10051.7\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,231.8489,156.1958,195.854,195.4554\n", + "XS GIS Cut Line= 11\n", + "529757.857802719874478.585665174529647.969439276874406.818908416\n", + "529581.525778908874366.661284782529553.375331186874352.248159677\n", + "529519.940634619 874338.34272822529489.703601852 874329.01096759\n", + "529462.642990626874323.237725332529460.669654548874322.912233815\n", + "529438.279152572874318.256926179 529398.70141397874306.658062235\n", + "528867.898835205873968.068140224\n", + "#Sta/Elev=293\n", + "9662.966 3579.479663.3933579.5859664.9513579.9869669.3653581.1819674.0953582.469\n", + "9675.3373582.7539681.3083584.0759683.2393584.428 9687.283585.2999692.3833586.349\n", + "9693.2523586.5559699.224 3588.039701.5273588.3649705.1963588.9649710.6713588.576\n", + "9711.1683588.555 9717.143586.6669719.815 3585.269723.1113583.5669728.9593580.698\n", + "9729.0833580.6339735.0553577.3439738.1033575.3679741.0273573.4319746.9993570.133\n", + "9747.247 35709752.9713566.8459756.391 3565.029758.943 3563.619764.914 3560.28\n", + "9765.535 3559.929770.886 3556.829774.6793554.9159776.8583553.794 9782.833550.519\n", + "9783.8233549.9979788.8023547.6029792.9673545.5729794.2133544.7019794.7623544.288\n", + "9800.6043539.0389802.5633537.4969806.4463534.9059812.2293531.3389812.2883531.308\n", + "9818.1313529.0169821.8963528.0279823.9733527.5949829.815 3526.489831.5623526.344\n", + "9835.6573526.5329841.2293526.749 9841.53526.7529847.3423526.8399850.8953526.869\n", + "9853.1843526.9689859.0263527.0959860.5613527.0759864.8693527.0299870.2283527.064\n", + "9870.7113527.0489871.849 3527.029876.3723526.909 9880.983526.8979881.9893526.919\n", + "9887.607 3527.119891.9513527.2019893.2243527.2589898.8413527.5339902.9223527.708\n", + "9903.4753527.7259904.4233527.7549909.8383527.9459915.2533527.973 9915.843527.995\n", + "9920.6693528.0869926.0843528.036 9928.863528.1089931.4993528.1819936.9143528.101\n", + "9939.6863528.233 9942.243528.3989942.5443528.3929947.4733528.2279952.7063526.898\n", + "9957.9383526.2289959.499 3526.319963.1713526.5159968.4043526.876 9971.333527.018\n", + "9973.5843527.1269978.5723527.1999978.696 3527.29983.8093526.8819985.7723526.611\n", + "9988.9213526.1789994.0343525.665 99993525.7639999.1453525.767 100013525.782\n", + "10003.033525.78910004.243525.79110009.343526.05510014.453526.07310019.563525.877\n", + "10023.873525.82510024.683525.82410026.563525.75810029.893525.76810032.643526.702\n", + " 10035.13527.53710040.313528.89810044.343528.86510045.523528.90910050.733528.933\n", + "10055.943528.96410061.153528.82210062.123528.82810065.113528.89310066.543528.919\n", + "10072.473529.12610072.843529.134 10078.43529.15110082.14 3529.2410084.33 3529.35\n", + "10090.263529.47910091.443529.52110096.19 3529.6610100.743529.90510102.12 3529.96\n", + "10108.053530.08210110.033530.07810113.983530.02710119.333529.98510119.91 3529.99\n", + "10125.843530.83610128.633531.44610131.773531.972 10137.7 3531.7410137.933531.727\n", + "10143.633531.24710147.223531.35210149.573531.335 10155.53531.31910156.523531.281\n", + "10161.43 3531.2110165.823531.20510167.363531.23110173.293531.20310175.113531.205\n", + "10179.223531.68310184.413531.59110185.153531.65110191.083532.11210193.713532.318\n", + "10197.013532.82510202.943534.24510203.013534.26810208.873536.059 10212.33536.236\n", + " 10214.83536.32810220.733536.019 10221.63536.03210226.663536.037 10230.93536.038\n", + "10232.593535.99310238.523536.152 10240.23536.23810244.463536.39710249.493536.747\n", + "10250.393536.88510256.323537.98610258.79 3538.5210262.253538.92810268.093539.932\n", + "10268.18 3539.9410274.113541.49610277.393541.58910280.043541.68110285.973541.662\n", + "10286.683541.641 10291.93541.15110295.983540.87410297.833540.64610303.76 3539.96\n", + "10305.283539.87810309.693539.66610314.573539.21410315.623539.15610321.553538.646\n", + "10323.873538.56910327.483538.66110333.173538.70610333.423538.71510339.353539.009\n", + "10342.473539.08510345.283539.19410351.213539.22110351.763539.26410357.143539.602\n", + "10361.063539.59310363.073539.775 103693540.15210370.363540.18910374.93 3540.26\n", + "10379.663540.64810380.86 3540.7110386.793540.63210388.953540.65510392.72 3540.72\n", + "10398.253540.59510398.653540.58210404.583540.79810407.553540.94310410.513541.141\n", + "10416.443541.29510416.853541.31510422.373541.61410426.143541.71510428.313541.791\n", + "10434.243541.94810435.443541.98110440.173542.18410444.743542.339 10446.13542.401\n", + "10452.033542.54610454.043542.67510457.963542.86210463.333542.99910463.893543.017\n", + "10469.823543.21510472.633543.32910475.753543.51210481.683543.87110481.933543.873\n", + "10487.613543.85310491.22 3543.9810493.543544.07810499.473544.32710500.523544.353\n", + " 10505.43544.59510509.823544.93810511.333545.03210517.263545.34410519.123545.419\n", + " 10523.23545.58610528.413546.27510529.133546.35110535.063546.23710537.713546.314\n", + "10540.993546.36610546.923546.18610547.013546.18510552.853546.36810556.313546.561\n", + "10558.783546.62510564.713546.702 10565.63546.71410570.64 3546.8 10574.93546.971\n", + "10576.573547.031 10582.53547.248 10584.2 3547.3410588.433547.843 10593.53548.216\n", + "10594.363548.50710600.293550.67510602.793551.75210606.223553.20610612.093555.245\n", + "10612.153555.27110618.093556.95810621.393557.61310624.023558.02610629.953558.613\n", + "10630.693558.64110635.883558.75310639.983559.11510641.813559.34310647.743559.897\n", + "10649.283560.18410653.673560.78510658.583561.589 10659.6 3561.7810665.533562.864\n", + "10667.873563.25710671.463563.83310677.173564.56910677.393564.57710683.323564.727\n", + "10686.473565.41910689.253566.23510694.71 3567.97\n", + "#Mann= 3 , 0 , 0 \n", + "9662.966 0.065 09985.772 0.04 010032.64 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9917.352 10107.52 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9985.772,10032.64\n", + "Exp/Cntr=0.3,0.1\n", + "\",\"Type RM Length L Ch R = 1 ,35.9949,0,0,0\n", + "XS GIS Cut Line= 11\n", + "529817.641340002874447.270478971529780.274598278874420.271368474\n", + " 529701.30426788874357.422959477529648.732257009874309.460134774\n", + "529615.700806044874273.585569665529592.399235025874241.299609289\n", + "529577.611305378874213.201117232 529565.60607497 874181.94687143\n", + "529564.967540465874180.051541992529554.304202974874151.542926691\n", + "528985.086335212873718.068140216\n", + "#Sta/Elev=325\n", + "9626.9953583.5629627.1693583.4769633.3383580.506 9635.143579.5739639.5063577.466\n", + "9643.6773575.5679645.6753574.5889651.8443571.6439652.2153571.4749658.0123568.979\n", + "9660.7523567.8029664.181 3566.24 9669.293564.7979670.349 3564.589673.0953564.845\n", + "9676.6413565.2379677.5453565.4389683.0313566.5719685.5753567.2849689.4213568.183\n", + "9693.604 35699695.8113569.4289701.634 3570.99702.2023571.0429708.5923572.724\n", + "9709.6633573.0529714.982 3574.529717.6923575.1389721.3723575.9429725.7223576.756\n", + "9727.7623577.1259733.7513578.0819734.1523578.1319740.5433578.017 9741.783577.623\n", + "9746.9333575.793 9749.813574.4699753.3233573.0519757.8393570.9619759.7133570.122\n", + "9765.8693567.1319766.103 3567.029772.4943563.8119773.8983563.1529774.0223563.099\n", + "9779.1713560.6989781.3263559.629 9785.94 3557.359788.7453555.8389792.7083553.679\n", + "9796.1633551.8029799.4763549.9599803.5823547.9929806.2443546.7179811.0013544.444\n", + "9813.0123543.5799818.419 3540.59819.7813539.3849825.8383533.6559826.5493533.068\n", + "9833.2563528.5069833.3173528.4749840.0853524.8219840.6753524.6869845.1853524.158\n", + "9847.0053524.012 9847.853524.0639854.3863524.3519854.6463524.3539861.4433524.837\n", + "9861.7683524.873 9868.24 3525.279869.1493525.3339875.0363525.8889876.5313526.042\n", + "9881.8333526.2869883.9133526.283 9888.633526.0729891.2943525.8659893.9513525.697\n", + "9895.2893525.616 9899.423525.5429901.4563525.5459907.6223525.3479907.9643525.344\n", + "9913.7883525.4929916.5073525.5699919.9543525.6619925.0513525.916 9926.123525.958\n", + "9932.2873526.3369933.5953526.3699933.7673526.3699938.0613526.3629943.711 3525.72\n", + "9944.2873525.6599949.3613525.1289955.0113524.1619955.0223524.1599960.6613523.747\n", + "9965.5193523.685 9965.833523.678 9966.273523.6639971.6273523.4569974.1713523.264\n", + "9976.9833523.0529979.774 3522.899982.3393522.7279987.6953522.5459993.0513522.205\n", + "9993.718 3522.189998.4073521.963 99993521.982 100013522.06310003.723522.206\n", + "10008.043523.85610009.063524.37310010.043524.909 10014.43527.29110019.743528.526\n", + "10022.323528.43510025.08 3528.3210030.423527.89310031.443527.73410033.713527.439\n", + "10038.113526.91110039.993526.77610046.273526.22510046.36 3526.2210052.56 3525.78\n", + "10054.623525.60910058.84 3525.2510062.87 3524.9410065.133524.82910071.123524.586\n", + "10071.413524.572 10077.73524.30410079.373524.28110083.983524.09610087.633523.966\n", + "10090.273523.82910095.883523.41710096.553523.41310102.843523.44610104.133523.512\n", + "10109.123523.80610112.39 3524.2910115.413525.20310120.643526.36510121.693526.554\n", + "10127.983526.62910128.893526.57610134.263527.06710137.143527.93310140.55 3529.16\n", + " 10145.43530.91410146.833531.17310153.123531.87410153.653531.913 10159.43532.219\n", + " 10161.93532.20610165.693532.33710170.163532.39810171.973532.39610178.253532.528\n", + "10178.413532.52610184.543532.52210186.663532.50910190.823532.40710194.91 3532.48\n", + "10197.113532.52510203.173532.72110203.39 3532.7310209.683532.83210211.423532.907\n", + "10215.963533.11610219.673533.05510222.253533.13110227.933533.56210228.533533.589\n", + "10234.823534.98110236.183535.447 10241.13537.11910244.433538.56210247.393539.332\n", + "10252.68 3539.9510253.673539.96310259.963539.60910260.943539.43810266.243538.371\n", + "10269.193537.83410272.533537.01710277.44 3536.710278.813536.642 10285.13536.353\n", + " 10285.73536.34810291.383536.49810293.953536.52510297.663536.683 10302.23536.663\n", + "10303.953536.60410310.233536.64310310.453536.64310316.523536.55710318.713536.531\n", + " 10322.83536.51310326.963536.52110329.093536.52510335.213536.91910335.373536.925\n", + "10341.663538.12310343.473538.39610347.943538.70310351.723538.74910354.233538.728\n", + "10359.973538.54410360.513538.593 10366.83538.82110368.223538.65910373.083538.616\n", + "10376.483538.39610379.373538.25910384.733538.11210385.653538.12410391.943538.324\n", + "10392.98 3538.3510398.223538.47710401.243538.55310404.513538.69710409.493539.102\n", + "10410.793539.11910417.083539.09210417.743539.11810423.36 3539.4910425.993539.643\n", + "10429.643539.80410434.253539.84910435.933539.85610442.213539.753 10442.53539.777\n", + " 10448.5 3540.3810450.753540.47210454.783540.644 104593541.04810461.07 3541.19\n", + "10467.263541.23810467.353541.23710473.643541.43410475.513541.51710479.92 3541.77\n", + "10483.763542.06510486.213542.24310492.023542.44910492.493542.45910498.783542.505\n", + "10500.273542.51410505.063542.71510508.523543.17210511.353543.46910516.773543.545\n", + "10517.633543.54310523.923543.55710525.033543.617 10530.23543.58810533.28 3543.56\n", + "10536.493543.70610541.53 3543.910542.77 3543.9710549.053544.24910549.793544.289\n", + "10555.343544.75910558.043545.10910561.623545.73810566.293546.71410567.913546.934\n", + "10574.193547.26910574.543547.24410580.483547.297 10582.83547.31210586.763547.195\n", + "10591.053547.35410593.05 3547.4 10599.33547.42310599.333547.42210605.623547.539\n", + "10607.563547.482 10611.93547.39210615.813547.41610618.193547.48210624.063547.955\n", + "10624.473547.98410630.763548.48910632.313548.55210637.043548.70810640.573548.788\n", + "10643.333548.90610648.823548.92910649.613548.931 10655.93548.88110657.07 3548.93\n", + "10662.183549.55110665.333550.10410668.473550.78410673.58 3552.3310674.753552.793\n", + "10681.033555.24310681.833555.57110687.323558.07810690.083559.295 10693.63560.674\n", + "10698.343562.85810699.893563.52910706.173566.25510706.593566.47410712.463569.467\n", + "10714.843570.49810718.74 3572.24 10723.13573.74110725.033574.39410731.313576.874\n", + "10731.353576.887 10737.63579.189 10739.63579.84410743.883581.37310746.923582.122\n", + "#Mann= 3 , 0 , 0 \n", + "9626.995 0.065 09974.171 0.04 010010.04 0.065 0\n", + "#XS Ineff= 2 , 0 \n", + " 9893.349 10140.11 \n", + "Permanent Ineff=\n", + " F F\n", + "Bank Sta=9974.171,10010.04\n", + "Exp/Cntr=0.3,0.1\n", + "\"]]\n", + "station_elevation_points: [[\"[(9939.943, 3565.373), (9944.636, 3565.28), (9946.677, 3565.016), (9950.329, 3564.481), (9956.023, 3562.989), (9957.131, 3562.699), (9961.716, 3561.11), (9967.41, 3558.735), (9967.586, 3558.667), (9968.561, 3558.316), (9973.376, 3556.687), (9976.655, 3555.579), (9979.412, 3554.582), (9985.447, 3552.594), (9985.582, 3552.554), (9989.947, 3551.41), (9991.483, 3551.007), (9994.508, 3550.489), (9997.519, 3550.146), (9999.0, 3550.156), (10001.0, 3550.177), (10003.35, 3550.234), (10003.6, 3550.25), (10009.58, 3550.663), (10012.44, 3550.833), (10012.95, 3550.888), (10015.57, 3551.171), (10021.53, 3551.948), (10021.56, 3551.951), (10027.54, 3551.831), (10030.62, 3551.685), (10033.53, 3551.502), (10039.52, 3551.507), (10039.7, 3551.502), (10041.5, 3551.458), (10045.23, 3551.391), (10050.59, 3551.513), (10050.8, 3551.523), (10056.37, 3551.827), (10061.91, 3551.735), (10061.95, 3551.735), (10067.52, 3551.89), (10073.09, 3551.948), (10073.24, 3551.948), (10078.66, 3551.913), (10084.24, 3551.874), (10084.57, 3551.878), (10089.81, 3551.785), (10095.38, 3551.33), (10095.89, 3551.318), (10096.5, 3551.328), (10100.73, 3551.42), (10106.03, 3551.5), (10110.87, 3551.61), (10111.32, 3551.618), (10116.62, 3551.613), (10121.91, 3551.376), (10126.05, 3551.385), (10127.21, 3551.406), (10132.5, 3551.669), (10137.8, 3551.88), (10141.23, 3553.033), (10143.1, 3553.611), (10148.39, 3555.775), (10153.69, 3558.897), (10154.81, 3559.545), (10157.08, 3560.854), (10158.86, 3561.722), (10164.0, 3562.685), (10169.14, 3564.403), (10174.28, 3566.154), (10178.63, 3567.541), (10179.42, 3567.771), (10184.56, 3569.051), (10189.7, 3570.504), (10194.84, 3571.856), (10199.98, 3572.859), (10200.18, 3572.892), (10205.12, 3573.826), (10210.26, 3574.735), (10215.4, 3576.353), (10220.54, 3577.129), (10221.72, 3577.282), (10225.68, 3577.807), (10225.89, 3577.866)]\",\"[(9958.228, 3555.888), (9960.845, 3556.143), (9965.369, 3554.753), (9966.056, 3554.617), (9971.266, 3553.203), (9976.476, 3551.185), (9981.686, 3549.021), (9983.151, 3548.705), (9986.896, 3548.005), (9987.545, 3547.907), (9992.107, 3547.217), (9997.317, 3547.168), (9999.0, 3547.157), (10001.0, 3547.14), (10001.08, 3547.139), (10002.52, 3547.128), (10007.75, 3547.873), (10010.0, 3548.36), (10012.98, 3549.004), (10018.16, 3549.255), (10018.21, 3549.257), (10023.44, 3549.086), (10028.67, 3548.625), (10033.89, 3548.387), (10035.24, 3548.332), (10039.12, 3548.193), (10044.35, 3548.148), (10049.58, 3548.35), (10052.32, 3548.422), (10054.81, 3548.473), (10060.04, 3548.823), (10060.33, 3548.814), (10065.21, 3548.646), (10070.38, 3548.634), (10070.78, 3548.623), (10075.55, 3548.527), (10080.72, 3548.327), (10085.89, 3548.344), (10090.45, 3548.355), (10091.06, 3548.349), (10096.23, 3548.271), (10101.4, 3548.327), (10106.11, 3548.437), (10106.56, 3548.446), (10111.31, 3548.733), (10111.66, 3548.756), (10116.76, 3549.147), (10121.86, 3549.315), (10126.96, 3549.74), (10132.06, 3549.646), (10136.78, 3549.666), (10137.16, 3549.664), (10142.26, 3550.174), (10147.36, 3550.218), (10152.46, 3550.027), (10157.56, 3550.1), (10162.25, 3550.02), (10162.66, 3550.017), (10167.76, 3549.855), (10170.27, 3549.796), (10172.83, 3549.732), (10177.88, 3549.564), (10182.93, 3549.81), (10187.98, 3549.651), (10193.04, 3549.445), (10194.38, 3549.397), (10198.09, 3549.232), (10203.14, 3549.614), (10208.19, 3550.16), (10213.24, 3550.864), (10218.29, 3551.866), (10223.34, 3552.581), (10225.98, 3553.164), (10228.39, 3553.68), (10229.58, 3553.997), (10233.44, 3555.068), (10238.5, 3556.434), (10243.55, 3557.723), (10248.6, 3559.012), (10253.65, 3560.127), (10258.7, 3561.515), (10263.75, 3562.189), (10264.23, 3562.288)]\",\"[(9714.223, 3580.739), (9717.977, 3579.871), (9718.699, 3579.698), (9725.367, 3577.581), (9725.489, 3577.538), (9732.28, 3574.824), (9732.757, 3574.54), (9739.07, 3571.24), (9740.147, 3570.608), (9745.86, 3567.194), (9747.537, 3566.255), (9752.65, 3563.516), (9754.927, 3562.548), (9759.441, 3560.507), (9762.317, 3559.655), (9766.231, 3558.236), (9769.706, 3557.33), (9773.021, 3556.561), (9777.096, 3555.785), (9779.811, 3555.284), (9784.486, 3554.397), (9786.602, 3554.055), (9791.876, 3552.817), (9793.392, 3552.511), (9799.266, 3551.275), (9800.182, 3551.11), (9806.656, 3549.39), (9806.972, 3549.303), (9813.763, 3548.041), (9814.046, 3548.018), (9820.553, 3547.589), (9821.435, 3547.53), (9827.343, 3546.976), (9828.825, 3546.916), (9834.133, 3546.75), (9836.215, 3546.737), (9840.924, 3546.55), (9843.605, 3546.272), (9847.714, 3546.025), (9850.995, 3545.656), (9854.504, 3545.071), (9858.385, 3544.732), (9861.295, 3544.371), (9865.775, 3544.008), (9868.085, 3543.956), (9873.164, 3543.863), (9874.875, 3543.802), (9880.554, 3543.639), (9881.665, 3543.629), (9887.944, 3543.648), (9888.456, 3543.65), (9895.246, 3543.725), (9895.334, 3543.726), (9902.036, 3543.996), (9902.724, 3544.016), (9908.826, 3543.82), (9910.114, 3543.848), (9915.617, 3544.424), (9917.504, 3544.806), (9922.407, 3546.124), (9924.893, 3547.097), (9929.197, 3548.737), (9932.283, 3550.432), (9935.987, 3551.571), (9939.673, 3552.412), (9942.778, 3553.338), (9947.063, 3554.347), (9949.568, 3555.074), (9951.974, 3554.866), (9955.203, 3554.534), (9960.205, 3551.955), (9965.207, 3548.948), (9970.208, 3546.657), (9975.21, 3545.237), (9980.211, 3544.921), (9985.213, 3544.881), (9989.999, 3544.601), (9990.215, 3544.588), (9995.216, 3544.059), (10000.22, 3543.943), (10001.14, 3544.045), (10003.14, 3544.268), (10005.22, 3544.505), (10010.0, 3544.838), (10010.22, 3544.853), (10015.23, 3544.78), (10020.23, 3544.855), (10025.23, 3544.872), (10030.24, 3544.883), (10035.24, 3545.252), (10040.24, 3545.424), (10045.25, 3545.747), (10050.25, 3545.551), (10055.25, 3544.999), (10057.65, 3544.887), (10060.26, 3544.768), (10065.26, 3544.908), (10070.27, 3544.994), (10075.27, 3545.485), (10080.27, 3545.851), (10085.28, 3546.052), (10090.0, 3546.302), (10090.28, 3546.317), (10095.28, 3546.625), (10100.28, 3546.704), (10105.28, 3546.513), (10110.28, 3546.525), (10115.28, 3546.588), (10120.28, 3546.928), (10125.28, 3546.947), (10130.29, 3546.765), (10135.29, 3546.76), (10140.29, 3546.755), (10145.29, 3547.063), (10150.29, 3547.783), (10155.29, 3547.991), (10158.84, 3548.103), (10160.29, 3548.147), (10165.29, 3547.92), (10170.29, 3547.729), (10175.29, 3547.456), (10180.29, 3547.008), (10185.29, 3547.054), (10190.29, 3546.894), (10195.3, 3546.724), (10200.3, 3546.661), (10205.3, 3546.686), (10210.3, 3547.078), (10215.3, 3547.468), (10220.3, 3548.114), (10225.3, 3548.933), (10228.12, 3549.435), (10230.3, 3549.821), (10235.3, 3550.456), (10240.3, 3551.019), (10245.3, 3551.515), (10250.3, 3552.706), (10255.3, 3554.775), (10260.31, 3556.819), (10265.31, 3558.775), (10270.31, 3560.875), (10275.31, 3562.784), (10277.67, 3563.809)]\",\"[(9647.02, 3563.886), (9648.307, 3563.478), (9649.685, 3563.029), (9656.117, 3560.464), (9656.194, 3560.432), (9662.703, 3558.119), (9663.926, 3557.646), (9669.211, 3555.659), (9671.736, 3554.795), (9675.72, 3553.434), (9679.546, 3551.986), (9682.229, 3550.791), (9687.355, 3548.332), (9688.738, 3547.859), (9695.165, 3545.559), (9695.247, 3545.547), (9701.756, 3544.981), (9702.975, 3544.817), (9708.265, 3545.25), (9710.785, 3545.607), (9714.773, 3546.153), (9718.594, 3546.934), (9721.282, 3546.863), (9726.404, 3546.461), (9727.791, 3546.156), (9734.214, 3544.655), (9734.3, 3544.636), (9740.809, 3542.997), (9742.023, 3542.65), (9747.318, 3541.795), (9749.833, 3541.683), (9753.826, 3541.675), (9757.643, 3541.635), (9760.335, 3541.511), (9765.452, 3541.152), (9766.844, 3541.09), (9773.262, 3540.89), (9773.353, 3540.893), (9779.862, 3541.112), (9781.072, 3541.146), (9786.371, 3541.25), (9788.882, 3541.239), (9792.88, 3541.195), (9796.691, 3541.215), (9799.388, 3541.248), (9804.501, 3541.275), (9805.897, 3541.296), (9812.311, 3541.248), (9812.406, 3541.246), (9818.915, 3541.478), (9820.12, 3541.615), (9825.424, 3542.536), (9827.93, 3542.729), (9831.933, 3542.515), (9835.74, 3541.977), (9838.442, 3541.615), (9843.55, 3541.596), (9844.95, 3541.618), (9851.359, 3541.238), (9851.459, 3541.234), (9857.968, 3541.921), (9859.169, 3542.39), (9864.477, 3544.558), (9866.979, 3545.826), (9870.986, 3547.686), (9874.788, 3549.561), (9877.495, 3551.095), (9882.598, 3554.046), (9884.004, 3554.828), (9890.408, 3558.221), (9890.512, 3558.275), (9897.021, 3561.397), (9898.218, 3561.903), (9903.53, 3564.447), (9906.027, 3565.75), (9910.039, 3567.517), (9913.837, 3568.717), (9916.548, 3569.54), (9921.647, 3569.636), (9923.057, 3569.751), (9929.456, 3568.712), (9929.566, 3568.697), (9936.074, 3567.358), (9937.266, 3567.156), (9942.583, 3565.97), (9945.076, 3565.372), (9949.092, 3564.417), (9952.886, 3563.236), (9955.601, 3562.352), (9958.538, 3561.26), (9961.358, 3559.748), (9966.498, 3556.894), (9971.637, 3554.171), (9974.19, 3552.945), (9976.776, 3551.717), (9981.915, 3548.236), (9987.055, 3544.938), (9990.0, 3543.601), (9992.194, 3542.605), (9995.814, 3541.533), (9997.333, 3541.097), (9999.0, 3541.022), (10001.0, 3540.939), (10002.47, 3540.886), (10007.62, 3540.993), (10012.78, 3541.215), (10016.78, 3541.273), (10017.93, 3541.301), (10020.07, 3541.426), (10023.09, 3541.603), (10028.24, 3541.69), (10033.39, 3541.36), (10037.42, 3541.28), (10038.55, 3541.268), (10043.7, 3541.463), (10048.85, 3541.733), (10054.01, 3542.076), (10058.06, 3542.127), (10059.16, 3542.144), (10060.33, 3542.228), (10064.28, 3542.531), (10069.39, 3542.735), (10074.49, 3542.813), (10079.6, 3543.045), (10082.06, 3543.101), (10084.71, 3543.174), (10089.82, 3543.065), (10094.93, 3543.087), (10100.04, 3543.562), (10105.14, 3543.552), (10106.11, 3543.531), (10106.64, 3543.519), (10110.21, 3543.443), (10115.27, 3543.288), (10120.32, 3543.22), (10125.38, 3543.496), (10130.43, 3543.587), (10135.49, 3543.512), (10140.32, 3543.561), (10140.55, 3543.565), (10145.6, 3543.504), (10150.66, 3543.675), (10155.71, 3543.833), (10160.77, 3544.018), (10165.83, 3544.206), (10170.27, 3544.478), (10170.88, 3544.516), (10175.9, 3544.579), (10175.99, 3544.577), (10180.93, 3544.408), (10185.95, 3544.289), (10190.97, 3544.219), (10196.0, 3543.961), (10201.02, 3543.94), (10206.04, 3544.246), (10211.07, 3544.65), (10216.09, 3545.278), (10221.12, 3546.119), (10225.98, 3547.284), (10226.14, 3547.322), (10227.46, 3547.686), (10231.16, 3548.741), (10236.19, 3550.204), (10241.21, 3551.806), (10246.23, 3553.363), (10251.26, 3554.996), (10256.28, 3557.083), (10261.31, 3559.44), (10266.33, 3560.949), (10271.35, 3562.239), (10272.72, 3562.722)]\",\"[(9639.635, 3546.854), (9641.471, 3547.187), (9644.786, 3547.654), (9649.839, 3546.361), (9651.022, 3545.987), (9657.258, 3543.549), (9658.206, 3543.246), (9663.493, 3541.371), (9666.573, 3540.86), (9669.729, 3540.326), (9674.94, 3540.11), (9675.965, 3540.043), (9682.201, 3539.5), (9683.307, 3539.438), (9688.437, 3539.276), (9691.674, 3539.247), (9694.673, 3539.256), (9700.042, 3539.087), (9700.909, 3539.051), (9707.144, 3539.027), (9708.409, 3538.991), (9713.38, 3539.112), (9716.776, 3539.281), (9719.616, 3539.388), (9725.143, 3539.594), (9725.852, 3539.606), (9732.088, 3539.755), (9733.51, 3539.669), (9738.324, 3539.434), (9741.877, 3539.355), (9744.56, 3539.337), (9750.245, 3539.573), (9750.796, 3539.579), (9757.031, 3539.424), (9758.612, 3539.354), (9763.267, 3539.15), (9766.979, 3539.035), (9769.503, 3538.996), (9775.346, 3539.012), (9775.739, 3539.019), (9781.975, 3538.832), (9783.713, 3538.792), (9788.211, 3538.828), (9792.08, 3538.775), (9794.447, 3538.64), (9800.447, 3538.211), (9800.682, 3538.197), (9806.918, 3537.978), (9808.815, 3537.94), (9813.154, 3537.86), (9817.182, 3537.811), (9819.39, 3537.79), (9825.549, 3537.832), (9825.626, 3537.831), (9831.862, 3537.93), (9833.916, 3538.339), (9838.098, 3539.208), (9842.283, 3539.887), (9844.334, 3540.149), (9850.569, 3540.613), (9850.65, 3540.63), (9856.805, 3542.36), (9859.018, 3542.588), (9863.041, 3542.908), (9867.385, 3543.112), (9869.277, 3543.264), (9875.513, 3543.527), (9875.752, 3543.536), (9881.749, 3543.585), (9884.119, 3543.717), (9887.985, 3544.214), (9892.486, 3544.779), (9894.22, 3545.058), (9900.456, 3546.096), (9900.853, 3546.156), (9906.692, 3546.58), (9909.221, 3546.62), (9912.928, 3546.658), (9917.588, 3546.74), (9919.164, 3546.787), (9925.4, 3547.275), (9925.955, 3547.32), (9931.636, 3548.095), (9934.322, 3548.324), (9937.871, 3548.203), (9942.689, 3548.189), (9944.107, 3548.121), (9950.343, 3548.156), (9951.056, 3548.029), (9956.579, 3546.725), (9959.423, 3545.838), (9962.815, 3544.908), (9965.508, 3543.761), (9968.484, 3543.115), (9973.722, 3541.401), (9977.716, 3540.371), (9978.959, 3539.987), (9984.197, 3538.708), (9989.087, 3538.372), (9989.435, 3538.348), (9994.503, 3538.101), (9994.672, 3538.09), (9999.0, 3537.831), (9999.914, 3537.79), (10001.0, 3537.805), (10005.17, 3537.871), (10010.42, 3537.942), (10010.88, 3537.957), (10015.68, 3538.176), (10020.93, 3538.36), (10022.77, 3538.317), (10026.19, 3538.236), (10027.13, 3538.214), (10031.44, 3538.134), (10036.7, 3538.214), (10041.95, 3538.62), (10043.38, 3538.655), (10047.21, 3538.697), (10052.46, 3538.548), (10057.72, 3538.349), (10059.63, 3538.492), (10062.97, 3538.765), (10066.27, 3538.883), (10068.21, 3538.946), (10073.41, 3539.106), (10077.09, 3539.302), (10078.6, 3539.406), (10083.8, 3539.632), (10089.0, 3539.212), (10094.2, 3539.109), (10095.38, 3539.174), (10099.4, 3539.429), (10104.59, 3539.716), (10109.79, 3539.817), (10113.68, 3540.055), (10114.99, 3540.119), (10116.62, 3540.106), (10120.14, 3540.085), (10125.28, 3540.105), (10130.41, 3539.754), (10135.07, 3539.578), (10135.55, 3539.565), (10140.68, 3539.726), (10145.82, 3540.076), (10150.95, 3540.192), (10156.09, 3540.08), (10157.05, 3540.052), (10161.22, 3539.889), (10166.35, 3540.003), (10170.28, 3540.116), (10171.48, 3540.128), (10176.56, 3540.314), (10181.32, 3540.224), (10181.64, 3540.224), (10186.73, 3540.473), (10191.81, 3540.922), (10196.89, 3542.045), (10201.98, 3543.287), (10207.06, 3544.384), (10209.01, 3544.794), (10212.15, 3545.519), (10217.23, 3547.646), (10222.31, 3549.832), (10225.99, 3551.557), (10227.4, 3552.223), (10232.48, 3555.52), (10236.71, 3557.936), (10237.56, 3558.408), (10242.65, 3560.373), (10247.73, 3562.807), (10252.81, 3565.466), (10257.9, 3568.0), (10262.27, 3569.955)]\",...,\"[(9624.02, 3567.665), (9629.327, 3567.38), (9629.704, 3567.361), (9635.684, 3566.968), (9638.442, 3566.905), (9641.664, 3566.881), (9647.558, 3566.773), (9647.644, 3566.77), (9653.624, 3566.416), (9656.673, 3566.274), (9659.603, 3566.237), (9665.583, 3566.019), (9665.789, 3566.01), (9671.563, 3565.88), (9674.904, 3565.754), (9677.543, 3565.55), (9683.523, 3565.042), (9684.02, 3564.982), (9689.503, 3564.206), (9693.135, 3563.616), (9695.483, 3563.221), (9701.463, 3562.256), (9702.25, 3562.126), (9707.442, 3561.588), (9711.366, 3561.167), (9713.422, 3560.868), (9719.402, 3559.785), (9720.481, 3559.575), (9725.382, 3558.704), (9729.597, 3557.885), (9731.362, 3557.58), (9737.342, 3556.779), (9738.712, 3556.55), (9743.322, 3555.668), (9747.828, 3554.889), (9749.302, 3554.623), (9755.281, 3553.71), (9756.943, 3553.504), (9761.261, 3552.849), (9766.059, 3552.169), (9767.241, 3552.002), (9773.221, 3551.409), (9775.174, 3551.273), (9779.201, 3551.058), (9784.29, 3550.691), (9785.181, 3550.636), (9791.161, 3550.562), (9793.405, 3550.429), (9797.141, 3550.16), (9802.52, 3549.99), (9803.12, 3549.953), (9809.1, 3549.457), (9811.636, 3549.393), (9813.424, 3549.34), (9815.052, 3549.294), (9820.929, 3549.262), (9821.071, 3549.258), (9826.807, 3548.874), (9830.583, 3548.472), (9832.684, 3548.303), (9838.561, 3547.923), (9840.096, 3547.852), (9844.439, 3547.611), (9849.608, 3547.325), (9850.316, 3547.275), (9856.193, 3545.718), (9859.121, 3544.157), (9862.071, 3542.373), (9867.948, 3539.253), (9868.634, 3538.831), (9873.825, 3536.048), (9878.146, 3534.713), (9879.703, 3534.393), (9885.58, 3533.829), (9887.659, 3533.921), (9891.458, 3534.249), (9897.172, 3534.995), (9897.335, 3535.011), (9903.212, 3534.982), (9906.684, 3535.076), (9909.09, 3535.167), (9914.967, 3535.543), (9916.197, 3535.572), (9920.844, 3535.627), (9925.709, 3535.747), (9926.722, 3535.777), (9932.599, 3535.795), (9935.222, 3535.889), (9938.477, 3536.062), (9944.354, 3535.968), (9944.735, 3535.965), (9950.231, 3535.859), (9954.247, 3535.582), (9956.109, 3535.453), (9961.986, 3535.273), (9963.76, 3535.356), (9967.863, 3535.554), (9973.272, 3535.269), (9973.741, 3535.251), (9977.755, 3535.315), (9979.618, 3535.345), (9982.785, 3535.448), (9985.496, 3535.552), (9991.373, 3535.875), (9992.298, 3535.867), (9997.25, 3535.791), (9999.0, 3535.79), (10001.0, 3535.803), (10001.68, 3535.808), (10003.19, 3535.747), (10009.13, 3535.32), (10010.97, 3535.179), (10015.06, 3535.228), (10020.27, 3535.795), (10020.99, 3535.838), (10026.92, 3535.666), (10028.68, 3535.721), (10029.62, 3535.755), (10030.43, 3535.776), (10032.76, 3535.837), (10038.56, 3535.796), (10039.47, 3535.812), (10044.37, 3535.941), (10049.31, 3536.095), (10050.17, 3536.124), (10055.98, 3536.141), (10059.16, 3536.07), (10061.78, 3536.033), (10067.58, 3535.933), (10069.0, 3536.023), (10073.39, 3536.289), (10075.56, 3536.355), (10077.83, 3536.462), (10080.18, 3536.437), (10084.63, 3536.093), (10087.56, 3535.929), (10091.42, 3535.652), (10094.94, 3535.486), (10098.22, 3535.38), (10102.33, 3535.593), (10105.01, 3535.789), (10109.71, 3536.19), (10111.81, 3536.193), (10117.09, 3535.889), (10118.61, 3535.976), (10124.48, 3536.419), (10125.4, 3536.505), (10131.86, 3537.726), (10132.2, 3537.852), (10138.99, 3540.595), (10139.24, 3540.66), (10145.79, 3540.376), (10146.62, 3540.316), (10152.58, 3540.154), (10154.01, 3540.137), (10159.38, 3540.231), (10161.39, 3540.278), (10166.18, 3540.451), (10168.77, 3540.678), (10172.97, 3541.234), (10176.15, 3541.912), (10179.77, 3542.94), (10183.54, 3544.536), (10186.56, 3545.82), (10190.92, 3547.511), (10193.36, 3548.201), (10198.3, 3548.384), (10200.16, 3548.42), (10205.68, 3548.061), (10206.95, 3547.822), (10213.07, 3546.658), (10213.75, 3546.604), (10220.45, 3546.271), (10220.54, 3546.266), (10227.34, 3545.856), (10227.83, 3545.848), (10234.14, 3545.813), (10235.22, 3545.824), (10240.93, 3545.955), (10242.6, 3545.974), (10247.73, 3546.009), (10249.98, 3545.988), (10254.52, 3545.938), (10257.36, 3545.937), (10261.32, 3545.799), (10264.75, 3545.703), (10268.11, 3545.645), (10272.13, 3545.611), (10274.91, 3545.635), (10279.51, 3546.092), (10281.71, 3546.301), (10286.89, 3547.292), (10288.5, 3547.801), (10294.28, 3550.324), (10295.3, 3550.848), (10301.66, 3554.179), (10302.09, 3554.418), (10308.89, 3558.551), (10309.04, 3558.623), (10315.69, 3562.229), (10316.42, 3562.703), (10322.48, 3566.346), (10323.81, 3566.994), (10329.28, 3569.696), (10331.19, 3570.772), (10336.07, 3573.37), (10338.57, 3574.668), (10342.87, 3577.055), (10345.96, 3578.516), (10349.66, 3580.007), (10353.34, 3581.6), (10356.46, 3582.927), (10360.72, 3584.491), (10363.26, 3585.314), (10368.1, 3586.512), (10370.05, 3586.822), (10375.39, 3587.055)]\",\"[(9624.032, 3592.173), (9626.894, 3592.377), (9628.702, 3592.643), (9633.878, 3592.803), (9635.863, 3592.946), (9640.862, 3592.714), (9643.024, 3592.638), (9647.847, 3591.866), (9650.185, 3591.617), (9654.831, 3591.228), (9657.347, 3591.252), (9661.815, 3591.142), (9664.508, 3591.171), (9668.799, 3591.102), (9671.669, 3591.313), (9675.784, 3591.689), (9678.83, 3591.815), (9682.768, 3592.228), (9685.991, 3592.536), (9689.752, 3592.653), (9693.153, 3592.405), (9696.736, 3591.631), (9700.314, 3590.741), (9703.72, 3590.038), (9707.475, 3589.124), (9710.705, 3588.452), (9714.636, 3587.958), (9717.689, 3587.53), (9721.798, 3587.227), (9724.673, 3587.044), (9728.959, 3586.844), (9731.657, 3586.754), (9736.12, 3586.445), (9738.642, 3586.35), (9743.281, 3585.914), (9745.626, 3585.599), (9750.443, 3584.926), (9752.61, 3584.598), (9757.604, 3583.605), (9758.748, 3583.361), (9759.633, 3583.144), (9764.513, 3581.709), (9766.934, 3580.933), (9771.374, 3579.297), (9774.236, 3578.295), (9778.235, 3576.798), (9781.538, 3575.548), (9785.096, 3574.063), (9788.839, 3572.592), (9791.957, 3571.255), (9796.141, 3569.673), (9798.818, 3568.589), (9803.443, 3566.722), (9805.679, 3565.778), (9810.744, 3563.372), (9812.54, 3562.491), (9818.046, 3559.907), (9819.401, 3559.242), (9825.347, 3556.208), (9826.262, 3555.787), (9832.649, 3552.93), (9833.123, 3552.708), (9839.951, 3549.962), (9839.984, 3549.948), (9846.845, 3547.682), (9847.252, 3547.549), (9853.706, 3545.614), (9854.554, 3545.522), (9860.567, 3544.784), (9861.856, 3544.76), (9867.428, 3544.774), (9869.157, 3544.685), (9874.289, 3543.646), (9876.459, 3542.859), (9881.151, 3541.816), (9883.761, 3541.477), (9888.012, 3541.34), (9891.062, 3541.304), (9894.873, 3541.182), (9898.364, 3540.944), (9901.734, 3540.372), (9905.666, 3539.717), (9908.595, 3538.842), (9912.967, 3537.09), (9915.456, 3536.276), (9920.269, 3533.919), (9922.317, 3533.14), (9927.57, 3531.945), (9929.178, 3531.67), (9934.872, 3531.449), (9936.039, 3531.446), (9942.174, 3531.391), (9942.9, 3531.362), (9949.475, 3531.205), (9949.761, 3531.196), (9952.217, 3531.211), (9956.582, 3531.193), (9956.811, 3531.186), (9963.572, 3531.12), (9963.966, 3531.121), (9970.561, 3532.127), (9971.079, 3532.19), (9971.122, 3532.195), (9977.551, 3532.303), (9978.277, 3532.347), (9984.541, 3532.367), (9985.433, 3532.357), (9991.53, 3532.355), (9992.588, 3532.378), (9998.52, 3532.197), (9999.0, 3532.16), (9999.886, 3532.086), (10001.0, 3532.01), (10005.21, 3531.749), (10007.27, 3531.789), (10012.15, 3532.19), (10014.48, 3532.427), (10019.1, 3532.631), (10021.69, 3532.575), (10026.04, 3532.533), (10028.9, 3532.516), (10030.68, 3532.466), (10033.64, 3532.401), (10035.22, 3532.355), (10038.65, 3531.949), (10041.25, 3531.641), (10042.58, 3531.605), (10047.28, 3531.564), (10051.52, 3531.799), (10053.31, 3531.916), (10059.34, 3531.258), (10060.47, 3531.207), (10065.37, 3531.006), (10069.41, 3531.431), (10071.4, 3531.696), (10077.43, 3532.504), (10078.35, 3532.666), (10083.46, 3533.008), (10087.29, 3532.838), (10089.5, 3532.709), (10095.53, 3531.865), (10096.24, 3531.779), (10101.56, 3531.468), (10105.18, 3531.628), (10107.59, 3532.032), (10113.62, 3534.199), (10114.12, 3534.455), (10119.65, 3537.609), (10123.07, 3539.039), (10125.68, 3539.494), (10131.71, 3539.703), (10132.01, 3539.707), (10137.74, 3539.677), (10140.95, 3539.729), (10143.77, 3539.729), (10149.8, 3538.931), (10149.89, 3538.917), (10155.83, 3538.201), (10158.84, 3538.112), (10161.86, 3538.053), (10167.78, 3537.803), (10167.89, 3537.797), (10173.92, 3537.891), (10176.72, 3537.945), (10179.96, 3537.971), (10185.67, 3537.807), (10185.99, 3537.806), (10192.02, 3538.508), (10194.61, 3538.885), (10198.05, 3539.558), (10203.55, 3540.817), (10204.08, 3540.914), (10210.11, 3542.145), (10212.49, 3542.819), (10216.14, 3544.081), (10221.44, 3546.751), (10222.17, 3547.079), (10228.2, 3547.977), (10230.38, 3547.742), (10234.23, 3547.056), (10239.32, 3545.62), (10240.26, 3545.373), (10246.29, 3544.644), (10248.27, 3544.612), (10252.32, 3544.631), (10257.21, 3544.68), (10258.35, 3544.7), (10264.38, 3544.811), (10266.15, 3544.778), (10270.42, 3544.562), (10275.09, 3544.151), (10276.45, 3544.053), (10282.48, 3543.724), (10284.04, 3543.712), (10288.51, 3543.85), (10292.98, 3544.39), (10294.54, 3544.627), (10300.57, 3545.895), (10301.92, 3546.326), (10306.6, 3547.999), (10310.87, 3550.089), (10312.63, 3550.875), (10318.66, 3553.769), (10319.81, 3554.323), (10324.69, 3556.503), (10328.75, 3558.387), (10330.72, 3559.272), (10336.75, 3561.667), (10337.69, 3562.005), (10342.78, 3563.541), (10346.64, 3564.987), (10348.81, 3565.736), (10354.84, 3567.57), (10355.58, 3567.806), (10360.88, 3568.995), (10364.52, 3569.081), (10366.91, 3569.023), (10372.94, 3568.92), (10373.47, 3568.86), (10378.97, 3568.234), (10382.41, 3567.254), (10383.28, 3566.953)]\",\"[(9697.787, 3565.975), (9698.437, 3565.899), (9700.41, 3565.837), (9700.64, 3565.827), (9703.942, 3565.534), (9709.399, 3564.761), (9713.123, 3564.14), (9714.856, 3563.819), (9720.313, 3562.305), (9725.606, 3560.699), (9725.77, 3560.668), (9731.227, 3559.839), (9736.683, 3558.514), (9738.089, 3558.172), (9742.14, 3557.659), (9747.597, 3556.524), (9750.572, 3555.848), (9753.054, 3555.26), (9758.511, 3554.061), (9763.055, 3552.928), (9763.968, 3552.677), (9769.425, 3551.561), (9774.882, 3550.572), (9775.537, 3550.464), (9780.338, 3549.696), (9785.795, 3548.981), (9788.02, 3548.647), (9791.252, 3548.193), (9794.412, 3547.692), (9796.674, 3547.228), (9801.064, 3546.653), (9802.049, 3546.535), (9807.423, 3545.98), (9812.798, 3545.417), (9814.697, 3545.206), (9818.172, 3544.823), (9823.547, 3544.436), (9828.33, 3544.163), (9828.921, 3544.12), (9834.296, 3543.789), (9839.671, 3543.544), (9841.963, 3543.424), (9845.045, 3543.278), (9850.42, 3543.235), (9855.596, 3542.862), (9855.794, 3542.851), (9861.169, 3542.451), (9866.543, 3542.104), (9869.228, 3541.905), (9871.918, 3541.92), (9877.292, 3542.165), (9882.667, 3541.792), (9882.861, 3541.784), (9888.041, 3541.448), (9893.416, 3541.353), (9896.494, 3541.213), (9898.79, 3541.123), (9904.165, 3541.062), (9909.539, 3541.103), (9910.127, 3541.108), (9914.914, 3541.148), (9920.288, 3540.993), (9923.76, 3540.991), (9925.663, 3540.916), (9931.037, 3540.187), (9936.412, 3539.84), (9937.393, 3539.777), (9941.787, 3539.536), (9947.161, 3539.769), (9951.025, 3539.812), (9952.536, 3539.795), (9954.442, 3539.456), (9958.068, 3538.94), (9962.653, 3537.856), (9963.687, 3537.435), (9969.306, 3533.789), (9973.61, 3531.598), (9974.925, 3530.905), (9980.545, 3530.27), (9984.568, 3529.666), (9986.164, 3529.379), (9986.228, 3529.367), (9991.783, 3528.353), (9995.525, 3528.39), (9997.402, 3528.394), (9999.0, 3528.416), (10001.0, 3528.469), (10003.08, 3528.556), (10006.22, 3528.936), (10008.72, 3529.292), (10014.37, 3529.414), (10017.0, 3529.257), (10020.01, 3529.016), (10025.66, 3528.577), (10027.77, 3528.447), (10031.3, 3528.322), (10036.95, 3528.363), (10038.54, 3528.532), (10042.59, 3528.888), (10048.24, 3529.045), (10049.32, 3528.987), (10049.91, 3528.938), (10051.7, 3528.786), (10053.77, 3528.611), (10059.27, 3528.091), (10061.32, 3528.147), (10064.76, 3528.601), (10070.25, 3530.449), (10073.4, 3531.524), (10075.74, 3532.043), (10081.24, 3532.433), (10085.48, 3532.28), (10086.73, 3532.204), (10092.22, 3531.804), (10097.56, 3531.795), (10097.71, 3531.798), (10103.21, 3531.877), (10108.7, 3532.028), (10109.64, 3532.166), (10114.19, 3533.046), (10119.68, 3534.498), (10121.72, 3534.557), (10125.18, 3534.282), (10130.67, 3534.254), (10133.8, 3534.279), (10136.16, 3534.256), (10141.66, 3534.017), (10145.88, 3533.532), (10147.15, 3533.353), (10152.64, 3532.693), (10157.96, 3532.716), (10158.13, 3532.722), (10163.63, 3533.263), (10169.12, 3534.585), (10170.04, 3534.653), (10174.61, 3535.112), (10180.1, 3535.311), (10182.12, 3535.352), (10185.6, 3535.393), (10191.09, 3535.432), (10194.2, 3535.498), (10196.58, 3535.563), (10202.07, 3536.581), (10206.28, 3537.74), (10207.57, 3538.073), (10213.06, 3539.633), (10218.36, 3541.641), (10218.55, 3541.708), (10224.04, 3543.753), (10229.54, 3546.488), (10230.44, 3546.781), (10235.03, 3547.53), (10240.52, 3546.516), (10242.52, 3545.882), (10243.28, 3545.636), (10246.1, 3544.775), (10251.75, 3543.75), (10253.31, 3543.655), (10257.4, 3543.474), (10263.06, 3543.396), (10264.03, 3543.38), (10268.71, 3543.29), (10274.36, 3543.235), (10274.74, 3543.227), (10280.02, 3543.119), (10285.45, 3543.114), (10285.67, 3543.113), (10291.33, 3543.071), (10296.16, 3543.056), (10296.98, 3543.053), (10302.63, 3543.042), (10306.87, 3543.024), (10308.29, 3543.022), (10313.94, 3542.97), (10315.24, 3542.965)]\",\"[(9662.966, 3579.47), (9663.393, 3579.585), (9664.951, 3579.986), (9669.365, 3581.181), (9674.095, 3582.469), (9675.337, 3582.753), (9681.308, 3584.075), (9683.239, 3584.428), (9687.28, 3585.299), (9692.383, 3586.349), (9693.252, 3586.555), (9699.224, 3588.03), (9701.527, 3588.364), (9705.196, 3588.964), (9710.671, 3588.576), (9711.168, 3588.555), (9717.14, 3586.666), (9719.815, 3585.26), (9723.111, 3583.566), (9728.959, 3580.698), (9729.083, 3580.633), (9735.055, 3577.343), (9738.103, 3575.367), (9741.027, 3573.431), (9746.999, 3570.133), (9747.247, 3570.0), (9752.971, 3566.845), (9756.391, 3565.02), (9758.943, 3563.61), (9764.914, 3560.28), (9765.535, 3559.92), (9770.886, 3556.82), (9774.679, 3554.915), (9776.858, 3553.794), (9782.83, 3550.519), (9783.823, 3549.997), (9788.802, 3547.602), (9792.967, 3545.572), (9794.213, 3544.701), (9794.762, 3544.288), (9800.604, 3539.038), (9802.563, 3537.496), (9806.446, 3534.905), (9812.229, 3531.338), (9812.288, 3531.308), (9818.131, 3529.016), (9821.896, 3528.027), (9823.973, 3527.594), (9829.815, 3526.48), (9831.562, 3526.344), (9835.657, 3526.532), (9841.229, 3526.749), (9841.5, 3526.752), (9847.342, 3526.839), (9850.895, 3526.869), (9853.184, 3526.968), (9859.026, 3527.095), (9860.561, 3527.075), (9864.869, 3527.029), (9870.228, 3527.064), (9870.711, 3527.048), (9871.849, 3527.02), (9876.372, 3526.909), (9880.98, 3526.897), (9881.989, 3526.919), (9887.607, 3527.11), (9891.951, 3527.201), (9893.224, 3527.258), (9898.841, 3527.533), (9902.922, 3527.708), (9903.475, 3527.725), (9904.423, 3527.754), (9909.838, 3527.945), (9915.253, 3527.973), (9915.84, 3527.995), (9920.669, 3528.086), (9926.084, 3528.036), (9928.86, 3528.108), (9931.499, 3528.181), (9936.914, 3528.101), (9939.686, 3528.233), (9942.24, 3528.398), (9942.544, 3528.392), (9947.473, 3528.227), (9952.706, 3526.898), (9957.938, 3526.228), (9959.499, 3526.31), (9963.171, 3526.515), (9968.404, 3526.876), (9971.33, 3527.018), (9973.584, 3527.126), (9978.572, 3527.199), (9978.696, 3527.2), (9983.809, 3526.881), (9985.772, 3526.611), (9988.921, 3526.178), (9994.034, 3525.665), (9999.0, 3525.763), (9999.145, 3525.767), (10001.0, 3525.782), (10003.03, 3525.789), (10004.24, 3525.791), (10009.34, 3526.055), (10014.45, 3526.073), (10019.56, 3525.877), (10023.87, 3525.825), (10024.68, 3525.824), (10026.56, 3525.758), (10029.89, 3525.768), (10032.64, 3526.702), (10035.1, 3527.537), (10040.31, 3528.898), (10044.34, 3528.865), (10045.52, 3528.909), (10050.73, 3528.933), (10055.94, 3528.964), (10061.15, 3528.822), (10062.12, 3528.828), (10065.11, 3528.893), (10066.54, 3528.919), (10072.47, 3529.126), (10072.84, 3529.134), (10078.4, 3529.151), (10082.14, 3529.24), (10084.33, 3529.35), (10090.26, 3529.479), (10091.44, 3529.521), (10096.19, 3529.66), (10100.74, 3529.905), (10102.12, 3529.96), (10108.05, 3530.082), (10110.03, 3530.078), (10113.98, 3530.027), (10119.33, 3529.985), (10119.91, 3529.99), (10125.84, 3530.836), (10128.63, 3531.446), (10131.77, 3531.972), (10137.7, 3531.74), (10137.93, 3531.727), (10143.63, 3531.247), (10147.22, 3531.352), (10149.57, 3531.335), (10155.5, 3531.319), (10156.52, 3531.281), (10161.43, 3531.21), (10165.82, 3531.205), (10167.36, 3531.231), (10173.29, 3531.203), (10175.11, 3531.205), (10179.22, 3531.683), (10184.41, 3531.591), (10185.15, 3531.651), (10191.08, 3532.112), (10193.71, 3532.318), (10197.01, 3532.825), (10202.94, 3534.245), (10203.01, 3534.268), (10208.87, 3536.059), (10212.3, 3536.236), (10214.8, 3536.328), (10220.73, 3536.019), (10221.6, 3536.032), (10226.66, 3536.037), (10230.9, 3536.038), (10232.59, 3535.993), (10238.52, 3536.152), (10240.2, 3536.238), (10244.46, 3536.397), (10249.49, 3536.747), (10250.39, 3536.885), (10256.32, 3537.986), (10258.79, 3538.52), (10262.25, 3538.928), (10268.09, 3539.932), (10268.18, 3539.94), (10274.11, 3541.496), (10277.39, 3541.589), (10280.04, 3541.681), (10285.97, 3541.662), (10286.68, 3541.641), (10291.9, 3541.151), (10295.98, 3540.874), (10297.83, 3540.646), (10303.76, 3539.96), (10305.28, 3539.878), (10309.69, 3539.666), (10314.57, 3539.214), (10315.62, 3539.156), (10321.55, 3538.646), (10323.87, 3538.569), (10327.48, 3538.661), (10333.17, 3538.706), (10333.42, 3538.715), (10339.35, 3539.009), (10342.47, 3539.085), (10345.28, 3539.194), (10351.21, 3539.221), (10351.76, 3539.264), (10357.14, 3539.602), (10361.06, 3539.593), (10363.07, 3539.775), (10369.0, 3540.152), (10370.36, 3540.189), (10374.93, 3540.26), (10379.66, 3540.648), (10380.86, 3540.71), (10386.79, 3540.632), (10388.95, 3540.655), (10392.72, 3540.72), (10398.25, 3540.595), (10398.65, 3540.582), (10404.58, 3540.798), (10407.55, 3540.943), (10410.51, 3541.141), (10416.44, 3541.295), (10416.85, 3541.315), (10422.37, 3541.614), (10426.14, 3541.715), (10428.31, 3541.791), (10434.24, 3541.948), (10435.44, 3541.981), (10440.17, 3542.184), (10444.74, 3542.339), (10446.1, 3542.401), (10452.03, 3542.546), (10454.04, 3542.675), (10457.96, 3542.862), (10463.33, 3542.999), (10463.89, 3543.017), (10469.82, 3543.215), (10472.63, 3543.329), (10475.75, 3543.512), (10481.68, 3543.871), (10481.93, 3543.873), (10487.61, 3543.853), (10491.22, 3543.98), (10493.54, 3544.078), (10499.47, 3544.327), (10500.52, 3544.353), (10505.4, 3544.595), (10509.82, 3544.938), (10511.33, 3545.032), (10517.26, 3545.344), (10519.12, 3545.419), (10523.2, 3545.586), (10528.41, 3546.275), (10529.13, 3546.351), (10535.06, 3546.237), (10537.71, 3546.314), (10540.99, 3546.366), (10546.92, 3546.186), (10547.01, 3546.185), (10552.85, 3546.368), (10556.31, 3546.561), (10558.78, 3546.625), (10564.71, 3546.702), (10565.6, 3546.714), (10570.64, 3546.8), (10574.9, 3546.971), (10576.57, 3547.031), (10582.5, 3547.248), (10584.2, 3547.34), (10588.43, 3547.843), (10593.5, 3548.216), (10594.36, 3548.507), (10600.29, 3550.675), (10602.79, 3551.752), (10606.22, 3553.206), (10612.09, 3555.245), (10612.15, 3555.271), (10618.09, 3556.958), (10621.39, 3557.613), (10624.02, 3558.026), (10629.95, 3558.613), (10630.69, 3558.641), (10635.88, 3558.753), (10639.98, 3559.115), (10641.81, 3559.343), (10647.74, 3559.897), (10649.28, 3560.184), (10653.67, 3560.785), (10658.58, 3561.589), (10659.6, 3561.78), (10665.53, 3562.864), (10667.87, 3563.257), (10671.46, 3563.833), (10677.17, 3564.569), (10677.39, 3564.577), (10683.32, 3564.727), (10686.47, 3565.419), (10689.25, 3566.235), (10694.71, 3567.97)]\",\"[(9626.995, 3583.562), (9627.169, 3583.476), (9633.338, 3580.506), (9635.14, 3579.573), (9639.506, 3577.466), (9643.677, 3575.567), (9645.675, 3574.588), (9651.844, 3571.643), (9652.215, 3571.474), (9658.012, 3568.979), (9660.752, 3567.802), (9664.181, 3566.24), (9669.29, 3564.797), (9670.349, 3564.58), (9673.095, 3564.845), (9676.641, 3565.237), (9677.545, 3565.438), (9683.031, 3566.571), (9685.575, 3567.284), (9689.421, 3568.183), (9693.604, 3569.0), (9695.811, 3569.428), (9701.634, 3570.9), (9702.202, 3571.042), (9708.592, 3572.724), (9709.663, 3573.052), (9714.982, 3574.52), (9717.692, 3575.138), (9721.372, 3575.942), (9725.722, 3576.756), (9727.762, 3577.125), (9733.751, 3578.081), (9734.152, 3578.131), (9740.543, 3578.017), (9741.78, 3577.623), (9746.933, 3575.793), (9749.81, 3574.469), (9753.323, 3573.051), (9757.839, 3570.961), (9759.713, 3570.122), (9765.869, 3567.131), (9766.103, 3567.02), (9772.494, 3563.811), (9773.898, 3563.152), (9774.022, 3563.099), (9779.171, 3560.698), (9781.326, 3559.629), (9785.94, 3557.35), (9788.745, 3555.838), (9792.708, 3553.679), (9796.163, 3551.802), (9799.476, 3549.959), (9803.582, 3547.992), (9806.244, 3546.717), (9811.001, 3544.444), (9813.012, 3543.579), (9818.419, 3540.5), (9819.781, 3539.384), (9825.838, 3533.655), (9826.549, 3533.068), (9833.256, 3528.506), (9833.317, 3528.474), (9840.085, 3524.821), (9840.675, 3524.686), (9845.185, 3524.158), (9847.005, 3524.012), (9847.85, 3524.063), (9854.386, 3524.351), (9854.646, 3524.353), (9861.443, 3524.837), (9861.768, 3524.873), (9868.24, 3525.27), (9869.149, 3525.333), (9875.036, 3525.888), (9876.531, 3526.042), (9881.833, 3526.286), (9883.913, 3526.283), (9888.63, 3526.072), (9891.294, 3525.865), (9893.951, 3525.697), (9895.289, 3525.616), (9899.42, 3525.542), (9901.456, 3525.545), (9907.622, 3525.347), (9907.964, 3525.344), (9913.788, 3525.492), (9916.507, 3525.569), (9919.954, 3525.661), (9925.051, 3525.916), (9926.12, 3525.958), (9932.287, 3526.336), (9933.595, 3526.369), (9933.767, 3526.369), (9938.061, 3526.362), (9943.711, 3525.72), (9944.287, 3525.659), (9949.361, 3525.128), (9955.011, 3524.161), (9955.022, 3524.159), (9960.661, 3523.747), (9965.519, 3523.685), (9965.83, 3523.678), (9966.27, 3523.663), (9971.627, 3523.456), (9974.171, 3523.264), (9976.983, 3523.052), (9979.774, 3522.89), (9982.339, 3522.727), (9987.695, 3522.545), (9993.051, 3522.205), (9993.718, 3522.18), (9998.407, 3521.963), (9999.0, 3521.982), (10001.0, 3522.063), (10003.72, 3522.206), (10008.04, 3523.856), (10009.06, 3524.373), (10010.04, 3524.909), (10014.4, 3527.291), (10019.74, 3528.526), (10022.32, 3528.435), (10025.08, 3528.32), (10030.42, 3527.893), (10031.44, 3527.734), (10033.71, 3527.439), (10038.11, 3526.911), (10039.99, 3526.776), (10046.27, 3526.225), (10046.36, 3526.22), (10052.56, 3525.78), (10054.62, 3525.609), (10058.84, 3525.25), (10062.87, 3524.94), (10065.13, 3524.829), (10071.12, 3524.586), (10071.41, 3524.572), (10077.7, 3524.304), (10079.37, 3524.281), (10083.98, 3524.096), (10087.63, 3523.966), (10090.27, 3523.829), (10095.88, 3523.417), (10096.55, 3523.413), (10102.84, 3523.446), (10104.13, 3523.512), (10109.12, 3523.806), (10112.39, 3524.29), (10115.41, 3525.203), (10120.64, 3526.365), (10121.69, 3526.554), (10127.98, 3526.629), (10128.89, 3526.576), (10134.26, 3527.067), (10137.14, 3527.933), (10140.55, 3529.16), (10145.4, 3530.914), (10146.83, 3531.173), (10153.12, 3531.874), (10153.65, 3531.913), (10159.4, 3532.219), (10161.9, 3532.206), (10165.69, 3532.337), (10170.16, 3532.398), (10171.97, 3532.396), (10178.25, 3532.528), (10178.41, 3532.526), (10184.54, 3532.522), (10186.66, 3532.509), (10190.82, 3532.407), (10194.91, 3532.48), (10197.11, 3532.525), (10203.17, 3532.721), (10203.39, 3532.73), (10209.68, 3532.832), (10211.42, 3532.907), (10215.96, 3533.116), (10219.67, 3533.055), (10222.25, 3533.131), (10227.93, 3533.562), (10228.53, 3533.589), (10234.82, 3534.981), (10236.18, 3535.447), (10241.1, 3537.119), (10244.43, 3538.562), (10247.39, 3539.332), (10252.68, 3539.95), (10253.67, 3539.963), (10259.96, 3539.609), (10260.94, 3539.438), (10266.24, 3538.371), (10269.19, 3537.834), (10272.53, 3537.017), (10277.44, 3536.7), (10278.81, 3536.642), (10285.1, 3536.353), (10285.7, 3536.348), (10291.38, 3536.498), (10293.95, 3536.525), (10297.66, 3536.683), (10302.2, 3536.663), (10303.95, 3536.604), (10310.23, 3536.643), (10310.45, 3536.643), (10316.52, 3536.557), (10318.71, 3536.531), (10322.8, 3536.513), (10326.96, 3536.521), (10329.09, 3536.525), (10335.21, 3536.919), (10335.37, 3536.925), (10341.66, 3538.123), (10343.47, 3538.396), (10347.94, 3538.703), (10351.72, 3538.749), (10354.23, 3538.728), (10359.97, 3538.544), (10360.51, 3538.593), (10366.8, 3538.821), (10368.22, 3538.659), (10373.08, 3538.616), (10376.48, 3538.396), (10379.37, 3538.259), (10384.73, 3538.112), (10385.65, 3538.124), (10391.94, 3538.324), (10392.98, 3538.35), (10398.22, 3538.477), (10401.24, 3538.553), (10404.51, 3538.697), (10409.49, 3539.102), (10410.79, 3539.119), (10417.08, 3539.092), (10417.74, 3539.118), (10423.36, 3539.49), (10425.99, 3539.643), (10429.64, 3539.804), (10434.25, 3539.849), (10435.93, 3539.856), (10442.21, 3539.753), (10442.5, 3539.777), (10448.5, 3540.38), (10450.75, 3540.472), (10454.78, 3540.644), (10459.0, 3541.048), (10461.07, 3541.19), (10467.26, 3541.238), (10467.35, 3541.237), (10473.64, 3541.434), (10475.51, 3541.517), (10479.92, 3541.77), (10483.76, 3542.065), (10486.21, 3542.243), (10492.02, 3542.449), (10492.49, 3542.459), (10498.78, 3542.505), (10500.27, 3542.514), (10505.06, 3542.715), (10508.52, 3543.172), (10511.35, 3543.469), (10516.77, 3543.545), (10517.63, 3543.543), (10523.92, 3543.557), (10525.03, 3543.617), (10530.2, 3543.588), (10533.28, 3543.56), (10536.49, 3543.706), (10541.53, 3543.9), (10542.77, 3543.97), (10549.05, 3544.249), (10549.79, 3544.289), (10555.34, 3544.759), (10558.04, 3545.109), (10561.62, 3545.738), (10566.29, 3546.714), (10567.91, 3546.934), (10574.19, 3547.269), (10574.54, 3547.244), (10580.48, 3547.297), (10582.8, 3547.312), (10586.76, 3547.195), (10591.05, 3547.354), (10593.05, 3547.4), (10599.3, 3547.423), (10599.33, 3547.422), (10605.62, 3547.539), (10607.56, 3547.482), (10611.9, 3547.392), (10615.81, 3547.416), (10618.19, 3547.482), (10624.06, 3547.955), (10624.47, 3547.984), (10630.76, 3548.489), (10632.31, 3548.552), (10637.04, 3548.708), (10640.57, 3548.788), (10643.33, 3548.906), (10648.82, 3548.929), (10649.61, 3548.931), (10655.9, 3548.881), (10657.07, 3548.93), (10662.18, 3549.551), (10665.33, 3550.104), (10668.47, 3550.784), (10673.58, 3552.33), (10674.75, 3552.793), (10681.03, 3555.243), (10681.83, 3555.571), (10687.32, 3558.078), (10690.08, 3559.295), (10693.6, 3560.674), (10698.34, 3562.858), (10699.89, 3563.529), (10706.17, 3566.255), (10706.59, 3566.474), (10712.46, 3569.467), (10714.84, 3570.498), (10718.74, 3572.24), (10723.1, 3573.741), (10725.03, 3574.394), (10731.31, 3576.874), (10731.35, 3576.887), (10737.6, 3579.189), (10739.6, 3579.844), (10743.88, 3581.373), (10746.92, 3582.122)]\"]]\n", + "bank_stations: [[\"['9989.947', '10012.95']\",\"['9987.545', '10010']\",\"['9989.999', '10010']\",\"['9990', '10020.07']\",\"['9989.087', '10022.77']\",...,\"['9977.755', '10030.43']\",\"['9971.079', '10038.65']\",\"['9986.228', '10051.7']\",\"['9985.772', '10032.64']\",\"['9974.171', '10010.04']\"]]\n", + "number_of_station_elevation_points: [[85,83,143,171,173,...,217,222,175,293,325]]\n", + "number_of_coords: [[8,8,7,9,9,...,7,7,9,11,11]]\n", + "flows: [[\"167.0\n", + "313.0\n", + "456.0\n", + "633.0\n", + "804.0\n", + "498.0\n", + "1183.0\",\"167.0\n", + "313.0\n", + "456.0\n", + "633.0\n", + "805.0\n", + "498.0\n", + "1184.0\",\"167.0\n", + "313.0\n", + "457.0\n", + "633.0\n", + "805.0\n", + "498.0\n", + "1185.0\",\"168.0\n", + "313.0\n", + "457.0\n", + "634.0\n", + "805.0\n", + "499.0\n", + "1185.0\",\"169.0\n", + "316.0\n", + "460.0\n", + "638.0\n", + "811.0\n", + "502.0\n", + "1194.0\",...,\"433.0\n", + "796.0\n", + "1152.0\n", + "1584.0\n", + "2014.0\n", + "1247.0\n", + "2926.0\",\"433.0\n", + "796.0\n", + "1152.0\n", + "1585.0\n", + "2014.0\n", + "1247.0\n", + "2927.0\",\"437.0\n", + "803.0\n", + "1162.0\n", + "1599.0\n", + "2032.0\n", + "1258.0\n", + "2952.0\",\"440.0\n", + "808.0\n", + "1169.0\n", + "1608.0\n", + "2043.0\n", + "1265.0\n", + "2967.0\",\"440.0\n", + "808.0\n", + "1169.0\n", + "1608.0\n", + "2043.0\n", + "1265.0\n", + "2967.0\"]]\n", + "profile_names: [[\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",...,\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\",\" 10yr\n", + "25yr\n", + "50yr\n", + "100yr\n", + "100plus\n", + "100minus\n", + "500yr\"]]\n", + "geometry: [[010200000008000000E895564C44AE34C183C588B9C11F334114D0C25941AE34C1C75AF77AB91F3341C13C77663DAE34C103E1300FB11F33413198E01D3DAE34C11085B084B01F334193A669FE37AE34C126BE9F3FA51F33411E16E8FB32AE34C1272FE52D951F3341ABCAC0C02FAE34C1031DD09A831F3341B4CAB2FA2DAE34C169BE50E16D1F3341,0102000000080000008AF82D7824AE34C1D2A50D4BC71F3341535FE5D322AE34C173B707E7BA1F33413F97A8C222AE34C198C8FE4ABA1F3341921E2B2820AE34C1698BE94AA81F334156F703B31EAE34C1F16F23559A1F3341DA8CAACE1DAE34C1C9E10DAC861F33410B9B18F61DAE34C14CEAD794751F33416A302B111EAE34C1CBE0CDD8691F3341,010200000007000000BA5FC7222CAE34C1116D3D36052033413BE8E2FC03AE34C12D597FD4C81F3341FE4DCB9B06AE34C15EFFB2F8B91F334195B7B2B606AE34C1D642E35DB91F3341E46205A80BAE34C1BD1DF02B9F1F33411523074011AE34C15C085327751F33411928C14113AE34C16DED6E14661F3341,010200000009000000DE56E5E217AE34C131114E300E20334133F5A220E7AD34C1C990C092BC1F33417615CDBAEBAD34C1EAAA910CB11F33410E354FF3EBAD34C1E0810D7AB01F3341123765E3F2AD34C11852DEA79F1F33412B886BBEF7AD34C1A374137B921F334165908C7FFDAD34C120FB7EA77F1F3341ED05BDA701AE34C12B20A0126F1F334105498E2405AE34C1114B5429611F3341,010200000009000000CD284C1EFCAD34C1482734FF05203341126C84C6CDAD34C1A04EFFEBAD1F3341B1F39139D2AD34C13B1E59ABA41F3341D671677FD2AD34C1FC47CE1EA41F3341F149EA59DBAD34C16CBF252E921F334109B727B0E1AD34C1F2950D1A841F3341ED766ABBE7AD34C1489D9FCB741F33414A400040EDAD34C190FF199F641F33411032FDD7F0AD34C123E076165A1F3341,...,010200000007000000710282497AAD34C1E8A31E94EF203341557DEDA2A0AD34C142C32C34C420334128ACF30FC5AD34C1939153B198203341C70AC578C5AD34C12A16213D98203341DAF6CCFECAAD34C1EA011FD49120334198D8BCF8D3AD34C1FD0454A586203341690CF04D1FAE34C1255596F852203341,010200000007000000544E26814EAD34C1E416CA09B82033412508A6136FAD34C1181924039F203341315935599FAD34C1B88A672A7D2033418B37A1AAAAAD34C1020AE57B742033415E878117ABAD34C1E83A970B74203341EF3FBD3BB2AD34C10A66D27B6E2033418E5813C612AE34C1C1C056D73F203341,0102000000090000003ADE6E0542AD34C127E562AB63203341AFEAE0C642AD34C171A4146B63203341F21113495EAD34C12D5649E05B2033414AABBF8A8DAD34C1991E44C7502033413F039E579AAD34C17DF35E654C203341E3D661E89AAD34C17D1C7A2C4C2033414D18FEEAA8AD34C19EA2103D47203341FE1EB746E1AD34C1E99E42E336203341B423C1DDF5AD34C12D573C902F203341,01020000000B000000626785902AAD34C1FAB1F7A034203341791C1BBF4EAD34C16C7824CE232033418CABCB7964AD34C1BFEB6D9D1A203341496919906DAD34C1F1FDAE8217203341D2CB713578AD34C1284D62CC1420334153A524B081AD34C1FA3E7D5413203341B9E8B60D8AAD34C11B0D61CC12203341D0DEC3A88AAD34C170A0DFC912203341C217529391AD34C13B15B36212203341C35474F49DAD34C12D4083A6102033417852CB5B4CAE34C1CE2907D6C11F3341,01020000000B000000B0DE7D191AAD34C10029FA6D282033414F52918526AD34C1E913D8EB2120334104131B0A41AD34C1B9D7EF6812203341F59317F952AD34C18EE8B53906203341BD62E0805EAD34C1748C03D4FC1F3341367DEBF466AD34C16274C814F41F3341349B6BAB6CAD34C17C509538EC1F3341587A9EB171AD34C109211847E31F33419E2DC2F871AD34C12BA438BBE21F3341E8A1F37776AD34C1273F8B8FDA1F3341E1A0F7B634AE34C1DFBB23AF701F3341]]\n", + "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", + "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", + "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", + "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294311\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]\n", + "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"21294311\"]]\n", + "__index_level_0__: [[30787,30788,30789,30790,30791,...,30966,30967,30968,30969,30970]]\n" + ] + } + ], + "source": [ + "# Scenario III\n", + "# User Args\n", + "catalog_name = 'xs'\n", + "huc_num = 15040007\n", + "\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "tablename = f'huc_{huc_num}'\n", + "namespace = 'mip'\n", + "catalog = load_catalog(name=catalog_name, \n", + " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", + "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "print(iceberg_table.to_string(preview_cols=30))" + ] + }, + { + "cell_type": "markdown", + "id": "42d97ebb-f690-4dce-80fd-a01e61f9e6ec", + "metadata": {}, + "source": [ + "#### Demo:\n", + "#### Load Iceberg Catalog & Table of Interest\n", + "#### Cross-Check & Verify Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "64bfeb93-15f2-4c20-affa-af8b215172de", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "river: large_string\n", + "huc: large_string\n", + "model_id: large_string\n", + "us_reach_id: large_string\n", + "ds_reach_id: large_string\n", + "----\n", + "river: [[\"1242\",\"1242\",\"1242\",\"1242\",\"1242\",...,\"1236\",\"1236\",\"1236\",\"1236\",\"1236\"]]\n", + "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", + "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", + "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", + "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]" + ] + }, + "execution_count": 24, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Query iceberg table for specific features of interest\n", + "catalog.load_table(f'{namespace}.{tablename}').scan(selected_fields=(\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\")).to_arrow()" + ] + }, + { + "cell_type": "markdown", + "id": "42103887-3d43-421a-819d-8689940267d5", + "metadata": {}, + "source": [ + "### Demo VI:\n", + "### Load CRS Mapping" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "2c3de676-42ec-4e15-8e04-5469afcbae10", + "metadata": {}, + "outputs": [], + "source": [ + "with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'rb') as handle:\n", + " crs_map = pickle.load(handle)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "c36c0954-2150-4441-a546-3b455ab871cc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(dict,\n", + " {('07130010',\n", + " 'sa_1'): {'LitCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRv_us': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'SBLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaHaCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'BapCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'RocCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'Killjordan'): {'Killjordan Cr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'sa_6'): {'CedCkTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CedCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRvTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRvTrbB': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'sa_7'): {'TowFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'DroFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'DroFkTrbAa': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'KepCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'NFEFLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'FarFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'EFLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'SprCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'ShoFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'sa_5'): {'TroCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'KilCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'sa_4'): {'CamCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CarCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'GriCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CamCrTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('07130010',\n", + " 'LaMoine'): {'LaMoine River': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'Spring Creek': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", + " ('09020301',\n", + " 'SHRWDS'): {'SHRWDS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHR5_1'): {'SHR5': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHRUS_1'): {'SHRUS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'GF_EGF_FIS_Submittal1204'): {'RRN': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,'},\n", + " ('09020301',\n", + " 'SHR6_1'): {'SHR6': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHRup'): {'SHRup': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'UnnamedTrib1_1'): {'UnnamedTrib1': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHR2'): {'SHR2': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Maple_Creek_1'): {'Maple Creek': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHR2_1'): {'SHR2': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'RedRiverTA'): {'RedRiverTA': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Maple_Creek'): {'Maple Creek': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SandHill29_1'): {'SandHill29': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHRUS'): {'SHRUS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHRWDS_1'): {'SHRWDS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'UnnamedTrib1'): {'UnnamedTrib1': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SandHill29'): {'SandHill29': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Ditch16So_1'): {'Ditch16So': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Kittleson'): {'Kittleson': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SandHillRiver7'): {'SandHillRiver7': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHR5'): {'SHR5': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SandHillRiver7_1'): {'SandHillRiver7': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Ditch16So'): {'Ditch16So': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'GFEGFFIS0807'): {'RRN': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'Heartsville': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'Red Lake River': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'English Coulee': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,'},\n", + " ('09020301',\n", + " 'SHR6'): {'SHR6': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'Kittleson_1'): {'Kittleson': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'SHRup_1'): {'SHRup': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('09020301',\n", + " 'RedRiverTA_1'): {'RedRiverTA': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", + " ('06040002',\n", + " 'Bell_Buckle_Cr'): {'Bell Buckle Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Kelly_Creek_T1'): {'Kelly Creek T1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Bomar_Creek'): {'Bomar Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Trib_to_Bomar_Cr'): {'Trib to Bomar Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Rabbit_Branch'): {'Rabbit Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Thompson_Branch'): {'Thompson Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Sinking_Creek'): {'Sinking Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Duck_River_DS'): {'Duck River DS': 'ESPG: 2915, NAD83(HARN) / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'North_Fork_Creek'): {'North Fork Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Butler_Creek'): {'Butler Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Noah_Fork_Creek'): {'Noah Fork Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Duck_River_Trib4'): {'Duck River Trib4': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Wartrace_Creek'): {'Wartrace Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Dry_Branch'): {'Dry Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Doddy_Branch'): {'Doddy Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Stokes_Branch'): {'Stokes Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'GarrisonForkCrT1'): {'GarrisonForkCrT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Little_Flat_Cr'): {'Little Flat Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Sugar_Creek'): {'Sugar Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Bell_Buckle_CrT2'): {'Bell Buckle CrT2': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Fall_Creek'): {'Fall Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Muse_Branch'): {'Muse Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Fay_Branch'): {'Fay Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Crouch_Branch'): {'Crouch Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Hurricane_Branch'): {'Hurricane Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'GarrisonForkCr'): {'GarrisonForkCr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Flat_Creek'): {'Flat Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Powell_Creek'): {'Powell Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Dryland_Creek'): {'Dryland Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Bell_Buckle_CrT1'): {'Bell Buckle CrT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Norman_Creek_T1'): {'Norman Creek T1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Anthony_Branch'): {'Anthony Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Trib_to_Holland'): {'Trib to Holland': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Cannon_Creek'): {'Cannon Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Little_Hurricane'): {'Little Hurricane': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Norman_Creek_T2'): {'Norman Creek T2': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Kelly_Creek'): {'Kelly Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('06040002',\n", + " 'Wartrace_CreekT1'): {'Wartrace CreekT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", + " ('03170004',\n", + " 'MixonLOMR-Existing3_17_17'): {'Mixons Creek Tri': 'ESPG: 2254, NAD83 / Mississippi East (ftUS),'},\n", + " ('01020002',\n", + " 'Stream0510'): {'Stream0510': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('01020002',\n", + " 'Stream0528'): {'Stream0528': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('01020002',\n", + " 'Martin_Stream'): {'Martin Stream': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('01020002',\n", + " 'Stream0526'): {'Stream0526': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('01020002',\n", + " 'Stream0527'): {'Stream0527': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('01020002',\n", + " 'Stream0512'): {'Stream0512': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", + " ('10120203',\n", + " 'Spearfish_Cr_LOMR_FEMA_RESPONSE_1'): {'Spearfish Creek': 'ESPG: 3458, NAD83(HARN) / South Dakota North (ftUS),'},\n", + " ('10120203',\n", + " 'Spearfish_Cr_LOMR_FEMA_RESPONSE'): {'Spearfish Creek': 'ESPG: 3458, NAD83(HARN) / South Dakota North (ftUS),'},\n", + " ('11060002',\n", + " 'YELLOWSTONE_CREEK'): {'YELLOWSTONE CREE': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT64_in_UPPER_SALT_FRK_HUC8_1'): {'UNT64 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT115_in_UPPER_SALT_FRK_HUC8_1'): {'UNT115 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT64_in_UPPER_SALT_FRK_HUC8'): {'UNT64 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'JUG_MOTTE_CREEK_1'): {'JUG MOTTE CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT80_in_UPPER_SALT_FRK_HUC8'): {'UNT80 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'MUSTANG_CREEK_1'): {'MUSTANG CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT79_in_UPPER_SALT_FRK_HUC8'): {'UNT79 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT23_in_UPPER_SALT_FRK_HUC8'): {'UNT23 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT61_in_UPPER_SALT_FRK_HUC8'): {'UNT61 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT83_in_UPPER_SALT_FRK_HUC8_1'): {'UNT83 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT119_in_UPPER_SALT_FRK_HUC8_1'): {'UNT119 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT14_in_UPPER_SALT_FRK_HUC8_1'): {'UNT14 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT45_in_UPPER_SALT_FRK_HUC8'): {'UNT45 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT101_in_UPPER_SALT_FRK_HUC8_1'): {'UNT101 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT84_in_UPPER_SALT_FRK_HUC8_1'): {'UNT84 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'COTTONWOOD_CREEK_1'): {'COTTONWOOD CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT91_in_UPPER_SALT_FRK_HUC8_1'): {'UNT91 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT115_in_UPPER_SALT_FRK_HUC8'): {'UNT115 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT66_in_UPPER_SALT_FRK_HUC8'): {'UNT66 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT75_in_BluffCr_Watershed'): {'UNT75 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT111_in_UPPER_SALT_FRK_HUC8_1'): {'UNT111 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT92_in_UPPER_SALT_FRK_HUC8_1'): {'UNT92 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT75_in_UPPER_SALT_FRK_HUC8_1'): {'UNT75 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT120_in_Liberal_Watershed_1'): {'UNT120 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT9_in_UPPER_SALT_FRK_HUC8_1'): {'UNT9 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT92_in_UPPER_SALT_FRK_HUC8'): {'UNT92 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT107_in_UPPER_SALT_FRK_HUC8'): {'UNT107 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT34_in_UPPER_SALT_FRK_HUC8'): {'UNT34 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT84_in_UPPER_SALT_FRK_HUC8'): {'UNT84 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT27_in_UPPER_SALT_FRK_HUC8'): {'UNT27 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT93_in_UPPER_SALT_FRK_HUC8_1'): {'UNT93 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT55_in_UPPER_SALT_FRK_HUC8'): {'UNT55 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT2_in_UPPER_SALT_FRK_HUC8_1'): {'UNT2 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT106_in_UPPER_SALT_FRK_HUC8_1'): {'UNT106 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT9_in_UPPER_SALT_FRK_HUC8'): {'UNT9 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'MUSTANG_CREEK'): {'MUSTANG CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT14_in_UPPER_SALT_FRK_HUC8'): {'UNT14 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT54_in_UPPER_SALT_FRK_HUC8'): {'UNT54 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT133_in_Liberal_Watershed_1'): {'UNT133 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT21_in_UPPER_SALT_FRK_HUC8_1'): {'UNT21 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT18_in_UPPER_SALT_FRK_HUC8_1'): {'UNT18 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT103_in_UPPER_SALT_FRK_HUC8'): {'UNT103 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT11_in_UPPER_SALT_FRK_HUC8_1'): {'UNT11 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT71_in_UPPER_SALT_FRK_HUC8'): {'UNT71 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT139_in_UPPER_SALT_FRK_HUC8_1'): {'UNT139 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT139_in_UPPER_SALT_FRK_HUC8'): {'UNT139 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT68_in_UPPER_SALT_FRK_HUC8_1'): {'UNT68 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT111_in_UPPER_SALT_FRK_HUC8'): {'UNT111 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT60_in_UPPER_SALT_FRK_HUC8_1'): {'UNT60 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT103_in_Liberal_Watershed'): {'UNT103 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT31_in_UPPER_SALT_FRK_HUC8_1'): {'UNT31 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT19_in_UPPER_SALT_FRK_HUC8_1'): {'UNT19 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT120_in_UPPER_SALT_FRK_HUC8'): {'UNT120 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT25_in_UPPER_SALT_FRK_HUC8_1'): {'UNT25 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT67_in_UPPER_SALT_FRK_HUC8_1'): {'UNT67 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT8_in_UPPER_SALT_FRK_HUC8_1'): {'UNT8 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT29_in_UPPER_SALT_FRK_HUC8'): {'UNT29 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT65_in_UPPER_SALT_FRK_HUC8'): {'UNT65 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT110_in_Liberal_Watershed'): {'UNT110 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT19_in_UPPER_SALT_FRK_HUC8'): {'UNT19 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT27_in_UPPER_SALT_FRK_HUC8_1'): {'UNT27 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT105_in_UPPER_SALT_FRK_HUC8_1'): {'UNT105 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'GREENLEAF_CREEK'): {'GREENLEAF CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT32_in_UPPER_SALT_FRK_HUC8'): {'UNT32 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT73_in_UPPER_SALT_FRK_HUC8_1'): {'UNT73 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT73_in_BluffCr_Watershed'): {'UNT73 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT55_in_UPPER_SALT_FRK_HUC8_1'): {'UNT55 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT87_in_UPPER_SALT_FRK_HUC8_1'): {'UNT87 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT72_in_UPPER_SALT_FRK_HUC8_1'): {'UNT72 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'HACKBERRY_CREEK'): {'HACKBERRY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT72_in_UPPER_SALT_FRK_HUC8'): {'UNT72 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT144_in_UPPER_SALT_FRK_HUC8_1'): {'UNT144 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT35_in_UPPER_SALT_FRK_HUC8'): {'UNT35 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT129_in_Edith_Watershed_1'): {'UNT129 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", + " ('11060002',\n", + " 'UNT144_in_UPPER_SALT_FRK_HUC8'): {'UNT144 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT89_in_UPPER_SALT_FRK_HUC8_1'): {'UNT89 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT25_in_UPPER_SALT_FRK_HUC8'): {'UNT25 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT89_in_UPPER_SALT_FRK_HUC8'): {'UNT89 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT102_in_UPPER_SALT_FRK_HUC8'): {'UNT102 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT94_in_Liberal_Watershed'): {'UNT94 in Liberal': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'TURKEY_CREEK'): {'TURKEY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT120_in_UPPER_SALT_FRK_HUC8_1'): {'UNT120 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT12_in_UPPER_SALT_FRK_HUC8_1'): {'UNT12 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT36_in_UPPER_SALT_FRK_HUC8'): {'UNT36 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT26_in_UPPER_SALT_FRK_HUC8'): {'UNT26 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT143_in_UPPER_SALT_FRK_HUC8'): {'UNT143 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT36_in_UPPER_SALT_FRK_HUC8_1'): {'UNT36 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT114_in_UPPER_SALT_FRK_HUC8'): {'UNT114 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT24_in_UPPER_SALT_FRK_HUC8_1'): {'UNT24 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT116_in_UPPER_SALT_FRK_HUC8'): {'UNT116 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT33_in_UPPER_SALT_FRK_HUC8_1'): {'UNT33 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT97_in_UPPER_SALT_FRK_HUC8'): {'UNT97 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT76_in_UPPER_SALT_FRK_HUC8'): {'UNT76 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT32_in_UPPER_SALT_FRK_HUC8_1'): {'UNT32 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'SALT_FORK_ARKANSAS_RIVER'): {'SALT FORK ARKANS': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT95_in_UPPER_SALT_FRK_HUC8'): {'UNT95 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT24_in_UPPER_SALT_FRK_HUC8'): {'UNT24 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT74_in_UPPER_SALT_FRK_HUC8'): {'UNT74 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT20_in_UPPER_SALT_FRK_HUC8'): {'UNT20 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT62_in_UPPER_SALT_FRK_HUC8'): {'UNT62 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT70_in_UPPER_SALT_FRK_HUC8'): {'UNT70 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT140_in_UPPER_SALT_FRK_HUC8'): {'UNT140 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT44_in_UPPER_SALT_FRK_HUC8'): {'UNT44 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT52_in_UPPER_SALT_FRK_HUC8_1'): {'UNT52 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT29_in_UPPER_SALT_FRK_HUC8_1'): {'UNT29 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT331_in_Edith_Watershed_1'): {'UNT331 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", + " ('11060002',\n", + " 'UNT110_in_Liberal_Watershed_1'): {'UNT110 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT133_in_Liberal_Watershed'): {'UNT133 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT35_in_UPPER_SALT_FRK_HUC8_1'): {'UNT35 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT85_in_UPPER_SALT_FRK_HUC8_1'): {'UNT85 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT146_in_UPPER_SALT_FRK_HUC8_1'): {'UNT146 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT57_in_UPPER_SALT_FRK_HUC8'): {'UNT57 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT13_in_UPPER_SALT_FRK_HUC8_1'): {'UNT13 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT53_in_UPPER_SALT_FRK_HUC8'): {'UNT53 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT34_in_UPPER_SALT_FRK_HUC8_1'): {'UNT34 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT30_in_UPPER_SALT_FRK_HUC8'): {'UNT30 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT11_in_UPPER_SALT_FRK_HUC8'): {'UNT11 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT94_in_UPPER_SALT_FRK_HUC8_1'): {'UNT94 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT81_in_UPPER_SALT_FRK_HUC8'): {'UNT81 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT90_in_UPPER_SALT_FRK_HUC8_1'): {'UNT90 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT20_in_UPPER_SALT_FRK_HUC8_1'): {'UNT20 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT96_in_UPPER_SALT_FRK_HUC8'): {'UNT96 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT99_in_UPPER_SALT_FRK_HUC8'): {'UNT99 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT52_in_UPPER_SALT_FRK_HUC8'): {'UNT52 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT97_in_UPPER_SALT_FRK_HUC8_1'): {'UNT97 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT99_in_UPPER_SALT_FRK_HUC8_1'): {'UNT99 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT140_in_UPPER_SALT_FRK_HUC8_1'): {'UNT140 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT143_in_UPPER_SALT_FRK_HUC8_1'): {'UNT143 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT74_in_UPPER_SALT_FRK_HUC8_1'): {'UNT74 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT59_in_UPPER_SALT_FRK_HUC8_1'): {'UNT59 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT148_in_UPPER_SALT_FRK_HUC8'): {'UNT148 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT112_in_UPPER_SALT_FRK_HUC8'): {'UNT112 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT127_in_Liberal_Watershed_1'): {'UNT127 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT18_in_UPPER_SALT_FRK_HUC8'): {'UNT18 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT119_in_UPPER_SALT_FRK_HUC8'): {'UNT119 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT112_in_UPPER_SALT_FRK_HUC8_1'): {'UNT112 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'GREENLEAF_CREEK_1'): {'GREENLEAF CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT94_in_UPPER_SALT_FRK_HUC8'): {'UNT94 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT48_in_UPPER_SALT_FRK_HUC8'): {'UNT48 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT3_in_UPPER_SALT_FRK_HUC8_1'): {'UNT3 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT81_in_UPPER_SALT_FRK_HUC8_1'): {'UNT81 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT104_in_UPPER_SALT_FRK_HUC8_1'): {'UNT104 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT117_in_UPPER_SALT_FRK_HUC8'): {'UNT117 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT120_in_Liberal_Watershed'): {'UNT120 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'BOGGY_CREEK'): {'BOGGY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT100_in_UPPER_SALT_FRK_HUC8_1'): {'UNT100 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT21_in_UPPER_SALT_FRK_HUC8'): {'UNT21 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT22_in_UPPER_SALT_FRK_HUC8_1'): {'UNT22 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT95_in_UPPER_SALT_FRK_HUC8_1'): {'UNT95 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT33_in_UPPER_SALT_FRK_HUC8'): {'UNT33 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT147_in_UPPER_SALT_FRK_HUC8'): {'UNT147 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT234_in_Liberal_Watershed_1'): {'UNT234 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT61_in_UPPER_SALT_FRK_HUC8_1'): {'UNT61 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT145_in_UPPER_SALT_FRK_HUC8_1'): {'UNT145 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT87_in_UPPER_SALT_FRK_HUC8'): {'UNT87 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT47_in_UPPER_SALT_FRK_HUC8_1'): {'UNT47 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT129_in_Edith_Watershed'): {'UNT129 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", + " ('11060002',\n", + " 'UNT162_in_Liberal_Watershed_1'): {'UNT162 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT57_in_UPPER_SALT_FRK_HUC8_1'): {'UNT57 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'HACKBERRY_CREEK_1'): {'HACKBERRY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT90_in_UPPER_SALT_FRK_HUC8'): {'UNT90 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT28_in_UPPER_SALT_FRK_HUC8_1'): {'UNT28 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT63_in_UPPER_SALT_FRK_HUC8_1'): {'UNT63 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT16_in_UPPER_SALT_FRK_HUC8'): {'UNT16 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT45_in_UPPER_SALT_FRK_HUC8_1'): {'UNT45 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT235_in_Liberal_Watershed'): {'UNT235 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT82_in_UPPER_SALT_FRK_HUC8'): {'UNT82 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT98_in_UPPER_SALT_FRK_HUC8'): {'UNT98 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT59_in_UPPER_SALT_FRK_HUC8'): {'UNT59 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT48_in_UPPER_SALT_FRK_HUC8_1'): {'UNT48 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT73_in_UPPER_SALT_FRK_HUC8'): {'UNT73 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT86_in_UPPER_SALT_FRK_HUC8'): {'UNT86 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT2_in_UPPER_SALT_FRK_HUC8'): {'UNT2 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT69_in_UPPER_SALT_FRK_HUC8_1'): {'UNT69 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT53_in_UPPER_SALT_FRK_HUC8_1'): {'UNT53 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT101_in_UPPER_SALT_FRK_HUC8'): {'UNT101 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT13_in_UPPER_SALT_FRK_HUC8'): {'UNT13 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT145_in_UPPER_SALT_FRK_HUC8'): {'UNT145 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT94_in_Liberal_Watershed_1'): {'UNT94 in Liberal': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'YELLOWSTONE_CREEK_1'): {'YELLOWSTONE CREE': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT86_in_UPPER_SALT_FRK_HUC8_1'): {'UNT86 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'SALT_FORK_ARKANSAS_RIVER_1'): {'SALT FORK ARKANS': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT118_in_UPPER_SALT_FRK_HUC8'): {'UNT118 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT51_in_UPPER_SALT_FRK_HUC8_1'): {'UNT51 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT85_in_UPPER_SALT_FRK_HUC8'): {'UNT85 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT235_in_Liberal_Watershed_1'): {'UNT235 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT16_in_UPPER_SALT_FRK_HUC8_1'): {'UNT16 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT62_in_UPPER_SALT_FRK_HUC8_1'): {'UNT62 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT98_in_UPPER_SALT_FRK_HUC8_1'): {'UNT98 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'BOGGY_CREEK_1'): {'BOGGY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT100_in_UPPER_SALT_FRK_HUC8'): {'UNT100 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT12_in_UPPER_SALT_FRK_HUC8'): {'UNT12 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'RED_FORK_CREEK_1'): {'RED FORK CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT54_in_UPPER_SALT_FRK_HUC8_1'): {'UNT54 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT152_in_Liberal_Watershed_1'): {'UNT152 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT117_in_UPPER_SALT_FRK_HUC8_1'): {'UNT117 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT73_in_BluffCr_Watershed_1'): {'UNT73 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT77_in_UPPER_SALT_FRK_HUC8_1'): {'UNT77 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT118_in_UPPER_SALT_FRK_HUC8_1'): {'UNT118 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT93_in_UPPER_SALT_FRK_HUC8'): {'UNT93 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT75_in_UPPER_SALT_FRK_HUC8'): {'UNT75 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT15_in_UPPER_SALT_FRK_HUC8'): {'UNT15 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT96_in_UPPER_SALT_FRK_HUC8_1'): {'UNT96 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT3_in_UPPER_SALT_FRK_HUC8'): {'UNT3 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT108_in_UPPER_SALT_FRK_HUC8_1'): {'UNT108 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'RED_FORK_CREEK'): {'RED FORK CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT127_in_Liberal_Watershed'): {'UNT127 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT107_in_UPPER_SALT_FRK_HUC8_1'): {'UNT107 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT103_in_Liberal_Watershed_1'): {'UNT103 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT108_in_UPPER_SALT_FRK_HUC8'): {'UNT108 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT66_in_UPPER_SALT_FRK_HUC8_1'): {'UNT66 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT56_in_UPPER_SALT_FRK_HUC8_1'): {'UNT56 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT56_in_UPPER_SALT_FRK_HUC8'): {'UNT56 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT147_in_UPPER_SALT_FRK_HUC8_1'): {'UNT147 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT80_in_UPPER_SALT_FRK_HUC8_1'): {'UNT80 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT106_in_UPPER_SALT_FRK_HUC8'): {'UNT106 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT22_in_UPPER_SALT_FRK_HUC8'): {'UNT22 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT71_in_UPPER_SALT_FRK_HUC8_1'): {'UNT71 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT105_in_UPPER_SALT_FRK_HUC8'): {'UNT105 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT331_in_Edith_Watershed'): {'UNT331 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", + " ('11060002',\n", + " 'UNT102_in_UPPER_SALT_FRK_HUC8_1'): {'UNT102 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT47_in_UPPER_SALT_FRK_HUC8'): {'UNT47 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT79_in_UPPER_SALT_FRK_HUC8_1'): {'UNT79 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT70_in_UPPER_SALT_FRK_HUC8_1'): {'UNT70 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT114_in_UPPER_SALT_FRK_HUC8_1'): {'UNT114 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT113_in_UPPER_SALT_FRK_HUC8_1'): {'UNT113 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT82_in_UPPER_SALT_FRK_HUC8_1'): {'UNT82 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT68_in_UPPER_SALT_FRK_HUC8'): {'UNT68 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT26_in_UPPER_SALT_FRK_HUC8_1'): {'UNT26 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT60_in_UPPER_SALT_FRK_HUC8'): {'UNT60 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT103_in_UPPER_SALT_FRK_HUC8_1'): {'UNT103 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT67_in_UPPER_SALT_FRK_HUC8'): {'UNT67 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'JUG_MOTTE_CREEK'): {'JUG MOTTE CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT44_in_UPPER_SALT_FRK_HUC8_1'): {'UNT44 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT113_in_UPPER_SALT_FRK_HUC8'): {'UNT113 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT76_in_UPPER_SALT_FRK_HUC8_1'): {'UNT76 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT91_in_UPPER_SALT_FRK_HUC8'): {'UNT91 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT30_in_UPPER_SALT_FRK_HUC8_1'): {'UNT30 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT51_in_UPPER_SALT_FRK_HUC8'): {'UNT51 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT23_in_UPPER_SALT_FRK_HUC8_1'): {'UNT23 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT15_in_UPPER_SALT_FRK_HUC8_1'): {'UNT15 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT77_in_UPPER_SALT_FRK_HUC8'): {'UNT77 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT65_in_UPPER_SALT_FRK_HUC8_1'): {'UNT65 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT8_in_UPPER_SALT_FRK_HUC8'): {'UNT8 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT152_in_Liberal_Watershed'): {'UNT152 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT83_in_UPPER_SALT_FRK_HUC8'): {'UNT83 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT31_in_UPPER_SALT_FRK_HUC8'): {'UNT31 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT63_in_UPPER_SALT_FRK_HUC8'): {'UNT63 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'TURKEY_CREEK_1'): {'TURKEY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT69_in_UPPER_SALT_FRK_HUC8'): {'UNT69 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT104_in_UPPER_SALT_FRK_HUC8'): {'UNT104 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT162_in_Liberal_Watershed'): {'UNT162 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'COTTONWOOD_CREEK'): {'COTTONWOOD CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT234_in_Liberal_Watershed'): {'UNT234 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", + " ('11060002',\n", + " 'UNT6_in_BluffCr_Watershed'): {'UNT6 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT6_in_BluffCr_Watershed_1'): {'UNT6 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT75_in_BluffCr_Watershed_1'): {'UNT75 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", + " ('11060002',\n", + " 'UNT28_in_UPPER_SALT_FRK_HUC8'): {'UNT28 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT146_in_UPPER_SALT_FRK_HUC8'): {'UNT146 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('11060002',\n", + " 'UNT148_in_UPPER_SALT_FRK_HUC8_1'): {'UNT148 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", + " ('13020102',\n", + " 'RioGrandeT8'): {'RioGrandeT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaAnchaT1'): {'CanadaAnchaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusasTrib2'): {'RioTusasT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaJarita'): {'CanadaJarita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeBorracho'): {'CanadadeBorracho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaos_1'): {'PueblodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LatirCreekTrib1'): {'LatirCreekTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoMiranda'): {'ArroyoMiranda': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1a_1'): {'GrandeRanchoT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT1a'): {'ArroyoPuncheT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeRancho'): {'RioGrandeRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPunche'): {'Arroyo Punche': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT4'): {'ArroyoPuncheT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'SaltDraw'): {'SaltDraw': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'CanadadelaOrill'): {'CanadadelaOrill': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT3b1'): {'PueblodeTaosT3b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaSarcoT1'): {'CanadaSarcoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRito'): {'ElRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'FernandodeTaos'): {'FernandodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajePetacaT1a'): {'AguajePetacaT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT2'): {'PueblodeTaosT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusas_1'): {'RioTusas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT3a1'): {'ArroyoPuncheT3a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitos'): {'RioVallecitos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT2a'): {'PueblodeTaosT2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT4'): {'ElRitoT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LatirCreekTrib2'): {'LatirCreekTrib2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioPuebloTrib1'): {'RioPuebloTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPino'): {'ArroyoPino': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT11b'): {'RioGrandeT11b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaSarcoT2'): {'CanadaSarcoT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioOjoCalienteT1'): {'RioOjoCalienteT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT3'): {'RioVallecitosT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT12c'): {'RioGrandeT12c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'BobcatCreek'): {'BobcatCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaJarosita'): {'CanadaJarosita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajedelaPetaca_1'): {'AguajedelaPetaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoOcole'): {'ArroyoOcole': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyolaMina'): {'ArroyolaMina': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT6'): {'ElRitoT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajedelaPetacaT2'): {'AguajePetacaT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaAnchaNorth'): {'CanadaAnchaNorth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1b3'): {'GrandeRanchoT1b3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoRancho'): {'ArroyoRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT3'): {'ElRitoT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoelRitoT1'): {'ArroyoelRitoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaPueblo'): {'CanadaPueblo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT4a'): {'PueblodeTaosT4a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RedRiver'): {'RedRiver': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT13'): {'RioGrandeT13': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10f'): {'RioGrandeT10f': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT8'): {'ElRitoT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CabrestoCreek'): {'CabrestoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10a'): {'RioGrandeT10a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT11a'): {'RioGrandeT11a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RiodeTruchas'): {'RiodeTruchas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'MadredelPrado'): {'MadredelPrado': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadePiedra'): {'CanadadePiedra': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT3'): {'AlmagreT3': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1b4'): {'GrandeRanchoT1b4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT11c'): {'RioGrandeT11c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioOjoCaliente_1'): {'RioOjoCaliente': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RedRiverTrib1'): {'RedRiverTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaCorral'): {'CanadaCorral': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PuebloArroyo'): {'PuebloArroyo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'FernandodeTaosT1'): {'FernandodeTaosT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'BitterCreek'): {'BitterCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT11'): {'RioGrandeT11': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10e'): {'RioGrandeT10e': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1b'): {'GrandeRanchoT1b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusasTrib3'): {'RioTusasT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeApodaca'): {'CanadadeApodaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajePetacaT3'): {'AguajePetacaT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT7'): {'ElRitoT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadelAgua'): {'CanadadelAgua': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT2'): {'ArroyoPuncheT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajePetacaT1'): {'AguajePetacaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT2b1'): {'AlmagreT2b1': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'EmbudoCreekTrib1'): {'EmbudoCreekTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LaMaderaT1a'): {'LaMaderaT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9'): {'RioGrandeT9': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitos_1'): {'RioVallecitos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PiedraLumbre'): {'PiedraLumbre': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1_1'): {'GrandeRanchoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LatirCreekTrib3a'): {'LatirCreekTrib3a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaos'): {'PueblodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1b2'): {'GrandeRanchoT1b2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT2b'): {'RioVallecitosT2b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoLagunitas'): {'ArroyoLagunitas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1e'): {'GrandeRanchoT1e': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AngelCanyon'): {'AngelCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanoncitoMadera'): {'CanoncitoMadera': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT4'): {'AlmagreT4': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'RioVallecitosT7'): {'RioVallecitosT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1a'): {'GrandeRanchoT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LagunitasT3'): {'LagunitasT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoelRito'): {'ArroyoelRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9a'): {'RioGrandeT9a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoCerroNegro'): {'ArroyoCerroNegro': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1a1'): {'GrandeRanchoT1a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LaMaderaT1b'): {'LaMaderaT1b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT1'): {'ArroyoPuncheT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioPueblo'): {'RioPueblo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1f'): {'GrandeRanchoT1f': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'DesagueAguita'): {'DesagueAguita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10d1'): {'RioGrandeT10d1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaBuenaVista'): {'CanadaBuenaVista': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaLemitas'): {'CanadaLemitas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1d'): {'GrandeRanchoT1d': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RitoCieneguilla'): {'RitoCieneguilla': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT3b'): {'ArroyoPuncheT3b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT1'): {'RioVallecitosT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ChamizalCreek'): {'ChamizalCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeOso'): {'CanadadeOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaEntranasT'): {'CanadaEntranasT': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT4'): {'RioVallecitosT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9b'): {'RioGrandeT9b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioOjoCaliente'): {'RioOjoCaliente': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaTioPula'): {'CanadaTioPula': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT4a1'): {'PueblodeTaosT4a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioChiquito1'): {'RioChiquito1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadelaCruz'): {'CanadadelaCruz': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT6'): {'RioVallecitosT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LamyCanyon'): {'LamyCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeOso_1'): {'CanadadeOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaAlamos'): {'CanadaAlamos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioHondo'): {'RioHondo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT2a'): {'RioVallecitosT2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioOjoCalienteT2'): {'RioOjoCalienteT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'EmbudoCreek'): {'EmbudoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'SandlinArroyo'): {'SandlinArroyo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LatirCreekTrib3'): {'LatirCreekTrib3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioVallecitosT8'): {'RioVallecitosT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RedRiverTrib2'): {'RedRiverTrib2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoGavilan'): {'ArroyoGavilan': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9a2'): {'RioGrandeT9a2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'SpringCreekSouth'): {'SpringCreekSouth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT2b'): {'AlmagreT2b': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'RioGrandeT7'): {'RioGrandeT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaOjoSarco'): {'CanadaOjoSarco': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaAbeque'): {'CanadaAbeque': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10'): {'RioGrandeT10': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LittleTusasCreek'): {'LittleTusasCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusasTrib1'): {'RioTusasT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT3A'): {'PueblodeTaosT3a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioLucero'): {'RioLucero': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LatirCreekTrib2a'): {'LatirCreekTrib2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRitoT8a'): {'ElRitoT8a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RiodeTruchasT1'): {'RiodeTruchasT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaMontecito'): {'CanadaMontecito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusas'): {'RioTusas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10c'): {'RioGrandeT10c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT12'): {'RioGrandeT12': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'MartinezCanyon'): {'MartinezCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeOjito'): {'CanadadeOjito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT2'): {'AlmagreT2': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'URGUnnamedStream'): {'URGUnnamedStream': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT3a'): {'AlmagreT3a': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'RioGrandeT12a'): {'RioGrandeT12a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1b1'): {'GrandeRanchoT1b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoSecoNorth'): {'ArroyoSecoNorth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrande'): {'RioGrande': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10b'): {'RioGrandeT10b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1'): {'GrandeRanchoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT12b'): {'RioGrandeT12b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeLorenzo'): {'CanadadeLorenzo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanondelaMadera'): {'CanondelaMadera': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'BarelaCanyon'): {'BarelaCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT4b'): {'PueblodeTaosT4b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT7a'): {'RioGrandeT7a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeRancho_1'): {'RioGrandeRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadelOso'): {'CanadadelOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AcequiadelJaral'): {'AcequiadelJaral': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9c2'): {'RioGrandeT9c2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT3b1'): {'ArroyoPuncheT3b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AguajedelaPetaca'): {'AguajedelaPetaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoAlmagre'): {'ArroyoAlmagre': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'RioVallecitosT5'): {'RioVallecitosT5': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9a1'): {'RioGrandeT9a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'JarosoCreek'): {'JarosoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LaMaderaT1'): {'LaMaderaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaEntranas'): {'CanadaEntranas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PicurisCanyon'): {'PicurisCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ArroyoPuncheT6'): {'ArroyoPuncheT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'ElRito_1'): {'ElRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'LagunitasT2'): {'LagunitasT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT9a11'): {'RioGrandeT9a11': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RiodelasTrampas'): {'RiodelasTrampas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaApaches'): {'CanadaApaches': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT3'): {'PueblodeTaosT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'GrandeRanchoT1c'): {'GrandeRanchoT1c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'BlancoSouthT5'): {'BlancoSouthT5': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'RioVallecitosT9'): {'RioVallecitosT9': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaPinoReale'): {'CanadaPinoReale': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioTusasTrib4'): {'RioTusasT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadadeJacinto'): {'CanadadeJacinto': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT11c1'): {'RioGrandeT11c1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AlmagreT2a'): {'AlmagreT2a': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'LatirCreek'): {'LatirCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'PueblodeTaosT4'): {'PueblodeTaosT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioChiquito2'): {'RioChiquito2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'BlancoSouthT4'): {'BlancoSouthT4': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", + " ('13020102',\n", + " 'ElRitoT5'): {'ElRitoT5': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanadaAncha'): {'CanadaAncha': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'CanondelosAlamos'): {'CanondelosAlamos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'AnchaNorthT1'): {'AnchaNorthT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('13020102',\n", + " 'RioGrandeT10d'): {'RioGrandeT10d': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('17060305',\n", + " 'cottonwood_creek_1_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'whitman_creek_ras'): {'whitman_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'shebang_creek_tributary1_ras'): {'shebang_creek_tr': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'shebang_creek_tributary2_ras'): {'shebang_creek_tr': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'meadow_creek_1_ras'): {'meadow_creek_1': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'orchard_creek_ras'): {'orchard_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'main_three_mile_ck_trib1_ras'): {'main_three_mile_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'red_river_2_ras'): {'red_river_2': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'cottonwood_creek_tributary_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'threemile_creek_ras_1'): {'threemile_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'stockney_creek_tributary1_ras'): {'stockney_creek_t': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'stockney_creek_ras'): {'stockney_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'threemile_creek_trib1a_ras'): {'threemile_creek_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'threemile_creek_ras'): {'threemile_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'long_haul_creek_ras'): {'long_haul_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'south_fork_clearwater_river_3_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'cole_creek_ras'): {'cole_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'south_fork_clearwater_river_2_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'threemile_creek_trib1b_ras'): {'threemile_creek_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'elk_creek_ras'): {'elk_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'main_three_mile_ck_trib2_ras'): {'main_three_mile_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'rabbit_creek_ras'): {'rabbit_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'clearwater_river1_tributary3_ras'): {'clearwater_river': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'south_fork_cottonwood_creek_ras'): {'south_fork_cotto': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'sally_ann_creek_ras'): {'sally_ann_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'shebang_creek_ras'): {'shebang_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'cottonwood_creek_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('17060305',\n", + " 'south_fork_clearwater_river_1_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", + " ('12030107',\n", + " 'KingsCreekTrib1B_4'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'ELD004_1'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'ELD004'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'KingsCreekTrib1B_1'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " '010-07-BrushyCreek'): {'Brushy': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'BrushyCr_1'): {'BrushyCreek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),', 'Trib': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'KingsCreekTrib1B_3'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'KingsCreekTrib1B_2'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'KingsCreekTrib1B'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'ELD004_2'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'KC1_KC1B_LOMR'): {'KC-1': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " 'BrushyCr'): {'BrushyCreek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),', 'Trib': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('12030107',\n", + " '010-07-BrushyCreek_1'): {'Brushy': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", + " ('08060202',\n", + " 'Comm_Creek_Trib_1'): {'Commissioners Cr': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Big_Sand_Creek_Trib_1'): {'Big Sand Creek T': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Comm_Creek_Trib_1-1'): {'Commissioners Cr': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Porter_Creek_Trib_3'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Jones_Creek'): {'Jones Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Maxie_Creek'): {'Maxie Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Bogue_Falia_Creek_Trib_2-1'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Fivemile_Creek'): {'Fivemile Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Porter_Creek_Trib_1-2'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Bogue_Falia_Creek_Trib_3'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Harts_Creek'): {'Harts Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Porter_Creek_Trib_1'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Potter_Creek'): {'Potter Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Porter_Creek_Trib_1-3'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Bogue_Falia_Creek'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Bogue_Falia_Creek_Trib_2'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Porter_Creek_Trib_1-1'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Bogue_Falia_Creek_Trib_5'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Big_Black_River_Trib_1'): {'Big Black River': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Murphy_Creek'): {'Murphy Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('08060202',\n", + " 'Fivemile_Creek_Trib_3'): {'Fivemile Creek T': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", + " ('16020203',\n", + " 'S_EastWeberFOA'): {'Nobletts Creek': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),', 'Weber River': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),', 'SF Weber River': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),'},\n", + " ('16020203',\n", + " 'Center_Creek'): {'Center Creek': 'ESPG: 2281, NAD83 / Utah Central (ft),'},\n", + " ('18070204',\n", + " 'BorregoCyn_Existing'): {'Borrego Cyn': 'ESPG: 2230, NAD83 / California zone 6 (ftUS),'},\n", + " ('05020006',\n", + " 'PIKERUN1'): {'PIKERUN1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP771'): {'NP771': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'INDIANCR'): {'INDIANCR': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP708'): {'NP708': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'WILSONRUN'): {'WILSONRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP499'): {'NP499': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'T9YOUGH'): {'T9YOUGH': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'CEDARCR'): {'CEDARCR': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP535'): {'NP535': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'TWNSHPRN'): {'TWNSHPRN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP720'): {'NP720': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'BuffRnT1'): {'BuffRnT1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'JcbsCrkT3'): {'JcbsCrkT3': 'ESPG: 3365, NAD83(HARN) / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP709'): {'NP709': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'JACOBCR1'): {'JACOBCR1': 'ESPG: 3365, NAD83(HARN) / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'JcbsCrkT2'): {'JcbsCrkT2': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'WEITYRUN'): {'WEITYRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'STAUFERN'): {'STAUFERN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'JcbsCrkT4'): {'JcbsCrkT4': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP500'): {'NP500': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP707'): {'NP707': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'BARRENRUN'): {'BARRENRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'LICKRUN'): {'LICKRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'YoughyRT1'): {'YoughyRT1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP719'): {'NP719': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP180'): {'NP180': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'T8YOUGHI'): {'T8YOUGHI': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP537'): {'NP537': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'ANDREWS2'): {'ANDREWS2': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'NP620'): {'NP620': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('05020006',\n", + " 'LITTLERN'): {'LITTLERN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb4'): {'Stream CB-4': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'HallCreek'): {'Hall Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'mosleybranch'): {'Mosley Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CoxtownCreek'): {'Cocktowncr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB_CorrectedEffective'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'NortheastBranchWB'): {'Northeast Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'clydesbranch'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb16_1'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb1_1'): {'Stream CB-1': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB16_Proposed'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'ChewCreek'): {'Chew Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'PatuxentRiver_1'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb1'): {'Stream CB-1': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'MPR_Proposed'): {'MiddlePatuxent': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'StLeonardCreek'): {'St_Leonard_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'MillCreek'): {'Mill_Cr_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb18_1'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'LaurelRaceTrack'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'HuntingCreek'): {'HuntingCr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB16_CorrectedEffective'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'middlepatuxent'): {'MiddlePatuxent': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB18_CorrectedEffective'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),', 'CB-18 Split Flow': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'JohnsCreek'): {'JohnMosleyCr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'PatuxentRiver'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'SewellCreek'): {'Sewell_Branch_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb16'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'clydesbranch_1'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'BattleCreekTrib'): {'Battle Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'LittleLyonsCreek'): {'LittleLyonsCL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'StreamCB4Prop'): {'Stream CB-4': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB18_Proposed'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),', 'CB-18 Split Flow': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'CB_Proposed'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'streamcb18'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('02060006',\n", + " 'BattleCreekCypressSwamp'): {'BattleCrCypress': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", + " ('14050005',\n", + " 'MarvineCreek'): {'MarvineCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'StrawberryTrib'): {'Strawberry Trib': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'DryCreek'): {'Dry_Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'NorthForkWhiteRiver'): {'NorthFork_WR': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'CaveGulch'): {'Cave Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'MillerCreek'): {'Miller_Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'StrawberryCreek'): {'StrawberryCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'UteCreek'): {'UteCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'WhiteRiver_Seg3'): {'WhiteRiv_Seg3': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'BigBeaverCreek'): {'BigBeaverCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'FawnCreek'): {'FawnCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'NorthElkCreek'): {'NorthElkCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'SheepCreek'): {'SheepCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'LittleBeaverCreek'): {'LBC': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'FourmileGulch'): {'Fourmile Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'WhiteMeeker'): {'White_R_Meeker': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'UpperCurtisCreek'): {'UpperCurtisCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'WhiteRiver_Seg4'): {'WhiteRiv_Seg4': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'CoalCreek'): {'CoalCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'CurtisCreek_Meeker'): {'Curtis Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'SulphurCreek'): {'SulphurCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'EastMillerCreek'): {'EastMillerCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'DevilsHole'): {'Devils Hole': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'EFlagCreek'): {'EFlagCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'SouthForkWhiteRiver'): {'thForkWhiteRiver': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'OylerGulch'): {'Oyler Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('14050005',\n", + " 'FlagCreek'): {'FlagCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", + " ('15040007',\n", + " '1242_ras'): {'1242': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('15040007',\n", + " '1195_ras'): {'1195': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('15040007',\n", + " '1236_ras'): {'1236': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", + " ('04030101',\n", + " 'UT15Milw'): {'UT15Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", + " ('04030101',\n", + " 'EastTwin_trib'): {'East Twin': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", + " ('04030101',\n", + " 'UT13_Milw'): {'UT13Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", + " ('04030101',\n", + " 'Jambo'): {'Jambo': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", + " ('04030101',\n", + " 'UT81Milw'): {'UT81Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", + " ('04030101',\n", + " 'UT5Milw'): {'UT5MIlw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", + " ('04030101',\n", + " 'EastTwin'): {'East Twin': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", + " ('04030101',\n", + " 'UT2RiveredgeCrk'): {'UT2RiveredgeCrk': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", + " ('04030101',\n", + " 'Krok'): {'Krok': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", + " ('04030101',\n", + " 'Buck'): {'Buck': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'}})" + ] + }, + "execution_count": 26, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "crs_map" + ] + }, + { + "cell_type": "markdown", + "id": "dd7a0bfe-921f-4b44-a7f5-887b1139d669", + "metadata": {}, + "source": [ + "__Findings:__\n", + "\n", + "To map each cross-section of a model @ HUC#, there has to be a shared attribute between a model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s conflation json file.\n", + " \n", + "- Each conflation json file reveals ...\n", + " - Per reach, there is a set of cross-sections.\n", + " - Within each model's cross-section (XS) layers, there are a set of cross-section instances - each instance featuring a unique \"thalweg\" (aka \"min_elevation\"), \"xs_max_elevation\" (aka \"max_elevation\"), \"reach_id\" (\"reaches\"), & \"river_station\" (aka \"xs_id\")\n", + "\n", + "- Each model @ HUC#'s XS layer contains a collection of cross-section instancees. Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in such a way to allow each cross-section to be associated with a feature ID (aka \"reach_id\" and/or \"network_to_id\")\n", + "\n", + "- \"river_reach_rs\" is formatted differently across models' XS layers, however multplie keys referenced in the conflation jsons can be referenced to obtain the \"river_reach_rs\" from the jsons - as a result, the mapping of IDs to each model's cross-section instance will be based on the info extracted from a model @ HUC#'s conflation.json\n" + ] + }, + { + "cell_type": "markdown", + "id": "56e8ca07-a893-423a-8b35-865c9cf6c5bf", + "metadata": {}, + "source": [ + "##### Next Step: \n", + "##### Per HUC, consolidate each XS by River name (aka \"model\") & save as a geopandas dataframe (ensure CRS is consistent for each geopandas dataframe; check with QGIS)\n", + "\n", + "1) Consolidate XS by river. For each river, save their consolidate XS rows as a geopandas dataframe per river. Ensure their CRS are same.\n", + "Keep their unique inherited CRS. Track HUC\n", + "\n", + "2) Consolidate each \"river's\" geopandas dataframe by HUC & save them as a geoparquet, store in S3\n", + "\n", + "3) Each geoparquets can then be stored as Apache iceberg tables\n", + "\n", + "4) Store Apache iceberg tables in S3\n", + "\n", + "\n", + "Collection of geoparquets representing each river at a given HUC\n", + "\n", + "model_id2gpkg_map[" + ] + }, + { + "cell_type": "markdown", + "id": "2677869f-a354-4bc3-858a-b14da790e2b8", + "metadata": {}, + "source": [ + "## Demo VII: \n", + "### Querying Ripple Layers by HUC Number" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "06748e4a-1a94-492c-9d07-4f71cd956f33", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "dict_keys(['processing', 'reaches', 'rating_curves', 'network', 'models', 'metadata', 'rating_curves_no_map'])" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rip_huc2gpkg_map['07130010'].keys()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "791efbaa-31f8-42fe-850f-67774d56a7c7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reach_idnwm_to_idgeometry
01358549813585296MULTILINESTRING ((460724.236 1959986.07, 46074...
11358549413585228MULTILINESTRING ((461234.625 1961261.908, 4612...
21380249013802570MULTILINESTRING ((459790.513 1945209.891, 4597...
31380248813802490MULTILINESTRING ((460693.836 1945689.426, 4606...
41380249613802488MULTILINESTRING ((461815.853 1944975.208, 4617...
............
4541380263613802670MULTILINESTRING ((427762.55 1940442.3, 427779....
4551380266413802712MULTILINESTRING ((428063.956 1939575.769, 4280...
4561380272413802756MULTILINESTRING ((427021.923 1937345.91, 42715...
4571380290413802916MULTILINESTRING ((434263.443 1931451.676, 4342...
4581380288813802904MULTILINESTRING ((434587.476 1931941.347, 4345...
\n", + "

459 rows × 3 columns

\n", + "
" + ], + "text/plain": [ + " reach_id nwm_to_id geometry\n", + "0 13585498 13585296 MULTILINESTRING ((460724.236 1959986.07, 46074...\n", + "1 13585494 13585228 MULTILINESTRING ((461234.625 1961261.908, 4612...\n", + "2 13802490 13802570 MULTILINESTRING ((459790.513 1945209.891, 4597...\n", + "3 13802488 13802490 MULTILINESTRING ((460693.836 1945689.426, 4606...\n", + "4 13802496 13802488 MULTILINESTRING ((461815.853 1944975.208, 4617...\n", + ".. ... ... ...\n", + "454 13802636 13802670 MULTILINESTRING ((427762.55 1940442.3, 427779....\n", + "455 13802664 13802712 MULTILINESTRING ((428063.956 1939575.769, 4280...\n", + "456 13802724 13802756 MULTILINESTRING ((427021.923 1937345.91, 42715...\n", + "457 13802904 13802916 MULTILINESTRING ((434263.443 1931451.676, 4342...\n", + "458 13802888 13802904 MULTILINESTRING ((434587.476 1931941.347, 4345...\n", + "\n", + "[459 rows x 3 columns]" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rip_huc2gpkg_map['07130010']['reaches']" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "e74842d8-a1a1-4126-85cc-f02d94a036fe", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
reach_idus_flowus_depthus_wseds_depthds_wseboundary_condition
013801442432.0683.12.6680.5nd
113801442452.0683.12.7680.6nd
2138014421672.5683.64.6682.5nd
3138014422892.6683.75.2683.1nd
4138014424113.2684.35.5683.4nd
........................
44959138038722393925.4622.126.4622.0kwse
44960138038722569625.4622.126.4622.0kwse
44961138038722769825.4622.126.4622.0kwse
44962138038722940625.4622.126.4622.0kwse
44963138038722950925.4622.126.4622.0kwse
\n", + "

44964 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " reach_id us_flow us_depth us_wse ds_depth ds_wse \\\n", + "0 13801442 43 2.0 683.1 2.6 680.5 \n", + "1 13801442 45 2.0 683.1 2.7 680.6 \n", + "2 13801442 167 2.5 683.6 4.6 682.5 \n", + "3 13801442 289 2.6 683.7 5.2 683.1 \n", + "4 13801442 411 3.2 684.3 5.5 683.4 \n", + "... ... ... ... ... ... ... \n", + "44959 13803872 23939 25.4 622.1 26.4 622.0 \n", + "44960 13803872 25696 25.4 622.1 26.4 622.0 \n", + "44961 13803872 27698 25.4 622.1 26.4 622.0 \n", + "44962 13803872 29406 25.4 622.1 26.4 622.0 \n", + "44963 13803872 29509 25.4 622.1 26.4 622.0 \n", + "\n", + " boundary_condition \n", + "0 nd \n", + "1 nd \n", + "2 nd \n", + "3 nd \n", + "4 nd \n", + "... ... \n", + "44959 kwse \n", + "44960 kwse \n", + "44961 kwse \n", + "44962 kwse \n", + "44963 kwse \n", + "\n", + "[44964 rows x 7 columns]" + ] + }, + "execution_count": 29, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rip_huc2gpkg_map['07130010']['rating_curves']" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "9dfba0dd-ff78-48aa-97ee-a9cb864619f6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
nwm_to_idupdated_to_id
013585228NaN
113585296NaN
21380144813801448.0
313801478NaN
413801448NaN
.........
4541380223213802232.0
45513803712NaN
45613802232NaN
45713803712NaN
45813803874NaN
\n", + "

459 rows × 2 columns

\n", + "
" + ], + "text/plain": [ + " nwm_to_id updated_to_id\n", + "0 13585228 NaN\n", + "1 13585296 NaN\n", + "2 13801448 13801448.0\n", + "3 13801478 NaN\n", + "4 13801448 NaN\n", + ".. ... ...\n", + "454 13802232 13802232.0\n", + "455 13803712 NaN\n", + "456 13802232 NaN\n", + "457 13803712 NaN\n", + "458 13803874 NaN\n", + "\n", + "[459 rows x 2 columns]" + ] + }, + "execution_count": 30, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rip_huc2gpkg_map['07130010']['network']" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "dedebd90-1c83-4671-ba6b-2278e04137e7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
collection_idmodel_idmodel_nameconflate_model_job_idconflate_model_status
0mip_07130010sa_7sa_7cec7ec7c-fbfa-48da-87ce-c13632b59f09succeeded
1mip_07130010sa_1sa_12c0cd12a-5042-4265-b98e-8f6540cb6e4esucceeded
2mip_07130010sa_6sa_67d85fe34-8960-42c0-9762-6946317a348asucceeded
3mip_07130010sa_5sa_51335125c-2d64-4c4c-a4f7-28fe1cc0e75bsucceeded
4mip_07130010sa_4sa_4fc5ed1ef-1b3c-4f5e-84ba-b4a45aae15b0succeeded
5mip_07130010LaMoineLaMoine212d132f-a10f-48f2-9256-698fb3535860succeeded
6mip_07130010KilljordanKilljordanee89af84-44ea-40a4-9b4c-eea1be29d270succeeded
\n", + "
" + ], + "text/plain": [ + " collection_id model_id model_name conflate_model_job_id \\\n", + "0 mip_07130010 sa_7 sa_7 cec7ec7c-fbfa-48da-87ce-c13632b59f09 \n", + "1 mip_07130010 sa_1 sa_1 2c0cd12a-5042-4265-b98e-8f6540cb6e4e \n", + "2 mip_07130010 sa_6 sa_6 7d85fe34-8960-42c0-9762-6946317a348a \n", + "3 mip_07130010 sa_5 sa_5 1335125c-2d64-4c4c-a4f7-28fe1cc0e75b \n", + "4 mip_07130010 sa_4 sa_4 fc5ed1ef-1b3c-4f5e-84ba-b4a45aae15b0 \n", + "5 mip_07130010 LaMoine LaMoine 212d132f-a10f-48f2-9256-698fb3535860 \n", + "6 mip_07130010 Killjordan Killjordan ee89af84-44ea-40a4-9b4c-eea1be29d270 \n", + "\n", + " conflate_model_status \n", + "0 succeeded \n", + "1 succeeded \n", + "2 succeeded \n", + "3 succeeded \n", + "4 succeeded \n", + "5 succeeded \n", + "6 succeeded " + ] + }, + "execution_count": 31, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "rip_huc2gpkg_map['07130010']['models']" + ] + }, + { + "attachments": { + "2255f9dc-6db9-4a19-b160-559958de2563.png": { + "image/png": "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" + }, + "cb93a3d1-2477-4ec1-bddd-0da089352aa6.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "b3747f8a-8b23-4bdd-b7a7-4a9add4df61c", + "metadata": {}, + "source": [ + "# Write local files to S3 (for dev purposes only)\n", + "![image.png](attachment:cb93a3d1-2477-4ec1-bddd-0da089352aa6.png)\n", + "![image.png](attachment:2255f9dc-6db9-4a19-b160-559958de2563.png)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "2e54d9d3-b04e-434b-9576-2a861e4c9938", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(None,\n", + " {'xs_data/mip_07130010/huc_07130010.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_07130010/huc_07130010.gpkg',\n", + " 'xs_data/mip_07130010/huc_07130010.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_07130010/huc_07130010.parquet',\n", + " 'xs_data/mip_09020301/huc_09020301.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_09020301/huc_09020301.parquet',\n", + " 'xs_data/mip_09020301/huc_09020301.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_09020301/huc_09020301.gpkg',\n", + " 'xs_data/mip_06040002/huc_06040002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_06040002/huc_06040002.parquet',\n", + " 'xs_data/mip_06040002/huc_06040002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_06040002/huc_06040002.gpkg',\n", + " 'xs_data/mip_03170004/huc_03170004.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_03170004/huc_03170004.gpkg',\n", + " 'xs_data/mip_03170004/huc_03170004.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_03170004/huc_03170004.parquet',\n", + " 'xs_data/mip_01020002/huc_01020002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_01020002/huc_01020002.gpkg',\n", + " 'xs_data/mip_01020002/huc_01020002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_01020002/huc_01020002.parquet',\n", + " 'xs_data/mip_10120203/huc_10120203.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_10120203/huc_10120203.parquet',\n", + " 'xs_data/mip_10120203/huc_10120203.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_10120203/huc_10120203.gpkg',\n", + " 'xs_data/mip_11060002/huc_11060002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_11060002/huc_11060002.gpkg',\n", + " 'xs_data/mip_11060002/huc_11060002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_11060002/huc_11060002.parquet',\n", + " 'xs_data/mip_13020102/huc_13020102.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_13020102/huc_13020102.gpkg',\n", + " 'xs_data/mip_13020102/huc_13020102.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_13020102/huc_13020102.parquet',\n", + " 'xs_data/mip_17060305/huc_17060305.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_17060305/huc_17060305.gpkg',\n", + " 'xs_data/mip_17060305/huc_17060305.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_17060305/huc_17060305.parquet',\n", + " 'xs_data/mip_12030107/huc_12030107.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_12030107/huc_12030107.gpkg',\n", + " 'xs_data/mip_12030107/huc_12030107.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_12030107/huc_12030107.parquet',\n", + " 'xs_data/crs_map/crs_mapping.pickle': '/home/sylvia.chin/Desktop/iceberg/xs_data/crs_map/crs_mapping.pickle',\n", + " 'xs_data/mip_08060202/huc_08060202.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_08060202/huc_08060202.gpkg',\n", + " 'xs_data/mip_08060202/huc_08060202.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_08060202/huc_08060202.parquet',\n", + " 'xs_data/mip_16020203/huc_16020203.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_16020203/huc_16020203.gpkg',\n", + " 'xs_data/mip_16020203/huc_16020203.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_16020203/huc_16020203.parquet',\n", + " 'xs_data/mip_18070204/huc_18070204.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_18070204/huc_18070204.gpkg',\n", + " 'xs_data/mip_18070204/huc_18070204.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_18070204/huc_18070204.parquet',\n", + " 'xs_data/mip_05020006/huc_05020006.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_05020006/huc_05020006.parquet',\n", + " 'xs_data/mip_05020006/huc_05020006.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_05020006/huc_05020006.gpkg',\n", + " 'xs_data/mip_02060006/huc_02060006.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_02060006/huc_02060006.gpkg',\n", + " 'xs_data/mip_02060006/huc_02060006.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_02060006/huc_02060006.parquet',\n", + " 'xs_data/mip_14050005/huc_14050005.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_14050005/huc_14050005.gpkg',\n", + " 'xs_data/mip_14050005/huc_14050005.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_14050005/huc_14050005.parquet',\n", + " 'xs_data/mip_15040007/huc_15040007.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_15040007/huc_15040007.parquet',\n", + " 'xs_data/mip_15040007/huc_15040007.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_15040007/huc_15040007.gpkg',\n", + " 'xs_data/mip_04030101/huc_04030101.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_04030101/huc_04030101.gpkg',\n", + " 'xs_data/mip_04030101/huc_04030101.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_04030101/huc_04030101.parquet'})" + ] + }, + "execution_count": 32, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s3_xs_keys2objs = collections.defaultdict()\n", + "for folder, subfolders, files in os.walk(f'{os.getcwd()}/xs_data/'):\n", + " for file in files:\n", + " if folder != f'{os.getcwd()}/xs_data/':\n", + " s3_xs_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}'] = f'{folder}/{file}'\n", + " \n", + "s3_xs_keys2objs" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "id": "0ef03ac5-4475-4a3c-8fbb-88ec50d832c4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "defaultdict(None,\n", + " {'iceberg_catalog/xs_dev2_catalog.db': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/xs_dev2_catalog.db',\n", + " 'iceberg_catalog/xs_catalog.db': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/xs_catalog.db',\n", + " 'iceberg_catalog/metadata/snap-1219395432228756396-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1219395432228756396-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.avro',\n", + " 'iceberg_catalog/metadata/79d941be-d64b-420d-8258-ab9a19f60a3c-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/79d941be-d64b-420d-8258-ab9a19f60a3c-m0.avro',\n", + " 'iceberg_catalog/metadata/56302b1b-0145-4261-a75f-9fc822513965-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/56302b1b-0145-4261-a75f-9fc822513965-m0.avro',\n", + " 'iceberg_catalog/metadata/2b35b175-c393-402f-aefe-7ab21a7f86e3-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2b35b175-c393-402f-aefe-7ab21a7f86e3-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-d5bfb311-f654-4caa-a8bd-0988d5ea3f1c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-d5bfb311-f654-4caa-a8bd-0988d5ea3f1c.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-e005d193-1dbe-48f8-9c71-5d6acb118047.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e005d193-1dbe-48f8-9c71-5d6acb118047.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-a51a3d3f-c9d8-4491-ba4a-61b45450b482.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a51a3d3f-c9d8-4491-ba4a-61b45450b482.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-7751284475758926448-0-83a8e328-45aa-41c3-b7ba-aada589c1100.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-7751284475758926448-0-83a8e328-45aa-41c3-b7ba-aada589c1100.avro',\n", + " 'iceberg_catalog/metadata/7e31eefd-b1be-4270-8c56-55c3d7cee3ec-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/7e31eefd-b1be-4270-8c56-55c3d7cee3ec-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-ff6bb0fd-545d-4c90-8687-d59e57f795f7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-ff6bb0fd-545d-4c90-8687-d59e57f795f7.metadata.json',\n", + " 'iceberg_catalog/metadata/eb72845f-a72d-4ec7-b515-3fa60bcb1a0e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/eb72845f-a72d-4ec7-b515-3fa60bcb1a0e-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-efb96525-596e-4f96-a5a4-6e930d9fa14d.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-efb96525-596e-4f96-a5a4-6e930d9fa14d.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-e971734f-4fd6-4f57-8313-6578b345dd9f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e971734f-4fd6-4f57-8313-6578b345dd9f.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-37052db6-879f-4d5d-a7eb-bf238795f174.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-37052db6-879f-4d5d-a7eb-bf238795f174.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-566a22c6-9329-4cf1-b863-35034787428a.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-566a22c6-9329-4cf1-b863-35034787428a.metadata.json',\n", + " 'iceberg_catalog/metadata/0932a09d-7c95-4369-91ff-86187c292488-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/0932a09d-7c95-4369-91ff-86187c292488-m0.avro',\n", + " 'iceberg_catalog/metadata/f491d047-a07d-4dd1-9880-fb7cb524b729-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/f491d047-a07d-4dd1-9880-fb7cb524b729-m0.avro',\n", + " 'iceberg_catalog/metadata/94010da4-988a-4690-9744-544b69c4043d-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/94010da4-988a-4690-9744-544b69c4043d-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-1423242798306539847-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1423242798306539847-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.avro',\n", + " 'iceberg_catalog/metadata/74d5f5a8-00b1-4270-86e4-920f534462e2-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/74d5f5a8-00b1-4270-86e4-920f534462e2-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-7bbe577e-8ca9-4a90-afe8-115ae5ad1e66.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-7bbe577e-8ca9-4a90-afe8-115ae5ad1e66.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-0f5ff66b-9f53-4695-8fc7-cb317cab3ff7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-0f5ff66b-9f53-4695-8fc7-cb317cab3ff7.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-5b0d7e69-1e56-4f5a-8f0e-b5c5f8c9e402.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-5b0d7e69-1e56-4f5a-8f0e-b5c5f8c9e402.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-2864916062256581278-0-56302b1b-0145-4261-a75f-9fc822513965.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-2864916062256581278-0-56302b1b-0145-4261-a75f-9fc822513965.avro',\n", + " 'iceberg_catalog/metadata/c02f999d-b401-4394-8550-0524812a59fe-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/c02f999d-b401-4394-8550-0524812a59fe-m0.avro',\n", + " 'iceberg_catalog/metadata/2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-37fbbe54-240a-4d27-9c80-8af688986ec7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-37fbbe54-240a-4d27-9c80-8af688986ec7.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-1547694616865413560-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1547694616865413560-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.avro',\n", + " 'iceberg_catalog/metadata/4b224a68-251a-448b-a79a-e7a2ae6848c7-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/4b224a68-251a-448b-a79a-e7a2ae6848c7-m0.avro',\n", + " 'iceberg_catalog/metadata/83a8e328-45aa-41c3-b7ba-aada589c1100-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/83a8e328-45aa-41c3-b7ba-aada589c1100-m0.avro',\n", + " 'iceberg_catalog/metadata/e1c70f45-ac00-4f36-9f05-b402a92b17bb-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/e1c70f45-ac00-4f36-9f05-b402a92b17bb-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-6643227147233749836-0-dd9f8708-2f34-4066-8420-63fd375262c4.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6643227147233749836-0-dd9f8708-2f34-4066-8420-63fd375262c4.avro',\n", + " 'iceberg_catalog/metadata/88b277f5-8e5f-45cf-b3a7-3f645ccf3610-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/88b277f5-8e5f-45cf-b3a7-3f645ccf3610-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-d3787857-4eac-4cfa-86a5-6b220bb197d3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-d3787857-4eac-4cfa-86a5-6b220bb197d3.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-6148936714446219898-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6148936714446219898-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.avro',\n", + " 'iceberg_catalog/metadata/00001-e7962f83-a076-4a75-985e-d22f5c50d02e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-e7962f83-a076-4a75-985e-d22f5c50d02e.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-a6048e13-d05c-4e89-8da9-6781f37ad1f2.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a6048e13-d05c-4e89-8da9-6781f37ad1f2.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-5963977556171816944-0-31bea5d0-7d98-40f6-800b-8c651aea6750.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5963977556171816944-0-31bea5d0-7d98-40f6-800b-8c651aea6750.avro',\n", + " 'iceberg_catalog/metadata/snap-612035466803620355-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-612035466803620355-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.avro',\n", + " 'iceberg_catalog/metadata/00000-4e2fd912-9308-4048-a8d1-252cf9122840.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-4e2fd912-9308-4048-a8d1-252cf9122840.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-79175265-6e89-4e2a-9157-5db43dafa9d7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-79175265-6e89-4e2a-9157-5db43dafa9d7.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-62392862022840883-0-79d941be-d64b-420d-8258-ab9a19f60a3c.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-62392862022840883-0-79d941be-d64b-420d-8258-ab9a19f60a3c.avro',\n", + " 'iceberg_catalog/metadata/snap-515960161385423435-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-515960161385423435-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.avro',\n", + " 'iceberg_catalog/metadata/snap-3520959889309638487-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3520959889309638487-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.avro',\n", + " 'iceberg_catalog/metadata/00001-27ca47a0-4cb0-422a-9ec5-26ad42f8d274.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-27ca47a0-4cb0-422a-9ec5-26ad42f8d274.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-c3b73c20-d855-45c1-a627-075029f9ceaa.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c3b73c20-d855-45c1-a627-075029f9ceaa.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-4242698478604412586-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4242698478604412586-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.avro',\n", + " 'iceberg_catalog/metadata/3a1ebbe7-11ac-4920-b628-91d42f2a9658-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/3a1ebbe7-11ac-4920-b628-91d42f2a9658-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-80b9f406-1ed3-4ca2-b529-f79c04b930c7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-80b9f406-1ed3-4ca2-b529-f79c04b930c7.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-6067af93-bbd0-44a3-9e56-b5c04f031feb.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-6067af93-bbd0-44a3-9e56-b5c04f031feb.metadata.json',\n", + " 'iceberg_catalog/metadata/a5fa37d5-ad11-4816-8bc1-907b2f384012-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/a5fa37d5-ad11-4816-8bc1-907b2f384012-m0.avro',\n", + " 'iceberg_catalog/metadata/ff565f97-f743-4f7c-abd6-986fadcdd5ff-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/ff565f97-f743-4f7c-abd6-986fadcdd5ff-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-1072010512160647541-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1072010512160647541-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.avro',\n", + " 'iceberg_catalog/metadata/snap-4723433229204372088-0-b6e49d71-9d65-445d-8721-8549a8bfff63.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4723433229204372088-0-b6e49d71-9d65-445d-8721-8549a8bfff63.avro',\n", + " 'iceberg_catalog/metadata/00000-5affae0f-d57e-4770-9e8a-e1ea05f337a3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-5affae0f-d57e-4770-9e8a-e1ea05f337a3.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-4637614250918488530-0-2ec024d8-d33a-474b-a66d-578b741bb07b.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4637614250918488530-0-2ec024d8-d33a-474b-a66d-578b741bb07b.avro',\n", + " 'iceberg_catalog/metadata/00001-fdb4b52d-9430-4f6b-8d4c-56c8244de25f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-fdb4b52d-9430-4f6b-8d4c-56c8244de25f.metadata.json',\n", + " 'iceberg_catalog/metadata/33337276-e026-455f-8cfd-7b05284abc36-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/33337276-e026-455f-8cfd-7b05284abc36-m0.avro',\n", + " 'iceberg_catalog/metadata/29a6c52d-eefc-475d-927b-8e74a04cb96c-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/29a6c52d-eefc-475d-927b-8e74a04cb96c-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-5862537823954510993-0-2dd9f725-e066-4163-a76c-934c075c6b69.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5862537823954510993-0-2dd9f725-e066-4163-a76c-934c075c6b69.avro',\n", + " 'iceberg_catalog/metadata/00000-a3e9319b-0386-45e4-b75d-e5d36ebe7756.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a3e9319b-0386-45e4-b75d-e5d36ebe7756.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-b8b0b1d4-084e-432b-ae34-c9a4814a1e81.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b8b0b1d4-084e-432b-ae34-c9a4814a1e81.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-973381a9-74c9-4a19-bb92-876e6a8e5cee.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-973381a9-74c9-4a19-bb92-876e6a8e5cee.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-3821558550666939489-0-ef901ac2-0781-4afb-94ca-b733dd048a70.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3821558550666939489-0-ef901ac2-0781-4afb-94ca-b733dd048a70.avro',\n", + " 'iceberg_catalog/metadata/00000-69944a7a-50b8-4ee2-bcc5-7209ac5a5a6f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-69944a7a-50b8-4ee2-bcc5-7209ac5a5a6f.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-5759346661200024943-0-33337276-e026-455f-8cfd-7b05284abc36.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5759346661200024943-0-33337276-e026-455f-8cfd-7b05284abc36.avro',\n", + " 'iceberg_catalog/metadata/snap-3036933239882382933-0-94010da4-988a-4690-9744-544b69c4043d.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3036933239882382933-0-94010da4-988a-4690-9744-544b69c4043d.avro',\n", + " 'iceberg_catalog/metadata/00001-6c06fa99-4198-4130-bdcb-3e44169236f5.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-6c06fa99-4198-4130-bdcb-3e44169236f5.metadata.json',\n", + " 'iceberg_catalog/metadata/2ec024d8-d33a-474b-a66d-578b741bb07b-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2ec024d8-d33a-474b-a66d-578b741bb07b-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-82c1e2c6-ecbf-4730-b08d-43b6ae439a6f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-82c1e2c6-ecbf-4730-b08d-43b6ae439a6f.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-c0ef5091-6731-4671-9c62-6bb622078193.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c0ef5091-6731-4671-9c62-6bb622078193.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-1071109032890151563-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1071109032890151563-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.avro',\n", + " 'iceberg_catalog/metadata/00001-ba991154-22f7-486c-a2f4-5ef7336bf1a2.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-ba991154-22f7-486c-a2f4-5ef7336bf1a2.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-4aa54a74-4458-464d-85a3-bea3560c4a02.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-4aa54a74-4458-464d-85a3-bea3560c4a02.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-cd3e4a4b-4c25-464d-a525-f9b8905c35ce.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-cd3e4a4b-4c25-464d-a525-f9b8905c35ce.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-6856955298989226585-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6856955298989226585-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.avro',\n", + " 'iceberg_catalog/metadata/snap-8464165543612770186-0-c02f999d-b401-4394-8550-0524812a59fe.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-8464165543612770186-0-c02f999d-b401-4394-8550-0524812a59fe.avro',\n", + " 'iceberg_catalog/metadata/b6e49d71-9d65-445d-8721-8549a8bfff63-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/b6e49d71-9d65-445d-8721-8549a8bfff63-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-74ed5c84-3c12-4d40-b80a-a7ec240dfe9f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-74ed5c84-3c12-4d40-b80a-a7ec240dfe9f.metadata.json',\n", + " 'iceberg_catalog/metadata/6092672e-c75b-4426-af48-40346808bdf7-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/6092672e-c75b-4426-af48-40346808bdf7-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-e5687448-db5f-4b3f-a327-2ad1c5240610.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e5687448-db5f-4b3f-a327-2ad1c5240610.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-f0a14dcd-8fd0-44b4-9f9e-5aad93c0e2bb.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-f0a14dcd-8fd0-44b4-9f9e-5aad93c0e2bb.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-87e00ee9-0a95-4535-8bdf-edc894fdce7b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-87e00ee9-0a95-4535-8bdf-edc894fdce7b.metadata.json',\n", + " 'iceberg_catalog/metadata/6ed7cdd8-37e9-4f05-af66-0ad179cad29e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/6ed7cdd8-37e9-4f05-af66-0ad179cad29e-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-d32f7864-3be9-40d1-ae73-432d6fc4e261.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-d32f7864-3be9-40d1-ae73-432d6fc4e261.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-4276320977715109593-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4276320977715109593-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.avro',\n", + " 'iceberg_catalog/metadata/00000-da1c271b-b011-4be0-9512-26fbf178a77b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-da1c271b-b011-4be0-9512-26fbf178a77b.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-1226764095013695279-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1226764095013695279-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.avro',\n", + " 'iceberg_catalog/metadata/dd9f8708-2f34-4066-8420-63fd375262c4-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/dd9f8708-2f34-4066-8420-63fd375262c4-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-77e72558-ecb6-4295-b2f6-27c58dd61a85.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-77e72558-ecb6-4295-b2f6-27c58dd61a85.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-2e8f2156-373f-4e36-a397-14032febed12.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2e8f2156-373f-4e36-a397-14032febed12.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-2355293142637763355-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-2355293142637763355-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.avro',\n", + " 'iceberg_catalog/metadata/00001-eadd73d0-0aad-48f6-b967-9feb0603c1b3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-eadd73d0-0aad-48f6-b967-9feb0603c1b3.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-a6e1ff45-1675-4d34-9bfa-529729bd1182.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-a6e1ff45-1675-4d34-9bfa-529729bd1182.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-b958cdb6-61c9-4f4d-845a-8b380359a232.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b958cdb6-61c9-4f4d-845a-8b380359a232.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-b36f3ad0-c14b-426b-a8b3-e8297a10e2cf.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-b36f3ad0-c14b-426b-a8b3-e8297a10e2cf.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-b821f99f-bee2-43e1-9dc0-5f604c0ee439.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b821f99f-bee2-43e1-9dc0-5f604c0ee439.metadata.json',\n", + " 'iceberg_catalog/metadata/ef901ac2-0781-4afb-94ca-b733dd048a70-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/ef901ac2-0781-4afb-94ca-b733dd048a70-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-51495fe9-6aeb-423c-921f-25e8fed296b8.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-51495fe9-6aeb-423c-921f-25e8fed296b8.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-c0cd98ae-adaf-40a6-b8a0-723038fc51d3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c0cd98ae-adaf-40a6-b8a0-723038fc51d3.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-6708671433087716172-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6708671433087716172-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.avro',\n", + " 'iceberg_catalog/metadata/snap-397451539197656027-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-397451539197656027-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.avro',\n", + " 'iceberg_catalog/metadata/00001-398f1e98-2f5a-405a-aa21-6d6f249c49cc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-398f1e98-2f5a-405a-aa21-6d6f249c49cc.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-1529682512169813969-0-6092672e-c75b-4426-af48-40346808bdf7.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1529682512169813969-0-6092672e-c75b-4426-af48-40346808bdf7.avro',\n", + " 'iceberg_catalog/metadata/00000-c8961aee-5e44-4776-bbb0-192309c51192.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c8961aee-5e44-4776-bbb0-192309c51192.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-995d8b2a-86e9-48a3-9a05-c7ccc0ad6947.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-995d8b2a-86e9-48a3-9a05-c7ccc0ad6947.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-b589f643-23f1-4b39-8795-875746c9d40a.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-b589f643-23f1-4b39-8795-875746c9d40a.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-39503c61-6c1c-4714-bd13-b50a664103bc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-39503c61-6c1c-4714-bd13-b50a664103bc.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-98f85996-9e86-435c-b9f6-73e50c74fede.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-98f85996-9e86-435c-b9f6-73e50c74fede.metadata.json',\n", + " 'iceberg_catalog/metadata/25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-403feaec-6f57-4d5c-8f57-35df25b2d8fe.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-403feaec-6f57-4d5c-8f57-35df25b2d8fe.metadata.json',\n", + " 'iceberg_catalog/metadata/f1963f4e-533c-4349-90ce-fe651c3bd03f-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/f1963f4e-533c-4349-90ce-fe651c3bd03f-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-fd176c01-fff4-4bd6-8206-a66a3d34aaef.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-fd176c01-fff4-4bd6-8206-a66a3d34aaef.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-33db56f0-9ff4-4dc0-9ef7-cdc2f34e57fa.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-33db56f0-9ff4-4dc0-9ef7-cdc2f34e57fa.metadata.json',\n", + " 'iceberg_catalog/metadata/928c6a28-c248-4fbc-bd5c-684b1b38d2d9-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/928c6a28-c248-4fbc-bd5c-684b1b38d2d9-m0.avro',\n", + " 'iceberg_catalog/metadata/fbaf2a80-3953-4b77-9f09-6398d6db52ea-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/fbaf2a80-3953-4b77-9f09-6398d6db52ea-m0.avro',\n", + " 'iceberg_catalog/metadata/00001-22a4f3bd-4d5a-483f-86a2-030dbcdca64e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-22a4f3bd-4d5a-483f-86a2-030dbcdca64e.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-9d39f3c8-13c1-44c9-a952-fdcaeea3e72c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-9d39f3c8-13c1-44c9-a952-fdcaeea3e72c.metadata.json',\n", + " 'iceberg_catalog/metadata/31bea5d0-7d98-40f6-800b-8c651aea6750-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/31bea5d0-7d98-40f6-800b-8c651aea6750-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-84e1b3ac-d505-4b1d-8045-e119c8ab16e9.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-84e1b3ac-d505-4b1d-8045-e119c8ab16e9.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-86bdc061-b88a-4507-901b-e25978a3397e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-86bdc061-b88a-4507-901b-e25978a3397e.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-da81947f-6285-4225-abf6-346e2de7cbb0.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-da81947f-6285-4225-abf6-346e2de7cbb0.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-3927813710706619-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3927813710706619-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.avro',\n", + " 'iceberg_catalog/metadata/2dd9f725-e066-4163-a76c-934c075c6b69-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2dd9f725-e066-4163-a76c-934c075c6b69-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-1069052068710971707-0-74d5f5a8-00b1-4270-86e4-920f534462e2.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1069052068710971707-0-74d5f5a8-00b1-4270-86e4-920f534462e2.avro',\n", + " 'iceberg_catalog/metadata/00001-bc93d130-05ed-46cd-b4c6-bc2bcc6c8ddc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-bc93d130-05ed-46cd-b4c6-bc2bcc6c8ddc.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-4855055752437117124-0-1d64c282-3463-4db0-9914-78fef1158e5e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4855055752437117124-0-1d64c282-3463-4db0-9914-78fef1158e5e.avro',\n", + " 'iceberg_catalog/metadata/00001-2c5ec01f-7dd5-4b52-8cf6-a568d6d9d29b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2c5ec01f-7dd5-4b52-8cf6-a568d6d9d29b.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-0f5866f6-cddd-43d8-842b-60cf20c4ec1c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-0f5866f6-cddd-43d8-842b-60cf20c4ec1c.metadata.json',\n", + " 'iceberg_catalog/metadata/00001-2581f663-72ee-49d5-aad4-5660d00dd8dc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2581f663-72ee-49d5-aad4-5660d00dd8dc.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-1032401352117165068-0-f491d047-a07d-4dd1-9880-fb7cb524b729.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1032401352117165068-0-f491d047-a07d-4dd1-9880-fb7cb524b729.avro',\n", + " 'iceberg_catalog/metadata/00000-ce2992ad-0e0c-48e2-bc8b-bb996aa69923.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-ce2992ad-0e0c-48e2-bc8b-bb996aa69923.metadata.json',\n", + " 'iceberg_catalog/metadata/00000-9a694d60-0d5c-41b4-9b92-a81b1e4dabf4.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-9a694d60-0d5c-41b4-9b92-a81b1e4dabf4.metadata.json',\n", + " 'iceberg_catalog/metadata/994a22b9-0dae-40c2-b2bb-23f9962c61c5-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/994a22b9-0dae-40c2-b2bb-23f9962c61c5-m0.avro',\n", + " 'iceberg_catalog/metadata/snap-4622875834949791680-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4622875834949791680-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.avro',\n", + " 'iceberg_catalog/metadata/00001-6fac6d1a-30ce-4822-89e5-f4d412208b5f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-6fac6d1a-30ce-4822-89e5-f4d412208b5f.metadata.json',\n", + " 'iceberg_catalog/metadata/e0c82612-49a1-4bec-9ffb-0363b2808c90-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/e0c82612-49a1-4bec-9ffb-0363b2808c90-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-0ecd14a5-3da4-47f0-8bd8-83c95e680afc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-0ecd14a5-3da4-47f0-8bd8-83c95e680afc.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-4996700114448263860-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4996700114448263860-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.avro',\n", + " 'iceberg_catalog/metadata/00000-728df095-7195-4409-aae6-ed71991c6ef6.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-728df095-7195-4409-aae6-ed71991c6ef6.metadata.json',\n", + " 'iceberg_catalog/metadata/snap-6495503154204324342-0-0932a09d-7c95-4369-91ff-86187c292488.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6495503154204324342-0-0932a09d-7c95-4369-91ff-86187c292488.avro',\n", + " 'iceberg_catalog/metadata/8dea00e3-705a-4e9b-80ab-16d2728732f9-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/8dea00e3-705a-4e9b-80ab-16d2728732f9-m0.avro',\n", + " 'iceberg_catalog/metadata/1d64c282-3463-4db0-9914-78fef1158e5e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/1d64c282-3463-4db0-9914-78fef1158e5e-m0.avro',\n", + " 'iceberg_catalog/metadata/00000-1c1fb8d7-0c4c-4b0a-9ae3-db09afa718c7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-1c1fb8d7-0c4c-4b0a-9ae3-db09afa718c7.metadata.json',\n", + " 'iceberg_catalog/data/00000-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.parquet',\n", + " 'iceberg_catalog/data/00000-0-1d64c282-3463-4db0-9914-78fef1158e5e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-1d64c282-3463-4db0-9914-78fef1158e5e.parquet',\n", + " 'iceberg_catalog/data/00000-0-f491d047-a07d-4dd1-9880-fb7cb524b729.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-f491d047-a07d-4dd1-9880-fb7cb524b729.parquet',\n", + " 'iceberg_catalog/data/00000-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.parquet',\n", + " 'iceberg_catalog/data/00000-0-31bea5d0-7d98-40f6-800b-8c651aea6750.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-31bea5d0-7d98-40f6-800b-8c651aea6750.parquet',\n", + " 'iceberg_catalog/data/00000-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.parquet',\n", + " 'iceberg_catalog/data/00000-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.parquet',\n", + " 'iceberg_catalog/data/00000-0-94010da4-988a-4690-9744-544b69c4043d.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-94010da4-988a-4690-9744-544b69c4043d.parquet',\n", + " 'iceberg_catalog/data/00000-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.parquet',\n", + " 'iceberg_catalog/data/00000-0-2ec024d8-d33a-474b-a66d-578b741bb07b.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2ec024d8-d33a-474b-a66d-578b741bb07b.parquet',\n", + " 'iceberg_catalog/data/00000-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.parquet',\n", + " 'iceberg_catalog/data/00000-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.parquet',\n", + " 'iceberg_catalog/data/00000-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.parquet',\n", + " 'iceberg_catalog/data/00000-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.parquet',\n", + " 'iceberg_catalog/data/00000-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.parquet',\n", + " 'iceberg_catalog/data/00000-0-0932a09d-7c95-4369-91ff-86187c292488.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-0932a09d-7c95-4369-91ff-86187c292488.parquet',\n", + " 'iceberg_catalog/data/00000-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.parquet',\n", + " 'iceberg_catalog/data/00000-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.parquet',\n", + " 'iceberg_catalog/data/00000-0-79d941be-d64b-420d-8258-ab9a19f60a3c.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-79d941be-d64b-420d-8258-ab9a19f60a3c.parquet',\n", + " 'iceberg_catalog/data/00000-0-dd9f8708-2f34-4066-8420-63fd375262c4.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-dd9f8708-2f34-4066-8420-63fd375262c4.parquet',\n", + " 'iceberg_catalog/data/00000-0-6092672e-c75b-4426-af48-40346808bdf7.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-6092672e-c75b-4426-af48-40346808bdf7.parquet',\n", + " 'iceberg_catalog/data/00000-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.parquet',\n", + " 'iceberg_catalog/data/00000-0-2dd9f725-e066-4163-a76c-934c075c6b69.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2dd9f725-e066-4163-a76c-934c075c6b69.parquet',\n", + " 'iceberg_catalog/data/00000-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.parquet',\n", + " 'iceberg_catalog/data/00000-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.parquet',\n", + " 'iceberg_catalog/data/00000-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.parquet',\n", + " 'iceberg_catalog/data/00000-0-56302b1b-0145-4261-a75f-9fc822513965.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-56302b1b-0145-4261-a75f-9fc822513965.parquet',\n", + " 'iceberg_catalog/data/00000-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.parquet',\n", + " 'iceberg_catalog/data/00000-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.parquet',\n", + " 'iceberg_catalog/data/00000-0-ef901ac2-0781-4afb-94ca-b733dd048a70.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-ef901ac2-0781-4afb-94ca-b733dd048a70.parquet',\n", + " 'iceberg_catalog/data/00000-0-c02f999d-b401-4394-8550-0524812a59fe.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-c02f999d-b401-4394-8550-0524812a59fe.parquet',\n", + " 'iceberg_catalog/data/00000-0-74d5f5a8-00b1-4270-86e4-920f534462e2.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-74d5f5a8-00b1-4270-86e4-920f534462e2.parquet',\n", + " 'iceberg_catalog/data/00000-0-33337276-e026-455f-8cfd-7b05284abc36.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-33337276-e026-455f-8cfd-7b05284abc36.parquet',\n", + " 'iceberg_catalog/data/00000-0-b6e49d71-9d65-445d-8721-8549a8bfff63.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-b6e49d71-9d65-445d-8721-8549a8bfff63.parquet',\n", + " 'iceberg_catalog/data/00000-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.parquet',\n", + " 'iceberg_catalog/data/00000-0-83a8e328-45aa-41c3-b7ba-aada589c1100.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-83a8e328-45aa-41c3-b7ba-aada589c1100.parquet'})" + ] + }, + "execution_count": 33, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "s3_xs_iceberg_keys2objs = collections.defaultdict()\n", + "for folder, subfolders, files in os.walk(f'{os.getcwd()}/iceberg_catalog/'):\n", + " for file in files:\n", + " if folder != f'{os.getcwd()}/iceberg_catalog/':\n", + " # For all files not the database\n", + " s3_xs_iceberg_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}'] = f'{folder}/{file}'\n", + " else:\n", + " # For the database.\n", + " s3_xs_iceberg_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}{file}'] = f'{folder}{file}'\n", + " \n", + " \n", + "s3_xs_iceberg_keys2objs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ddc9f129-b35b-453f-bad6-92350e053fb6", + "metadata": {}, + "outputs": [], + "source": [ + "# Instantiate bucket of interest.\n", + "profile_name = 'default'\n", + "session = boto3.Session(profile_name=profile_name)\n", + "s3 = session.resource('s3')\n", + "bucket_name = 'ngwpc-xs'\n", + "\n", + "# # Uploading the xs by HUC parquets\n", + "# for key, file_dir in s3_xs_keys2objs.items():\n", + "# s3.Bucket(bucket_name).upload_file(file_dir, key)\n", + "\n", + "# Uploading the xs by HUC parquets\n", + "# for key, file_dir in s3_xs_iceberg_keys2objs.items():\n", + "# s3.Bucket(bucket_name).upload_file(file_dir, key)\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "01dc1ff0-bfd5-4b7a-82d0-1d60e237e2cd", + "metadata": {}, + "source": [ + "# Cross-Check & Verify:\n", + "## Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "pyarrow.Table\n", + "river: string\n", + "reach: string\n", + "river_reach: string\n", + "river_station: double\n", + "river_reach_rs: string\n", + "thalweg: double\n", + "xs_max_elevation: double\n", + "left_reach_length: double\n", + "right_reach_length: double\n", + "channel_reach_length: double\n", + "ras_data: string\n", + "station_elevation_points: string\n", + "bank_stations: string\n", + "number_of_station_elevation_points: int64\n", + "number_of_coords: int64\n", + "flows: string\n", + "profile_names: string\n", + "geometry: binary\n", + "huc: string\n", + "model_id: string\n", + "us_reach_id: string\n", + "us_network_to_id: string\n", + "ds_reach_id: string\n", + "ds_network_to_id: string\n", + "__index_level_0__: int64\n", + "----\n", + "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", + "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", + "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", + "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", + "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", + "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", + "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", + "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", + "..." + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Load the Parquet file into a DataFrame\n", + "parquet_file_path = f'{os.getcwd()}/xs_data/mip_01020002/huc_01020002.parquet'\n", + "parquet_content = pq.read_table(parquet_file_path)\n", + "parquet_content" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "86ec5e38-ab4c-4185-bc0f-3306e670f968", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "iceberg", + "language": "python", + "name": "iceberg" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 297265f0ac78afcc769c3baa65667df412d53394 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 11:04:37 -0400 Subject: [PATCH 29/97] updated to accomod namespace & xs & m1_aux data --- .../src/icefabric_manage/iceberg_table.py | 134 +++++++++++++----- 1 file changed, 95 insertions(+), 39 deletions(-) diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 76a336e..271409a 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -2,22 +2,34 @@ import pyiceberg from pyiceberg.catalog import load_catalog from pyiceberg.schema import Schema -from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType +from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType, BinaryType, BooleanType +from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual import pyarrow.parquet as pq from pyiceberg.schema import Schema import boto3 import s3fs +import re import os class IcebergTable(object): ''' Create a Iceberg table per parquet file w/ its inherited schema set. + + Note: It is okay to expect following warning statements throughout process: + "Iceberg does not have a dictionary type. will be inferred as string on read." ''' def __init__(self): - + + # Generate folder for iceberg catalog + if not os.path.exists(f'{os.getcwd()}/iceberg_catalog'): + os.makedirs(f'{os.getcwd()}/iceberg_catalog') + # Set location of where the iceberg catalog will reside os.environ['PYICEBERG_HOME'] = os.getcwd() + + # Initialize namespace to be set for Iceberg catalog + self.namespace = str() def read_data_dirs(self, data_dir): ''' @@ -55,20 +67,26 @@ def read_data(self, parquet_file_path): return data - def establish_catalog(self, name='dev'): + def establish_catalog(self, catalog_name, namespace): ''' Creates a new Iceberg catalog. Args: - name (str): Name of the catalog to be created. - Default: 'dev' for development catalog + catalog_name (str): Name of the catalog to be created. + Default: 'dev' for development catalog + namespace (str): Name of namespace. Return: None - ''' + ''' # Establish a new Iceberg catalog & its configuration - self.catalog = load_catalog(name=name, - **{'uri': f'sqlite:///iceberg_catalog/{name}_catalog.db'}) + self.catalog = load_catalog(name=catalog_name, + **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'}) + + # Establish namespace to be create w/in catalog + self.namespace = namespace + if self.namespace not in self.catalog.list_namespaces(): + self.catalog.create_namespace(self.namespace) return @@ -99,6 +117,10 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): iceberg_type = DoubleType() elif pa.types.is_int64(arrow_type): iceberg_type = LongType() + elif pa.types.is_boolean(arrow_type): + iceberg_type = BooleanType() + elif pa.types.is_binary(arrow_type): + iceberg_type = BinaryType() elif pa.types.is_dictionary(arrow_type): if pa.types.is_string(arrow_type.value_type): iceberg_type = StringType() @@ -117,7 +139,7 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): return schema - def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namespace): + def create_table_for_parquet(self, iceberg_tablename, data_table, schema): ''' Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory. @@ -132,15 +154,11 @@ def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namesp the Iceberg catalog. Return: None - - Note: The following warning is expected: - Iceberg does not have a dictionary type. will be inferred as int32 on read. ''' # Create an Iceberg table - self.catalog.create_namespace_if_not_exists(namespace) - iceberg_table = self.catalog.create_table(identifier=f"{namespace}.{iceberg_tablename}", + iceberg_table = self.catalog.create_table(identifier=f"{self.namespace}.{iceberg_tablename}", schema=schema, location=f"{os.environ['PYICEBERG_HOME']}/iceberg_catalog") @@ -149,35 +167,46 @@ def create_table_for_parquet(self, iceberg_tablename, data_table, schema, namesp return - def create_table_for_all_parquets(self, parquet_files, namespace, source='local'): + def create_table_for_all_parquets(self, parquet_files, app_name='mip-xs'): ''' Convert parquets to Iceberg tables - each w/ their inherited schema. Args: parquet_files (list): List of directories of the parquet files. - - namespace (str): Namespace for which the Iceberg table will reside within - the Iceberg catalog. + + app_name (str): Application to create Iceberg tables. + Options: 'mip-xs' & 'bathymetry_ml_auxiliary' Return: None - + + Note: The sourced data structures for the data in 'mip-xs' & + 'bathymetry_ml_auxiliary' S3 buckets differ. + ''' for idx, parquet_file in enumerate(parquet_files): + if app_name == 'mip_xs': + iceberg_tablename = f"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}" + + elif app_name == 'bathymetry_ml_auxiliary': + iceberg_tablename = f"{os.path.split(os.path.split(parquet_file)[0])[1]}" + data_table = self.read_data(parquet_file) data_pyarrow_schema = data_table.schema schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) - self.create_table_for_parquet(os.path.split(os.path.split(parquet_file)[0])[1], + self.create_table_for_parquet(iceberg_tablename, data_table, - schema, - namespace) + schema) return - def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymetry', profile_name='default'): + def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name='default'): ''' Convert parquets from S3 to Iceberg tables - each w/ their inherited schema. Args: bucket_name (list): S3 bucket name. + + app_name (str): Application to create Iceberg tables. + Options: 'mip_xs' & 'bathymetry_ml_auxiliary' namespace (str): Namespace for which the Iceberg table will reside within the Iceberg catalog. @@ -186,7 +215,7 @@ def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymet Default: 'default' Return: None - + ''' # Instantiate bucket of interest. session = boto3.Session(profile_name=profile_name) @@ -194,29 +223,56 @@ def create_table_for_all_s3parquets(self, namespace, bucket_name='ngwpc-bathymet bucket_ob = s3.Bucket(bucket_name) pyarrow_table = {} for s3obj in bucket_ob.objects.all(): - pyarrow_table[s3obj.key]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', - filesystem=s3fs.S3FileSystem()) + + # For sourcing the preprocessed XS parquets from S3 + if app_name == 'mip_xs' and re.match(r'^xs_data/.*\.parquet$', s3obj.key): + iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}" + pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', + filesystem=s3fs.S3FileSystem()) + + # For sourcing the bathymetry_ml_auxiliary parquets from S3 + elif app_name == 'bathymetry_ml_auxiliary': + iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[0])[1]}" + pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', + filesystem=s3fs.S3FileSystem()) + + # Xforming each unique parquet to an iceberg table for key, data_table in pyarrow_table.items(): data_pyarrow_schema = data_table.schema schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) - self.create_table_for_parquet(os.path.split(os.path.split(key)[0])[1], - data_table, - schema, - namespace) + self.create_table_for_parquet(key, + data_table, + schema) return -if __name__ == '__main__': +# if __name__ == '__main__': # Instantiate class - obj = IcebergTable() + #obj = IcebergTable() - # Extract list of parquets - parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/') + # ======= For ml_auxiliary_data application ======= + + ## Extract list of parquets + #parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/') + + ## Establish new Iceberg catalog + #obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev', + # namespace='bathymetry_ml_auxiliary') - # Establish new Iceberg catalog - obj.establish_catalog('dev') + ## Generate tables w/in the new Iceberg catalog for all parquets detected + #obj.create_table_for_all_parquets(parquet_list, + # app_name='bathymetry_ml_auxiliary') - # Generate tables w/in the new Iceberg catalog for all parquets detected - obj.create_table_for_all_parquets(parquet_list, - namespace='bathymetry_ml_auxiliary') + # ======= For mip xs data application ======= + + # Extract list of parquets + #file_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/xs_data/') + #parquet_list = [file for file in file_list if file.endswith('.parquet')] + + #Establish new Iceberg catalog for XS data + #obj.establish_catalog(catalog_name='xs', + # namespace='mip') + + # Generate tables w/in the new Iceberg catalog for all parquets detected + #obj.create_table_for_all_parquets(parquet_list, app_name='mip-xs') \ No newline at end of file From 751b0ef04432d8efff56e24607014a4d4deba4ca Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 11:12:31 -0400 Subject: [PATCH 30/97] add script mapping XS to IDs categorize by HUC --- .../src/icefabric_manage/map_fim_data.py | 591 ++++++++++++++++++ 1 file changed, 591 insertions(+) create mode 100644 src/icefabric_manage/src/icefabric_manage/map_fim_data.py diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py new file mode 100644 index 0000000..abc3e7e --- /dev/null +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -0,0 +1,591 @@ +import geopandas +import pyarrow as pa +import pyarrow.parquet as pq +import collections +import pandas as pd +import numpy as np +import re +import json +import pickle +import os +import warnings +warnings.filterwarnings('ignore') + +class MapData(object): + ''' + ''' + def __init__(self, data_dir): + self.data_dir = data_dir + + # Parent directory of the FIM-C files. + # Note: All the jsons & geopackages are relevant + # to map the files to IDs. + self.fim_data_dirs = [] + + # List of directories associated with each file type of + # the FIM-C data sample (e.g. geopackage of a given model @ HUC#, json, + # source_models.gpkg, ripple.gpkg) + self.model_gpkg_dirs = [] + self.src_models_gpkg_dirs = [] + self.rip_gpkg_dirs = [] + self.gpkg_dirs = [] + self.json_dirs = [] + self.xs_df_list = [] + + # Variables to be used later + self.model_gpkg_tablenames = [] + self.src_models_gpkg_tablenames = [] + self.rip_gpkg_tablenames = [] + self.gpkg_tablenames = [] + self.json_tablenames = [] + + self.id2json = collections.defaultdict(dict) + self.model_id2gpkg = collections.defaultdict(dict) + self.us_ref_dict = collections.defaultdict(dict) + self.ds_ref_dict = collections.defaultdict(dict) + self.rip_huc2gpkg = collections.defaultdict(dict) + self.groupbyriver_dict = collections.defaultdict(dict) + self.crs_dict = collections.defaultdict(dict) + self.consolidated_id2xs = geopandas.GeoDataFrame() + + self.read_data_dirs() + self.cat_data_dirs() + self.map_model2huc() + self.filter_model2huc_map(keys_to_drop={'metrics','low_flow', + 'high_flow', 'eclipsed', + 'lengths', 'coverage'}) + + # Generate maps of model_id & HUC # to xs (for both us & ds cross-section) + # to reach ID & "network_to_id" from each model @ HUC's json file + self.map_modelhuc_xs2ids() + + # Generate maps of model_id & HUC # to gpkg from each model @ HUC's geopackage + self.map_model2huc_gpkg() + + # Generate maps of HUC # to ripple gpkg + self.map_huc2ripple_gpkg() + + # Map IDs to each model's cross-section instance + self.map_model_xs2ids() + + # [Optional: Per HUC, save each river's set of XS data as geoparquetss & geopackages] + #self.save_xs_data() + + # Save map of inherited CRS to HUC, model_id, river name + self.save_crs_map() + + # Consolidated all HEC RAS models' cross-sections featuring IDs + self.consolidate_id2xs_dfs() + + # Save HEC RAS models' cross-sections consolidated by HUC as geoparquets & geopackages + self.save_xsbyhuc_data() + + + + def read_data_dirs(self): + ''' + Extract the list of fim-c data sample's directories. + + Args: + data_dir (str): Parent directory of the fim-c files. + Note: All the jsons & geopackages are relevant + to map the files to IDs. + + Return (list): List of directories associated with each file type of + the FIM-C data sample. + + ''' + fim_data_dirs = [] + for folder, subfolders, files in os.walk(self.data_dir): + if folder != self.data_dir: + for file in files: + self.fim_data_dirs.append(f'{folder}/{file}') + + return + + def cat_data_dirs(self): + ''' + Categorize FIM-C data sample files. + + Args: + None + + Return: None + + ''' + # Extract a list of directories corresponding to each set of files + for x in self.fim_data_dirs: + + # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains reach_id & nwm_to_id + # for network layer & reaches layer. The rating curves layer only has reach_id. The models layer + # contains collection_id & model_id) + if re.search('ripple.gpkg', x): + self.rip_gpkg_dirs.append(x) + t = re.search('/mip(.*)', x) + rip_gpkg_tblname = t.group() + self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip('/').replace('/', '_')) + + # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id) + elif not x.endswith('source_models.gpkg') and not x.endswith('.json') and not re.search('ripple.gpkg', x): + self.model_gpkg_dirs.append(x) + t = re.search('/mip(.*)', x) + model_gpkg_tblname = t.group() + self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip('/').replace('/', '_')) + + # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines) + elif x.endswith('source_models.gpkg'): + self.src_models_gpkg_dirs.append(x) + t = re.search('/mip(.*)', x) + src_models_gpkg_tblname = t.group() + self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip('/').replace('/', '_')) + + # Covers all HEC-RAS models + Ripple gpkg per HUC + if x.endswith('.gpkg'): + self.gpkg_dirs.append(x) + t = re.search('/mip(.*)', x) + gpkg_tblname = t.group() + self.gpkg_tablenames.append(gpkg_tblname.lstrip('/').replace('/', '_')) + + # Covers each HEC-RAS models' result of conflating its model w/ the NWM network + elif x.endswith('.json'): + self.json_dirs.append(x) + t = re.search('/mip(.*)', x) + json_tblname = t.group() + self.json_tablenames.append(json_tblname.lstrip('/').replace('/', '_')) + + return + + def drop_nested_keys(self, map_dict, keys_to_drop): + ''' + Drop keys irrelevant for linking each XS to IDs + + Args: + map_dict (dict): Dictionary to filter + + keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs. + + Return: None + + ''' + if isinstance(map_dict, dict): + return {k: self.drop_nested_keys(v, keys_to_drop) for k, v in map_dict.items() if k not in keys_to_drop} + elif isinstance(map_dict, list): + return [self.drop_nested_keys(i, keys_to_drop) for i in map_dict] + else: + return map_dict + + def map_model2huc(self): + ''' + Map each conflation json file to their corresponding model_id & HUC #. + + Args: + None + + Return: None + + ''' + for x in self.json_dirs: + # Note: model_ids found in each src source_models.gpkg is featured is declared as + # sub-foldername of where model gpkg file resides + model_id = x.split("/")[-2] + huc_num = x.split("/")[-4].split('_')[1] + self.id2json[model_id][huc_num] = {} + try: + with open(x, 'r') as f: + json2dict = json.loads(f.read()) + self.id2json[model_id][huc_num].update(json2dict) + except: + pass + + return + + def filter_model2huc_map(self, keys_to_drop): + ''' + Extract only relevant keys from model2huc map for linking each XS to a feature ID. + + Args: + keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs. + (e.g. {'metrics','low_flow', 'high_flow', 'eclipsed', + 'lengths', 'coverage'}) + + Return: None + + ''' + self.id2json = self.drop_nested_keys(self.id2json, keys_to_drop) + + return + + def map_modelhuc_xs2ids(self): + ''' + Parse JSONs & map model_id & HUC # to xs to reach ID & "network_to_id" + + Args: + None + + Return: None + + Note: Per model @ HUC cross-section layer, the attribute of interest is "river_reach_rs" + in order to link the IDs to each individual cross-section & their associated xs_id. + + To map each cross-section of a model @ HUC#, there has to be a shared attribute between a + model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s + conflation json file. + + - Each conflation json file reveals ... + - Per reach, there is a set of cross-sections. + - Within each model's cross-section (XS) layers, there are a set of cross-section + instances - each instance featuring a unique "thalweg" (aka "min_elevation"), + "xs_max_elevation" (aka "max_elevation"), "reach_id" ("reaches"), & "river_station" (aka "xs_id") + + - Each model @ HUC#'s XS layer contains a collection of cross-section instancees. + Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in + such a way to allow each cross-section to be associated with a feature ID (aka "reach_id" and/or + "network_to_id"). + + - "river_reach_rs" is formatted differently across models' XS layers, however multplie keys + referenced in the conflation jsons can be referenced to obtain the "river_reach_rs" from the jsons + As a result, the mapping of IDs to each model's cross-section instance will be based on the info. + extracted from a model @ HUC#'s conflation.json + + - There can be multiple reach_ids tied to same nwm_to_id (aka "network_to_id). + + ''' + # Keys to join values from that makes up the 'river_reach_rs' reflected in each model's XS layer + keys_to_join = ['river', 'reach', 'xs_id'] + for model_id, huc_dict in self.id2json.items(): + for huc_num, reach_dict in huc_dict.items(): + for reach_id, v_dict in reach_dict['reaches'].items(): + # Joining the attribute because each model's xs layer features three atttrib concat (to be used as reference) + if "us_xs" in v_dict: + usxs_joined_values = ' '.join(str(v_dict["us_xs"][key]) for key in keys_to_join) + if "min_elevation" in v_dict["us_xs"]: + us_xs_min_elev = v_dict["us_xs"]["min_elevation"] + if "max_elevation" in v_dict["us_xs"]: + us_xs_max_elev = v_dict["us_xs"]["max_elevation"] + + if "ds_xs" in v_dict: + dsxs_joined_values = ' '.join(str(v_dict["ds_xs"][key]) for key in keys_to_join) + if "min_elevation" in v_dict["ds_xs"]: + ds_xs_min_elev = v_dict["ds_xs"]["min_elevation"] + if "max_elevation" in v_dict["ds_xs"]: + ds_xs_max_elev = v_dict["ds_xs"]["max_elevation"] + + if "network_to_id" in v_dict: + nwm2id = v_dict["network_to_id"] + + # Generated maps of model_id & HUC # to xs (for both us & ds cross-section) + # to reach ID & "network_to_id" + self.us_ref_dict[(model_id, huc_num)].update({(usxs_joined_values, us_xs_min_elev , us_xs_max_elev):[reach_id, nwm2id]}) + self.ds_ref_dict[(model_id, huc_num)].update({(dsxs_joined_values, ds_xs_min_elev , ds_xs_max_elev):[reach_id, nwm2id]}) + + return + + def map_model2huc_gpkg(self): + ''' + Map model_id & HUC # to each HEC-RAS model's geopackage. + + Args: + None + + Return: None + + Note: model_ids found in each source_models.gpkg is featured in last + sub-foldername of where model gpkg file resides + + ''' + # Each HEC-RAS model gpkg per model per HUC + for x in self.model_gpkg_dirs: + model_id = x.split("/")[-2] + huc_num = x.split("/")[-4].split('_')[1] + self.model_id2gpkg[(model_id, huc_num)] = {'XS': None} + self.model_id2gpkg[(model_id, huc_num)] = {"XS concave hull": None} + self.model_id2gpkg[(model_id, huc_num)] = {"River": None} + + try: + self.model_id2gpkg[(model_id, huc_num)].update({'XS': geopandas.read_file(x, engine='pyogrio', + use_arrow=True, + layer="XS")}) + + self.model_id2gpkg[(model_id, huc_num)].update({"River": geopandas.read_file(x, + engine='pyogrio', + use_arrow=True, + layer="River")}) + self.model_id2gpkg[(model_id, huc_num)].update({"XS concave hull": geopandas.read_file(x, + engine='pyogrio', + use_arrow=True, + layer="XS concave hull")}) + except: + pass + + return + + def map_huc2ripple_gpkg(self): + ''' + Map HUC # to ripple geopackage (features HEC RAS 1D model flowlines). + + Args: + None + + Return: None + + Note: ripple.gpkg features the HEC RAS 1D model flowlines categorized by HUC #. + + ''' + for x in self.rip_gpkg_dirs: + huc_num = x.split("/")[-2].split('_')[1] + self.rip_huc2gpkg[huc_num] = {'reaches': None} + self.rip_huc2gpkg[huc_num] = {"rating curves": None} + self.rip_huc2gpkg[huc_num] = {"network": None} + self.rip_huc2gpkg[huc_num] = {'models': None} + self.rip_huc2gpkg[huc_num] = {"metadata": None} + self.rip_huc2gpkg[huc_num] = {"rating_curves_no_map": None} + self.rip_huc2gpkg[huc_num] = {"processing": None} + + try: + self.rip_huc2gpkg[huc_num].update({"reaches": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="reaches")}) + self.rip_huc2gpkg[huc_num].update({"rating_curves": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="rating_curves")}) + self.rip_huc2gpkg[huc_num].update({"network": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="network")}) + self.rip_huc2gpkg[huc_num].update({"models": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="models")}) + self.rip_huc2gpkg[huc_num].update({"metadata": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="metadata")}) + self.rip_huc2gpkg[huc_num].update({"rating_curves_no_map": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="rating_curves_no_map")}) + self.rip_huc2gpkg[huc_num].update({"processing": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="processing")}) + except: + + pass + return + + def map_model_xs2ids(self): + ''' + Map each cross-section instance featured in HEC-RAS model's cross-section layer to their corresponding IDs. + + Args: + None + + Return: None + + ''' + + for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): + df = model_gpkg_dict['XS'] + df['huc'] = huc_num + df['model_id'] = model_id + array_of_lists = [[None, None] for _ in range(len(df))] + df['us_ids'] = pd.DataFrame([array_of_lists]).T + df['ds_ids'] = pd.DataFrame([array_of_lists]).T + + # Covers us_xs + if (model_id, huc_num) in self.us_ref_dict: + df['us_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.us_ref_dict[(model_id, huc_num)].get) + #print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.") + else: + print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") + continue + + # Covers ds_xs + if (model_id, huc_num) in self.ds_ref_dict: + df['ds_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.ds_ref_dict[(model_id, huc_num)].get) + #print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.") + else: + print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") + continue + + # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS + us_id_df = df['us_ids'].apply(pd.Series) + us_id_df.columns=['us_reach_id', 'us_network_to_id'] + ds_id_df = df['ds_ids'].apply(pd.Series) + ds_id_df.columns=['ds_reach_id', 'ds_network_to_id'] + + # Fill any nan to string + us_id_df[['us_reach_id', 'us_network_to_id']] = us_id_df[['us_reach_id', 'us_network_to_id']].fillna('None') + ds_id_df[['ds_reach_id', 'ds_network_to_id']] = ds_id_df[['ds_reach_id', 'ds_network_to_id']].fillna('None') + df = df.fillna('None') + df = pd.concat([df, us_id_df, ds_id_df], axis=1) + df = df.drop(['us_ids', 'ds_ids'], axis=1) + + model_gpkg_dict['XS'] = df + self.xs_df_list.append(model_gpkg_dict['XS']) + + return + + def save_xs_data(self): + ''' + Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage + + Args: + None + + Return: None + + Note: These saved parquet files will preserve each river @ HUC's inherited CRS. + + ''' + for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): + + # Generate data folder per HUC + if not os.path.exists(f'{os.getcwd()}/xs_data/huc_{huc_num}'): + os.makedirs(f'{os.getcwd()}/xs_data/huc_{huc_num}') + + # Save each river's geopandas as a geoparquet & geopackage under each HUC folder + grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river']) + for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']): + filterbyriver = grouped_xslayers.get_group(river_name) + + # Generate map of each river's set of XS to HUC & model ID to be used as a + # look-up reference + self.groupbyriver_dict[huc_num].update({model_id: filterbyriver}) + + # Save XS as geoparquet per river per HUC + filterbyriver.to_parquet(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.parquet', + engine="pyarrow") + + # Save XS as geopackage per river per HUC + filterbyriver.to_file(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.gpkg', + driver='GPKG') + + return + + def save_crs_map(self): + ''' + Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage + + Args: + None + + Return: None + + Note: This saved pickle file will map each river @ HUC's inherited CRS for one to + analyze & reference. + + ''' + for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): + + # Generate data folder per HUC + if not os.path.exists(f'{os.getcwd()}/xs_data/crs_map'): + os.makedirs(f'{os.getcwd()}/xs_data/crs_map') + + # Generate map of the CRS to each river's geopandas per HUC + grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river']) + for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']): + filterbyriver = grouped_xslayers.get_group(river_name) + self.crs_dict[(huc_num, model_id)].update({river_name: f'ESPG: {str(filterbyriver.crs.to_epsg()) if \ + filterbyriver.crs.to_epsg() else None}, {filterbyriver.crs.name},'}) + + # Save map of inherited CRS to HUC, model_id, river name + with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'wb') as handle: + pickle.dump(self.crs_dict, handle, protocol=pickle.HIGHEST_PROTOCOL) + + return + + def consolidate_id2xs_dfs(self): + ''' + Consolidate HEC-RAS models cross-sections featuring their corresponding IDs. + + Args: + None + + Return: None + + Note: A set CRS standard is needed in order to consolidates all XS layers of all models + under a single dataframe to maintain a consistent CRS. This consolidation will check if the XS + dataframes have a consistent CRS if it does not then it will not consolidate the XS dataframes. + As of 05/14/25, only CRS in this condition is considering the + NAD83, but additional CRS can be added to this methods as new findings are made. + + ''' + crs_list = [] + for xs_df in self.xs_df_list: + if 'NAD83' in xs_df.crs.name or 'NAD_1983' in xs_df.crs.name: + # Convert all GeoDataFrames in the list to the target CRS + crs_list.append("EPSG:5070") + else: + print(False) + + # Will consolidate ONLY if the CRS is consistent across XS geodpandas dataframes + if len(set(crs_list)) == 1: + target_crs = str(np.unique(crs_list)[0]) + self.consolidated_id2xs = geopandas.GeoDataFrame(pd.concat([xs_df.to_crs(target_crs) for xs_df in self.xs_df_list], + ignore_index=True)) + print(f"The consolidated XS geopandas dataframes now has a standardized CRS of:\n{self.consolidated_id2xs.crs.name}") + else: + print("Cannot consolidate XS geodpandas dataframes because the CRS is inconsistent across XS geodpandas dataframes.") + + return + + def save_xsbyhuc_data(self): + ''' + Consolidate HEC-RAS models cross-sections based on HUC & save to storage + + Args: + None + + Return: None + + Note: These saved parquet files will be the transformed CRS of all XS per HUC to ensure + a consistent standardized CRS. + + ''' + unique_huc_nums = set(self.consolidated_id2xs['huc']) + for huc_num in unique_huc_nums: + + # Generate data folder per HUC + if not os.path.exists(f'{os.getcwd()}/xs_data/mip_{huc_num}'): + os.makedirs(f'{os.getcwd()}/xs_data/mip_{huc_num}') + + # Filter consolidated XS geopanda dataframe by HUC + filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs['huc'] == huc_num] + + # Save XS as geoparquet per HUC + filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.parquet', + engine="pyarrow") + + # Save XS as geopackage per HUC + filterbyhuc.to_file(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.gpkg', + driver='GPKG') + + return + + # if __name__ == '__main__': + + # # Instantiate class + # obj = MapData(data_dir=f'{os.getcwd()}/fema_mip_sample/') + + # # Extract list of fim-c data sample's directories. + # fim_data_dirs = obj.fim_data_dirs + + # # Categorize FIM-C data sample files (e.g. geopackage of a given model @ HUC#, json, source_models.gpkg, ripple.gpkg) + # model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = obj.model_gpkg_dirs, obj.src_models_gpkg_dirs, obj.rip_gpkg_dirs + # gpkg_dirs, json_dirs = obj.gpkg_dirs, obj.json_dirs + + # model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = obj.model_gpkg_tablenames, obj.src_models_gpkg_tablenames, obj.rip_gpkg_tablenames + # gpkg_tablenames, json_tablenames = obj.gpkg_tablenames, obj.json_tablenames + + # # Generate a dictionary to map each conflation json files to their corresponding model_id & HUC #. + # model2huc_map = obj.id2json + + # # Generated maps of model_id & HUC # to xs (for both us & ds cross-section) to reach ID & "network_to_id" + # us_xs2id_map = obj.us_ref_dict + # ds_xs2id_map = obj.ds_ref_dict + + # # Generated map of model_id & HUC # to each HEC-RAS model's geopackage. + # model_id2gpkg_map = obj.model_id2gpkg + + # # Generated map of HUC # to each ripple geopackage. + # rip_huc2gpkg_map = obj.rip_huc2gpkg + + # # Map IDs to each model's cross-section instance + # id2xs_dfs = obj.xs_df_list + + # # [OPTIONAL: If a user wants to extract individual river geopandas, parquet, &/or gpkg] + # # Map of XS as geopandas per river per HUC w/ their inherited CRS by HUC + # #xsbyriver_map = obj.groupbyriver_dict + + # # [OPTIONAL: Map of inherited CRS to HUC, model_id, river name] + # crs_map = obj.crs_dict + + # # Conslidate all HEC-RAS models' cross-sections featuring their corresponding IDs. + # consolidated_id2xs = obj.consolidated_id2xs + + + + + \ No newline at end of file From cf1ea69593cef66f9711c8210d006d0f65de8a46 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 11:16:58 -0400 Subject: [PATCH 31/97] adding to doc str --- src/icefabric_manage/src/icefabric_manage/map_fim_data.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index abc3e7e..e94900c 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -13,6 +13,8 @@ class MapData(object): ''' + Maps FIM XS data to IDs & categorize by HUC. At this time, ensure FIM mip data sample is saved + to local disk. ''' def __init__(self, data_dir): self.data_dir = data_dir From fde6be62ec0d4faccf1c1c4393fe5d6ff55b647b Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 11:20:25 -0400 Subject: [PATCH 32/97] Add to doc str --- examples/Demo_Iceberg.ipynb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index 12f4c19..9057e3d 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -35,8 +35,9 @@ " '''\n", " Create a Iceberg table per parquet file w/ its inherited schema set.\n", "\n", - " Note: It is okay to expect following warning statements throughout process:\n", - " \"Iceberg does not have a dictionary type. will be inferred as string on read.\"\n", + " Note: Allows for user to have the option to read parquets from S3 or locally. It is okay to expect\n", + " following warning statements throughout process: \"Iceberg does not have a dictionary type. will be inferred as string on read.\"\n", " \n", " '''\n", " def __init__(self):\n", From 838481d9d134924e8b133b6a02699917e46d2e4b Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 11:22:48 -0400 Subject: [PATCH 33/97] Add to doc str --- src/icefabric_manage/src/icefabric_manage/iceberg_table.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 271409a..93b508e 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -15,8 +15,9 @@ class IcebergTable(object): ''' Create a Iceberg table per parquet file w/ its inherited schema set. - Note: It is okay to expect following warning statements throughout process: - "Iceberg does not have a dictionary type. will be inferred as string on read." + Note: Allows for user to have the option to read parquets from S3 or locally. It is okay to expect + following warning statements throughout process: "Iceberg does not have a dictionary type. will be inferred as string on read." ''' def __init__(self): From 04e981e69dcd1fd138bdc8f8e38946bfdb169f6a Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 15:43:48 -0400 Subject: [PATCH 34/97] Update iceberg_table.py --- .../src/icefabric_manage/iceberg_table.py | 32 ------------------- 1 file changed, 32 deletions(-) diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 93b508e..315c2dc 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -245,35 +245,3 @@ def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name='d data_table, schema) return - - -# if __name__ == '__main__': - - # Instantiate class - #obj = IcebergTable() - - # ======= For ml_auxiliary_data application ======= - - ## Extract list of parquets - #parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/') - - ## Establish new Iceberg catalog - #obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev', - # namespace='bathymetry_ml_auxiliary') - - ## Generate tables w/in the new Iceberg catalog for all parquets detected - #obj.create_table_for_all_parquets(parquet_list, - # app_name='bathymetry_ml_auxiliary') - - # ======= For mip xs data application ======= - - # Extract list of parquets - #file_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/xs_data/') - #parquet_list = [file for file in file_list if file.endswith('.parquet')] - - #Establish new Iceberg catalog for XS data - #obj.establish_catalog(catalog_name='xs', - # namespace='mip') - - # Generate tables w/in the new Iceberg catalog for all parquets detected - #obj.create_table_for_all_parquets(parquet_list, app_name='mip-xs') \ No newline at end of file From 50a553513033c5da1921ffbdafed3a354f19a8e8 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 15:45:02 -0400 Subject: [PATCH 35/97] Update map_fim_data.py --- .../src/icefabric_manage/map_fim_data.py | 46 ------------------- 1 file changed, 46 deletions(-) diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index e94900c..53511ad 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -545,49 +545,3 @@ def save_xsbyhuc_data(self): driver='GPKG') return - - # if __name__ == '__main__': - - # # Instantiate class - # obj = MapData(data_dir=f'{os.getcwd()}/fema_mip_sample/') - - # # Extract list of fim-c data sample's directories. - # fim_data_dirs = obj.fim_data_dirs - - # # Categorize FIM-C data sample files (e.g. geopackage of a given model @ HUC#, json, source_models.gpkg, ripple.gpkg) - # model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = obj.model_gpkg_dirs, obj.src_models_gpkg_dirs, obj.rip_gpkg_dirs - # gpkg_dirs, json_dirs = obj.gpkg_dirs, obj.json_dirs - - # model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = obj.model_gpkg_tablenames, obj.src_models_gpkg_tablenames, obj.rip_gpkg_tablenames - # gpkg_tablenames, json_tablenames = obj.gpkg_tablenames, obj.json_tablenames - - # # Generate a dictionary to map each conflation json files to their corresponding model_id & HUC #. - # model2huc_map = obj.id2json - - # # Generated maps of model_id & HUC # to xs (for both us & ds cross-section) to reach ID & "network_to_id" - # us_xs2id_map = obj.us_ref_dict - # ds_xs2id_map = obj.ds_ref_dict - - # # Generated map of model_id & HUC # to each HEC-RAS model's geopackage. - # model_id2gpkg_map = obj.model_id2gpkg - - # # Generated map of HUC # to each ripple geopackage. - # rip_huc2gpkg_map = obj.rip_huc2gpkg - - # # Map IDs to each model's cross-section instance - # id2xs_dfs = obj.xs_df_list - - # # [OPTIONAL: If a user wants to extract individual river geopandas, parquet, &/or gpkg] - # # Map of XS as geopandas per river per HUC w/ their inherited CRS by HUC - # #xsbyriver_map = obj.groupbyriver_dict - - # # [OPTIONAL: Map of inherited CRS to HUC, model_id, river name] - # crs_map = obj.crs_dict - - # # Conslidate all HEC-RAS models' cross-sections featuring their corresponding IDs. - # consolidated_id2xs = obj.consolidated_id2xs - - - - - \ No newline at end of file From a1caada2c27b16d07c97e32481065a502d70b518 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 15:50:20 -0400 Subject: [PATCH 36/97] from icefabric_manage import MapData replacement --- .../XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb | 555 +----------------- 1 file changed, 2 insertions(+), 553 deletions(-) diff --git a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb index 0186920..ff7095c 100644 --- a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb +++ b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "6788bf1c-12cf-4d48-a880-2e30762b0378", "metadata": {}, "outputs": [], @@ -35,563 +35,12 @@ "import re\n", "import json\n", "import pickle\n", + "from icefabric_manage import MapData\n", "import os\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, - { - "cell_type": "markdown", - "id": "b9e39188-c6e6-4849-907d-bef852afab0d", - "metadata": {}, - "source": [ - "## Mapping FIM-C Data" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "623c0d59-46be-40a5-8470-2d367345df40", - "metadata": {}, - "outputs": [], - "source": [ - "class MapData(object):\n", - " '''\n", - " '''\n", - " def __init__(self, data_dir):\n", - " self.data_dir = data_dir\n", - "\n", - " # Parent directory of the FIM-C files.\n", - " # Note: All the jsons & geopackages are relevant \n", - " # to map the files to IDs.\n", - " self.fim_data_dirs = []\n", - "\n", - " # List of directories associated with each file type of \n", - " # the FIM-C data sample (e.g. geopackage of a given model @ HUC#, json, \n", - " # source_models.gpkg, ripple.gpkg) \n", - " self.model_gpkg_dirs = []\n", - " self.src_models_gpkg_dirs = []\n", - " self.rip_gpkg_dirs = []\n", - " self.gpkg_dirs = []\n", - " self.json_dirs = []\n", - " self.xs_df_list = []\n", - " \n", - " # Variables to be used later\n", - " self.model_gpkg_tablenames = []\n", - " self.src_models_gpkg_tablenames = []\n", - " self.rip_gpkg_tablenames = []\n", - " self.gpkg_tablenames = []\n", - " self.json_tablenames = []\n", - " \n", - " self.id2json = collections.defaultdict(dict)\n", - " self.model_id2gpkg = collections.defaultdict(dict)\n", - " self.us_ref_dict = collections.defaultdict(dict)\n", - " self.ds_ref_dict = collections.defaultdict(dict)\n", - " self.rip_huc2gpkg = collections.defaultdict(dict)\n", - " self.groupbyriver_dict = collections.defaultdict(dict)\n", - " self.crs_dict = collections.defaultdict(dict)\n", - " self.consolidated_id2xs = geopandas.GeoDataFrame()\n", - " \n", - " self.read_data_dirs()\n", - " self.cat_data_dirs()\n", - " self.map_model2huc()\n", - " self.filter_model2huc_map(keys_to_drop={'metrics','low_flow', \n", - " 'high_flow', 'eclipsed', \n", - " 'lengths', 'coverage'})\n", - " \n", - " # Generate maps of model_id & HUC # to xs (for both us & ds cross-section)\n", - " # to reach ID & \"network_to_id\" from each model @ HUC's json file \n", - " self.map_modelhuc_xs2ids()\n", - "\n", - " # Generate maps of model_id & HUC # to gpkg from each model @ HUC's geopackage\n", - " self.map_model2huc_gpkg()\n", - "\n", - " # Generate maps of HUC # to ripple gpkg\n", - " self.map_huc2ripple_gpkg()\n", - "\n", - " # Map IDs to each model's cross-section instance\n", - " self.map_model_xs2ids()\n", - "\n", - " # [Optional: Per HUC, save each river's set of XS data as geoparquetss & geopackages]\n", - " #self.save_xs_data()\n", - "\n", - " # Save map of inherited CRS to HUC, model_id, river name\n", - " self.save_crs_map()\n", - "\n", - " # Consolidated all HEC RAS models' cross-sections featuring IDs\n", - " self.consolidate_id2xs_dfs()\n", - "\n", - " # Save HEC RAS models' cross-sections consolidated by HUC as geoparquets & geopackages\n", - " self.save_xsbyhuc_data()\n", - " \n", - "\n", - "\n", - " def read_data_dirs(self):\n", - " '''\n", - " Extract the list of fim-c data sample's directories.\n", - " \n", - " Args:\n", - " data_dir (str): Parent directory of the fim-c files.\n", - " Note: All the jsons & geopackages are relevant \n", - " to map the files to IDs.\n", - "\n", - " Return (list): List of directories associated with each file type of \n", - " the FIM-C data sample.\n", - " \n", - " ''' \n", - " fim_data_dirs = []\n", - " for folder, subfolders, files in os.walk(self.data_dir):\n", - " if folder != self.data_dir:\n", - " for file in files:\n", - " self.fim_data_dirs.append(f'{folder}/{file}')\n", - "\n", - " return\n", - " \n", - " def cat_data_dirs(self):\n", - " '''\n", - " Categorize FIM-C data sample files.\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - " \n", - " ''' \n", - " # Extract a list of directories corresponding to each set of files \n", - " for x in self.fim_data_dirs:\n", - " \n", - " # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains reach_id & nwm_to_id \n", - " # for network layer & reaches layer. The rating curves layer only has reach_id. The models layer \n", - " # contains collection_id & model_id)\n", - " if re.search('ripple.gpkg', x):\n", - " self.rip_gpkg_dirs.append(x)\n", - " t = re.search('/mip(.*)', x)\n", - " rip_gpkg_tblname = t.group()\n", - " self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip('/').replace('/', '_'))\n", - "\n", - " # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id)\n", - " elif not x.endswith('source_models.gpkg') and not x.endswith('.json') and not re.search('ripple.gpkg', x):\n", - " self.model_gpkg_dirs.append(x)\n", - " t = re.search('/mip(.*)', x)\n", - " model_gpkg_tblname = t.group()\n", - " self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip('/').replace('/', '_'))\n", - "\n", - " # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines)\n", - " elif x.endswith('source_models.gpkg'):\n", - " self.src_models_gpkg_dirs.append(x)\n", - " t = re.search('/mip(.*)', x)\n", - " src_models_gpkg_tblname = t.group()\n", - " self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip('/').replace('/', '_'))\n", - " \n", - " # Covers all HEC-RAS models + Ripple gpkg per HUC\n", - " if x.endswith('.gpkg'):\n", - " self.gpkg_dirs.append(x)\n", - " t = re.search('/mip(.*)', x)\n", - " gpkg_tblname = t.group()\n", - " self.gpkg_tablenames.append(gpkg_tblname.lstrip('/').replace('/', '_'))\n", - "\n", - " # Covers each HEC-RAS models' result of conflating its model w/ the NWM network\n", - " elif x.endswith('.json'):\n", - " self.json_dirs.append(x)\n", - " t = re.search('/mip(.*)', x)\n", - " json_tblname = t.group()\n", - " self.json_tablenames.append(json_tblname.lstrip('/').replace('/', '_')) \n", - "\n", - " return \n", - " \n", - " def drop_nested_keys(self, map_dict, keys_to_drop):\n", - " '''\n", - " Drop keys irrelevant for linking each XS to IDs\n", - " \n", - " Args:\n", - " map_dict (dict): Dictionary to filter\n", - "\n", - " keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs.\n", - "\n", - " Return: None\n", - "\n", - " '''\n", - " if isinstance(map_dict, dict):\n", - " return {k: self.drop_nested_keys(v, keys_to_drop) for k, v in map_dict.items() if k not in keys_to_drop}\n", - " elif isinstance(map_dict, list):\n", - " return [self.drop_nested_keys(i, keys_to_drop) for i in map_dict]\n", - " else:\n", - " return map_dict\n", - " \n", - " def map_model2huc(self):\n", - " '''\n", - " Map each conflation json file to their corresponding model_id & HUC #.\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " ''' \n", - " for x in self.json_dirs:\n", - " # Note: model_ids found in each src source_models.gpkg is featured is declared as\n", - " # sub-foldername of where model gpkg file resides\n", - " model_id = x.split(\"/\")[-2]\n", - " huc_num = x.split(\"/\")[-4].split('_')[1]\n", - " self.id2json[model_id][huc_num] = {}\n", - " try:\n", - " with open(x, 'r') as f:\n", - " json2dict = json.loads(f.read()) \n", - " self.id2json[model_id][huc_num].update(json2dict)\n", - " except:\n", - " pass\n", - "\n", - " return \n", - " \n", - " def filter_model2huc_map(self, keys_to_drop):\n", - " '''\n", - " Extract only relevant keys from model2huc map for linking each XS to a feature ID. \n", - " \n", - " Args:\n", - " keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs.\n", - " (e.g. {'metrics','low_flow', 'high_flow', 'eclipsed', \n", - " 'lengths', 'coverage'})\n", - "\n", - " Return: None\n", - "\n", - " ''' \n", - " self.id2json = self.drop_nested_keys(self.id2json, keys_to_drop)\n", - " \n", - " return\n", - " \n", - " def map_modelhuc_xs2ids(self):\n", - " '''\n", - " Parse JSONs & map model_id & HUC # to xs to reach ID & \"network_to_id\"\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: Per model @ HUC cross-section layer, the attribute of interest is \"river_reach_rs\" \n", - " in order to link the IDs to each individual cross-section & their associated xs_id.\n", - "\n", - " To map each cross-section of a model @ HUC#, there has to be a shared attribute between a \n", - " model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s \n", - " conflation json file.\n", - " \n", - " - Each conflation json file reveals ...\n", - " - Per reach, there is a set of cross-sections.\n", - " - Within each model's cross-section (XS) layers, there are a set of cross-section \n", - " instances - each instance featuring a unique \"thalweg\" (aka \"min_elevation\"), \n", - " \"xs_max_elevation\" (aka \"max_elevation\"), \"reach_id\" (\"reaches\"), & \"river_station\" (aka \"xs_id\")\n", - "\n", - " - Each model @ HUC#'s XS layer contains a collection of cross-section instancees. \n", - " Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in \n", - " such a way to allow each cross-section to be associated with a feature ID (aka \"reach_id\" and/or\n", - " \"network_to_id\"). \n", - " \n", - " - \"river_reach_rs\" is formatted differently across models' XS layers, however multplie keys \n", - " referenced in the conflation jsons can be referenced to obtain the \"river_reach_rs\" from the jsons \n", - " As a result, the mapping of IDs to each model's cross-section instance will be based on the info.\n", - " extracted from a model @ HUC#'s conflation.json\n", - "\n", - " - There can be multiple reach_ids tied to same nwm_to_id (aka \"network_to_id).\n", - "\n", - " ''' \n", - " # Keys to join values from that makes up the 'river_reach_rs' reflected in each model's XS layer\n", - " keys_to_join = ['river', 'reach', 'xs_id'] \n", - " for model_id, huc_dict in self.id2json.items():\n", - " for huc_num, reach_dict in huc_dict.items():\n", - " for reach_id, v_dict in reach_dict['reaches'].items():\n", - " # Joining the attribute because each model's xs layer features three atttrib concat (to be used as reference)\n", - " if \"us_xs\" in v_dict:\n", - " usxs_joined_values = ' '.join(str(v_dict[\"us_xs\"][key]) for key in keys_to_join)\n", - " if \"min_elevation\" in v_dict[\"us_xs\"]:\n", - " us_xs_min_elev = v_dict[\"us_xs\"][\"min_elevation\"]\n", - " if \"max_elevation\" in v_dict[\"us_xs\"]:\n", - " us_xs_max_elev = v_dict[\"us_xs\"][\"max_elevation\"]\n", - " \n", - " if \"ds_xs\" in v_dict:\n", - " dsxs_joined_values = ' '.join(str(v_dict[\"ds_xs\"][key]) for key in keys_to_join)\n", - " if \"min_elevation\" in v_dict[\"ds_xs\"]:\n", - " ds_xs_min_elev = v_dict[\"ds_xs\"][\"min_elevation\"]\n", - " if \"max_elevation\" in v_dict[\"ds_xs\"]:\n", - " ds_xs_max_elev = v_dict[\"ds_xs\"][\"max_elevation\"]\n", - " \n", - " if \"network_to_id\" in v_dict:\n", - " nwm2id = v_dict[\"network_to_id\"]\n", - "\n", - " # Generated maps of model_id & HUC # to xs (for both us & ds cross-section)\n", - " # to reach ID & \"network_to_id\" \n", - " self.us_ref_dict[(model_id, huc_num)].update({(usxs_joined_values, us_xs_min_elev , us_xs_max_elev):[reach_id, nwm2id]})\n", - " self.ds_ref_dict[(model_id, huc_num)].update({(dsxs_joined_values, ds_xs_min_elev , ds_xs_max_elev):[reach_id, nwm2id]}) \n", - " \n", - " return\n", - "\n", - " def map_model2huc_gpkg(self):\n", - " '''\n", - " Map model_id & HUC # to each HEC-RAS model's geopackage.\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: model_ids found in each source_models.gpkg is featured in last\n", - " sub-foldername of where model gpkg file resides\n", - "\n", - " ''' \n", - " # Each HEC-RAS model gpkg per model per HUC\n", - " for x in self.model_gpkg_dirs:\n", - " model_id = x.split(\"/\")[-2]\n", - " huc_num = x.split(\"/\")[-4].split('_')[1]\n", - " self.model_id2gpkg[(model_id, huc_num)] = {'XS': None}\n", - " self.model_id2gpkg[(model_id, huc_num)] = {\"XS concave hull\": None}\n", - " self.model_id2gpkg[(model_id, huc_num)] = {\"River\": None}\n", - "\n", - " try:\n", - " self.model_id2gpkg[(model_id, huc_num)].update({'XS': geopandas.read_file(x, engine='pyogrio',\n", - " use_arrow=True, \n", - " layer=\"XS\")})\n", - "\n", - " self.model_id2gpkg[(model_id, huc_num)].update({\"River\": geopandas.read_file(x, \n", - " engine='pyogrio', \n", - " use_arrow=True, \n", - " layer=\"River\")})\n", - " self.model_id2gpkg[(model_id, huc_num)].update({\"XS concave hull\": geopandas.read_file(x, \n", - " engine='pyogrio', \n", - " use_arrow=True, \n", - " layer=\"XS concave hull\")})\n", - " except:\n", - " pass\n", - " \n", - " return\n", - " \n", - " def map_huc2ripple_gpkg(self):\n", - " '''\n", - " Map HUC # to ripple geopackage (features HEC RAS 1D model flowlines).\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: ripple.gpkg features the HEC RAS 1D model flowlines categorized by HUC #.\n", - "\n", - " ''' \n", - " for x in self.rip_gpkg_dirs:\n", - " huc_num = x.split(\"/\")[-2].split('_')[1]\n", - " self.rip_huc2gpkg[huc_num] = {'reaches': None}\n", - " self.rip_huc2gpkg[huc_num] = {\"rating curves\": None}\n", - " self.rip_huc2gpkg[huc_num] = {\"network\": None}\n", - " self.rip_huc2gpkg[huc_num] = {'models': None}\n", - " self.rip_huc2gpkg[huc_num] = {\"metadata\": None}\n", - " self.rip_huc2gpkg[huc_num] = {\"rating_curves_no_map\": None}\n", - " self.rip_huc2gpkg[huc_num] = {\"processing\": None}\n", - "\n", - " try:\n", - " self.rip_huc2gpkg[huc_num].update({\"reaches\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"reaches\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"rating_curves\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"rating_curves\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"network\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"network\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"models\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"models\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"metadata\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"metadata\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"rating_curves_no_map\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"rating_curves_no_map\")})\n", - " self.rip_huc2gpkg[huc_num].update({\"processing\": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer=\"processing\")})\n", - " except:\n", - " \n", - " pass\n", - " return\n", - " \n", - " def map_model_xs2ids(self):\n", - " '''\n", - " Map each cross-section instance featured in HEC-RAS model's cross-section layer to their corresponding IDs.\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " ''' \n", - " \n", - " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", - " df = model_gpkg_dict['XS']\n", - " df['huc'] = huc_num\n", - " df['model_id'] = model_id\n", - " array_of_lists = [[None, None] for _ in range(len(df))]\n", - " df['us_ids'] = pd.DataFrame([array_of_lists]).T\n", - " df['ds_ids'] = pd.DataFrame([array_of_lists]).T\n", - " \n", - " # Covers us_xs\n", - " if (model_id, huc_num) in self.us_ref_dict:\n", - " df['us_ids'] = df.set_index([\"river_reach_rs\", \"thalweg\", \"xs_max_elevation\"]).index.map(self.us_ref_dict[(model_id, huc_num)].get)\n", - " #print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.\")\n", - " else:\n", - " print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.\")\n", - " continue\n", - "\n", - " # Covers ds_xs\n", - " if (model_id, huc_num) in self.ds_ref_dict:\n", - " df['ds_ids'] = df.set_index([\"river_reach_rs\", \"thalweg\", \"xs_max_elevation\"]).index.map(self.ds_ref_dict[(model_id, huc_num)].get)\n", - " #print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.\")\n", - " else:\n", - " print(f\"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.\")\n", - " continue\n", - "\n", - " # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS \n", - " us_id_df = df['us_ids'].apply(pd.Series)\n", - " us_id_df.columns=['us_reach_id', 'us_network_to_id']\n", - " ds_id_df = df['ds_ids'].apply(pd.Series)\n", - " ds_id_df.columns=['ds_reach_id', 'ds_network_to_id']\n", - " \n", - " # Fill any nan to string \n", - " us_id_df[['us_reach_id', 'us_network_to_id']] = us_id_df[['us_reach_id', 'us_network_to_id']].fillna('None')\n", - " ds_id_df[['ds_reach_id', 'ds_network_to_id']] = ds_id_df[['ds_reach_id', 'ds_network_to_id']].fillna('None')\n", - " df = df.fillna('None')\n", - " df = pd.concat([df, us_id_df, ds_id_df], axis=1)\n", - " df = df.drop(['us_ids', 'ds_ids'], axis=1)\n", - " \n", - " model_gpkg_dict['XS'] = df\n", - " self.xs_df_list.append(model_gpkg_dict['XS'])\n", - " \n", - " return\n", - " \n", - " def save_xs_data(self):\n", - " '''\n", - " Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: These saved parquet files will preserve each river @ HUC's inherited CRS. \n", - "\n", - " '''\n", - " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", - "\n", - " # Generate data folder per HUC\n", - " if not os.path.exists(f'{os.getcwd()}/xs_data/huc_{huc_num}'):\n", - " os.makedirs(f'{os.getcwd()}/xs_data/huc_{huc_num}')\n", - "\n", - " # Save each river's geopandas as a geoparquet & geopackage under each HUC folder \n", - " grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river'])\n", - " for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']):\n", - " filterbyriver = grouped_xslayers.get_group(river_name)\n", - "\n", - " # Generate map of each river's set of XS to HUC & model ID to be used as a\n", - " # look-up reference\n", - " self.groupbyriver_dict[huc_num].update({model_id: filterbyriver})\n", - "\n", - " # Save XS as geoparquet per river per HUC\n", - " filterbyriver.to_parquet(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.parquet', \n", - " engine=\"pyarrow\")\n", - "\n", - " # Save XS as geopackage per river per HUC\n", - " filterbyriver.to_file(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.gpkg', \n", - " driver='GPKG') \n", - " \n", - " return\n", - " \n", - " def save_crs_map(self):\n", - " '''\n", - " Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: This saved pickle file will map each river @ HUC's inherited CRS for one to \n", - " analyze & reference. \n", - "\n", - " '''\n", - " for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items():\n", - "\n", - " # Generate data folder per HUC\n", - " if not os.path.exists(f'{os.getcwd()}/xs_data/crs_map'):\n", - " os.makedirs(f'{os.getcwd()}/xs_data/crs_map')\n", - "\n", - " # Generate map of the CRS to each river's geopandas per HUC \n", - " grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river'])\n", - " for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']):\n", - " filterbyriver = grouped_xslayers.get_group(river_name)\n", - " self.crs_dict[(huc_num, model_id)].update({river_name: f'ESPG: {str(filterbyriver.crs.to_epsg()) if \\\n", - " filterbyriver.crs.to_epsg() else None}, {filterbyriver.crs.name},'})\n", - "\n", - " # Save map of inherited CRS to HUC, model_id, river name\n", - " with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'wb') as handle:\n", - " pickle.dump(self.crs_dict, handle, protocol=pickle.HIGHEST_PROTOCOL)\n", - " \n", - " return\n", - "\n", - " def consolidate_id2xs_dfs(self):\n", - " '''\n", - " Consolidate HEC-RAS models cross-sections featuring their corresponding IDs.\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: A set CRS standard is needed in order to consolidates all XS layers of all models\n", - " under a single dataframe to maintain a consistent CRS. This consolidation will check if the XS \n", - " dataframes have a consistent CRS if it does not then it will not consolidate the XS dataframes. \n", - " As of 05/14/25, only CRS in this condition is considering the\n", - " NAD83, but additional CRS can be added to this methods as new findings are made.\n", - " \n", - " '''\n", - " crs_list = []\n", - " for xs_df in self.xs_df_list:\n", - " if 'NAD83' in xs_df.crs.name or 'NAD_1983' in xs_df.crs.name:\n", - " # Convert all GeoDataFrames in the list to the target CRS\n", - " crs_list.append(\"EPSG:5070\")\n", - " else:\n", - " print(False)\n", - "\n", - " # Will consolidate ONLY if the CRS is consistent across XS geodpandas dataframes\n", - " if len(set(crs_list)) == 1:\n", - " target_crs = str(np.unique(crs_list)[0])\n", - " self.consolidated_id2xs = geopandas.GeoDataFrame(pd.concat([xs_df.to_crs(target_crs) for xs_df in self.xs_df_list], \n", - " ignore_index=True))\n", - " print(f\"The consolidated XS geopandas dataframes now has a standardized CRS of:\\n{self.consolidated_id2xs.crs.name}\")\n", - " else:\n", - " print(\"Cannot consolidate XS geodpandas dataframes because the CRS is inconsistent across XS geodpandas dataframes.\")\n", - " \n", - " return\n", - "\n", - " def save_xsbyhuc_data(self):\n", - " '''\n", - " Consolidate HEC-RAS models cross-sections based on HUC & save to storage\n", - " \n", - " Args:\n", - " None\n", - "\n", - " Return: None\n", - "\n", - " Note: These saved parquet files will be the transformed CRS of all XS per HUC to ensure\n", - " a consistent standardized CRS. \n", - "\n", - " '''\n", - " unique_huc_nums = set(self.consolidated_id2xs['huc'])\n", - " for huc_num in unique_huc_nums:\n", - " \n", - " # Generate data folder per HUC\n", - " if not os.path.exists(f'{os.getcwd()}/xs_data/mip_{huc_num}'):\n", - " os.makedirs(f'{os.getcwd()}/xs_data/mip_{huc_num}')\n", - " \n", - " # Filter consolidated XS geopanda dataframe by HUC\n", - " filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs['huc'] == huc_num]\n", - " \n", - " # Save XS as geoparquet per HUC\n", - " filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.parquet', \n", - " engine=\"pyarrow\")\n", - " \n", - " # Save XS as geopackage per HUC\n", - " filterbyhuc.to_file(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.gpkg', \n", - " driver='GPKG') \n", - " \n", - " return\n", - "\n", - "\n", - " " - ] - }, { "cell_type": "markdown", "id": "a4372bf1-9031-41c8-8567-5cfe3c56a0b1", From 04e452bcd4c39613c32b5a69cbaadcc5b3139863 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 15 May 2025 15:51:45 -0400 Subject: [PATCH 37/97] Update __init__.py Adding imports of Classes in __init__.py --- src/icefabric_manage/src/icefabric_manage/__init__.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/icefabric_manage/src/icefabric_manage/__init__.py b/src/icefabric_manage/src/icefabric_manage/__init__.py index 3803004..49b9a3e 100644 --- a/src/icefabric_manage/src/icefabric_manage/__init__.py +++ b/src/icefabric_manage/src/icefabric_manage/__init__.py @@ -1,3 +1,5 @@ from icefabric_manage._api import build +from icefabric_manage.iceberg_table import IcebergTable +from icefabric_manage.map_fim_data import MapData -__all__ = ["build"] +__all__ = ["build", "IcebergTable", "MapData"] From 530c15ac814bd370613992b75d34e7defc761963 Mon Sep 17 00:00:00 2001 From: Daniel Cumpton Date: Tue, 20 May 2025 17:11:43 -0600 Subject: [PATCH 38/97] removed large file --- src/icefabric_api/data/cfe_params.csv | 25 ++++ src/icefabric_api/data/gauge_06710385.gpkg | Bin 0 -> 319488 bytes src/icefabric_api/data/lasam_params.csv | 26 ++++ src/icefabric_api/data/modules.csv | 10 ++ .../data/noah_owp_modular_params.csv | 14 ++ src/icefabric_api/data/sac_sma_params.csv | 20 +++ src/icefabric_api/data/sft_params.csv | 14 ++ src/icefabric_api/data/smp_params.csv | 8 ++ src/icefabric_api/data/snow17_params.csv | 27 ++++ src/icefabric_api/data/topmodel_params.csv | 26 ++++ src/icefabric_api/data/ueb_params.csv | 66 +++++++++ src/icefabric_api/src/run_modules.py | 126 ++++++++++++++++++ 12 files changed, 362 insertions(+) create mode 100644 src/icefabric_api/data/cfe_params.csv create mode 100644 src/icefabric_api/data/gauge_06710385.gpkg create mode 100644 src/icefabric_api/data/lasam_params.csv create mode 100644 src/icefabric_api/data/modules.csv create mode 100644 src/icefabric_api/data/noah_owp_modular_params.csv create mode 100644 src/icefabric_api/data/sac_sma_params.csv create mode 100644 src/icefabric_api/data/sft_params.csv create mode 100644 src/icefabric_api/data/smp_params.csv create mode 100644 src/icefabric_api/data/snow17_params.csv create mode 100644 src/icefabric_api/data/topmodel_params.csv create mode 100644 src/icefabric_api/data/ueb_params.csv create mode 100644 src/icefabric_api/src/run_modules.py diff --git a/src/icefabric_api/data/cfe_params.csv b/src/icefabric_api/data/cfe_params.csv new file mode 100644 index 0000000..eea0fa2 --- /dev/null +++ b/src/icefabric_api/data/cfe_params.csv @@ -0,0 +1,25 @@ +name,description,units,data_type,calibratable,source,min,max,default_value,divide_attr_name,source_file +soil_params.b,beta exponent on Clapp-Hornberger (1978) soil water relations,NULL,double,True,attr,2,15,4.05,mode.bexp_soil_layers_stag=1, +soil_params.satdk,saturated hydraulic conductivity,m/s,double,True,attr,0.000000195,0.00141,0.00000338,geom_mean.dksat_soil_layers_stag=1, +soil_params.satpsi,saturated capillary head,m,double,True,attr,0.036,0.955,0.355,geom_mean.psisat_soil_layers_stag=1, +soil_params.slop,this factor (0-1) modifies the gradient of the hydraulic head at the soil bottom. 0=no-flow.,m/m,double,True,attr,0.0000598,1,0.05,mean.slope_1km, +soil_params.smcmax,saturated soil moisture content (Maximum soil moisture content),m/m,double,True,attr,0.16,0.58,0.439,mean.smcmax_soil_layers_stag=1, +soil_params.wltsmc,wilting point soil moisture content (< soil_params.smcmax),m/m,double,True,attr,0.05,0.3,0.439,mean.smcwlt_soil_layers_stag=1, +soil_params.expon,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs",NULL,double,False,const,NULL,NULL,1,, +soil_params.expon_secondary,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs ",NULL,double,False,const,NULL,NULL,1,, +max_gw_storage,maximum storage in the conceptual reservoir,m,double,True,attr,0.01,0.25,0.05,mean.Zmax, +Cgw,the primary outlet coefficient,m/hr,double,True,attr,0.0000018,0.0018,0.000018,mean.Coeff, +expon,exponent parameter for nonlinear ground water reservoir (1.0 for linear reservoir),NULL,double,True,attr,1,8,3,mode.Expon, +gw_storage,initial condition for groundwater reservoir - it is the ground water as a decimal fraction of the maximum groundwater storage (max_gw_storage) for the initial timestep,m/m,double,False,const,NULL,NULL,0.05,, +alpha_fc,alpha at fc for clapp hornberger (field capacity),NULL,double,False,const,NULL,NULL,0.33,, +soil_storage,initial condition for soil reservoir - it is the water in the soil as a decimal fraction of maximum soil water storage (smcmax x depth) for the initial timestep. Default = 0.5,m/m,double,False,const,NULL,NULL,0.5,, +K_nash,Nash Config param for lateral subsurface runoff (Nash discharge to storage ratio),1/m,double,True,const,0,1,0.003,, +K_lf,Nash Config param - primary reservoir,NULL,double,True,const,0,1,0.01,, +nash_storage,Nash Config param - secondary reservoir ,NULL,double,False,const,NULL,NULL,"0.0,0.0",, +giuh_ordinates,Giuh (geomorphological instantaneous unit hydrograph) ordinates in dt time steps,NULL,double,False,const,NULL,NULL,"0.55, 0.25, 0.2",, +a_Xinanjiang_inflection_point_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,-0.5,0.5,-0.2,AXAJ,CFE-X_params +b_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,0.01,10,0.66,BXAJ,CFE-X_params +x_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,0.01,10,0.02,XXAJ,CFE-X_params +urban_decimal_fraction,when surface_water_partitioning_scheme=Xinanjiang,NULL,double ,False,const,0,1,0.01,, +refkdt,Reference Soil Infiltration Parameter (used in runoff formulation),NULL,double,True,attr,0.1,4,1,mean.refkdt, +soil_params.depth,soil depth,m,double,False,const,NULL,NULL,2,, \ No newline at end of file diff --git a/src/icefabric_api/data/gauge_06710385.gpkg b/src/icefabric_api/data/gauge_06710385.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..8f8a14a4968a83ac42f8b1fd7beb05637f218975 GIT binary patch literal 319488 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 Date: Tue, 20 May 2025 17:23:43 -0600 Subject: [PATCH 39/97] Update README.md --- src/icefabric_api/README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/icefabric_api/README.md b/src/icefabric_api/README.md index e69de29..f4f70be 100644 --- a/src/icefabric_api/README.md +++ b/src/icefabric_api/README.md @@ -0,0 +1,5 @@ +CSV files for catchment specific values are too big to be checked in. They are stored here: s3://ngwpc-dev/DanielCumpton/divide_csv.tgz +Download and untar in the icefabric/src/icefabric_api/data directory. +For now, you can run modules by listing them in the module list defined on line 108 in run_modules.py. Text files showing all parameters as key/value +pairs will be written to a files per catchment. A JSON is output to the terminal. SFT, SMP, and LASAM csv files still need work to define the parameters properly. +See icefabric/src/icefabric_api/data/modules.csv for module name strings. From c158200525383efa64e086d63034321316591e79 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Fri, 23 May 2025 14:37:06 -0400 Subject: [PATCH 40/97] Xs mip ble feature (#7) * Added features to preprocess of BLE xsections * Added features to process BLE xs --- .../XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb | 3 +- .../src/icefabric_manage/map_fim_data.py | 73 +++++++++++-------- 2 files changed, 44 insertions(+), 32 deletions(-) diff --git a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb index ff7095c..a34f4e7 100644 --- a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb +++ b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb @@ -330,7 +330,8 @@ ], "source": [ "# Instantiate class\n", - "obj = MapData(data_dir=f'{os.getcwd()}/fema_mip_sample/')\n", + "obj = MapData(data_dir=f'{os.getcwd()}/segment_data/',\n", + " subfolder_key_prefix='ble')\n", "\n", "# Extract list of fim-c data sample's directories.\n", "fim_data_dirs = obj.fim_data_dirs\n", diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index 53511ad..8f843da 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -13,19 +13,21 @@ class MapData(object): ''' - Maps FIM XS data to IDs & categorize by HUC. At this time, ensure FIM mip data sample is saved - to local disk. + Maps FIM MIP & BLE XS datasets to relevant IDs & categorize by HUC. + At this time, ensure FIM datasets are saved to local disk. + ''' - def __init__(self, data_dir): + def __init__(self, data_dir, subfolder_key_prefix): self.data_dir = data_dir + self.subfolder_key_prefix = subfolder_key_prefix - # Parent directory of the FIM-C files. + # Parent directory of the FIM files. # Note: All the jsons & geopackages are relevant # to map the files to IDs. self.fim_data_dirs = [] # List of directories associated with each file type of - # the FIM-C data sample (e.g. geopackage of a given model @ HUC#, json, + # the FIM data sample (e.g. geopackage of a given model @ HUC#, json, # source_models.gpkg, ripple.gpkg) self.model_gpkg_dirs = [] self.src_models_gpkg_dirs = [] @@ -51,7 +53,7 @@ def __init__(self, data_dir): self.consolidated_id2xs = geopandas.GeoDataFrame() self.read_data_dirs() - self.cat_data_dirs() + self.cat_data_dirs(self.subfolder_key_prefix) self.map_model2huc() self.filter_model2huc_map(keys_to_drop={'metrics','low_flow', 'high_flow', 'eclipsed', @@ -86,15 +88,13 @@ def __init__(self, data_dir): def read_data_dirs(self): ''' - Extract the list of fim-c data sample's directories. + Extract the list of FIM data sample's directories. Args: - data_dir (str): Parent directory of the fim-c files. - Note: All the jsons & geopackages are relevant - to map the files to IDs. + None Return (list): List of directories associated with each file type of - the FIM-C data sample. + the FIM data sample. ''' fim_data_dirs = [] @@ -105,12 +105,13 @@ def read_data_dirs(self): return - def cat_data_dirs(self): + def cat_data_dirs(self, subfolder_key_prefix): ''' - Categorize FIM-C data sample files. + Categorize FIM data sample files. Args: - None + subfolder_key_prefix (str): Prefix of the FIM subfolder's data of interest + Options: 'mip' or 'ble' Return: None @@ -123,39 +124,39 @@ def cat_data_dirs(self): # contains collection_id & model_id) if re.search('ripple.gpkg', x): self.rip_gpkg_dirs.append(x) - t = re.search('/mip(.*)', x) + t = re.search(f'/{subfolder_key_prefix}(.*)', x) rip_gpkg_tblname = t.group() self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip('/').replace('/', '_')) # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id) elif not x.endswith('source_models.gpkg') and not x.endswith('.json') and not re.search('ripple.gpkg', x): self.model_gpkg_dirs.append(x) - t = re.search('/mip(.*)', x) + t = re.search(f'/{subfolder_key_prefix}(.*)', x) model_gpkg_tblname = t.group() self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip('/').replace('/', '_')) # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines) elif x.endswith('source_models.gpkg'): self.src_models_gpkg_dirs.append(x) - t = re.search('/mip(.*)', x) + t = re.search(f'/{subfolder_key_prefix}(.*)', x) src_models_gpkg_tblname = t.group() self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip('/').replace('/', '_')) # Covers all HEC-RAS models + Ripple gpkg per HUC if x.endswith('.gpkg'): self.gpkg_dirs.append(x) - t = re.search('/mip(.*)', x) + t = re.search(f'/{subfolder_key_prefix}(.*)', x) gpkg_tblname = t.group() self.gpkg_tablenames.append(gpkg_tblname.lstrip('/').replace('/', '_')) # Covers each HEC-RAS models' result of conflating its model w/ the NWM network elif x.endswith('.json'): self.json_dirs.append(x) - t = re.search('/mip(.*)', x) + t = re.search(f'/{subfolder_key_prefix}(.*)', x) json_tblname = t.group() self.json_tablenames.append(json_tblname.lstrip('/').replace('/', '_')) - return + return def drop_nested_keys(self, map_dict, keys_to_drop): ''' @@ -178,7 +179,7 @@ def drop_nested_keys(self, map_dict, keys_to_drop): def map_model2huc(self): ''' - Map each conflation json file to their corresponding model_id & HUC #. + Map each conflation json file to their corresponding model ID & HUC #. Args: None @@ -284,7 +285,7 @@ def map_modelhuc_xs2ids(self): def map_model2huc_gpkg(self): ''' - Map model_id & HUC # to each HEC-RAS model's geopackage. + Map model ID & HUC # to each HEC-RAS model's geopackage. Args: None @@ -378,7 +379,6 @@ def map_model_xs2ids(self): # Covers us_xs if (model_id, huc_num) in self.us_ref_dict: df['us_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.us_ref_dict[(model_id, huc_num)].get) - #print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.") else: print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") continue @@ -386,15 +386,21 @@ def map_model_xs2ids(self): # Covers ds_xs if (model_id, huc_num) in self.ds_ref_dict: df['ds_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.ds_ref_dict[(model_id, huc_num)].get) - #print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS featured in current model @ HUC's conflation json file.") else: print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") continue # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS + # Should the ids not be available in the conflation, must initialize columns us_id_df = df['us_ids'].apply(pd.Series) + if us_id_df.shape[1]==0: + us_id_df = pd.DataFrame(np.nan, index=range(us_id_df.shape[0]), columns=[0, 1]) us_id_df.columns=['us_reach_id', 'us_network_to_id'] + + # Should the ids not be available in the conflation, must initialize columns ds_id_df = df['ds_ids'].apply(pd.Series) + if ds_id_df.shape[1]==0: + ds_id_df = pd.DataFrame(np.nan, index=range(ds_id_df.shape[0]), columns=[0, 1]) ds_id_df.columns=['ds_reach_id', 'ds_network_to_id'] # Fill any nan to string @@ -513,12 +519,13 @@ def consolidate_id2xs_dfs(self): return - def save_xsbyhuc_data(self): + def save_xsbyhuc_data(self, xs_data_type): ''' Consolidate HEC-RAS models cross-sections based on HUC & save to storage Args: - None + xs_data_type (str): Cross-section data type to be saved either 'mip' or 'ble' cross-section type. + Options: 'mip' or 'ble' Return: None @@ -530,18 +537,22 @@ def save_xsbyhuc_data(self): for huc_num in unique_huc_nums: # Generate data folder per HUC - if not os.path.exists(f'{os.getcwd()}/xs_data/mip_{huc_num}'): - os.makedirs(f'{os.getcwd()}/xs_data/mip_{huc_num}') + if not os.path.exists(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}'): + os.makedirs(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}') # Filter consolidated XS geopanda dataframe by HUC filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs['huc'] == huc_num] # Save XS as geoparquet per HUC - filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.parquet', + filterbyhuc['thalweg'] = filterbyhuc['thalweg'].astype(str) + filterbyhuc['xs_max_elevation'] = filterbyhuc['xs_max_elevation'].astype(str) + filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.parquet', engine="pyarrow") # Save XS as geopackage per HUC - filterbyhuc.to_file(f'{os.getcwd()}/xs_data/mip_{huc_num}/huc_{huc_num}.gpkg', - driver='GPKG') + filterbyhuc.to_file(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.gpkg', + driver='GPKG') + + print(f'{xs_data_type}_{huc_num}') return From d8685057997a92b1964f968163a381fef49ffd36 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Fri, 23 May 2025 14:52:42 -0400 Subject: [PATCH 41/97] 2025.5: Package Updates --- .pre-commit-config.yaml | 1 - py.typed | 0 pyproject.toml | 48 +- src/icefabric_manage/pyproject.toml | 26 +- src/icefabric_tools/pyproject.toml | 41 +- uv.lock | 3263 +++++++++++++-------------- 6 files changed, 1660 insertions(+), 1719 deletions(-) create mode 100644 py.typed diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 55c7d48..1b1146b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -21,4 +21,3 @@ repos: rev: 0.5.7 hooks: - id: uv-lock - diff --git a/py.typed b/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/pyproject.toml b/pyproject.toml index c9addc0..3856a56 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,24 @@ [project] name = "icefabric" -version = "0.1.0" +version = "2025.5" description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" -requires-python = ">3.10,<3.13" +requires-python = ">=3.11,<3.13" license = { file = "LICENSE" } -authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +authors = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] +maintainers = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] dependencies = [] @@ -26,24 +38,21 @@ icefabric_tools = { workspace = true } icefabric_manage = { workspace = true } [tool.uv.workspace] -members = [ - "src/icefabric_manage", - "src/icefabric_tools", -] +members = ["src/icefabric_manage", "src/icefabric_tools"] [tool.uv] dev-dependencies = [ - "pre-commit>=3.8.0", - "ipykernel>=6.29.5", - "jupyterlab", - "pytest>=8.3.2", - "ruff", - "black", - "mypy", - "icefabric_manage", - "icefabric_tools", - "examples", - "boto3", + "pre-commit>=3.8.0", + "ipykernel>=6.29.5", + "jupyterlab==4.4.2", + "pytest>=8.3.2", + "ruff==0.11.0", + "black==25.1.0", + "mypy==1.15.0", + "icefabric_manage", + "icefabric_tools", + "examples", + "boto3", ] package = false @@ -62,6 +71,7 @@ lint.select = [ "I", # isort "D", # pydocstyle "B", # flake8-bugbear + "Q", # flake8-quotes "TID", # flake8-tidy-imports "C4", # flake8-comprehensions "BLE", # flake8-blind-except diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 27e1557..4df9884 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -1,17 +1,29 @@ [project] name = "icefabric_manage" -version = "0.1.0" +version = "2025.5" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" -authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +authors = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] +maintainers = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] readme = "README.md" dependencies = [ - "numpy==1.26.4", + "numpy==2.2.6", "fiona==1.10.1", - "pandas==2.2.0", + "pandas==2.2.3", "geopandas==1.0.1", - "s3fs==2025.3.2", - "pyarrow==19.0.1", + "s3fs==2025.5.0", + "pyarrow==20.0.0", "pyiceberg[sql-sqlite]==0.9.0", ] diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 1bfd306..ba640ed 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -1,19 +1,44 @@ [project] name = "icefabric_tools" -version = "0.1.0" +version = "2025.5" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" -authors = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] -maintainers = [{ name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }] +authors = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] +maintainers = [ + { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, + { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, + { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, + { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, + { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, +] readme = "README.md" dependencies = [ - "numpy==1.26.4", + "numpy==2.2.6", "fiona==1.10.1", - "pandas==2.2.0", + "pandas==2.2.3", "geopandas==1.0.1", - "matplotlib==3.10.0", - "s3fs==2025.3.2", - "pyarrow==19.0.1", + "matplotlib==3.10.3", + "s3fs==2025.5.0", + "pyarrow==20.0.0", "pyiceberg[sql-sqlite]==0.9.0", + "xarray==2025.4.0", + "rioxarray==0.19.0", + "icechunk==0.2.14", + "zarr==3.0.8", + "virtualizarr==1.3.2", + "tqdm==4.67.1", + "tifffile==2025.5.21", + "scipy==1.15.3", + "kerchunk==0.2.8", + "h5py==3.13.0", + "h5netcdf==1.6.1", + "fsspec==2025.5.0", + ] [build-system] diff --git a/uv.lock b/uv.lock index 663f3e3..9f1a05a 100644 --- a/uv.lock +++ b/uv.lock @@ -1,10 +1,8 @@ version = 1 -revision = 2 -requires-python = ">3.10, <3.13" +requires-python = ">=3.11, <3.13" resolution-markers = [ "python_full_version >= '3.12'", - "python_full_version == '3.11.*'", - "python_full_version < '3.11'", + "python_full_version < '3.12'", ] [manifest] @@ -14,6 +12,15 @@ members = [ "icefabric-tools", ] +[[package]] +name = "affine" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, +] + [[package]] name = "aiobotocore" version = "2.21.1" @@ -27,18 +34,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900, upload_time = "2025-03-04T18:30:58.945Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313, upload_time = "2025-03-04T18:30:56.493Z" }, + { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313 }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload_time = "2025-03-12T01:42:48.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload_time = "2025-03-12T01:42:47.083Z" }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, ] [[package]] @@ -48,72 +55,55 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohappyeyeballs" }, { name = "aiosignal" }, - { name = "async-timeout", marker = "python_full_version < '3.11'" }, { name = "attrs" }, { name = "frozenlist" }, { name = "multidict" }, { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload_time = "2025-04-21T09:43:09.191Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c7/c3/e5f64af7e97a02f547020e6ff861595766bb5ecb37c7492fac9fe3c14f6c/aiohttp-3.11.18-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:96264854fedbea933a9ca4b7e0c745728f01380691687b7365d18d9e977179c4", size = 711703, upload_time = "2025-04-21T09:40:25.487Z" }, - { url = "https://files.pythonhosted.org/packages/5f/2f/53c26e96efa5fd01ebcfe1fefdfb7811f482bb21f4fa103d85eca4dcf888/aiohttp-3.11.18-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9602044ff047043430452bc3a2089743fa85da829e6fc9ee0025351d66c332b6", size = 471348, upload_time = "2025-04-21T09:40:27.569Z" }, - { url = "https://files.pythonhosted.org/packages/80/47/dcc248464c9b101532ee7d254a46f6ed2c1fd3f4f0f794cf1f2358c0d45b/aiohttp-3.11.18-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:5691dc38750fcb96a33ceef89642f139aa315c8a193bbd42a0c33476fd4a1609", size = 457611, upload_time = "2025-04-21T09:40:28.978Z" }, - { url = "https://files.pythonhosted.org/packages/4c/ca/67d816ef075e8ac834b5f1f6b18e8db7d170f7aebaf76f1be462ea10cab0/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:554c918ec43f8480b47a5ca758e10e793bd7410b83701676a4782672d670da55", size = 1591976, upload_time = "2025-04-21T09:40:30.804Z" }, - { url = "https://files.pythonhosted.org/packages/46/00/0c120287aa51c744438d99e9aae9f8c55ca5b9911c42706966c91c9d68d6/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8a4076a2b3ba5b004b8cffca6afe18a3b2c5c9ef679b4d1e9859cf76295f8d4f", size = 1632819, upload_time = "2025-04-21T09:40:32.731Z" }, - { url = "https://files.pythonhosted.org/packages/54/a3/3923c9040cd4927dfee1aa017513701e35adcfc35d10729909688ecaa465/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:767a97e6900edd11c762be96d82d13a1d7c4fc4b329f054e88b57cdc21fded94", size = 1666567, upload_time = "2025-04-21T09:40:34.901Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ab/40dacb15c0c58f7f17686ea67bc186e9f207341691bdb777d1d5ff4671d5/aiohttp-3.11.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f0ddc9337a0fb0e727785ad4f41163cc314376e82b31846d3835673786420ef1", size = 1594959, upload_time = "2025-04-21T09:40:36.714Z" }, - { url = "https://files.pythonhosted.org/packages/0d/98/d40c2b7c4a5483f9a16ef0adffce279ced3cc44522e84b6ba9e906be5168/aiohttp-3.11.18-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f414f37b244f2a97e79b98d48c5ff0789a0b4b4609b17d64fa81771ad780e415", size = 1538516, upload_time = "2025-04-21T09:40:38.263Z" }, - { url = "https://files.pythonhosted.org/packages/cf/10/e0bf3a03524faac45a710daa034e6f1878b24a1fef9c968ac8eb786ae657/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fdb239f47328581e2ec7744ab5911f97afb10752332a6dd3d98e14e429e1a9e7", size = 1529037, upload_time = "2025-04-21T09:40:40.349Z" }, - { url = "https://files.pythonhosted.org/packages/ad/d6/5ff5282e00e4eb59c857844984cbc5628f933e2320792e19f93aff518f52/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:f2c50bad73ed629cc326cc0f75aed8ecfb013f88c5af116f33df556ed47143eb", size = 1546813, upload_time = "2025-04-21T09:40:42.106Z" }, - { url = "https://files.pythonhosted.org/packages/de/96/f1014f84101f9b9ad2d8acf3cc501426475f7f0cc62308ae5253e2fac9a7/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:0a8d8f20c39d3fa84d1c28cdb97f3111387e48209e224408e75f29c6f8e0861d", size = 1523852, upload_time = "2025-04-21T09:40:44.164Z" }, - { url = "https://files.pythonhosted.org/packages/a5/86/ec772c6838dd6bae3229065af671891496ac1834b252f305cee8152584b2/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:106032eaf9e62fd6bc6578c8b9e6dc4f5ed9a5c1c7fb2231010a1b4304393421", size = 1603766, upload_time = "2025-04-21T09:40:46.203Z" }, - { url = "https://files.pythonhosted.org/packages/84/38/31f85459c9402d409c1499284fc37a96f69afadce3cfac6a1b5ab048cbf1/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:b491e42183e8fcc9901d8dcd8ae644ff785590f1727f76ca86e731c61bfe6643", size = 1620647, upload_time = "2025-04-21T09:40:48.168Z" }, - { url = "https://files.pythonhosted.org/packages/31/2f/54aba0040764dd3d362fb37bd6aae9b3034fcae0b27f51b8a34864e48209/aiohttp-3.11.18-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:ad8c745ff9460a16b710e58e06a9dec11ebc0d8f4dd82091cefb579844d69868", size = 1559260, upload_time = "2025-04-21T09:40:50.219Z" }, - { url = "https://files.pythonhosted.org/packages/ca/d2/a05c7dd9e1b6948c1c5d04f1a8bcfd7e131923fa809bb87477d5c76f1517/aiohttp-3.11.18-cp310-cp310-win32.whl", hash = "sha256:8e57da93e24303a883146510a434f0faf2f1e7e659f3041abc4e3fb3f6702a9f", size = 418051, upload_time = "2025-04-21T09:40:52.272Z" }, - { url = "https://files.pythonhosted.org/packages/39/e2/796a6179e8abe267dfc84614a50291560a989d28acacbc5dab3bcd4cbec4/aiohttp-3.11.18-cp310-cp310-win_amd64.whl", hash = "sha256:cc93a4121d87d9f12739fc8fab0a95f78444e571ed63e40bfc78cd5abe700ac9", size = 442908, upload_time = "2025-04-21T09:40:54.345Z" }, - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload_time = "2025-04-21T09:40:55.776Z" }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload_time = "2025-04-21T09:40:57.301Z" }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload_time = "2025-04-21T09:40:59.322Z" }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload_time = "2025-04-21T09:41:00.795Z" }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload_time = "2025-04-21T09:41:02.89Z" }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload_time = "2025-04-21T09:41:04.461Z" }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload_time = "2025-04-21T09:41:06.728Z" }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload_time = "2025-04-21T09:41:08.293Z" }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload_time = "2025-04-21T09:41:11.054Z" }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload_time = "2025-04-21T09:41:13.213Z" }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload_time = "2025-04-21T09:41:14.827Z" }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload_time = "2025-04-21T09:41:17.168Z" }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload_time = "2025-04-21T09:41:19.353Z" }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload_time = "2025-04-21T09:41:21.868Z" }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload_time = "2025-04-21T09:41:24.78Z" }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload_time = "2025-04-21T09:41:26.48Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload_time = "2025-04-21T09:41:28.021Z" }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload_time = "2025-04-21T09:41:29.783Z" }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload_time = "2025-04-21T09:41:31.327Z" }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload_time = "2025-04-21T09:41:33.541Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload_time = "2025-04-21T09:41:35.634Z" }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload_time = "2025-04-21T09:41:37.456Z" }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload_time = "2025-04-21T09:41:39.756Z" }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload_time = "2025-04-21T09:41:41.972Z" }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload_time = "2025-04-21T09:41:44.192Z" }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload_time = "2025-04-21T09:41:46.049Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload_time = "2025-04-21T09:41:47.973Z" }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload_time = "2025-04-21T09:41:50.323Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload_time = "2025-04-21T09:41:52.111Z" }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload_time = "2025-04-21T09:41:53.94Z" }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload_time = "2025-04-21T09:41:55.689Z" }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload_time = "2025-04-21T09:41:57.977Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload_time = "2024-09-02T03:33:40.349Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload_time = "2024-09-02T03:34:59.454Z" }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, ] [[package]] @@ -123,18 +113,18 @@ 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, upload_time = "2024-12-13T17:10:40.86Z" } +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, upload_time = "2024-12-13T17:10:38.469Z" }, + { 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 = "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, upload_time = "2024-05-20T21:33:25.928Z" } +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, upload_time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] @@ -142,23 +132,22 @@ name = "anyio" version = "4.9.0" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "idna" }, { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload_time = "2025-03-17T00:02:54.77Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload_time = "2025-03-17T00:02:52.713Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload_time = "2024-02-06T09:43:11.258Z" } +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, upload_time = "2024-02-06T09:43:09.663Z" }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] [[package]] @@ -168,9 +157,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload_time = "2023-08-15T14:13:12.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload_time = "2023-08-15T14:13:10.752Z" }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, ] [[package]] @@ -180,18 +169,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload_time = "2021-12-01T08:52:55.68Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload_time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload_time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload_time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload_time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload_time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload_time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload_time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload_time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload_time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload_time = "2021-12-01T09:09:31.335Z" }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, ] [[package]] @@ -202,69 +191,57 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload_time = "2023-09-30T22:11:18.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload_time = "2023-09-30T22:11:16.072Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, ] [[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, upload_time = "2024-11-30T04:30:14.439Z" } +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, upload_time = "2024-11-30T04:30:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload_time = "2025-03-16T17:25:36.919Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload_time = "2025-03-16T17:25:35.422Z" }, -] - -[[package]] -name = "async-timeout" -version = "5.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a5/ae/136395dfbfe00dfc94da3f3e136d0b13f394cba8f4841120e34226265780/async_timeout-5.0.1.tar.gz", hash = "sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3", size = 9274, upload_time = "2024-11-06T16:41:39.6Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/ba/e2081de779ca30d473f21f5b30e0e737c438205440784c7dfc81efc2b029/async_timeout-5.0.1-py3-none-any.whl", hash = "sha256:39e3809566ff85354557ec2398b55e096c8364bacac9405a7a1fa429e77fe76c", size = 6233, upload_time = "2024-11-06T16:41:37.9Z" }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload_time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload_time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload_time = "2025-02-01T15:17:41.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload_time = "2025-02-01T15:17:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload_time = "2025-02-25T18:15:32.003Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload_time = "2025-02-25T16:53:14.607Z" }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload_time = "2025-02-25T16:53:17.266Z" }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload_time = "2025-02-25T16:53:26.378Z" }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload_time = "2025-02-25T16:53:29.858Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, ] [[package]] @@ -275,9 +252,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload_time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload_time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, ] [[package]] @@ -290,24 +267,18 @@ dependencies = [ { name = "packaging" }, { name = "pathspec" }, { name = "platformdirs" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload_time = "2025-01-29T04:15:40.373Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/3b/4ba3f93ac8d90410423fdd31d7541ada9bcee1df32fb90d26de41ed40e1d/black-25.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:759e7ec1e050a15f89b770cefbf91ebee8917aac5c20483bc2d80a6c3a04df32", size = 1629419, upload_time = "2025-01-29T05:37:06.642Z" }, - { url = "https://files.pythonhosted.org/packages/b4/02/0bde0485146a8a5e694daed47561785e8b77a0466ccc1f3e485d5ef2925e/black-25.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:0e519ecf93120f34243e6b0054db49c00a35f84f195d5bce7e9f5cfc578fc2da", size = 1461080, upload_time = "2025-01-29T05:37:09.321Z" }, - { url = "https://files.pythonhosted.org/packages/52/0e/abdf75183c830eaca7589144ff96d49bce73d7ec6ad12ef62185cc0f79a2/black-25.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:055e59b198df7ac0b7efca5ad7ff2516bca343276c466be72eb04a3bcc1f82d7", size = 1766886, upload_time = "2025-01-29T04:18:24.432Z" }, - { url = "https://files.pythonhosted.org/packages/dc/a6/97d8bb65b1d8a41f8a6736222ba0a334db7b7b77b8023ab4568288f23973/black-25.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:db8ea9917d6f8fc62abd90d944920d95e73c83a5ee3383493e35d271aca872e9", size = 1419404, upload_time = "2025-01-29T04:19:04.296Z" }, - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload_time = "2025-01-29T05:37:11.71Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload_time = "2025-01-29T05:37:14.309Z" }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload_time = "2025-01-29T04:18:17.688Z" }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload_time = "2025-01-29T04:18:51.711Z" }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload_time = "2025-01-29T05:37:16.707Z" }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload_time = "2025-01-29T05:37:18.273Z" }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload_time = "2025-01-29T04:18:33.823Z" }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload_time = "2025-01-29T04:19:12.944Z" }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload_time = "2025-01-29T04:15:38.082Z" }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, ] [[package]] @@ -317,9 +288,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload_time = "2024-10-29T18:30:40.477Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload_time = "2024-10-29T18:30:38.186Z" }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, ] [package.optional-dependencies] @@ -336,9 +307,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/8c/c2af03daafaacea1db1823d23073facffa75818b61d376c3be77dd297ae8/boto3-1.37.1.tar.gz", hash = "sha256:96d18f7feb0c1fcb95f8837b74b6c8880e1b4e35ce5f8a8f8cb243a090c278ed", size = 111175, upload_time = "2025-02-25T20:33:16.471Z" } +sdist = { url = "https://files.pythonhosted.org/packages/21/8c/c2af03daafaacea1db1823d23073facffa75818b61d376c3be77dd297ae8/boto3-1.37.1.tar.gz", hash = "sha256:96d18f7feb0c1fcb95f8837b74b6c8880e1b4e35ce5f8a8f8cb243a090c278ed", size = 111175 } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/ec/e722c53c9dc41e8df094587c32e19409bace8b43b5eb31fe3536ca57a38b/boto3-1.37.1-py3-none-any.whl", hash = "sha256:4320441f904435a1b85e6ecb81793192e522c737cc9ed6566014e29f0a11cb22", size = 139338, upload_time = "2025-02-25T20:33:11.935Z" }, + { url = "https://files.pythonhosted.org/packages/63/ec/e722c53c9dc41e8df094587c32e19409bace8b43b5eb31fe3536ca57a38b/boto3-1.37.1-py3-none-any.whl", hash = "sha256:4320441f904435a1b85e6ecb81793192e522c737cc9ed6566014e29f0a11cb22", size = 139338 }, ] [[package]] @@ -350,18 +321,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835, upload_time = "2025-02-25T20:32:56.63Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164, upload_time = "2025-02-25T20:32:52.347Z" }, + { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164 }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload_time = "2025-02-20T21:01:19.524Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload_time = "2025-02-20T21:01:16.647Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, ] [[package]] @@ -371,9 +342,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096, upload_time = "2024-06-18T10:56:06.741Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611, upload_time = "2024-06-18T10:55:59.489Z" }, + { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, ] [[package]] @@ -387,18 +358,18 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085, upload_time = "2023-08-05T09:08:05.75Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235, upload_time = "2023-08-05T09:08:01.583Z" }, + { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload_time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload_time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, ] [[package]] @@ -408,100 +379,75 @@ 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, upload_time = "2024-09-04T20:45:21.852Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/07/f44ca684db4e4f08a3fdc6eeb9a0d15dc6883efc7b8c90357fdbf74e186c/cffi-1.17.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:df8b1c11f177bc2313ec4b2d46baec87a5f3e71fc8b45dab2ee7cae86d9aba14", size = 182191, upload_time = "2024-09-04T20:43:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/08/fd/cc2fedbd887223f9f5d170c96e57cbf655df9831a6546c1727ae13fa977a/cffi-1.17.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8f2cdc858323644ab277e9bb925ad72ae0e67f69e804f4898c070998d50b1a67", size = 178592, upload_time = "2024-09-04T20:43:32.108Z" }, - { url = "https://files.pythonhosted.org/packages/de/cc/4635c320081c78d6ffc2cab0a76025b691a91204f4aa317d568ff9280a2d/cffi-1.17.1-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:edae79245293e15384b51f88b00613ba9f7198016a5948b5dddf4917d4d26382", size = 426024, upload_time = "2024-09-04T20:43:34.186Z" }, - { url = "https://files.pythonhosted.org/packages/b6/7b/3b2b250f3aab91abe5f8a51ada1b717935fdaec53f790ad4100fe2ec64d1/cffi-1.17.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:45398b671ac6d70e67da8e4224a065cec6a93541bb7aebe1b198a61b58c7b702", size = 448188, upload_time = "2024-09-04T20:43:36.286Z" }, - { url = "https://files.pythonhosted.org/packages/d3/48/1b9283ebbf0ec065148d8de05d647a986c5f22586b18120020452fff8f5d/cffi-1.17.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ad9413ccdeda48c5afdae7e4fa2192157e991ff761e7ab8fdd8926f40b160cc3", size = 455571, upload_time = "2024-09-04T20:43:38.586Z" }, - { url = "https://files.pythonhosted.org/packages/40/87/3b8452525437b40f39ca7ff70276679772ee7e8b394934ff60e63b7b090c/cffi-1.17.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5da5719280082ac6bd9aa7becb3938dc9f9cbd57fac7d2871717b1feb0902ab6", size = 436687, upload_time = "2024-09-04T20:43:40.084Z" }, - { url = "https://files.pythonhosted.org/packages/8d/fb/4da72871d177d63649ac449aec2e8a29efe0274035880c7af59101ca2232/cffi-1.17.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bb1a08b8008b281856e5971307cc386a8e9c5b625ac297e853d36da6efe9c17", size = 446211, upload_time = "2024-09-04T20:43:41.526Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a0/62f00bcb411332106c02b663b26f3545a9ef136f80d5df746c05878f8c4b/cffi-1.17.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:045d61c734659cc045141be4bae381a41d89b741f795af1dd018bfb532fd0df8", size = 461325, upload_time = "2024-09-04T20:43:43.117Z" }, - { url = "https://files.pythonhosted.org/packages/36/83/76127035ed2e7e27b0787604d99da630ac3123bfb02d8e80c633f218a11d/cffi-1.17.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:6883e737d7d9e4899a8a695e00ec36bd4e5e4f18fabe0aca0efe0a4b44cdb13e", size = 438784, upload_time = "2024-09-04T20:43:45.256Z" }, - { url = "https://files.pythonhosted.org/packages/21/81/a6cd025db2f08ac88b901b745c163d884641909641f9b826e8cb87645942/cffi-1.17.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6b8b4a92e1c65048ff98cfe1f735ef8f1ceb72e3d5f0c25fdb12087a23da22be", size = 461564, upload_time = "2024-09-04T20:43:46.779Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fe/4d41c2f200c4a457933dbd98d3cf4e911870877bd94d9656cc0fcb390681/cffi-1.17.1-cp310-cp310-win32.whl", hash = "sha256:c9c3d058ebabb74db66e431095118094d06abf53284d9c81f27300d0e0d8bc7c", size = 171804, upload_time = "2024-09-04T20:43:48.186Z" }, - { url = "https://files.pythonhosted.org/packages/d1/b6/0b0f5ab93b0df4acc49cae758c81fe4e5ef26c3ae2e10cc69249dfd8b3ab/cffi-1.17.1-cp310-cp310-win_amd64.whl", hash = "sha256:0f048dcf80db46f0098ccac01132761580d28e28bc0f78ae0d58048063317e15", size = 181299, upload_time = "2024-09-04T20:43:49.812Z" }, - { 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, upload_time = "2024-09-04T20:43:51.124Z" }, - { 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, upload_time = "2024-09-04T20:43:52.872Z" }, - { 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, upload_time = "2024-09-04T20:43:56.123Z" }, - { 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, upload_time = "2024-09-04T20:43:57.891Z" }, - { 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, upload_time = "2024-09-04T20:44:00.18Z" }, - { 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, upload_time = "2024-09-04T20:44:01.585Z" }, - { 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, upload_time = "2024-09-04T20:44:03.467Z" }, - { 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, upload_time = "2024-09-04T20:44:05.023Z" }, - { 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, upload_time = "2024-09-04T20:44:06.444Z" }, - { 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, upload_time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload_time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload_time = "2024-09-04T20:44:10.873Z" }, - { 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, upload_time = "2024-09-04T20:44:12.232Z" }, - { 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, upload_time = "2024-09-04T20:44:13.739Z" }, - { 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, upload_time = "2024-09-04T20:44:15.231Z" }, - { 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, upload_time = "2024-09-04T20:44:17.188Z" }, - { 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, upload_time = "2024-09-04T20:44:18.688Z" }, - { 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, upload_time = "2024-09-04T20:44:20.248Z" }, - { 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, upload_time = "2024-09-04T20:44:21.673Z" }, - { 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, upload_time = "2024-09-04T20:44:23.245Z" }, - { 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, upload_time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload_time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload_time = "2024-09-04T20:44:27.578Z" }, +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 }, ] [[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, upload_time = "2023-08-12T20:38:17.776Z" } +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, upload_time = "2023-08-12T20:38:16.269Z" }, + { 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.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188, upload_time = "2024-12-24T18:12:35.43Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/58/5580c1716040bc89206c77d8f74418caf82ce519aae06450393ca73475d1/charset_normalizer-3.4.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:91b36a978b5ae0ee86c394f5a54d6ef44db1de0815eb43de826d41d21e4af3de", size = 198013, upload_time = "2024-12-24T18:09:43.671Z" }, - { url = "https://files.pythonhosted.org/packages/d0/11/00341177ae71c6f5159a08168bcb98c6e6d196d372c94511f9f6c9afe0c6/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7461baadb4dc00fd9e0acbe254e3d7d2112e7f92ced2adc96e54ef6501c5f176", size = 141285, upload_time = "2024-12-24T18:09:48.113Z" }, - { url = "https://files.pythonhosted.org/packages/01/09/11d684ea5819e5a8f5100fb0b38cf8d02b514746607934134d31233e02c8/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e218488cd232553829be0664c2292d3af2eeeb94b32bea483cf79ac6a694e037", size = 151449, upload_time = "2024-12-24T18:09:50.845Z" }, - { url = "https://files.pythonhosted.org/packages/08/06/9f5a12939db324d905dc1f70591ae7d7898d030d7662f0d426e2286f68c9/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:80ed5e856eb7f30115aaf94e4a08114ccc8813e6ed1b5efa74f9f82e8509858f", size = 143892, upload_time = "2024-12-24T18:09:52.078Z" }, - { url = "https://files.pythonhosted.org/packages/93/62/5e89cdfe04584cb7f4d36003ffa2936681b03ecc0754f8e969c2becb7e24/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b010a7a4fd316c3c484d482922d13044979e78d1861f0e0650423144c616a46a", size = 146123, upload_time = "2024-12-24T18:09:54.575Z" }, - { url = "https://files.pythonhosted.org/packages/a9/ac/ab729a15c516da2ab70a05f8722ecfccc3f04ed7a18e45c75bbbaa347d61/charset_normalizer-3.4.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4532bff1b8421fd0a320463030c7520f56a79c9024a4e88f01c537316019005a", size = 147943, upload_time = "2024-12-24T18:09:57.324Z" }, - { url = "https://files.pythonhosted.org/packages/03/d2/3f392f23f042615689456e9a274640c1d2e5dd1d52de36ab8f7955f8f050/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:d973f03c0cb71c5ed99037b870f2be986c3c05e63622c017ea9816881d2dd247", size = 142063, upload_time = "2024-12-24T18:09:59.794Z" }, - { url = "https://files.pythonhosted.org/packages/f2/e3/e20aae5e1039a2cd9b08d9205f52142329f887f8cf70da3650326670bddf/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:3a3bd0dcd373514dcec91c411ddb9632c0d7d92aed7093b8c3bbb6d69ca74408", size = 150578, upload_time = "2024-12-24T18:10:02.357Z" }, - { url = "https://files.pythonhosted.org/packages/8d/af/779ad72a4da0aed925e1139d458adc486e61076d7ecdcc09e610ea8678db/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d9c3cdf5390dcd29aa8056d13e8e99526cda0305acc038b96b30352aff5ff2bb", size = 153629, upload_time = "2024-12-24T18:10:03.678Z" }, - { url = "https://files.pythonhosted.org/packages/c2/b6/7aa450b278e7aa92cf7732140bfd8be21f5f29d5bf334ae987c945276639/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2bdfe3ac2e1bbe5b59a1a63721eb3b95fc9b6817ae4a46debbb4e11f6232428d", size = 150778, upload_time = "2024-12-24T18:10:06.197Z" }, - { url = "https://files.pythonhosted.org/packages/39/f4/d9f4f712d0951dcbfd42920d3db81b00dd23b6ab520419626f4023334056/charset_normalizer-3.4.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:eab677309cdb30d047996b36d34caeda1dc91149e4fdca0b1a039b3f79d9a807", size = 146453, upload_time = "2024-12-24T18:10:08.848Z" }, - { url = "https://files.pythonhosted.org/packages/49/2b/999d0314e4ee0cff3cb83e6bc9aeddd397eeed693edb4facb901eb8fbb69/charset_normalizer-3.4.1-cp310-cp310-win32.whl", hash = "sha256:c0429126cf75e16c4f0ad00ee0eae4242dc652290f940152ca8c75c3a4b6ee8f", size = 95479, upload_time = "2024-12-24T18:10:10.044Z" }, - { url = "https://files.pythonhosted.org/packages/2d/ce/3cbed41cff67e455a386fb5e5dd8906cdda2ed92fbc6297921f2e4419309/charset_normalizer-3.4.1-cp310-cp310-win_amd64.whl", hash = "sha256:9f0b8b1c6d84c8034a44893aba5e767bf9c7a211e313a9605d9c617d7083829f", size = 102790, upload_time = "2024-12-24T18:10:11.323Z" }, - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995, upload_time = "2024-12-24T18:10:12.838Z" }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471, upload_time = "2024-12-24T18:10:14.101Z" }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831, upload_time = "2024-12-24T18:10:15.512Z" }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335, upload_time = "2024-12-24T18:10:18.369Z" }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862, upload_time = "2024-12-24T18:10:19.743Z" }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673, upload_time = "2024-12-24T18:10:21.139Z" }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211, upload_time = "2024-12-24T18:10:22.382Z" }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039, upload_time = "2024-12-24T18:10:24.802Z" }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939, upload_time = "2024-12-24T18:10:26.124Z" }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075, upload_time = "2024-12-24T18:10:30.027Z" }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340, upload_time = "2024-12-24T18:10:32.679Z" }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205, upload_time = "2024-12-24T18:10:34.724Z" }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441, upload_time = "2024-12-24T18:10:37.574Z" }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105, upload_time = "2024-12-24T18:10:38.83Z" }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404, upload_time = "2024-12-24T18:10:44.272Z" }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423, upload_time = "2024-12-24T18:10:45.492Z" }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184, upload_time = "2024-12-24T18:10:47.898Z" }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268, upload_time = "2024-12-24T18:10:50.589Z" }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601, upload_time = "2024-12-24T18:10:52.541Z" }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098, upload_time = "2024-12-24T18:10:53.789Z" }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520, upload_time = "2024-12-24T18:10:55.048Z" }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852, upload_time = "2024-12-24T18:10:57.647Z" }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488, upload_time = "2024-12-24T18:10:59.43Z" }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192, upload_time = "2024-12-24T18:11:00.676Z" }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550, upload_time = "2024-12-24T18:11:01.952Z" }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785, upload_time = "2024-12-24T18:11:03.142Z" }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767, upload_time = "2024-12-24T18:12:32.852Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, + { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, + { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, + { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, + { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, + { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, + { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, + { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, + { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, + { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, + { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, + { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, + { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, + { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, + { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, + { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, + { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, + { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, + { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, + { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, + { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, + { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, + { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, + { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, + { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, + { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, + { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, ] [[package]] @@ -511,9 +457,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593, upload_time = "2024-12-21T18:38:44.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188, upload_time = "2024-12-21T18:38:41.666Z" }, + { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, ] [[package]] @@ -523,9 +469,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload_time = "2019-04-04T04:27:04.82Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload_time = "2019-04-04T04:27:03.36Z" }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, ] [[package]] @@ -535,18 +481,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload_time = "2021-05-28T21:23:27.935Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload_time = "2021-05-28T21:23:26.877Z" }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload_time = "2022-10-25T02:36:22.414Z" } +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, upload_time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -556,9 +502,9 @@ 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, upload_time = "2024-03-12T16:53:41.133Z" } +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, upload_time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, ] [[package]] @@ -568,44 +514,61 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload_time = "2025-04-15T17:47:53.79Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/12/a3/da4153ec8fe25d263aa48c1a4cbde7f49b59af86f0b6f7862788c60da737/contourpy-1.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:ba38e3f9f330af820c4b27ceb4b9c7feee5fe0493ea53a8720f4792667465934", size = 268551, upload_time = "2025-04-15T17:34:46.581Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6c/330de89ae1087eb622bfca0177d32a7ece50c3ef07b28002de4757d9d875/contourpy-1.3.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:dc41ba0714aa2968d1f8674ec97504a8f7e334f48eeacebcaa6256213acb0989", size = 253399, upload_time = "2025-04-15T17:34:51.427Z" }, - { url = "https://files.pythonhosted.org/packages/c1/bd/20c6726b1b7f81a8bee5271bed5c165f0a8e1f572578a9d27e2ccb763cb2/contourpy-1.3.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9be002b31c558d1ddf1b9b415b162c603405414bacd6932d031c5b5a8b757f0d", size = 312061, upload_time = "2025-04-15T17:34:55.961Z" }, - { url = "https://files.pythonhosted.org/packages/22/fc/a9665c88f8a2473f823cf1ec601de9e5375050f1958cbb356cdf06ef1ab6/contourpy-1.3.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8d2e74acbcba3bfdb6d9d8384cdc4f9260cae86ed9beee8bd5f54fee49a430b9", size = 351956, upload_time = "2025-04-15T17:35:00.992Z" }, - { url = "https://files.pythonhosted.org/packages/25/eb/9f0a0238f305ad8fb7ef42481020d6e20cf15e46be99a1fcf939546a177e/contourpy-1.3.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:e259bced5549ac64410162adc973c5e2fb77f04df4a439d00b478e57a0e65512", size = 320872, upload_time = "2025-04-15T17:35:06.177Z" }, - { url = "https://files.pythonhosted.org/packages/32/5c/1ee32d1c7956923202f00cf8d2a14a62ed7517bdc0ee1e55301227fc273c/contourpy-1.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ad687a04bc802cbe8b9c399c07162a3c35e227e2daccf1668eb1f278cb698631", size = 325027, upload_time = "2025-04-15T17:35:11.244Z" }, - { url = "https://files.pythonhosted.org/packages/83/bf/9baed89785ba743ef329c2b07fd0611d12bfecbedbdd3eeecf929d8d3b52/contourpy-1.3.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cdd22595308f53ef2f891040ab2b93d79192513ffccbd7fe19be7aa773a5e09f", size = 1306641, upload_time = "2025-04-15T17:35:26.701Z" }, - { url = "https://files.pythonhosted.org/packages/d4/cc/74e5e83d1e35de2d28bd97033426b450bc4fd96e092a1f7a63dc7369b55d/contourpy-1.3.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b4f54d6a2defe9f257327b0f243612dd051cc43825587520b1bf74a31e2f6ef2", size = 1374075, upload_time = "2025-04-15T17:35:43.204Z" }, - { url = "https://files.pythonhosted.org/packages/0c/42/17f3b798fd5e033b46a16f8d9fcb39f1aba051307f5ebf441bad1ecf78f8/contourpy-1.3.2-cp310-cp310-win32.whl", hash = "sha256:f939a054192ddc596e031e50bb13b657ce318cf13d264f095ce9db7dc6ae81c0", size = 177534, upload_time = "2025-04-15T17:35:46.554Z" }, - { url = "https://files.pythonhosted.org/packages/54/ec/5162b8582f2c994721018d0c9ece9dc6ff769d298a8ac6b6a652c307e7df/contourpy-1.3.2-cp310-cp310-win_amd64.whl", hash = "sha256:c440093bbc8fc21c637c03bafcbef95ccd963bc6e0514ad887932c18ca2a759a", size = 221188, upload_time = "2025-04-15T17:35:50.064Z" }, - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload_time = "2025-04-15T17:35:54.473Z" }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload_time = "2025-04-15T17:35:58.283Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload_time = "2025-04-15T17:36:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload_time = "2025-04-15T17:36:08.275Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload_time = "2025-04-15T17:36:13.29Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload_time = "2025-04-15T17:36:18.329Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload_time = "2025-04-15T17:36:33.878Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload_time = "2025-04-15T17:36:51.295Z" }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload_time = "2025-04-15T17:36:55.002Z" }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload_time = "2025-04-15T17:36:58.576Z" }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload_time = "2025-04-15T17:37:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload_time = "2025-04-15T17:37:07.026Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload_time = "2025-04-15T17:37:11.481Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload_time = "2025-04-15T17:37:18.212Z" }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload_time = "2025-04-15T17:37:22.76Z" }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload_time = "2025-04-15T17:37:33.001Z" }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload_time = "2025-04-15T17:37:48.64Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload_time = "2025-04-15T17:38:06.7Z" }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload_time = "2025-04-15T17:38:10.338Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload_time = "2025-04-15T17:38:14.239Z" }, - { url = "https://files.pythonhosted.org/packages/33/05/b26e3c6ecc05f349ee0013f0bb850a761016d89cec528a98193a48c34033/contourpy-1.3.2-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:fd93cc7f3139b6dd7aab2f26a90dde0aa9fc264dbf70f6740d498a70b860b82c", size = 265681, upload_time = "2025-04-15T17:44:59.314Z" }, - { url = "https://files.pythonhosted.org/packages/2b/25/ac07d6ad12affa7d1ffed11b77417d0a6308170f44ff20fa1d5aa6333f03/contourpy-1.3.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:107ba8a6a7eec58bb475329e6d3b95deba9440667c4d62b9b6063942b61d7f16", size = 315101, upload_time = "2025-04-15T17:45:04.165Z" }, - { url = "https://files.pythonhosted.org/packages/8f/4d/5bb3192bbe9d3f27e3061a6a8e7733c9120e203cb8515767d30973f71030/contourpy-1.3.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:ded1706ed0c1049224531b81128efbd5084598f18d8a2d9efae833edbd2b40ad", size = 220599, upload_time = "2025-04-15T17:45:08.456Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload_time = "2025-04-15T17:45:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload_time = "2025-04-15T17:45:20.166Z" }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload_time = "2025-04-15T17:45:24.794Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, +] + +[[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 }, ] [[package]] @@ -615,42 +578,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807, upload_time = "2025-03-02T00:01:37.692Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361, upload_time = "2025-03-02T00:00:06.528Z" }, - { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350, upload_time = "2025-03-02T00:00:09.537Z" }, - { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572, upload_time = "2025-03-02T00:00:12.03Z" }, - { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124, upload_time = "2025-03-02T00:00:14.518Z" }, - { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122, upload_time = "2025-03-02T00:00:17.212Z" }, - { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831, upload_time = "2025-03-02T00:00:19.696Z" }, - { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583, upload_time = "2025-03-02T00:00:22.488Z" }, - { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753, upload_time = "2025-03-02T00:00:25.038Z" }, - { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550, upload_time = "2025-03-02T00:00:26.929Z" }, - { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367, upload_time = "2025-03-02T00:00:28.735Z" }, - { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843, upload_time = "2025-03-02T00:00:30.592Z" }, - { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057, upload_time = "2025-03-02T00:00:33.393Z" }, - { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789, upload_time = "2025-03-02T00:00:36.009Z" }, - { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919, upload_time = "2025-03-02T00:00:38.581Z" }, - { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812, upload_time = "2025-03-02T00:00:42.934Z" }, - { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571, upload_time = "2025-03-02T00:00:46.026Z" }, - { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832, upload_time = "2025-03-02T00:00:48.647Z" }, - { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719, upload_time = "2025-03-02T00:00:51.397Z" }, - { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852, upload_time = "2025-03-02T00:00:53.317Z" }, - { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906, upload_time = "2025-03-02T00:00:56.49Z" }, - { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572, upload_time = "2025-03-02T00:00:59.995Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631, upload_time = "2025-03-02T00:01:01.623Z" }, - { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792, upload_time = "2025-03-02T00:01:04.133Z" }, - { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957, upload_time = "2025-03-02T00:01:06.987Z" }, - { url = "https://files.pythonhosted.org/packages/99/10/173be140714d2ebaea8b641ff801cbcb3ef23101a2981cbf08057876f89e/cryptography-44.0.2-pp310-pypy310_pp73-macosx_10_9_x86_64.whl", hash = "sha256:af4ff3e388f2fa7bff9f7f2b31b87d5651c45731d3e8cfa0944be43dff5cfbdb", size = 3396886, upload_time = "2025-03-02T00:01:09.51Z" }, - { url = "https://files.pythonhosted.org/packages/2f/b4/424ea2d0fce08c24ede307cead3409ecbfc2f566725d4701b9754c0a1174/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:0529b1d5a0105dd3731fa65680b45ce49da4d8115ea76e9da77a875396727b41", size = 3892387, upload_time = "2025-03-02T00:01:11.348Z" }, - { url = "https://files.pythonhosted.org/packages/28/20/8eaa1a4f7c68a1cb15019dbaad59c812d4df4fac6fd5f7b0b9c5177f1edd/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:7ca25849404be2f8e4b3c59483d9d3c51298a22c1c61a0e84415104dacaf5562", size = 4109922, upload_time = "2025-03-02T00:01:13.934Z" }, - { url = "https://files.pythonhosted.org/packages/11/25/5ed9a17d532c32b3bc81cc294d21a36c772d053981c22bd678396bc4ae30/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:268e4e9b177c76d569e8a145a6939eca9a5fec658c932348598818acf31ae9a5", size = 3895715, upload_time = "2025-03-02T00:01:16.895Z" }, - { url = "https://files.pythonhosted.org/packages/63/31/2aac03b19c6329b62c45ba4e091f9de0b8f687e1b0cd84f101401bece343/cryptography-44.0.2-pp310-pypy310_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9eb9d22b0a5d8fd9925a7764a054dca914000607dff201a24c791ff5c799e1fa", size = 4109876, upload_time = "2025-03-02T00:01:18.751Z" }, - { url = "https://files.pythonhosted.org/packages/99/ec/6e560908349843718db1a782673f36852952d52a55ab14e46c42c8a7690a/cryptography-44.0.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:2bf7bf75f7df9715f810d1b038870309342bff3069c5bd8c6b96128cb158668d", size = 3131719, upload_time = "2025-03-02T00:01:21.269Z" }, - { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513, upload_time = "2025-03-02T00:01:22.911Z" }, - { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432, upload_time = "2025-03-02T00:01:24.701Z" }, - { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421, upload_time = "2025-03-02T00:01:26.335Z" }, - { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081, upload_time = "2025-03-02T00:01:28.938Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, + { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, + { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, + { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, + { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, + { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, + { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, + { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, + { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, + { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, + { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, + { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, + { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, + { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, + { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, + { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, + { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, + { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, + { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, + { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, + { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, + { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, + { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, + { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, + { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, + { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, + { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081 }, ] [[package]] @@ -661,57 +618,53 @@ dependencies = [ { name = "tinycss2" }, { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716, upload_time = "2025-03-05T14:46:07.988Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454, upload_time = "2025-03-05T14:46:06.463Z" }, + { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, ] [[package]] name = "cycler" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload_time = "2023-10-07T05:32:18.335Z" } +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, upload_time = "2023-10-07T05:32:16.783Z" }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload_time = "2025-04-10T19:46:10.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/df/156df75a41aaebd97cee9d3870fe68f8001b6c1c4ca023e221cfce69bece/debugpy-1.8.14-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:93fee753097e85623cab1c0e6a68c76308cd9f13ffdf44127e6fab4fbf024339", size = 2076510, upload_time = "2025-04-10T19:46:13.315Z" }, - { url = "https://files.pythonhosted.org/packages/69/cd/4fc391607bca0996db5f3658762106e3d2427beaef9bfd363fd370a3c054/debugpy-1.8.14-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d937d93ae4fa51cdc94d3e865f535f185d5f9748efb41d0d49e33bf3365bd79", size = 3559614, upload_time = "2025-04-10T19:46:14.647Z" }, - { url = "https://files.pythonhosted.org/packages/1a/42/4e6d2b9d63e002db79edfd0cb5656f1c403958915e0e73ab3e9220012eec/debugpy-1.8.14-cp310-cp310-win32.whl", hash = "sha256:c442f20577b38cc7a9aafecffe1094f78f07fb8423c3dddb384e6b8f49fd2987", size = 5208588, upload_time = "2025-04-10T19:46:16.233Z" }, - { url = "https://files.pythonhosted.org/packages/97/b1/cc9e4e5faadc9d00df1a64a3c2d5c5f4b9df28196c39ada06361c5141f89/debugpy-1.8.14-cp310-cp310-win_amd64.whl", hash = "sha256:f117dedda6d969c5c9483e23f573b38f4e39412845c7bc487b6f2648df30fe84", size = 5241043, upload_time = "2025-04-10T19:46:17.768Z" }, - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload_time = "2025-04-10T19:46:19.486Z" }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload_time = "2025-04-10T19:46:21.192Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload_time = "2025-04-10T19:46:23.047Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload_time = "2025-04-10T19:46:24.521Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload_time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload_time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload_time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload_time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload_time = "2025-04-10T19:46:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload_time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload_time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload_time = "2021-03-08T10:59:26.269Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload_time = "2021-03-08T10:59:24.45Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, ] [[package]] @@ -721,66 +674,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744, upload_time = "2025-01-27T10:46:25.7Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998, upload_time = "2025-01-27T10:46:09.186Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, ] [[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, upload_time = "2024-10-09T18:35:47.551Z" } +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, upload_time = "2024-10-09T18:35:44.272Z" }, + { 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 = "examples" -version = "1.0.2" +name = "donfig" +version = "0.8.1.post1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pydantic" }, + { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload_time = "2019-12-30T22:47:36.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload_time = "2019-12-30T22:47:35.265Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, ] [[package]] -name = "exceptiongroup" -version = "1.2.2" +name = "examples" +version = "1.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/09/35/2495c4ac46b980e4ca1f6ad6db102322ef3ad2410b79fdde159a4b0f3b92/exceptiongroup-1.2.2.tar.gz", hash = "sha256:47c2edf7c6738fafb49fd34290706d1a1a2f4d1c6df275526b62cbb4aa5393cc", size = 28883, upload_time = "2024-07-12T22:26:00.161Z" } +dependencies = [ + { name = "pydantic" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } wheels = [ - { url = "https://files.pythonhosted.org/packages/02/cc/b7e31358aac6ed1ef2bb790a9746ac2c69bcb3c8588b41616914eb106eaf/exceptiongroup-1.2.2-py3-none-any.whl", hash = "sha256:3111b9d131c238bec2f8f516e123e14ba243563fb135d3fe885990585aa7795b", size = 16453, upload_time = "2024-07-12T22:25:58.476Z" }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload_time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload_time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, ] [[package]] name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload_time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload_time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload_time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload_time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, ] [[package]] @@ -794,131 +750,102 @@ dependencies = [ { name = "click-plugins" }, { name = "cligj" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606, upload_time = "2024-09-16T20:15:47.074Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/34/c7e681703db8f8509907ebe6326c5b4fd933f8ae9a7d3ab7a51e507f230e/fiona-1.10.1-cp310-cp310-macosx_10_15_x86_64.whl", hash = "sha256:6e2a94beebda24e5db8c3573fe36110d474d4a12fac0264a3e083c75e9d63829", size = 16143634, upload_time = "2024-09-16T20:14:20.089Z" }, - { url = "https://files.pythonhosted.org/packages/3c/2c/7f1968ecc17350db3c87d0feb59852ea50e7d8688a63659879d92badf90a/fiona-1.10.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fc7366f99bdc18ec99441b9e50246fdf5e72923dc9cbb00267b2bf28edd142ba", size = 14750325, upload_time = "2024-09-16T20:14:23.762Z" }, - { url = "https://files.pythonhosted.org/packages/75/cb/73805030100447d40408c8a0f63ec146fb2b6e82692d0c194655c28b6783/fiona-1.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c32f424b0641c79f4036b96c2e80322fb181b4e415c8cd02d182baef55e6730", size = 17294868, upload_time = "2024-09-16T20:14:26.847Z" }, - { url = "https://files.pythonhosted.org/packages/ca/a3/57d33c2f16a2a6b27911d83301a697ed1491dca48d2f1dd2ed3b58a66244/fiona-1.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:9a67bd88918e87d64168bc9c00d9816d8bb07353594b5ce6c57252979d5dc86e", size = 24480225, upload_time = "2024-09-16T20:14:30.749Z" }, - { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293, upload_time = "2024-09-16T20:14:34.519Z" }, - { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213, upload_time = "2024-09-16T20:14:37.763Z" }, - { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183, upload_time = "2024-09-16T20:14:42.389Z" }, - { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398, upload_time = "2024-09-16T20:14:46.233Z" }, - { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589, upload_time = "2024-09-16T20:14:49.307Z" }, - { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603, upload_time = "2024-09-16T20:14:53.829Z" }, - { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639, upload_time = "2024-09-16T20:14:57.146Z" }, - { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921, upload_time = "2024-09-16T20:15:01.121Z" }, + { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293 }, + { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213 }, + { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183 }, + { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398 }, + { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589 }, + { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603 }, + { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639 }, + { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921 }, ] [[package]] name = "fonttools" version = "4.57.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448, upload_time = "2025-04-03T11:07:13.898Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/db/17/3ddfd1881878b3f856065130bb603f5922e81ae8a4eb53bce0ea78f765a8/fonttools-4.57.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:babe8d1eb059a53e560e7bf29f8e8f4accc8b6cfb9b5fd10e485bde77e71ef41", size = 2756260, upload_time = "2025-04-03T11:05:28.582Z" }, - { url = "https://files.pythonhosted.org/packages/26/2b/6957890c52c030b0bf9e0add53e5badab4682c6ff024fac9a332bb2ae063/fonttools-4.57.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:81aa97669cd726349eb7bd43ca540cf418b279ee3caba5e2e295fb4e8f841c02", size = 2284691, upload_time = "2025-04-03T11:05:31.526Z" }, - { url = "https://files.pythonhosted.org/packages/cc/8e/c043b4081774e5eb06a834cedfdb7d432b4935bc8c4acf27207bdc34dfc4/fonttools-4.57.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0e9618630edd1910ad4f07f60d77c184b2f572c8ee43305ea3265675cbbfe7e", size = 4566077, upload_time = "2025-04-03T11:05:33.559Z" }, - { url = "https://files.pythonhosted.org/packages/59/bc/e16ae5d9eee6c70830ce11d1e0b23d6018ddfeb28025fda092cae7889c8b/fonttools-4.57.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:34687a5d21f1d688d7d8d416cb4c5b9c87fca8a1797ec0d74b9fdebfa55c09ab", size = 4608729, upload_time = "2025-04-03T11:05:35.49Z" }, - { url = "https://files.pythonhosted.org/packages/25/13/e557bf10bb38e4e4c436d3a9627aadf691bc7392ae460910447fda5fad2b/fonttools-4.57.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:69ab81b66ebaa8d430ba56c7a5f9abe0183afefd3a2d6e483060343398b13fb1", size = 4759646, upload_time = "2025-04-03T11:05:37.963Z" }, - { url = "https://files.pythonhosted.org/packages/bc/c9/5e2952214d4a8e31026bf80beb18187199b7001e60e99a6ce19773249124/fonttools-4.57.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:d639397de852f2ccfb3134b152c741406752640a266d9c1365b0f23d7b88077f", size = 4941652, upload_time = "2025-04-03T11:05:40.089Z" }, - { url = "https://files.pythonhosted.org/packages/df/04/e80242b3d9ec91a1f785d949edc277a13ecfdcfae744de4b170df9ed77d8/fonttools-4.57.0-cp310-cp310-win32.whl", hash = "sha256:cc066cb98b912f525ae901a24cd381a656f024f76203bc85f78fcc9e66ae5aec", size = 2159432, upload_time = "2025-04-03T11:05:41.754Z" }, - { url = "https://files.pythonhosted.org/packages/33/ba/e858cdca275daf16e03c0362aa43734ea71104c3b356b2100b98543dba1b/fonttools-4.57.0-cp310-cp310-win_amd64.whl", hash = "sha256:7a64edd3ff6a7f711a15bd70b4458611fb240176ec11ad8845ccbab4fe6745db", size = 2203869, upload_time = "2025-04-03T11:05:43.712Z" }, - { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392, upload_time = "2025-04-03T11:05:45.715Z" }, - { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609, upload_time = "2025-04-03T11:05:47.977Z" }, - { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292, upload_time = "2025-04-03T11:05:49.921Z" }, - { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503, upload_time = "2025-04-03T11:05:52.17Z" }, - { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351, upload_time = "2025-04-03T11:05:54.162Z" }, - { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067, upload_time = "2025-04-03T11:05:57.375Z" }, - { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263, upload_time = "2025-04-03T11:05:59.567Z" }, - { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968, upload_time = "2025-04-03T11:06:02.16Z" }, - { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824, upload_time = "2025-04-03T11:06:03.782Z" }, - { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072, upload_time = "2025-04-03T11:06:05.533Z" }, - { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020, upload_time = "2025-04-03T11:06:07.249Z" }, - { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096, upload_time = "2025-04-03T11:06:09.469Z" }, - { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356, upload_time = "2025-04-03T11:06:11.294Z" }, - { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546, upload_time = "2025-04-03T11:06:13.6Z" }, - { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776, upload_time = "2025-04-03T11:06:15.643Z" }, - { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956, upload_time = "2025-04-03T11:06:17.534Z" }, - { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605, upload_time = "2025-04-03T11:07:11.341Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392 }, + { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609 }, + { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292 }, + { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503 }, + { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351 }, + { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067 }, + { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263 }, + { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968 }, + { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824 }, + { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072 }, + { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020 }, + { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096 }, + { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356 }, + { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546 }, + { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776 }, + { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956 }, + { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload_time = "2021-03-11T07:16:29.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload_time = "2021-03-11T07:16:28.351Z" }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload_time = "2025-04-17T22:38:53.099Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/03/22e4eb297981d48468c3d9982ab6076b10895106d3039302a943bb60fd70/frozenlist-1.6.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:e6e558ea1e47fd6fa8ac9ccdad403e5dd5ecc6ed8dda94343056fa4277d5c65e", size = 160584, upload_time = "2025-04-17T22:35:48.163Z" }, - { url = "https://files.pythonhosted.org/packages/2b/b8/c213e35bcf1c20502c6fd491240b08cdd6ceec212ea54873f4cae99a51e4/frozenlist-1.6.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f4b3cd7334a4bbc0c472164f3744562cb72d05002cc6fcf58adb104630bbc352", size = 124099, upload_time = "2025-04-17T22:35:50.241Z" }, - { url = "https://files.pythonhosted.org/packages/2b/33/df17b921c2e37b971407b4045deeca6f6de7caf0103c43958da5e1b85e40/frozenlist-1.6.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9799257237d0479736e2b4c01ff26b5c7f7694ac9692a426cb717f3dc02fff9b", size = 122106, upload_time = "2025-04-17T22:35:51.697Z" }, - { url = "https://files.pythonhosted.org/packages/8e/09/93f0293e8a95c05eea7cf9277fef8929fb4d0a2234ad9394cd2a6b6a6bb4/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3a7bb0fe1f7a70fb5c6f497dc32619db7d2cdd53164af30ade2f34673f8b1fc", size = 287205, upload_time = "2025-04-17T22:35:53.441Z" }, - { url = "https://files.pythonhosted.org/packages/5e/34/35612f6f1b1ae0f66a4058599687d8b39352ade8ed329df0890fb553ea1e/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:36d2fc099229f1e4237f563b2a3e0ff7ccebc3999f729067ce4e64a97a7f2869", size = 295079, upload_time = "2025-04-17T22:35:55.617Z" }, - { url = "https://files.pythonhosted.org/packages/e5/ca/51577ef6cc4ec818aab94a0034ef37808d9017c2e53158fef8834dbb3a07/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f27a9f9a86dcf00708be82359db8de86b80d029814e6693259befe82bb58a106", size = 308068, upload_time = "2025-04-17T22:35:57.119Z" }, - { url = "https://files.pythonhosted.org/packages/36/27/c63a23863b9dcbd064560f0fea41b516bbbf4d2e8e7eec3ff880a96f0224/frozenlist-1.6.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:75ecee69073312951244f11b8627e3700ec2bfe07ed24e3a685a5979f0412d24", size = 305640, upload_time = "2025-04-17T22:35:58.667Z" }, - { url = "https://files.pythonhosted.org/packages/33/c2/91720b3562a6073ba604547a417c8d3bf5d33e4c8f1231f3f8ff6719e05c/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f2c7d5aa19714b1b01a0f515d078a629e445e667b9da869a3cd0e6fe7dec78bd", size = 278509, upload_time = "2025-04-17T22:36:00.199Z" }, - { url = "https://files.pythonhosted.org/packages/d0/6e/1b64671ab2fca1ebf32c5b500205724ac14c98b9bc1574b2ef55853f4d71/frozenlist-1.6.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:69bbd454f0fb23b51cadc9bdba616c9678e4114b6f9fa372d462ff2ed9323ec8", size = 287318, upload_time = "2025-04-17T22:36:02.179Z" }, - { url = "https://files.pythonhosted.org/packages/66/30/589a8d8395d5ebe22a6b21262a4d32876df822c9a152e9f2919967bb8e1a/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7daa508e75613809c7a57136dec4871a21bca3080b3a8fc347c50b187df4f00c", size = 290923, upload_time = "2025-04-17T22:36:03.766Z" }, - { url = "https://files.pythonhosted.org/packages/4d/e0/2bd0d2a4a7062b7e4b5aad621697cd3579e5d1c39d99f2833763d91e746d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:89ffdb799154fd4d7b85c56d5fa9d9ad48946619e0eb95755723fffa11022d75", size = 304847, upload_time = "2025-04-17T22:36:05.518Z" }, - { url = "https://files.pythonhosted.org/packages/70/a0/a1a44204398a4b308c3ee1b7bf3bf56b9dcbcc4e61c890e038721d1498db/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:920b6bd77d209931e4c263223381d63f76828bec574440f29eb497cf3394c249", size = 285580, upload_time = "2025-04-17T22:36:07.538Z" }, - { url = "https://files.pythonhosted.org/packages/78/ed/3862bc9abe05839a6a5f5bab8b6bbdf0fc9369505cb77cd15b8c8948f6a0/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d3ceb265249fb401702fce3792e6b44c1166b9319737d21495d3611028d95769", size = 304033, upload_time = "2025-04-17T22:36:09.082Z" }, - { url = "https://files.pythonhosted.org/packages/2c/9c/1c48454a9e1daf810aa6d977626c894b406651ca79d722fce0f13c7424f1/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:52021b528f1571f98a7d4258c58aa8d4b1a96d4f01d00d51f1089f2e0323cb02", size = 307566, upload_time = "2025-04-17T22:36:10.561Z" }, - { url = "https://files.pythonhosted.org/packages/35/ef/cb43655c21f1bad5c42bcd540095bba6af78bf1e474b19367f6fd67d029d/frozenlist-1.6.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:0f2ca7810b809ed0f1917293050163c7654cefc57a49f337d5cd9de717b8fad3", size = 295354, upload_time = "2025-04-17T22:36:12.181Z" }, - { url = "https://files.pythonhosted.org/packages/9f/59/d8069a688a0f54a968c73300d6013e4786b029bfec308664094130dcea66/frozenlist-1.6.0-cp310-cp310-win32.whl", hash = "sha256:0e6f8653acb82e15e5443dba415fb62a8732b68fe09936bb6d388c725b57f812", size = 115586, upload_time = "2025-04-17T22:36:14.01Z" }, - { url = "https://files.pythonhosted.org/packages/f9/a6/8f0cef021912ba7aa3b9920fe0a4557f6e85c41bbf71bb568cd744828df5/frozenlist-1.6.0-cp310-cp310-win_amd64.whl", hash = "sha256:f1a39819a5a3e84304cd286e3dc62a549fe60985415851b3337b6f5cc91907f1", size = 120845, upload_time = "2025-04-17T22:36:15.383Z" }, - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload_time = "2025-04-17T22:36:17.235Z" }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload_time = "2025-04-17T22:36:18.735Z" }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload_time = "2025-04-17T22:36:20.6Z" }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload_time = "2025-04-17T22:36:22.088Z" }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload_time = "2025-04-17T22:36:24.247Z" }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload_time = "2025-04-17T22:36:26.291Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload_time = "2025-04-17T22:36:27.909Z" }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload_time = "2025-04-17T22:36:29.448Z" }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload_time = "2025-04-17T22:36:31.55Z" }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload_time = "2025-04-17T22:36:33.078Z" }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload_time = "2025-04-17T22:36:34.688Z" }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload_time = "2025-04-17T22:36:36.363Z" }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload_time = "2025-04-17T22:36:38.16Z" }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload_time = "2025-04-17T22:36:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload_time = "2025-04-17T22:36:42.045Z" }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload_time = "2025-04-17T22:36:44.067Z" }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload_time = "2025-04-17T22:36:45.465Z" }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload_time = "2025-04-17T22:36:47.382Z" }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload_time = "2025-04-17T22:36:49.401Z" }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload_time = "2025-04-17T22:36:51.899Z" }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload_time = "2025-04-17T22:36:53.402Z" }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload_time = "2025-04-17T22:36:55.016Z" }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload_time = "2025-04-17T22:36:57.12Z" }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload_time = "2025-04-17T22:36:58.735Z" }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload_time = "2025-04-17T22:37:00.512Z" }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload_time = "2025-04-17T22:37:02.102Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload_time = "2025-04-17T22:37:03.578Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload_time = "2025-04-17T22:37:05.213Z" }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload_time = "2025-04-17T22:37:06.985Z" }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload_time = "2025-04-17T22:37:08.618Z" }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload_time = "2025-04-17T22:37:10.196Z" }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload_time = "2025-04-17T22:37:12.284Z" }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload_time = "2025-04-17T22:37:13.902Z" }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload_time = "2025-04-17T22:37:15.326Z" }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload_time = "2025-04-17T22:38:51.668Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, ] [[package]] name = "fsspec" -version = "2025.3.2" +version = "2025.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/45/d8/8425e6ba5fcec61a1d16e41b1b71d2bf9344f1fe48012c2b48b9620feae5/fsspec-2025.3.2.tar.gz", hash = "sha256:e52c77ef398680bbd6a98c0e628fbc469491282981209907bbc8aea76a04fdc6", size = 299281, upload_time = "2025-03-31T15:27:08.524Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989 } wheels = [ - { url = "https://files.pythonhosted.org/packages/44/4b/e0cfc1a6f17e990f3e64b7d941ddc4acdc7b19d6edd51abf495f32b1a9e4/fsspec-2025.3.2-py3-none-any.whl", hash = "sha256:2daf8dc3d1dfa65b6aa37748d112773a7a08416f6c70d96b264c96476ecaf711", size = 194435, upload_time = "2025-03-31T15:27:07.028Z" }, + { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164 }, ] [[package]] @@ -933,9 +860,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload_time = "2024-07-02T12:26:52.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload_time = "2024-07-02T12:26:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, ] [[package]] @@ -945,9 +872,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload_time = "2022-05-02T15:47:16.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload_time = "2022-05-02T15:47:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, ] [[package]] @@ -957,9 +884,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "smmap" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684, upload_time = "2025-01-02T07:20:46.413Z" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794, upload_time = "2025-01-02T07:20:43.624Z" }, + { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, ] [[package]] @@ -969,53 +896,78 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "gitdb" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196, upload_time = "2025-01-02T07:32:43.59Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599, upload_time = "2025-01-02T07:32:40.731Z" }, + { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, ] [[package]] name = "greenlet" version = "3.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475, upload_time = "2025-04-22T14:40:18.206Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/3e/6332bb2d1e43ec6270e0b97bf253cd704691ee55e4e52196cb7da8f774e9/greenlet-3.2.1-cp310-cp310-macosx_11_0_universal2.whl", hash = "sha256:777c1281aa7c786738683e302db0f55eb4b0077c20f1dc53db8852ffaea0a6b0", size = 267364, upload_time = "2025-04-22T14:25:26.993Z" }, - { url = "https://files.pythonhosted.org/packages/73/c1/c47cc96878c4eda993a2deaba15af3cfdc87cf8e2e3c4c20726dea541a8c/greenlet-3.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3059c6f286b53ea4711745146ffe5a5c5ff801f62f6c56949446e0f6461f8157", size = 625721, upload_time = "2025-04-22T14:53:41.313Z" }, - { url = "https://files.pythonhosted.org/packages/c8/65/df1ff1a505a62b08d31da498ddc0c9992e9c536c01944f8b800a7cf17ac6/greenlet-3.2.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e1a40a17e2c7348f5eee5d8e1b4fa6a937f0587eba89411885a36a8e1fc29bd2", size = 636983, upload_time = "2025-04-22T14:54:55.568Z" }, - { url = "https://files.pythonhosted.org/packages/e8/1d/29944dcaaf5e482f7bff617de15f29e17cc0e74c7393888f8a43d7f6229e/greenlet-3.2.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:5193135b3a8d0017cb438de0d49e92bf2f6c1c770331d24aa7500866f4db4017", size = 632880, upload_time = "2025-04-22T15:04:32.187Z" }, - { url = "https://files.pythonhosted.org/packages/e4/c6/6c0891fd775b4fc5613593181526ba282771682dfe7bd0206d283403bcbb/greenlet-3.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:639a94d001fe874675b553f28a9d44faed90f9864dc57ba0afef3f8d76a18b04", size = 631638, upload_time = "2025-04-22T14:27:02.856Z" }, - { url = "https://files.pythonhosted.org/packages/c0/50/3d8cadd4dfab17ef72bf0476cc2dacab368273ed29a79bbe66c36c6007a4/greenlet-3.2.1-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8fe303381e7e909e42fb23e191fc69659910909fdcd056b92f6473f80ef18543", size = 580577, upload_time = "2025-04-22T14:25:54.509Z" }, - { url = "https://files.pythonhosted.org/packages/a5/fe/bb0fc421318c69a840e5b98fdeea29d8dcb38f43ffe8b49664aeb10cc3dc/greenlet-3.2.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:72c9b668454e816b5ece25daac1a42c94d1c116d5401399a11b77ce8d883110c", size = 1109788, upload_time = "2025-04-22T14:58:54.243Z" }, - { url = "https://files.pythonhosted.org/packages/89/e9/db23a39effaef855deac9083a9054cbe34e1623dcbabed01e34a9d4174c7/greenlet-3.2.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:6079ae990bbf944cf66bea64a09dcb56085815630955109ffa98984810d71565", size = 1133412, upload_time = "2025-04-22T14:28:08.284Z" }, - { url = "https://files.pythonhosted.org/packages/6a/86/c33905264b43fe4806720f60124254a149857b42c1bf01bd6e136883c99f/greenlet-3.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:e63cd2035f49376a23611fbb1643f78f8246e9d4dfd607534ec81b175ce582c2", size = 294958, upload_time = "2025-04-22T15:02:15.755Z" }, - { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609, upload_time = "2025-04-22T14:26:58.208Z" }, - { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776, upload_time = "2025-04-22T14:53:43.036Z" }, - { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827, upload_time = "2025-04-22T14:54:57.409Z" }, - { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752, upload_time = "2025-04-22T15:04:33.707Z" }, - { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993, upload_time = "2025-04-22T14:27:04.408Z" }, - { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927, upload_time = "2025-04-22T14:25:55.896Z" }, - { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891, upload_time = "2025-04-22T14:58:55.808Z" }, - { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318, upload_time = "2025-04-22T14:28:09.451Z" }, - { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407, upload_time = "2025-04-22T14:58:42.319Z" }, - { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381, upload_time = "2025-04-22T14:25:43.69Z" }, - { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195, upload_time = "2025-04-22T14:53:44.563Z" }, - { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381, upload_time = "2025-04-22T14:54:59.439Z" }, - { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110, upload_time = "2025-04-22T15:04:35.739Z" }, - { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070, upload_time = "2025-04-22T14:27:05.976Z" }, - { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816, upload_time = "2025-04-22T14:25:57.224Z" }, - { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572, upload_time = "2025-04-22T14:58:58.277Z" }, - { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442, upload_time = "2025-04-22T14:28:11.243Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207, upload_time = "2025-04-22T14:54:40.531Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609 }, + { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776 }, + { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827 }, + { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752 }, + { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993 }, + { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927 }, + { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891 }, + { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318 }, + { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407 }, + { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381 }, + { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195 }, + { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381 }, + { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110 }, + { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070 }, + { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816 }, + { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, + { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, + { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload_time = "2025-04-24T03:35:25.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, +] + +[[package]] +name = "h5netcdf" +version = "1.6.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "h5py" }, + { name = "packaging" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload_time = "2025-04-24T03:35:24.344Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, +] + +[[package]] +name = "h5py" +version = "3.13.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, + { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, + { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, + { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, + { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, + { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, + { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, + { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, + { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, + { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, ] [[package]] @@ -1026,9 +978,9 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload_time = "2025-04-24T22:06:22.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload_time = "2025-04-24T22:06:20.566Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, ] [[package]] @@ -1041,14 +993,54 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload_time = "2024-12-06T15:37:23.222Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload_time = "2024-12-06T15:37:21.509Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, +] + +[[package]] +name = "icechunk" +version = "0.2.14" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, + { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, + { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, + { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, + { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, + { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, + { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, + { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, + { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, + { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, + { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, + { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, + { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, + { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, + { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, + { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, + { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, + { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, + { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, + { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, + { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, + { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, + { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, + { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, + { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, + { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, + { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, + { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, ] [[package]] name = "icefabric" -version = "0.1.0" +version = "2025.5" source = { virtual = "." } [package.optional-dependencies] @@ -1087,26 +1079,25 @@ requires-dist = [ { name = "mkdocs-material-extensions", marker = "extra == 'docs'" }, { name = "pillow", marker = "extra == 'docs'" }, ] -provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ - { name = "black" }, + { name = "black", specifier = "==25.1.0" }, { name = "boto3" }, { name = "examples" }, { name = "icefabric-manage", editable = "src/icefabric_manage" }, { name = "icefabric-tools", editable = "src/icefabric_tools" }, { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "jupyterlab" }, - { name = "mypy" }, + { name = "jupyterlab", specifier = "==4.4.2" }, + { name = "mypy", specifier = "==1.15.0" }, { name = "pre-commit", specifier = ">=3.8.0" }, { name = "pytest", specifier = ">=8.3.2" }, - { name = "ruff" }, + { name = "ruff", specifier = "==0.11.0" }, ] [[package]] name = "icefabric-manage" -version = "0.1.0" +version = "2025.5" source = { editable = "src/icefabric_manage" } dependencies = [ { name = "fiona" }, @@ -1122,65 +1113,89 @@ dependencies = [ requires-dist = [ { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, - { name = "numpy", specifier = "==1.26.4" }, - { name = "pandas", specifier = "==2.2.0" }, - { name = "pyarrow", specifier = "==19.0.1" }, + { name = "numpy", specifier = "==2.2.6" }, + { name = "pandas", specifier = "==2.2.3" }, + { name = "pyarrow", specifier = "==20.0.0" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, - { name = "s3fs", specifier = "==2025.3.2" }, + { name = "s3fs", specifier = "==2025.5.0" }, ] [[package]] name = "icefabric-tools" -version = "0.1.0" +version = "2025.5" source = { editable = "src/icefabric_tools" } dependencies = [ { name = "fiona" }, + { name = "fsspec" }, { name = "geopandas" }, + { name = "h5netcdf" }, + { name = "h5py" }, + { name = "icechunk" }, + { name = "kerchunk" }, { name = "matplotlib" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "rioxarray" }, { name = "s3fs" }, + { name = "scipy" }, + { name = "tifffile" }, + { name = "tqdm" }, + { name = "virtualizarr" }, + { name = "xarray" }, + { name = "zarr" }, ] [package.metadata] requires-dist = [ { name = "fiona", specifier = "==1.10.1" }, + { name = "fsspec", specifier = "==2025.5.0" }, { name = "geopandas", specifier = "==1.0.1" }, - { name = "matplotlib", specifier = "==3.10.0" }, - { name = "numpy", specifier = "==1.26.4" }, - { name = "pandas", specifier = "==2.2.0" }, - { name = "pyarrow", specifier = "==19.0.1" }, + { name = "h5netcdf", specifier = "==1.6.1" }, + { name = "h5py", specifier = "==3.13.0" }, + { name = "icechunk", specifier = "==0.2.14" }, + { name = "kerchunk", specifier = "==0.2.8" }, + { name = "matplotlib", specifier = "==3.10.3" }, + { name = "numpy", specifier = "==2.2.6" }, + { name = "pandas", specifier = "==2.2.3" }, + { name = "pyarrow", specifier = "==20.0.0" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, - { name = "s3fs", specifier = "==2025.3.2" }, + { name = "rioxarray", specifier = "==0.19.0" }, + { name = "s3fs", specifier = "==2025.5.0" }, + { name = "scipy", specifier = "==1.15.3" }, + { name = "tifffile", specifier = "==2025.5.21" }, + { name = "tqdm", specifier = "==4.67.1" }, + { name = "virtualizarr", specifier = "==1.3.2" }, + { name = "xarray", specifier = "==2025.4.0" }, + { name = "zarr", specifier = "==3.0.8" }, ] [[package]] name = "identify" version = "2.6.10" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201, upload_time = "2025-04-19T15:10:38.32Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101, upload_time = "2025-04-19T15:10:36.701Z" }, + { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101 }, ] [[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, upload_time = "2024-09-15T18:07:39.745Z" } +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, upload_time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload_time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload_time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -1191,8 +1206,7 @@ dependencies = [ { name = "appnope", marker = "sys_platform == 'darwin'" }, { name = "comm" }, { name = "debugpy" }, - { name = "ipython", version = "8.36.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, - { name = "ipython", version = "9.2.0", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, + { name = "ipython" }, { name = "jupyter-client" }, { name = "jupyter-core" }, { name = "matplotlib-inline" }, @@ -1203,60 +1217,31 @@ dependencies = [ { 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, upload_time = "2024-07-01T14:07:22.543Z" } +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, upload_time = "2024-07-01T14:07:19.603Z" }, -] - -[[package]] -name = "ipython" -version = "8.36.0" -source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version < '3.11'", -] -dependencies = [ - { name = "colorama", marker = "python_full_version < '3.11' and sys_platform == 'win32'" }, - { name = "decorator", marker = "python_full_version < '3.11'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, - { name = "jedi", marker = "python_full_version < '3.11'" }, - { name = "matplotlib-inline", marker = "python_full_version < '3.11'" }, - { name = "pexpect", marker = "python_full_version < '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit", marker = "python_full_version < '3.11'" }, - { name = "pygments", marker = "python_full_version < '3.11'" }, - { name = "stack-data", marker = "python_full_version < '3.11'" }, - { name = "traitlets", marker = "python_full_version < '3.11'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a2/9f/d9a73710df947b7804bd9d93509463fb3a89e0ddc99c9fcc67279cddbeb6/ipython-8.36.0.tar.gz", hash = "sha256:24658e9fe5c5c819455043235ba59cfffded4a35936eefceceab6b192f7092ff", size = 5604997, upload_time = "2025-04-25T18:03:38.031Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/d7/c1c9f371790b3a181e343c4815a361e5a0cc7d90ef6642d64ba5d05de289/ipython-8.36.0-py3-none-any.whl", hash = "sha256:12b913914d010dcffa2711505ec8be4bf0180742d97f1e5175e51f22086428c1", size = 831074, upload_time = "2025-04-25T18:03:34.951Z" }, + { 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 = "9.2.0" source = { registry = "https://pypi.org/simple" } -resolution-markers = [ - "python_full_version >= '3.12'", - "python_full_version == '3.11.*'", -] dependencies = [ - { name = "colorama", marker = "python_full_version >= '3.11' and sys_platform == 'win32'" }, - { name = "decorator", marker = "python_full_version >= '3.11'" }, - { name = "ipython-pygments-lexers", marker = "python_full_version >= '3.11'" }, - { name = "jedi", marker = "python_full_version >= '3.11'" }, - { name = "matplotlib-inline", marker = "python_full_version >= '3.11'" }, - { name = "pexpect", marker = "python_full_version >= '3.11' and sys_platform != 'emscripten' and sys_platform != 'win32'" }, - { name = "prompt-toolkit", marker = "python_full_version >= '3.11'" }, - { name = "pygments", marker = "python_full_version >= '3.11'" }, - { name = "stack-data", marker = "python_full_version >= '3.11'" }, - { name = "traitlets", marker = "python_full_version >= '3.11'" }, - { name = "typing-extensions", marker = "python_full_version == '3.11.*'" }, + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "decorator" }, + { name = "ipython-pygments-lexers" }, + { 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/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload_time = "2025-04-25T17:55:40.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload_time = "2025-04-25T17:55:37.625Z" }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, ] [[package]] @@ -1264,11 +1249,11 @@ name = "ipython-pygments-lexers" version = "1.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pygments", marker = "python_full_version >= '3.11'" }, + { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload_time = "2025-01-17T11:24:34.505Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload_time = "2025-01-17T11:24:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, ] [[package]] @@ -1278,9 +1263,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload_time = "2020-11-01T11:00:00.312Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload_time = "2020-11-01T10:59:58.02Z" }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, ] [[package]] @@ -1290,9 +1275,9 @@ 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, upload_time = "2024-11-11T01:41:42.873Z" } +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, upload_time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, ] [[package]] @@ -1302,36 +1287,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload_time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload_time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[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, upload_time = "2022-06-17T18:00:12.224Z" } +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, upload_time = "2022-06-17T18:00:10.251Z" }, + { 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.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload_time = "2025-04-03T16:33:13.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload_time = "2025-04-03T16:33:11.927Z" }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload_time = "2024-06-10T19:24:42.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload_time = "2024-06-10T19:24:40.698Z" }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, ] [[package]] @@ -1344,9 +1329,9 @@ dependencies = [ { 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, upload_time = "2024-07-08T18:40:05.546Z" } +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, upload_time = "2024-07-08T18:40:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, ] [package.optional-dependencies] @@ -1368,9 +1353,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload_time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload_time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, ] [[package]] @@ -1384,9 +1369,9 @@ dependencies = [ { 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, upload_time = "2024-09-17T10:44:17.613Z" } +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, upload_time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, ] [[package]] @@ -1398,9 +1383,9 @@ dependencies = [ { 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, upload_time = "2024-03-12T12:37:35.652Z" } +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, upload_time = "2024-03-12T12:37:32.36Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, ] [[package]] @@ -1417,9 +1402,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload_time = "2025-02-03T17:23:41.485Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload_time = "2025-02-03T17:23:38.643Z" }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, ] [[package]] @@ -1429,9 +1414,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload_time = "2024-04-09T17:59:44.918Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload_time = "2024-04-09T17:59:43.388Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, ] [[package]] @@ -1459,9 +1444,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227, upload_time = "2024-12-20T13:02:42.654Z" } +sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826, upload_time = "2024-12-20T13:02:37.785Z" }, + { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, ] [[package]] @@ -1472,14 +1457,14 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload_time = "2024-03-12T14:37:03.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload_time = "2024-03-12T14:37:00.708Z" }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, ] [[package]] name = "jupyterlab" -version = "4.4.1" +version = "4.4.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-lru" }, @@ -1493,22 +1478,21 @@ dependencies = [ { name = "notebook-shim" }, { name = "packaging" }, { name = "setuptools" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/55/3ef7e6bfe988d7df3d453cc27912846d50590c90790848594f7228c89569/jupyterlab-4.4.1.tar.gz", hash = "sha256:c75c4f33056fbd84f0b31eb44622a00c7a5f981b85adfeb198a83721f0465808", size = 23028447, upload_time = "2025-04-22T18:22:33.423Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } wheels = [ - { url = "https://files.pythonhosted.org/packages/29/82/c8784597c5a03426c1ef20c48aff37e8cfe050ab5ca87f0d51069f02b362/jupyterlab-4.4.1-py3-none-any.whl", hash = "sha256:989bca3f9cf2d04b2022e7e657e2df6d4aca808b364810d31c4865edd968a5f7", size = 12292928, upload_time = "2025-04-22T18:22:25.831Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload_time = "2023-11-23T09:26:37.44Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload_time = "2023-11-23T09:26:34.325Z" }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, ] [[package]] @@ -1524,77 +1508,72 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload_time = "2024-07-16T17:02:04.149Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, +] + +[[package]] +name = "kerchunk" +version = "0.2.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, + { name = "numcodecs" }, + { name = "numpy" }, + { name = "ujson" }, + { name = "zarr" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload_time = "2024-07-16T17:02:01.115Z" }, + { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload_time = "2024-12-24T18:30:51.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/5f/4d8e9e852d98ecd26cdf8eaf7ed8bc33174033bba5e07001b289f07308fd/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:88c6f252f6816a73b1f8c904f7bbe02fd67c09a69f7cb8a0eecdbf5ce78e63db", size = 124623, upload_time = "2024-12-24T18:28:17.687Z" }, - { url = "https://files.pythonhosted.org/packages/1d/70/7f5af2a18a76fe92ea14675f8bd88ce53ee79e37900fa5f1a1d8e0b42998/kiwisolver-1.4.8-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:c72941acb7b67138f35b879bbe85be0f6c6a70cab78fe3ef6db9c024d9223e5b", size = 66720, upload_time = "2024-12-24T18:28:19.158Z" }, - { url = "https://files.pythonhosted.org/packages/c6/13/e15f804a142353aefd089fadc8f1d985561a15358c97aca27b0979cb0785/kiwisolver-1.4.8-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:ce2cf1e5688edcb727fdf7cd1bbd0b6416758996826a8be1d958f91880d0809d", size = 65413, upload_time = "2024-12-24T18:28:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/ce/6d/67d36c4d2054e83fb875c6b59d0809d5c530de8148846b1370475eeeece9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_i686.manylinux2010_i686.whl", hash = "sha256:c8bf637892dc6e6aad2bc6d4d69d08764166e5e3f69d469e55427b6ac001b19d", size = 1650826, upload_time = "2024-12-24T18:28:21.203Z" }, - { url = "https://files.pythonhosted.org/packages/de/c6/7b9bb8044e150d4d1558423a1568e4f227193662a02231064e3824f37e0a/kiwisolver-1.4.8-cp310-cp310-manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:034d2c891f76bd3edbdb3ea11140d8510dca675443da7304205a2eaa45d8334c", size = 1628231, upload_time = "2024-12-24T18:28:23.851Z" }, - { url = "https://files.pythonhosted.org/packages/b6/38/ad10d437563063eaaedbe2c3540a71101fc7fb07a7e71f855e93ea4de605/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d47b28d1dfe0793d5e96bce90835e17edf9a499b53969b03c6c47ea5985844c3", size = 1408938, upload_time = "2024-12-24T18:28:26.687Z" }, - { url = "https://files.pythonhosted.org/packages/52/ce/c0106b3bd7f9e665c5f5bc1e07cc95b5dabd4e08e3dad42dbe2faad467e7/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:eb158fe28ca0c29f2260cca8c43005329ad58452c36f0edf298204de32a9a3ed", size = 1422799, upload_time = "2024-12-24T18:28:30.538Z" }, - { url = "https://files.pythonhosted.org/packages/d0/87/efb704b1d75dc9758087ba374c0f23d3254505edaedd09cf9d247f7878b9/kiwisolver-1.4.8-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d5536185fce131780ebd809f8e623bf4030ce1b161353166c49a3c74c287897f", size = 1354362, upload_time = "2024-12-24T18:28:32.943Z" }, - { url = "https://files.pythonhosted.org/packages/eb/b3/fd760dc214ec9a8f208b99e42e8f0130ff4b384eca8b29dd0efc62052176/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:369b75d40abedc1da2c1f4de13f3482cb99e3237b38726710f4a793432b1c5ff", size = 2222695, upload_time = "2024-12-24T18:28:35.641Z" }, - { url = "https://files.pythonhosted.org/packages/a2/09/a27fb36cca3fc01700687cc45dae7a6a5f8eeb5f657b9f710f788748e10d/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:641f2ddf9358c80faa22e22eb4c9f54bd3f0e442e038728f500e3b978d00aa7d", size = 2370802, upload_time = "2024-12-24T18:28:38.357Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c3/ba0a0346db35fe4dc1f2f2cf8b99362fbb922d7562e5f911f7ce7a7b60fa/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:d561d2d8883e0819445cfe58d7ddd673e4015c3c57261d7bdcd3710d0d14005c", size = 2334646, upload_time = "2024-12-24T18:28:40.941Z" }, - { url = "https://files.pythonhosted.org/packages/41/52/942cf69e562f5ed253ac67d5c92a693745f0bed3c81f49fc0cbebe4d6b00/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:1732e065704b47c9afca7ffa272f845300a4eb959276bf6970dc07265e73b605", size = 2467260, upload_time = "2024-12-24T18:28:42.273Z" }, - { url = "https://files.pythonhosted.org/packages/32/26/2d9668f30d8a494b0411d4d7d4ea1345ba12deb6a75274d58dd6ea01e951/kiwisolver-1.4.8-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:bcb1ebc3547619c3b58a39e2448af089ea2ef44b37988caf432447374941574e", size = 2288633, upload_time = "2024-12-24T18:28:44.87Z" }, - { url = "https://files.pythonhosted.org/packages/98/99/0dd05071654aa44fe5d5e350729961e7bb535372935a45ac89a8924316e6/kiwisolver-1.4.8-cp310-cp310-win_amd64.whl", hash = "sha256:89c107041f7b27844179ea9c85d6da275aa55ecf28413e87624d033cf1f6b751", size = 71885, upload_time = "2024-12-24T18:28:47.346Z" }, - { url = "https://files.pythonhosted.org/packages/6c/fc/822e532262a97442989335394d441cd1d0448c2e46d26d3e04efca84df22/kiwisolver-1.4.8-cp310-cp310-win_arm64.whl", hash = "sha256:b5773efa2be9eb9fcf5415ea3ab70fc785d598729fd6057bea38d539ead28271", size = 65175, upload_time = "2024-12-24T18:28:49.651Z" }, - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload_time = "2024-12-24T18:28:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload_time = "2024-12-24T18:28:54.256Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload_time = "2024-12-24T18:28:55.184Z" }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload_time = "2024-12-24T18:28:57.493Z" }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload_time = "2024-12-24T18:29:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload_time = "2024-12-24T18:29:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload_time = "2024-12-24T18:29:02.685Z" }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload_time = "2024-12-24T18:29:04.113Z" }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload_time = "2024-12-24T18:29:05.488Z" }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload_time = "2024-12-24T18:29:06.79Z" }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload_time = "2024-12-24T18:29:08.24Z" }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload_time = "2024-12-24T18:29:09.653Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload_time = "2024-12-24T18:29:12.644Z" }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload_time = "2024-12-24T18:29:14.089Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload_time = "2024-12-24T18:29:15.892Z" }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload_time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload_time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload_time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload_time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload_time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload_time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload_time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload_time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload_time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload_time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload_time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload_time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload_time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload_time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload_time = "2024-12-24T18:29:44.38Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f9/ae81c47a43e33b93b0a9819cac6723257f5da2a5a60daf46aa5c7226ea85/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:e7a019419b7b510f0f7c9dceff8c5eae2392037eae483a7f9162625233802b0a", size = 60403, upload_time = "2024-12-24T18:30:41.372Z" }, - { url = "https://files.pythonhosted.org/packages/58/ca/f92b5cb6f4ce0c1ebfcfe3e2e42b96917e16f7090e45b21102941924f18f/kiwisolver-1.4.8-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:286b18e86682fd2217a48fc6be6b0f20c1d0ed10958d8dc53453ad58d7be0bf8", size = 58657, upload_time = "2024-12-24T18:30:42.392Z" }, - { url = "https://files.pythonhosted.org/packages/80/28/ae0240f732f0484d3a4dc885d055653c47144bdf59b670aae0ec3c65a7c8/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4191ee8dfd0be1c3666ccbac178c5a05d5f8d689bbe3fc92f3c4abec817f8fe0", size = 84948, upload_time = "2024-12-24T18:30:44.703Z" }, - { url = "https://files.pythonhosted.org/packages/5d/eb/78d50346c51db22c7203c1611f9b513075f35c4e0e4877c5dde378d66043/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7cd2785b9391f2873ad46088ed7599a6a71e762e1ea33e87514b1a441ed1da1c", size = 81186, upload_time = "2024-12-24T18:30:45.654Z" }, - { url = "https://files.pythonhosted.org/packages/43/f8/7259f18c77adca88d5f64f9a522792e178b2691f3748817a8750c2d216ef/kiwisolver-1.4.8-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c07b29089b7ba090b6f1a669f1411f27221c3662b3a1b7010e67b59bb5a6f10b", size = 80279, upload_time = "2024-12-24T18:30:47.951Z" }, - { url = "https://files.pythonhosted.org/packages/3a/1d/50ad811d1c5dae091e4cf046beba925bcae0a610e79ae4c538f996f63ed5/kiwisolver-1.4.8-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:65ea09a5a3faadd59c2ce96dc7bf0f364986a315949dc6374f04396b0d60e09b", size = 71762, upload_time = "2024-12-24T18:30:48.903Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, ] [[package]] name = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload_time = "2025-04-11T14:42:50.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload_time = "2025-04-11T14:42:49.178Z" }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, ] [[package]] @@ -1604,52 +1583,42 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload_time = "2023-06-03T06:41:14.443Z" } +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, upload_time = "2023-06-03T06:41:11.019Z" }, + { 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, upload_time = "2024-10-18T15:21:54.129Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/90/d08277ce111dd22f77149fd1a5d4653eeb3b3eaacbdfcbae5afb2600eebd/MarkupSafe-3.0.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:7e94c425039cde14257288fd61dcfb01963e658efbc0ff54f5306b06054700f8", size = 14357, upload_time = "2024-10-18T15:20:51.44Z" }, - { url = "https://files.pythonhosted.org/packages/04/e1/6e2194baeae0bca1fae6629dc0cbbb968d4d941469cbab11a3872edff374/MarkupSafe-3.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:9e2d922824181480953426608b81967de705c3cef4d1af983af849d7bd619158", size = 12393, upload_time = "2024-10-18T15:20:52.426Z" }, - { url = "https://files.pythonhosted.org/packages/1d/69/35fa85a8ece0a437493dc61ce0bb6d459dcba482c34197e3efc829aa357f/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38a9ef736c01fccdd6600705b09dc574584b89bea478200c5fbf112a6b0d5579", size = 21732, upload_time = "2024-10-18T15:20:53.578Z" }, - { url = "https://files.pythonhosted.org/packages/22/35/137da042dfb4720b638d2937c38a9c2df83fe32d20e8c8f3185dbfef05f7/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bbcb445fa71794da8f178f0f6d66789a28d7319071af7a496d4d507ed566270d", size = 20866, upload_time = "2024-10-18T15:20:55.06Z" }, - { url = "https://files.pythonhosted.org/packages/29/28/6d029a903727a1b62edb51863232152fd335d602def598dade38996887f0/MarkupSafe-3.0.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:57cb5a3cf367aeb1d316576250f65edec5bb3be939e9247ae594b4bcbc317dfb", size = 20964, upload_time = "2024-10-18T15:20:55.906Z" }, - { url = "https://files.pythonhosted.org/packages/cc/cd/07438f95f83e8bc028279909d9c9bd39e24149b0d60053a97b2bc4f8aa51/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3809ede931876f5b2ec92eef964286840ed3540dadf803dd570c3b7e13141a3b", size = 21977, upload_time = "2024-10-18T15:20:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/29/01/84b57395b4cc062f9c4c55ce0df7d3108ca32397299d9df00fedd9117d3d/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e07c3764494e3776c602c1e78e298937c3315ccc9043ead7e685b7f2b8d47b3c", size = 21366, upload_time = "2024-10-18T15:20:58.235Z" }, - { url = "https://files.pythonhosted.org/packages/bd/6e/61ebf08d8940553afff20d1fb1ba7294b6f8d279df9fd0c0db911b4bbcfd/MarkupSafe-3.0.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:b424c77b206d63d500bcb69fa55ed8d0e6a3774056bdc4839fc9298a7edca171", size = 21091, upload_time = "2024-10-18T15:20:59.235Z" }, - { url = "https://files.pythonhosted.org/packages/11/23/ffbf53694e8c94ebd1e7e491de185124277964344733c45481f32ede2499/MarkupSafe-3.0.2-cp310-cp310-win32.whl", hash = "sha256:fcabf5ff6eea076f859677f5f0b6b5c1a51e70a376b0579e0eadef8db48c6b50", size = 15065, upload_time = "2024-10-18T15:21:00.307Z" }, - { url = "https://files.pythonhosted.org/packages/44/06/e7175d06dd6e9172d4a69a72592cb3f7a996a9c396eee29082826449bbc3/MarkupSafe-3.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:6af100e168aa82a50e186c82875a5893c5597a0c1ccdb0d8b40240b1f28b969a", size = 15514, upload_time = "2024-10-18T15:21:01.122Z" }, - { 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, upload_time = "2024-10-18T15:21:02.187Z" }, - { 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, upload_time = "2024-10-18T15:21:02.941Z" }, - { 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, upload_time = "2024-10-18T15:21:03.953Z" }, - { 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, upload_time = "2024-10-18T15:21:06.495Z" }, - { 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, upload_time = "2024-10-18T15:21:07.295Z" }, - { 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, upload_time = "2024-10-18T15:21:08.073Z" }, - { 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, upload_time = "2024-10-18T15:21:09.318Z" }, - { 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, upload_time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload_time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload_time = "2024-10-18T15:21:12.911Z" }, - { 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, upload_time = "2024-10-18T15:21:13.777Z" }, - { 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, upload_time = "2024-10-18T15:21:14.822Z" }, - { 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, upload_time = "2024-10-18T15:21:15.642Z" }, - { 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, upload_time = "2024-10-18T15:21:17.133Z" }, - { 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, upload_time = "2024-10-18T15:21:18.064Z" }, - { 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, upload_time = "2024-10-18T15:21:18.859Z" }, - { 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, upload_time = "2024-10-18T15:21:19.671Z" }, - { 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, upload_time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload_time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload_time = "2024-10-18T15:21:23.499Z" }, +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 }, ] [[package]] name = "matplotlib" -version = "3.10.0" +version = "3.10.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "contourpy" }, @@ -1662,29 +1631,20 @@ dependencies = [ { 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, upload_time = "2024-12-14T06:32:51.547Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/09/ec/3cdff7b5239adaaacefcc4f77c316dfbbdf853c4ed2beec467e0fec31b9f/matplotlib-3.10.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6", size = 8160551, upload_time = "2024-12-14T06:30:36.73Z" }, - { url = "https://files.pythonhosted.org/packages/41/f2/b518f2c7f29895c9b167bf79f8529c63383ae94eaf49a247a4528e9a148d/matplotlib-3.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e", size = 8034853, upload_time = "2024-12-14T06:30:40.973Z" }, - { url = "https://files.pythonhosted.org/packages/ed/8d/45754b4affdb8f0d1a44e4e2bcd932cdf35b256b60d5eda9f455bb293ed0/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5", size = 8446724, upload_time = "2024-12-14T06:30:45.325Z" }, - { url = "https://files.pythonhosted.org/packages/09/5a/a113495110ae3e3395c72d82d7bc4802902e46dc797f6b041e572f195c56/matplotlib-3.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6", size = 8583905, upload_time = "2024-12-14T06:30:50.869Z" }, - { url = "https://files.pythonhosted.org/packages/12/b1/8b1655b4c9ed4600c817c419f7eaaf70082630efd7556a5b2e77a8a3cdaf/matplotlib-3.10.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1", size = 9395223, upload_time = "2024-12-14T06:30:55.335Z" }, - { url = "https://files.pythonhosted.org/packages/5a/85/b9a54d64585a6b8737a78a61897450403c30f39e0bd3214270bb0b96f002/matplotlib-3.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3", size = 8025355, upload_time = "2024-12-14T06:30:58.843Z" }, - { 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, upload_time = "2024-12-14T06:31:03.742Z" }, - { 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, upload_time = "2024-12-14T06:31:08.494Z" }, - { 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, upload_time = "2024-12-14T06:31:11.346Z" }, - { 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, upload_time = "2024-12-14T06:31:14.677Z" }, - { 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, upload_time = "2024-12-14T06:31:18.871Z" }, - { url = "https://files.pythonhosted.org/packages/14/cf/e382598f98be11bf51dd0bc60eca44a517f6793e3dc8b9d53634a144620c/matplotlib-3.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a", size = 8034580, upload_time = "2024-12-14T06:31:21.998Z" }, - { 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, upload_time = "2024-12-14T06:31:24.727Z" }, - { 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, upload_time = "2024-12-14T06:31:28.55Z" }, - { 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, upload_time = "2024-12-14T06:31:32.223Z" }, - { 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, upload_time = "2024-12-14T06:31:34.894Z" }, - { 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, upload_time = "2024-12-14T06:31:39.552Z" }, - { url = "https://files.pythonhosted.org/packages/9f/6e/264673e64001b99d747aff5a288eca82826c024437a3694e19aed1decf46/matplotlib-3.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc", size = 8039144, upload_time = "2024-12-14T06:31:44.128Z" }, - { url = "https://files.pythonhosted.org/packages/32/5f/29def7ce4e815ab939b56280976ee35afffb3bbdb43f332caee74cb8c951/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03", size = 8155500, upload_time = "2024-12-14T06:32:36.849Z" }, - { url = "https://files.pythonhosted.org/packages/de/6d/d570383c9f7ca799d0a54161446f9ce7b17d6c50f2994b653514bcaa108f/matplotlib-3.10.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea", size = 8032398, upload_time = "2024-12-14T06:32:40.198Z" }, - { url = "https://files.pythonhosted.org/packages/c9/b4/680aa700d99b48e8c4393fa08e9ab8c49c0555ee6f4c9c0a5e8ea8dfde5d/matplotlib-3.10.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef", size = 8587361, upload_time = "2024-12-14T06:32:43.575Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, ] [[package]] @@ -1694,39 +1654,36 @@ 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, upload_time = "2024-04-15T13:44:44.803Z" } +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, upload_time = "2024-04-15T13:44:43.265Z" }, + { 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, upload_time = "2022-08-14T12:40:10.846Z" } +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, upload_time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload_time = "2021-02-05T18:55:30.623Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload_time = "2021-02-05T18:55:29.583Z" }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, ] [[package]] name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload_time = "2025-03-19T14:27:24.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload_time = "2025-03-19T14:27:23.451Z" }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, ] [[package]] @@ -1748,9 +1705,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload_time = "2024-08-30T12:24:06.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload_time = "2024-08-30T12:24:05.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, ] [[package]] @@ -1762,9 +1719,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload_time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload_time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] [[package]] @@ -1774,9 +1731,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mkdocs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538, upload_time = "2025-04-22T10:27:04.542Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906, upload_time = "2025-04-22T10:27:02.944Z" }, + { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906 }, ] [[package]] @@ -1787,9 +1744,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pygithub" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379, upload_time = "2023-11-06T17:13:30.207Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340, upload_time = "2023-11-06T17:13:28.979Z" }, + { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, ] [[package]] @@ -1802,9 +1759,9 @@ dependencies = [ { name = "mkdocs" }, { name = "pytz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263, upload_time = "2025-03-14T12:56:38.689Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263 } wheels = [ - { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284, upload_time = "2025-03-14T12:56:37.074Z" }, + { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284 }, ] [[package]] @@ -1824,137 +1781,101 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532, upload_time = "2025-04-17T10:40:41.48Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532 } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654, upload_time = "2025-04-17T10:40:38.304Z" }, + { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654 }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload_time = "2023-11-22T19:09:45.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload_time = "2023-11-22T19:09:43.465Z" }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload_time = "2025-01-25T08:39:43.386Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/01/9d06468928661765c0fc248a29580c760a4a53a9c6c52cf72528bae3582e/mmh3-5.1.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:eaf4ac5c6ee18ca9232238364d7f2a213278ae5ca97897cafaa123fcc7bb8bec", size = 56095, upload_time = "2025-01-25T08:37:53.621Z" }, - { url = "https://files.pythonhosted.org/packages/e4/d7/7b39307fc9db867b2a9a20c58b0de33b778dd6c55e116af8ea031f1433ba/mmh3-5.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:48f9aa8ccb9ad1d577a16104834ac44ff640d8de8c0caed09a2300df7ce8460a", size = 40512, upload_time = "2025-01-25T08:37:54.972Z" }, - { url = "https://files.pythonhosted.org/packages/4f/85/728ca68280d8ccc60c113ad119df70ff1748fbd44c89911fed0501faf0b8/mmh3-5.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d4ba8cac21e1f2d4e436ce03a82a7f87cda80378691f760e9ea55045ec480a3d", size = 40110, upload_time = "2025-01-25T08:37:57.86Z" }, - { url = "https://files.pythonhosted.org/packages/e4/96/beaf0e301472ffa00358bbbf771fe2d9c4d709a2fe30b1d929e569f8cbdf/mmh3-5.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69281c281cb01994f054d862a6bb02a2e7acfe64917795c58934b0872b9ece4", size = 100151, upload_time = "2025-01-25T08:37:59.609Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ee/9381f825c4e09ffafeffa213c3865c4bf7d39771640de33ab16f6faeb854/mmh3-5.1.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4d05ed3962312fbda2a1589b97359d2467f677166952f6bd410d8c916a55febf", size = 106312, upload_time = "2025-01-25T08:38:02.102Z" }, - { url = "https://files.pythonhosted.org/packages/67/dc/350a54bea5cf397d357534198ab8119cfd0d8e8bad623b520f9c290af985/mmh3-5.1.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:78ae6a03f4cff4aa92ddd690611168856f8c33a141bd3e5a1e0a85521dc21ea0", size = 104232, upload_time = "2025-01-25T08:38:03.852Z" }, - { url = "https://files.pythonhosted.org/packages/b2/5d/2c6eb4a4ec2f7293b98a9c07cb8c64668330b46ff2b6511244339e69a7af/mmh3-5.1.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95f983535b39795d9fb7336438faae117424c6798f763d67c6624f6caf2c4c01", size = 91663, upload_time = "2025-01-25T08:38:06.24Z" }, - { url = "https://files.pythonhosted.org/packages/f1/ac/17030d24196f73ecbab8b5033591e5e0e2beca103181a843a135c78f4fee/mmh3-5.1.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d46fdd80d4c7ecadd9faa6181e92ccc6fe91c50991c9af0e371fdf8b8a7a6150", size = 99166, upload_time = "2025-01-25T08:38:07.988Z" }, - { url = "https://files.pythonhosted.org/packages/b9/ed/54ddc56603561a10b33da9b12e95a48a271d126f4a4951841bbd13145ebf/mmh3-5.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0f16e976af7365ea3b5c425124b2a7f0147eed97fdbb36d99857f173c8d8e096", size = 101555, upload_time = "2025-01-25T08:38:09.821Z" }, - { url = "https://files.pythonhosted.org/packages/1c/c3/33fb3a940c9b70908a5cc9fcc26534aff8698180f9f63ab6b7cc74da8bcd/mmh3-5.1.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:6fa97f7d1e1f74ad1565127229d510f3fd65d931fdedd707c1e15100bc9e5ebb", size = 94813, upload_time = "2025-01-25T08:38:11.682Z" }, - { url = "https://files.pythonhosted.org/packages/61/88/c9ff76a23abe34db8eee1a6fa4e449462a16c7eb547546fc5594b0860a72/mmh3-5.1.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4052fa4a8561bd62648e9eb993c8f3af3bdedadf3d9687aa4770d10e3709a80c", size = 109611, upload_time = "2025-01-25T08:38:12.602Z" }, - { url = "https://files.pythonhosted.org/packages/0b/8e/27d04f40e95554ebe782cac7bddda2d158cf3862387298c9c7b254fa7beb/mmh3-5.1.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:3f0e8ae9f961037f812afe3cce7da57abf734285961fffbeff9a4c011b737732", size = 100515, upload_time = "2025-01-25T08:38:16.407Z" }, - { url = "https://files.pythonhosted.org/packages/7b/00/504ca8f462f01048f3c87cd93f2e1f60b93dac2f930cd4ed73532a9337f5/mmh3-5.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:99297f207db967814f1f02135bb7fe7628b9eacb046134a34e1015b26b06edce", size = 100177, upload_time = "2025-01-25T08:38:18.186Z" }, - { url = "https://files.pythonhosted.org/packages/6f/1d/2efc3525fe6fdf8865972fcbb884bd1f4b0f923c19b80891cecf7e239fa5/mmh3-5.1.0-cp310-cp310-win32.whl", hash = "sha256:2e6c8dc3631a5e22007fbdb55e993b2dbce7985c14b25b572dd78403c2e79182", size = 40815, upload_time = "2025-01-25T08:38:19.176Z" }, - { url = "https://files.pythonhosted.org/packages/38/b5/c8fbe707cb0fea77a6d2d58d497bc9b67aff80deb84d20feb34d8fdd8671/mmh3-5.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:e4e8c7ad5a4dddcfde35fd28ef96744c1ee0f9d9570108aa5f7e77cf9cfdf0bf", size = 41479, upload_time = "2025-01-25T08:38:21.098Z" }, - { url = "https://files.pythonhosted.org/packages/a1/f1/663e16134f913fccfbcea5b300fb7dc1860d8f63dc71867b013eebc10aec/mmh3-5.1.0-cp310-cp310-win_arm64.whl", hash = "sha256:45da549269883208912868a07d0364e1418d8292c4259ca11699ba1b2475bd26", size = 38883, upload_time = "2025-01-25T08:38:22.013Z" }, - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload_time = "2025-01-25T08:38:22.917Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload_time = "2025-01-25T08:38:25.079Z" }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload_time = "2025-01-25T08:38:25.947Z" }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload_time = "2025-01-25T08:38:26.939Z" }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload_time = "2025-01-25T08:38:29.159Z" }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload_time = "2025-01-25T08:38:33.04Z" }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload_time = "2025-01-25T08:38:34.987Z" }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload_time = "2025-01-25T08:38:35.983Z" }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload_time = "2025-01-25T08:38:38.198Z" }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload_time = "2025-01-25T08:38:39.257Z" }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload_time = "2025-01-25T08:38:40.395Z" }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload_time = "2025-01-25T08:38:42.141Z" }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload_time = "2025-01-25T08:38:43.402Z" }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload_time = "2025-01-25T08:38:45.143Z" }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload_time = "2025-01-25T08:38:46.029Z" }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload_time = "2025-01-25T08:38:47.035Z" }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload_time = "2025-01-25T08:38:47.902Z" }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload_time = "2025-01-25T08:38:48.839Z" }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload_time = "2025-01-25T08:38:49.773Z" }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload_time = "2025-01-25T08:38:51.5Z" }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload_time = "2025-01-25T08:38:52.542Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload_time = "2025-01-25T08:38:54.286Z" }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload_time = "2025-01-25T08:38:55.576Z" }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload_time = "2025-01-25T08:38:56.654Z" }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload_time = "2025-01-25T08:38:57.662Z" }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload_time = "2025-01-25T08:38:59.505Z" }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload_time = "2025-01-25T08:39:00.483Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload_time = "2025-01-25T08:39:01.484Z" }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload_time = "2025-01-25T08:39:02.444Z" }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload_time = "2025-01-25T08:39:03.369Z" }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload_time = "2025-01-25T08:39:04.284Z" }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload_time = "2025-01-25T08:39:05.174Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, ] [[package]] name = "multidict" version = "6.4.3" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372, upload_time = "2025-04-10T22:20:17.956Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/44/45e798d4cd1b5dfe41ddf36266c7aca6d954e3c7a8b0d599ad555ce2b4f8/multidict-6.4.3-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:32a998bd8a64ca48616eac5a8c1cc4fa38fb244a3facf2eeb14abe186e0f6cc5", size = 65822, upload_time = "2025-04-10T22:17:32.83Z" }, - { url = "https://files.pythonhosted.org/packages/10/fb/9ea024f928503f8c758f8463759d21958bf27b1f7a1103df73e5022e6a7c/multidict-6.4.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:a54ec568f1fc7f3c313c2f3b16e5db346bf3660e1309746e7fccbbfded856188", size = 38706, upload_time = "2025-04-10T22:17:35.028Z" }, - { url = "https://files.pythonhosted.org/packages/6d/eb/7013316febca37414c0e1469fccadcb1a0e4315488f8f57ca5d29b384863/multidict-6.4.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:a7be07e5df178430621c716a63151165684d3e9958f2bbfcb644246162007ab7", size = 37979, upload_time = "2025-04-10T22:17:36.626Z" }, - { url = "https://files.pythonhosted.org/packages/64/28/5a7bf4e7422613ea80f9ebc529d3845b20a422cfa94d4355504ac98047ee/multidict-6.4.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b128dbf1c939674a50dd0b28f12c244d90e5015e751a4f339a96c54f7275e291", size = 220233, upload_time = "2025-04-10T22:17:37.807Z" }, - { url = "https://files.pythonhosted.org/packages/52/05/b4c58850f71befde6a16548968b48331a155a80627750b150bb5962e4dea/multidict-6.4.3-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9cb19dfd83d35b6ff24a4022376ea6e45a2beba8ef3f0836b8a4b288b6ad685", size = 217762, upload_time = "2025-04-10T22:17:39.493Z" }, - { url = "https://files.pythonhosted.org/packages/99/a3/393e23bba1e9a00f95b3957acd8f5e3ee3446e78c550f593be25f9de0483/multidict-6.4.3-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3cf62f8e447ea2c1395afa289b332e49e13d07435369b6f4e41f887db65b40bf", size = 230699, upload_time = "2025-04-10T22:17:41.207Z" }, - { url = "https://files.pythonhosted.org/packages/9c/a7/52c63069eb1a079f824257bb8045d93e692fa2eb34d08323d1fdbdfc398a/multidict-6.4.3-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:909f7d43ff8f13d1adccb6a397094adc369d4da794407f8dd592c51cf0eae4b1", size = 226801, upload_time = "2025-04-10T22:17:42.62Z" }, - { url = "https://files.pythonhosted.org/packages/2c/e9/40d2b73e7d6574d91074d83477a990e3701affbe8b596010d4f5e6c7a6fa/multidict-6.4.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0bb8f8302fbc7122033df959e25777b0b7659b1fd6bcb9cb6bed76b5de67afef", size = 219833, upload_time = "2025-04-10T22:17:44.046Z" }, - { url = "https://files.pythonhosted.org/packages/e4/6a/0572b22fe63c632254f55a1c1cb7d29f644002b1d8731d6103a290edc754/multidict-6.4.3-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:224b79471b4f21169ea25ebc37ed6f058040c578e50ade532e2066562597b8a9", size = 212920, upload_time = "2025-04-10T22:17:45.48Z" }, - { url = "https://files.pythonhosted.org/packages/33/fe/c63735db9dece0053868b2d808bcc2592a83ce1830bc98243852a2b34d42/multidict-6.4.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:a7bd27f7ab3204f16967a6f899b3e8e9eb3362c0ab91f2ee659e0345445e0078", size = 225263, upload_time = "2025-04-10T22:17:47.203Z" }, - { url = "https://files.pythonhosted.org/packages/47/c2/2db296d64d41525110c27ed38fadd5eb571c6b936233e75a5ea61b14e337/multidict-6.4.3-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:99592bd3162e9c664671fd14e578a33bfdba487ea64bcb41d281286d3c870ad7", size = 214249, upload_time = "2025-04-10T22:17:48.95Z" }, - { url = "https://files.pythonhosted.org/packages/7e/74/8bc26e54c79f9a0f111350b1b28a9cacaaee53ecafccd53c90e59754d55a/multidict-6.4.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a62d78a1c9072949018cdb05d3c533924ef8ac9bcb06cbf96f6d14772c5cd451", size = 221650, upload_time = "2025-04-10T22:17:50.265Z" }, - { url = "https://files.pythonhosted.org/packages/af/d7/2ce87606e3799d9a08a941f4c170930a9895886ea8bd0eca75c44baeebe3/multidict-6.4.3-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:3ccdde001578347e877ca4f629450973c510e88e8865d5aefbcb89b852ccc666", size = 231235, upload_time = "2025-04-10T22:17:51.579Z" }, - { url = "https://files.pythonhosted.org/packages/07/e1/d191a7ad3b90c613fc4b130d07a41c380e249767586148709b54d006ca17/multidict-6.4.3-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:eccb67b0e78aa2e38a04c5ecc13bab325a43e5159a181a9d1a6723db913cbb3c", size = 226056, upload_time = "2025-04-10T22:17:53.092Z" }, - { url = "https://files.pythonhosted.org/packages/24/05/a57490cf6a8d5854f4af2d17dfc54924f37fbb683986e133b76710a36079/multidict-6.4.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8b6fcf6054fc4114a27aa865f8840ef3d675f9316e81868e0ad5866184a6cba5", size = 220014, upload_time = "2025-04-10T22:17:54.729Z" }, - { url = "https://files.pythonhosted.org/packages/5c/b1/be04fa9f08c684e9e27cca85b4ab94c10f017ec07c4c631af9c8c10bb275/multidict-6.4.3-cp310-cp310-win32.whl", hash = "sha256:f92c7f62d59373cd93bc9969d2da9b4b21f78283b1379ba012f7ee8127b3152e", size = 35042, upload_time = "2025-04-10T22:17:56.615Z" }, - { url = "https://files.pythonhosted.org/packages/d9/ca/8888f99892513001fa900eef11bafbf38ff3485109510487de009da85748/multidict-6.4.3-cp310-cp310-win_amd64.whl", hash = "sha256:b57e28dbc031d13916b946719f213c494a517b442d7b48b29443e79610acd887", size = 38506, upload_time = "2025-04-10T22:17:58.119Z" }, - { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259, upload_time = "2025-04-10T22:17:59.632Z" }, - { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451, upload_time = "2025-04-10T22:18:01.202Z" }, - { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706, upload_time = "2025-04-10T22:18:02.276Z" }, - { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669, upload_time = "2025-04-10T22:18:03.436Z" }, - { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182, upload_time = "2025-04-10T22:18:04.922Z" }, - { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025, upload_time = "2025-04-10T22:18:06.274Z" }, - { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481, upload_time = "2025-04-10T22:18:07.742Z" }, - { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492, upload_time = "2025-04-10T22:18:09.095Z" }, - { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279, upload_time = "2025-04-10T22:18:10.474Z" }, - { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733, upload_time = "2025-04-10T22:18:11.793Z" }, - { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089, upload_time = "2025-04-10T22:18:13.153Z" }, - { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257, upload_time = "2025-04-10T22:18:14.654Z" }, - { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728, upload_time = "2025-04-10T22:18:16.236Z" }, - { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087, upload_time = "2025-04-10T22:18:17.979Z" }, - { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137, upload_time = "2025-04-10T22:18:19.362Z" }, - { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959, upload_time = "2025-04-10T22:18:20.728Z" }, - { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541, upload_time = "2025-04-10T22:18:22.001Z" }, - { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019, upload_time = "2025-04-10T22:18:23.174Z" }, - { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925, upload_time = "2025-04-10T22:18:24.834Z" }, - { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008, upload_time = "2025-04-10T22:18:26.069Z" }, - { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374, upload_time = "2025-04-10T22:18:27.714Z" }, - { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869, upload_time = "2025-04-10T22:18:29.162Z" }, - { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949, upload_time = "2025-04-10T22:18:30.679Z" }, - { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032, upload_time = "2025-04-10T22:18:32.146Z" }, - { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517, upload_time = "2025-04-10T22:18:33.538Z" }, - { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291, upload_time = "2025-04-10T22:18:34.962Z" }, - { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982, upload_time = "2025-04-10T22:18:36.443Z" }, - { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823, upload_time = "2025-04-10T22:18:37.924Z" }, - { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714, upload_time = "2025-04-10T22:18:39.807Z" }, - { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739, upload_time = "2025-04-10T22:18:41.341Z" }, - { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809, upload_time = "2025-04-10T22:18:42.817Z" }, - { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934, upload_time = "2025-04-10T22:18:44.311Z" }, - { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242, upload_time = "2025-04-10T22:18:46.193Z" }, - { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635, upload_time = "2025-04-10T22:18:47.498Z" }, - { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400, upload_time = "2025-04-10T22:20:16.445Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259 }, + { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451 }, + { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706 }, + { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669 }, + { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182 }, + { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025 }, + { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481 }, + { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492 }, + { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279 }, + { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733 }, + { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089 }, + { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257 }, + { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728 }, + { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087 }, + { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137 }, + { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959 }, + { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541 }, + { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019 }, + { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925 }, + { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008 }, + { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374 }, + { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869 }, + { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949 }, + { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032 }, + { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517 }, + { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291 }, + { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982 }, + { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823 }, + { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714 }, + { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739 }, + { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809 }, + { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, + { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, + { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, + { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, ] [[package]] @@ -1963,39 +1884,32 @@ version = "1.15.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mypy-extensions" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload_time = "2025-02-05T03:50:34.655Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/f8/65a7ce8d0e09b6329ad0c8d40330d100ea343bd4dd04c4f8ae26462d0a17/mypy-1.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:979e4e1a006511dacf628e36fadfecbcc0160a8af6ca7dad2f5025529e082c13", size = 10738433, upload_time = "2025-02-05T03:49:29.145Z" }, - { url = "https://files.pythonhosted.org/packages/b4/95/9c0ecb8eacfe048583706249439ff52105b3f552ea9c4024166c03224270/mypy-1.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c4bb0e1bd29f7d34efcccd71cf733580191e9a264a2202b0239da95984c5b559", size = 9861472, upload_time = "2025-02-05T03:49:16.986Z" }, - { url = "https://files.pythonhosted.org/packages/84/09/9ec95e982e282e20c0d5407bc65031dfd0f0f8ecc66b69538296e06fcbee/mypy-1.15.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:be68172e9fd9ad8fb876c6389f16d1c1b5f100ffa779f77b1fb2176fcc9ab95b", size = 11611424, upload_time = "2025-02-05T03:49:46.908Z" }, - { url = "https://files.pythonhosted.org/packages/78/13/f7d14e55865036a1e6a0a69580c240f43bc1f37407fe9235c0d4ef25ffb0/mypy-1.15.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c7be1e46525adfa0d97681432ee9fcd61a3964c2446795714699a998d193f1a3", size = 12365450, upload_time = "2025-02-05T03:50:05.89Z" }, - { url = "https://files.pythonhosted.org/packages/48/e1/301a73852d40c241e915ac6d7bcd7fedd47d519246db2d7b86b9d7e7a0cb/mypy-1.15.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:2e2c2e6d3593f6451b18588848e66260ff62ccca522dd231cd4dd59b0160668b", size = 12551765, upload_time = "2025-02-05T03:49:33.56Z" }, - { url = "https://files.pythonhosted.org/packages/77/ba/c37bc323ae5fe7f3f15a28e06ab012cd0b7552886118943e90b15af31195/mypy-1.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:6983aae8b2f653e098edb77f893f7b6aca69f6cffb19b2cc7443f23cce5f4828", size = 9274701, upload_time = "2025-02-05T03:49:38.981Z" }, - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload_time = "2025-02-05T03:50:17.287Z" }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload_time = "2025-02-05T03:49:51.21Z" }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload_time = "2025-02-05T03:50:20.885Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload_time = "2025-02-05T03:49:42.408Z" }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload_time = "2025-02-05T03:49:07.707Z" }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload_time = "2025-02-05T03:49:54.581Z" }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload_time = "2025-02-05T03:50:28.25Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload_time = "2025-02-05T03:50:13.411Z" }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload_time = "2025-02-05T03:50:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload_time = "2025-02-05T03:48:48.705Z" }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload_time = "2025-02-05T03:49:03.628Z" }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload_time = "2025-02-05T03:50:00.313Z" }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload_time = "2025-02-05T03:50:08.348Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload_time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload_time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, ] [[package]] @@ -2008,9 +1922,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload_time = "2024-12-19T10:32:27.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload_time = "2024-12-19T10:32:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, ] [[package]] @@ -2033,9 +1947,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload_time = "2025-01-28T09:29:14.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload_time = "2025-01-28T09:29:12.551Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, ] [[package]] @@ -2048,27 +1962,27 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload_time = "2024-04-04T11:20:37.371Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload_time = "2024-04-04T11:20:34.895Z" }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload_time = "2024-01-21T14:25:19.227Z" } +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, upload_time = "2024-01-21T14:25:17.223Z" }, + { 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 = "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, upload_time = "2024-06-04T18:44:11.171Z" } +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, upload_time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] [[package]] @@ -2078,73 +1992,96 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload_time = "2024-02-14T23:35:18.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, +] + +[[package]] +name = "numcodecs" +version = "0.16.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload_time = "2024-02-14T23:35:16.286Z" }, + { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, + { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, + { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, + { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, + { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, +] + +[package.optional-dependencies] +crc32c = [ + { name = "crc32c" }, ] [[package]] name = "numpy" -version = "1.26.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/6e/09db70a523a96d25e115e71cc56a6f9031e7b8cd166c1ac8438307c14058/numpy-1.26.4.tar.gz", hash = "sha256:2a02aba9ed12e4ac4eb3ea9421c420301a0c6460d9830d74a9df87efa4912010", size = 15786129, upload_time = "2024-02-06T00:26:44.495Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/94/ace0fdea5241a27d13543ee117cbc65868e82213fb31a8eb7fe9ff23f313/numpy-1.26.4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:9ff0f4f29c51e2803569d7a51c2304de5554655a60c5d776e35b4a41413830d0", size = 20631468, upload_time = "2024-02-05T23:48:01.194Z" }, - { url = "https://files.pythonhosted.org/packages/20/f7/b24208eba89f9d1b58c1668bc6c8c4fd472b20c45573cb767f59d49fb0f6/numpy-1.26.4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2e4ee3380d6de9c9ec04745830fd9e2eccb3e6cf790d39d7b98ffd19b0dd754a", size = 13966411, upload_time = "2024-02-05T23:48:29.038Z" }, - { url = "https://files.pythonhosted.org/packages/fc/a5/4beee6488160798683eed5bdb7eead455892c3b4e1f78d79d8d3f3b084ac/numpy-1.26.4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d209d8969599b27ad20994c8e41936ee0964e6da07478d6c35016bc386b66ad4", size = 14219016, upload_time = "2024-02-05T23:48:54.098Z" }, - { url = "https://files.pythonhosted.org/packages/4b/d7/ecf66c1cd12dc28b4040b15ab4d17b773b87fa9d29ca16125de01adb36cd/numpy-1.26.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ffa75af20b44f8dba823498024771d5ac50620e6915abac414251bd971b4529f", size = 18240889, upload_time = "2024-02-05T23:49:25.361Z" }, - { url = "https://files.pythonhosted.org/packages/24/03/6f229fe3187546435c4f6f89f6d26c129d4f5bed40552899fcf1f0bf9e50/numpy-1.26.4-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:62b8e4b1e28009ef2846b4c7852046736bab361f7aeadeb6a5b89ebec3c7055a", size = 13876746, upload_time = "2024-02-05T23:49:51.983Z" }, - { url = "https://files.pythonhosted.org/packages/39/fe/39ada9b094f01f5a35486577c848fe274e374bbf8d8f472e1423a0bbd26d/numpy-1.26.4-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:a4abb4f9001ad2858e7ac189089c42178fcce737e4169dc61321660f1a96c7d2", size = 18078620, upload_time = "2024-02-05T23:50:22.515Z" }, - { url = "https://files.pythonhosted.org/packages/d5/ef/6ad11d51197aad206a9ad2286dc1aac6a378059e06e8cf22cd08ed4f20dc/numpy-1.26.4-cp310-cp310-win32.whl", hash = "sha256:bfe25acf8b437eb2a8b2d49d443800a5f18508cd811fea3181723922a8a82b07", size = 5972659, upload_time = "2024-02-05T23:50:35.834Z" }, - { url = "https://files.pythonhosted.org/packages/19/77/538f202862b9183f54108557bfda67e17603fc560c384559e769321c9d92/numpy-1.26.4-cp310-cp310-win_amd64.whl", hash = "sha256:b97fe8060236edf3662adfc2c633f56a08ae30560c56310562cb4f95500022d5", size = 15808905, upload_time = "2024-02-05T23:51:03.701Z" }, - { url = "https://files.pythonhosted.org/packages/11/57/baae43d14fe163fa0e4c47f307b6b2511ab8d7d30177c491960504252053/numpy-1.26.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4c66707fabe114439db9068ee468c26bbdf909cac0fb58686a42a24de1760c71", size = 20630554, upload_time = "2024-02-05T23:51:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/1a/2e/151484f49fd03944c4a3ad9c418ed193cfd02724e138ac8a9505d056c582/numpy-1.26.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:edd8b5fe47dab091176d21bb6de568acdd906d1887a4584a15a9a96a1dca06ef", size = 13997127, upload_time = "2024-02-05T23:52:15.314Z" }, - { url = "https://files.pythonhosted.org/packages/79/ae/7e5b85136806f9dadf4878bf73cf223fe5c2636818ba3ab1c585d0403164/numpy-1.26.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7ab55401287bfec946ced39700c053796e7cc0e3acbef09993a9ad2adba6ca6e", size = 14222994, upload_time = "2024-02-05T23:52:47.569Z" }, - { url = "https://files.pythonhosted.org/packages/3a/d0/edc009c27b406c4f9cbc79274d6e46d634d139075492ad055e3d68445925/numpy-1.26.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:666dbfb6ec68962c033a450943ded891bed2d54e6755e35e5835d63f4f6931d5", size = 18252005, upload_time = "2024-02-05T23:53:15.637Z" }, - { url = "https://files.pythonhosted.org/packages/09/bf/2b1aaf8f525f2923ff6cfcf134ae5e750e279ac65ebf386c75a0cf6da06a/numpy-1.26.4-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:96ff0b2ad353d8f990b63294c8986f1ec3cb19d749234014f4e7eb0112ceba5a", size = 13885297, upload_time = "2024-02-05T23:53:42.16Z" }, - { url = "https://files.pythonhosted.org/packages/df/a0/4e0f14d847cfc2a633a1c8621d00724f3206cfeddeb66d35698c4e2cf3d2/numpy-1.26.4-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:60dedbb91afcbfdc9bc0b1f3f402804070deed7392c23eb7a7f07fa857868e8a", size = 18093567, upload_time = "2024-02-05T23:54:11.696Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b7/a734c733286e10a7f1a8ad1ae8c90f2d33bf604a96548e0a4a3a6739b468/numpy-1.26.4-cp311-cp311-win32.whl", hash = "sha256:1af303d6b2210eb850fcf03064d364652b7120803a0b872f5211f5234b399f20", size = 5968812, upload_time = "2024-02-05T23:54:26.453Z" }, - { url = "https://files.pythonhosted.org/packages/3f/6b/5610004206cf7f8e7ad91c5a85a8c71b2f2f8051a0c0c4d5916b76d6cbb2/numpy-1.26.4-cp311-cp311-win_amd64.whl", hash = "sha256:cd25bcecc4974d09257ffcd1f098ee778f7834c3ad767fe5db785be9a4aa9cb2", size = 15811913, upload_time = "2024-02-05T23:54:53.933Z" }, - { url = "https://files.pythonhosted.org/packages/95/12/8f2020a8e8b8383ac0177dc9570aad031a3beb12e38847f7129bacd96228/numpy-1.26.4-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b3ce300f3644fb06443ee2222c2201dd3a89ea6040541412b8fa189341847218", size = 20335901, upload_time = "2024-02-05T23:55:32.801Z" }, - { url = "https://files.pythonhosted.org/packages/75/5b/ca6c8bd14007e5ca171c7c03102d17b4f4e0ceb53957e8c44343a9546dcc/numpy-1.26.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:03a8c78d01d9781b28a6989f6fa1bb2c4f2d51201cf99d3dd875df6fbd96b23b", size = 13685868, upload_time = "2024-02-05T23:55:56.28Z" }, - { url = "https://files.pythonhosted.org/packages/79/f8/97f10e6755e2a7d027ca783f63044d5b1bc1ae7acb12afe6a9b4286eac17/numpy-1.26.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9fad7dcb1aac3c7f0584a5a8133e3a43eeb2fe127f47e3632d43d677c66c102b", size = 13925109, upload_time = "2024-02-05T23:56:20.368Z" }, - { url = "https://files.pythonhosted.org/packages/0f/50/de23fde84e45f5c4fda2488c759b69990fd4512387a8632860f3ac9cd225/numpy-1.26.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:675d61ffbfa78604709862923189bad94014bef562cc35cf61d3a07bba02a7ed", size = 17950613, upload_time = "2024-02-05T23:56:56.054Z" }, - { url = "https://files.pythonhosted.org/packages/4c/0c/9c603826b6465e82591e05ca230dfc13376da512b25ccd0894709b054ed0/numpy-1.26.4-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:ab47dbe5cc8210f55aa58e4805fe224dac469cde56b9f731a4c098b91917159a", size = 13572172, upload_time = "2024-02-05T23:57:21.56Z" }, - { url = "https://files.pythonhosted.org/packages/76/8c/2ba3902e1a0fc1c74962ea9bb33a534bb05984ad7ff9515bf8d07527cadd/numpy-1.26.4-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:1dda2e7b4ec9dd512f84935c5f126c8bd8b9f2fc001e9f54af255e8c5f16b0e0", size = 17786643, upload_time = "2024-02-05T23:57:56.585Z" }, - { url = "https://files.pythonhosted.org/packages/28/4a/46d9e65106879492374999e76eb85f87b15328e06bd1550668f79f7b18c6/numpy-1.26.4-cp312-cp312-win32.whl", hash = "sha256:50193e430acfc1346175fcbdaa28ffec49947a06918b7b92130744e81e640110", size = 5677803, upload_time = "2024-02-05T23:58:08.963Z" }, - { url = "https://files.pythonhosted.org/packages/16/2e/86f24451c2d530c88daf997cb8d6ac622c1d40d19f5a031ed68a4b73a374/numpy-1.26.4-cp312-cp312-win_amd64.whl", hash = "sha256:08beddf13648eb95f8d867350f6a018a4be2e5ad54c8d8caed89ebca558b2818", size = 15517754, upload_time = "2024-02-05T23:58:36.364Z" }, +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload_time = "2024-01-27T21:01:33.423Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload_time = "2024-01-27T21:01:31.393Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload_time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload_time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload_time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload_time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] [[package]] name = "pandas" -version = "2.2.0" +version = "2.2.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -2152,56 +2089,49 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/d2/6fb05f20ee1b3961c7b283c1f8bafc6de752155d075c5db61c173de0de62/pandas-2.2.0.tar.gz", hash = "sha256:30b83f7c3eb217fb4d1b494a57a2fda5444f17834f5df2de6b2ffff68dc3c8e2", size = 4390211, upload_time = "2024-01-20T02:53:59.362Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/8a/76a32ba459b4c376cc3780dca0f600bbbb63b3610249a068f7eb20991ee3/pandas-2.2.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:8108ee1712bb4fa2c16981fba7e68b3f6ea330277f5ca34fa8d557e986a11670", size = 12504200, upload_time = "2024-01-20T02:10:54.053Z" }, - { url = "https://files.pythonhosted.org/packages/6f/3a/597311df6d41940e45ecc820edeae2e720c2077118dbb18038453986e16e/pandas-2.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:736da9ad4033aeab51d067fc3bd69a0ba36f5a60f66a527b3d72e2030e63280a", size = 11759337, upload_time = "2024-01-20T02:12:14.988Z" }, - { url = "https://files.pythonhosted.org/packages/f8/26/79051bd18491263498f4c15b55ec80ba587f7fdf5c1472e6c9cd025ab6f5/pandas-2.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:38e0b4fc3ddceb56ec8a287313bc22abe17ab0eb184069f08fc6a9352a769b18", size = 15617667, upload_time = "2024-01-20T02:13:51.658Z" }, - { url = "https://files.pythonhosted.org/packages/b3/b3/3102c3a4abca1093e50cfec2213102a1c65c0b318a4431395d0121e6e690/pandas-2.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:20404d2adefe92aed3b38da41d0847a143a09be982a31b85bc7dd565bdba0f4e", size = 13010773, upload_time = "2024-01-20T02:19:14.193Z" }, - { url = "https://files.pythonhosted.org/packages/61/4b/397ca9bcf2a9ec514360ae7fd9ab495c46de25055ecb37e518c088213ddb/pandas-2.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:7ea3ee3f125032bfcade3a4cf85131ed064b4f8dd23e5ce6fa16473e48ebcaf5", size = 16275166, upload_time = "2024-01-20T02:20:05.252Z" }, - { url = "https://files.pythonhosted.org/packages/24/1c/b6a4addfc3f04f4c36acfa74646601cf52160f8cf51fb2735c838889db1e/pandas-2.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f9670b3ac00a387620489dfc1bca66db47a787f4e55911f1293063a78b108df1", size = 13884784, upload_time = "2024-01-20T02:20:47.22Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f2/d079f4785d326e3868f4232108e622a307c2676023a274d9be2754dafc2a/pandas-2.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:5a946f210383c7e6d16312d30b238fd508d80d927014f3b33fb5b15c2f895430", size = 11566707, upload_time = "2024-01-20T02:21:37Z" }, - { url = "https://files.pythonhosted.org/packages/ac/6b/11c0e4f5dec878a5eca77aa3b24215c49d2eda8d2cfd654a3f03a9f9d33a/pandas-2.2.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a1b438fa26b208005c997e78672f1aa8138f67002e833312e6230f3e57fa87d5", size = 12523742, upload_time = "2024-01-20T02:22:38.859Z" }, - { url = "https://files.pythonhosted.org/packages/6f/4e/63e6b79132e854a67df3d37a5c8560e45c79e2504fa57e032c1d61abb090/pandas-2.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8ce2fbc8d9bf303ce54a476116165220a1fedf15985b09656b4b4275300e920b", size = 11767486, upload_time = "2024-01-20T02:23:53.875Z" }, - { url = "https://files.pythonhosted.org/packages/30/24/ec0412ad5297d22ad06732325cc222d10397d831b567e2b8e04cd4eda7cd/pandas-2.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2707514a7bec41a4ab81f2ccce8b382961a29fbe9492eab1305bb075b2b1ff4f", size = 15588196, upload_time = "2024-01-20T02:25:40.451Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/9fd11ba8e86a8add8f2ff4e11c7111f65ec6fd1b547222160bb969e2bf5e/pandas-2.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85793cbdc2d5bc32620dc8ffa715423f0c680dacacf55056ba13454a5be5de88", size = 13043435, upload_time = "2024-01-20T02:26:52.137Z" }, - { url = "https://files.pythonhosted.org/packages/31/7f/017592099d0257847f9d8a706154a7d70689390cbcc5b58599a8a2a48fd6/pandas-2.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:cfd6c2491dc821b10c716ad6776e7ab311f7df5d16038d0b7458bc0b67dc10f3", size = 16240135, upload_time = "2024-01-20T02:28:49.574Z" }, - { url = "https://files.pythonhosted.org/packages/c2/80/7465d8f2ca5837a2eb448de7942c19c52eaf5bc9c024926c2ea709c9c316/pandas-2.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:a146b9dcacc3123aa2b399df1a284de5f46287a4ab4fbfc237eac98a92ebcb71", size = 13888619, upload_time = "2024-01-20T02:30:16.495Z" }, - { url = "https://files.pythonhosted.org/packages/77/62/8e11962934e024a093758992bc82711e3e30efd5ea355cbfdc6e1ab5de76/pandas-2.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:fbc1b53c0e1fdf16388c33c3cca160f798d38aea2978004dd3f4d3dec56454c9", size = 11583716, upload_time = "2024-01-20T02:31:29.385Z" }, - { url = "https://files.pythonhosted.org/packages/e1/1e/d708cda584a2d70e6d3c930d102d07ee3d65bec3b2861f416b086cc518a8/pandas-2.2.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:a41d06f308a024981dcaa6c41f2f2be46a6b186b902c94c2674e8cb5c42985bc", size = 12458750, upload_time = "2024-01-20T02:32:52.457Z" }, - { url = "https://files.pythonhosted.org/packages/72/33/e873f8bdeac9a954f93f33fb6fbdf3ded68e0096b154008855616559c64c/pandas-2.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:159205c99d7a5ce89ecfc37cb08ed179de7783737cea403b295b5eda8e9c56d1", size = 11740624, upload_time = "2024-01-20T02:34:19.823Z" }, - { url = "https://files.pythonhosted.org/packages/65/f9/1ff0f7dac2493f2c3a86cdb6106de8a7a6da75735f27e1c6a106b3d26e6e/pandas-2.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:eb1e1f3861ea9132b32f2133788f3b14911b68102d562715d71bd0013bc45440", size = 15185059, upload_time = "2024-01-20T02:36:02.958Z" }, - { url = "https://files.pythonhosted.org/packages/b2/a5/7f14d11f5bb3ca5681f6827616ccfbb03ec9504322674e4f962a5e9e404b/pandas-2.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:761cb99b42a69005dec2b08854fb1d4888fdf7b05db23a8c5a099e4b886a2106", size = 12723033, upload_time = "2024-01-20T02:37:40.503Z" }, - { url = "https://files.pythonhosted.org/packages/dc/68/b42aea61273d47dbac1ba465739c90310e55081be4a33a0d44022194fb0a/pandas-2.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:a20628faaf444da122b2a64b1e5360cde100ee6283ae8effa0d8745153809a2e", size = 15855969, upload_time = "2024-01-20T02:39:34.036Z" }, - { url = "https://files.pythonhosted.org/packages/dc/c3/0df8f14482f9edee3d23b55edfb1c9d94376e78e4a815e0b2f7cf2776fe7/pandas-2.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:f5be5d03ea2073627e7111f61b9f1f0d9625dc3c4d8dda72cc827b0c58a1d042", size = 13381916, upload_time = "2024-01-20T02:40:57.612Z" }, - { url = "https://files.pythonhosted.org/packages/87/03/fe50521919aa981f6a1c197037da4623a267b0e5f42246d69ba048e86da3/pandas-2.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:a626795722d893ed6aacb64d2401d017ddc8a2341b49e0384ab9bf7112bdec30", size = 11464015, upload_time = "2024-01-20T02:42:13.686Z" }, +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 }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload_time = "2024-01-18T20:08:13.726Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload_time = "2024-01-18T20:08:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, ] [[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, upload_time = "2024-04-05T09:43:55.897Z" } +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, upload_time = "2024-04-05T09:43:53.299Z" }, + { 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 = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload_time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload_time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] @@ -2211,82 +2141,64 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload_time = "2023-11-25T09:07:26.339Z" } +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, upload_time = "2023-11-25T06:56:14.81Z" }, + { 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.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload_time = "2025-04-12T17:50:03.289Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0d/8b/b158ad57ed44d3cc54db8d68ad7c0a58b8fc0e4c7a3f995f9d62d5b464a1/pillow-11.2.1-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:d57a75d53922fc20c165016a20d9c44f73305e67c351bbc60d1adaf662e74047", size = 3198442, upload_time = "2025-04-12T17:47:10.666Z" }, - { url = "https://files.pythonhosted.org/packages/b1/f8/bb5d956142f86c2d6cc36704943fa761f2d2e4c48b7436fd0a85c20f1713/pillow-11.2.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:127bf6ac4a5b58b3d32fc8289656f77f80567d65660bc46f72c0d77e6600cc95", size = 3030553, upload_time = "2025-04-12T17:47:13.153Z" }, - { url = "https://files.pythonhosted.org/packages/22/7f/0e413bb3e2aa797b9ca2c5c38cb2e2e45d88654e5b12da91ad446964cfae/pillow-11.2.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b4ba4be812c7a40280629e55ae0b14a0aafa150dd6451297562e1764808bbe61", size = 4405503, upload_time = "2025-04-12T17:47:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/f3/b4/cc647f4d13f3eb837d3065824aa58b9bcf10821f029dc79955ee43f793bd/pillow-11.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8bd62331e5032bc396a93609982a9ab6b411c05078a52f5fe3cc59234a3abd1", size = 4490648, upload_time = "2025-04-12T17:47:17.37Z" }, - { url = "https://files.pythonhosted.org/packages/c2/6f/240b772a3b35cdd7384166461567aa6713799b4e78d180c555bd284844ea/pillow-11.2.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:562d11134c97a62fe3af29581f083033179f7ff435f78392565a1ad2d1c2c45c", size = 4508937, upload_time = "2025-04-12T17:47:19.066Z" }, - { url = "https://files.pythonhosted.org/packages/f3/5e/7ca9c815ade5fdca18853db86d812f2f188212792780208bdb37a0a6aef4/pillow-11.2.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:c97209e85b5be259994eb5b69ff50c5d20cca0f458ef9abd835e262d9d88b39d", size = 4599802, upload_time = "2025-04-12T17:47:21.404Z" }, - { url = "https://files.pythonhosted.org/packages/02/81/c3d9d38ce0c4878a77245d4cf2c46d45a4ad0f93000227910a46caff52f3/pillow-11.2.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:0c3e6d0f59171dfa2e25d7116217543310908dfa2770aa64b8f87605f8cacc97", size = 4576717, upload_time = "2025-04-12T17:47:23.571Z" }, - { url = "https://files.pythonhosted.org/packages/42/49/52b719b89ac7da3185b8d29c94d0e6aec8140059e3d8adcaa46da3751180/pillow-11.2.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc1c3bc53befb6096b84165956e886b1729634a799e9d6329a0c512ab651e579", size = 4654874, upload_time = "2025-04-12T17:47:25.783Z" }, - { url = "https://files.pythonhosted.org/packages/5b/0b/ede75063ba6023798267023dc0d0401f13695d228194d2242d5a7ba2f964/pillow-11.2.1-cp310-cp310-win32.whl", hash = "sha256:312c77b7f07ab2139924d2639860e084ec2a13e72af54d4f08ac843a5fc9c79d", size = 2331717, upload_time = "2025-04-12T17:47:28.922Z" }, - { url = "https://files.pythonhosted.org/packages/ed/3c/9831da3edea527c2ed9a09f31a2c04e77cd705847f13b69ca60269eec370/pillow-11.2.1-cp310-cp310-win_amd64.whl", hash = "sha256:9bc7ae48b8057a611e5fe9f853baa88093b9a76303937449397899385da06fad", size = 2676204, upload_time = "2025-04-12T17:47:31.283Z" }, - { url = "https://files.pythonhosted.org/packages/01/97/1f66ff8a1503d8cbfc5bae4dc99d54c6ec1e22ad2b946241365320caabc2/pillow-11.2.1-cp310-cp310-win_arm64.whl", hash = "sha256:2728567e249cdd939f6cc3d1f049595c66e4187f3c34078cbc0a7d21c47482d2", size = 2414767, upload_time = "2025-04-12T17:47:34.655Z" }, - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload_time = "2025-04-12T17:47:37.135Z" }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload_time = "2025-04-12T17:47:39.345Z" }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload_time = "2025-04-12T17:47:41.128Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload_time = "2025-04-12T17:47:42.912Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload_time = "2025-04-12T17:47:44.611Z" }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload_time = "2025-04-12T17:47:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload_time = "2025-04-12T17:47:49.255Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload_time = "2025-04-12T17:47:51.067Z" }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload_time = "2025-04-12T17:47:54.425Z" }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload_time = "2025-04-12T17:47:56.535Z" }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload_time = "2025-04-12T17:47:58.217Z" }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload_time = "2025-04-12T17:48:00.417Z" }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload_time = "2025-04-12T17:48:02.391Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload_time = "2025-04-12T17:48:04.554Z" }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload_time = "2025-04-12T17:48:06.831Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload_time = "2025-04-12T17:48:09.229Z" }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload_time = "2025-04-12T17:48:11.631Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload_time = "2025-04-12T17:48:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload_time = "2025-04-12T17:48:15.938Z" }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload_time = "2025-04-12T17:48:17.885Z" }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload_time = "2025-04-12T17:48:19.655Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload_time = "2025-04-12T17:48:21.991Z" }, - { url = "https://files.pythonhosted.org/packages/33/49/c8c21e4255b4f4a2c0c68ac18125d7f5460b109acc6dfdef1a24f9b960ef/pillow-11.2.1-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:9b7b0d4fd2635f54ad82785d56bc0d94f147096493a79985d0ab57aedd563156", size = 3181727, upload_time = "2025-04-12T17:49:31.898Z" }, - { url = "https://files.pythonhosted.org/packages/6d/f1/f7255c0838f8c1ef6d55b625cfb286835c17e8136ce4351c5577d02c443b/pillow-11.2.1-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:aa442755e31c64037aa7c1cb186e0b369f8416c567381852c63444dd666fb772", size = 2999833, upload_time = "2025-04-12T17:49:34.2Z" }, - { url = "https://files.pythonhosted.org/packages/e2/57/9968114457bd131063da98d87790d080366218f64fa2943b65ac6739abb3/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0d3348c95b766f54b76116d53d4cb171b52992a1027e7ca50c81b43b9d9e363", size = 3437472, upload_time = "2025-04-12T17:49:36.294Z" }, - { url = "https://files.pythonhosted.org/packages/b2/1b/e35d8a158e21372ecc48aac9c453518cfe23907bb82f950d6e1c72811eb0/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:85d27ea4c889342f7e35f6d56e7e1cb345632ad592e8c51b693d7b7556043ce0", size = 3459976, upload_time = "2025-04-12T17:49:38.988Z" }, - { url = "https://files.pythonhosted.org/packages/26/da/2c11d03b765efff0ccc473f1c4186dc2770110464f2177efaed9cf6fae01/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bf2c33d6791c598142f00c9c4c7d47f6476731c31081331664eb26d6ab583e01", size = 3527133, upload_time = "2025-04-12T17:49:40.985Z" }, - { url = "https://files.pythonhosted.org/packages/79/1a/4e85bd7cadf78412c2a3069249a09c32ef3323650fd3005c97cca7aa21df/pillow-11.2.1-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:e616e7154c37669fc1dfc14584f11e284e05d1c650e1c0f972f281c4ccc53193", size = 3571555, upload_time = "2025-04-12T17:49:42.964Z" }, - { url = "https://files.pythonhosted.org/packages/69/03/239939915216de1e95e0ce2334bf17a7870ae185eb390fab6d706aadbfc0/pillow-11.2.1-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:39ad2e0f424394e3aebc40168845fee52df1394a4673a6ee512d840d14ab3013", size = 2674713, upload_time = "2025-04-12T17:49:44.944Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload_time = "2025-04-12T17:49:46.789Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload_time = "2025-04-12T17:49:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload_time = "2025-04-12T17:49:50.831Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload_time = "2025-04-12T17:49:53.278Z" }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload_time = "2025-04-12T17:49:55.164Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload_time = "2025-04-12T17:49:57.171Z" }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload_time = "2025-04-12T17:49:59.628Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, ] [[package]] name = "platformdirs" version = "4.3.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291, upload_time = "2025-03-19T20:36:10.989Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499, upload_time = "2025-03-19T20:36:09.038Z" }, + { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, ] [[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, upload_time = "2024-04-20T21:34:42.531Z" } +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, upload_time = "2024-04-20T21:34:40.434Z" }, + { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, ] [[package]] @@ -2300,18 +2212,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload_time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload_time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, ] [[package]] name = "prometheus-client" version = "0.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551, upload_time = "2024-12-03T14:59:12.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682, upload_time = "2024-12-03T14:59:10.935Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, ] [[package]] @@ -2321,137 +2233,118 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload_time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload_time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload_time = "2025-03-26T03:06:12.05Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/56/e27c136101addf877c8291dbda1b3b86ae848f3837ce758510a0d806c92f/propcache-0.3.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f27785888d2fdd918bc36de8b8739f2d6c791399552333721b58193f68ea3e98", size = 80224, upload_time = "2025-03-26T03:03:35.81Z" }, - { url = "https://files.pythonhosted.org/packages/63/bd/88e98836544c4f04db97eefd23b037c2002fa173dd2772301c61cd3085f9/propcache-0.3.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d4e89cde74154c7b5957f87a355bb9c8ec929c167b59c83d90654ea36aeb6180", size = 46491, upload_time = "2025-03-26T03:03:38.107Z" }, - { url = "https://files.pythonhosted.org/packages/15/43/0b8eb2a55753c4a574fc0899885da504b521068d3b08ca56774cad0bea2b/propcache-0.3.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:730178f476ef03d3d4d255f0c9fa186cb1d13fd33ffe89d39f2cda4da90ceb71", size = 45927, upload_time = "2025-03-26T03:03:39.394Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6c/d01f9dfbbdc613305e0a831016844987a1fb4861dd221cd4c69b1216b43f/propcache-0.3.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967a8eec513dbe08330f10137eacb427b2ca52118769e82ebcfcab0fba92a649", size = 206135, upload_time = "2025-03-26T03:03:40.757Z" }, - { url = "https://files.pythonhosted.org/packages/9a/8a/e6e1c77394088f4cfdace4a91a7328e398ebed745d59c2f6764135c5342d/propcache-0.3.1-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5b9145c35cc87313b5fd480144f8078716007656093d23059e8993d3a8fa730f", size = 220517, upload_time = "2025-03-26T03:03:42.657Z" }, - { url = "https://files.pythonhosted.org/packages/19/3b/6c44fa59d6418f4239d5db8b1ece757351e85d6f3ca126dfe37d427020c8/propcache-0.3.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9e64e948ab41411958670f1093c0a57acfdc3bee5cf5b935671bbd5313bcf229", size = 218952, upload_time = "2025-03-26T03:03:44.549Z" }, - { url = "https://files.pythonhosted.org/packages/7c/e4/4aeb95a1cd085e0558ab0de95abfc5187329616193a1012a6c4c930e9f7a/propcache-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:319fa8765bfd6a265e5fa661547556da381e53274bc05094fc9ea50da51bfd46", size = 206593, upload_time = "2025-03-26T03:03:46.114Z" }, - { url = "https://files.pythonhosted.org/packages/da/6a/29fa75de1cbbb302f1e1d684009b969976ca603ee162282ae702287b6621/propcache-0.3.1-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c66d8ccbc902ad548312b96ed8d5d266d0d2c6d006fd0f66323e9d8f2dd49be7", size = 196745, upload_time = "2025-03-26T03:03:48.02Z" }, - { url = "https://files.pythonhosted.org/packages/19/7e/2237dad1dbffdd2162de470599fa1a1d55df493b16b71e5d25a0ac1c1543/propcache-0.3.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2d219b0dbabe75e15e581fc1ae796109b07c8ba7d25b9ae8d650da582bed01b0", size = 203369, upload_time = "2025-03-26T03:03:49.63Z" }, - { url = "https://files.pythonhosted.org/packages/a4/bc/a82c5878eb3afb5c88da86e2cf06e1fe78b7875b26198dbb70fe50a010dc/propcache-0.3.1-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:cd6a55f65241c551eb53f8cf4d2f4af33512c39da5d9777694e9d9c60872f519", size = 198723, upload_time = "2025-03-26T03:03:51.091Z" }, - { url = "https://files.pythonhosted.org/packages/17/76/9632254479c55516f51644ddbf747a45f813031af5adcb8db91c0b824375/propcache-0.3.1-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:9979643ffc69b799d50d3a7b72b5164a2e97e117009d7af6dfdd2ab906cb72cd", size = 200751, upload_time = "2025-03-26T03:03:52.631Z" }, - { url = "https://files.pythonhosted.org/packages/3e/c3/a90b773cf639bd01d12a9e20c95be0ae978a5a8abe6d2d343900ae76cd71/propcache-0.3.1-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:4cf9e93a81979f1424f1a3d155213dc928f1069d697e4353edb8a5eba67c6259", size = 210730, upload_time = "2025-03-26T03:03:54.498Z" }, - { url = "https://files.pythonhosted.org/packages/ed/ec/ad5a952cdb9d65c351f88db7c46957edd3d65ffeee72a2f18bd6341433e0/propcache-0.3.1-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:2fce1df66915909ff6c824bbb5eb403d2d15f98f1518e583074671a30fe0c21e", size = 213499, upload_time = "2025-03-26T03:03:56.054Z" }, - { url = "https://files.pythonhosted.org/packages/83/c0/ea5133dda43e298cd2010ec05c2821b391e10980e64ee72c0a76cdbb813a/propcache-0.3.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4d0dfdd9a2ebc77b869a0b04423591ea8823f791293b527dc1bb896c1d6f1136", size = 207132, upload_time = "2025-03-26T03:03:57.398Z" }, - { url = "https://files.pythonhosted.org/packages/79/dd/71aae9dec59333064cfdd7eb31a63fa09f64181b979802a67a90b2abfcba/propcache-0.3.1-cp310-cp310-win32.whl", hash = "sha256:1f6cc0ad7b4560e5637eb2c994e97b4fa41ba8226069c9277eb5ea7101845b42", size = 40952, upload_time = "2025-03-26T03:03:59.146Z" }, - { url = "https://files.pythonhosted.org/packages/31/0a/49ff7e5056c17dfba62cbdcbb90a29daffd199c52f8e65e5cb09d5f53a57/propcache-0.3.1-cp310-cp310-win_amd64.whl", hash = "sha256:47ef24aa6511e388e9894ec16f0fbf3313a53ee68402bc428744a367ec55b833", size = 45163, upload_time = "2025-03-26T03:04:00.672Z" }, - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload_time = "2025-03-26T03:04:01.912Z" }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload_time = "2025-03-26T03:04:03.704Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload_time = "2025-03-26T03:04:05.257Z" }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload_time = "2025-03-26T03:04:07.044Z" }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload_time = "2025-03-26T03:04:08.676Z" }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload_time = "2025-03-26T03:04:10.172Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload_time = "2025-03-26T03:04:11.616Z" }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload_time = "2025-03-26T03:04:13.102Z" }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload_time = "2025-03-26T03:04:14.658Z" }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload_time = "2025-03-26T03:04:16.207Z" }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload_time = "2025-03-26T03:04:18.11Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload_time = "2025-03-26T03:04:19.562Z" }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload_time = "2025-03-26T03:04:21.065Z" }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload_time = "2025-03-26T03:04:22.718Z" }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload_time = "2025-03-26T03:04:24.039Z" }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload_time = "2025-03-26T03:04:25.211Z" }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload_time = "2025-03-26T03:04:26.436Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload_time = "2025-03-26T03:04:27.932Z" }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload_time = "2025-03-26T03:04:30.659Z" }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload_time = "2025-03-26T03:04:31.977Z" }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload_time = "2025-03-26T03:04:33.45Z" }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload_time = "2025-03-26T03:04:35.542Z" }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload_time = "2025-03-26T03:04:37.501Z" }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload_time = "2025-03-26T03:04:39.532Z" }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload_time = "2025-03-26T03:04:41.109Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload_time = "2025-03-26T03:04:42.544Z" }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload_time = "2025-03-26T03:04:44.06Z" }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload_time = "2025-03-26T03:04:45.983Z" }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload_time = "2025-03-26T03:04:47.699Z" }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload_time = "2025-03-26T03:04:49.195Z" }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload_time = "2025-03-26T03:04:50.595Z" }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload_time = "2025-03-26T03:04:51.791Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload_time = "2025-03-26T03:06:10.5Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload_time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload_time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload_time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload_time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload_time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload_time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload_time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload_time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload_time = "2020-12-28T15:15:30.155Z" } +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, upload_time = "2020-12-28T15:15:28.35Z" }, + { 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, upload_time = "2024-07-21T12:58:21.801Z" } +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, upload_time = "2024-07-21T12:58:20.04Z" }, + { 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 = "pyarrow" -version = "19.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7f/09/a9046344212690f0632b9c709f9bf18506522feb333c894d0de81d62341a/pyarrow-19.0.1.tar.gz", hash = "sha256:3bf266b485df66a400f282ac0b6d1b500b9d2ae73314a153dbe97d6d5cc8a99e", size = 1129437, upload_time = "2025-02-18T18:55:57.027Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/36/01/b23b514d86b839956238d3f8ef206fd2728eee87ff1b8ce150a5678d9721/pyarrow-19.0.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:fc28912a2dc924dddc2087679cc8b7263accc71b9ff025a1362b004711661a69", size = 30688914, upload_time = "2025-02-18T18:51:37.575Z" }, - { url = "https://files.pythonhosted.org/packages/c6/68/218ff7cf4a0652a933e5f2ed11274f724dd43b9813cb18dd72c0a35226a2/pyarrow-19.0.1-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:fca15aabbe9b8355800d923cc2e82c8ef514af321e18b437c3d782aa884eaeec", size = 32102866, upload_time = "2025-02-18T18:51:44.358Z" }, - { url = "https://files.pythonhosted.org/packages/98/01/c295050d183014f4a2eb796d7d2bbfa04b6cccde7258bb68aacf6f18779b/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ad76aef7f5f7e4a757fddcdcf010a8290958f09e3470ea458c80d26f4316ae89", size = 41147682, upload_time = "2025-02-18T18:51:49.481Z" }, - { url = "https://files.pythonhosted.org/packages/40/17/a6c3db0b5f3678f33bbb552d2acbc16def67f89a72955b67b0109af23eb0/pyarrow-19.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d03c9d6f2a3dffbd62671ca070f13fc527bb1867b4ec2b98c7eeed381d4f389a", size = 42179192, upload_time = "2025-02-18T18:51:56.265Z" }, - { url = "https://files.pythonhosted.org/packages/cf/75/c7c8e599300d8cebb6cb339014800e1c720c9db2a3fcb66aa64ec84bac72/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:65cf9feebab489b19cdfcfe4aa82f62147218558d8d3f0fc1e9dea0ab8e7905a", size = 40517272, upload_time = "2025-02-18T18:52:02.969Z" }, - { url = "https://files.pythonhosted.org/packages/ef/c9/68ab123ee1528699c4d5055f645ecd1dd68ff93e4699527249d02f55afeb/pyarrow-19.0.1-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:41f9706fbe505e0abc10e84bf3a906a1338905cbbcf1177b71486b03e6ea6608", size = 42069036, upload_time = "2025-02-18T18:52:10.173Z" }, - { url = "https://files.pythonhosted.org/packages/54/e3/d5cfd7654084e6c0d9c3ce949e5d9e0ccad569ae1e2d5a68a3ec03b2be89/pyarrow-19.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:c6cb2335a411b713fdf1e82a752162f72d4a7b5dbc588e32aa18383318b05866", size = 25277951, upload_time = "2025-02-18T18:52:15.459Z" }, - { url = "https://files.pythonhosted.org/packages/a0/55/f1a8d838ec07fe3ca53edbe76f782df7b9aafd4417080eebf0b42aab0c52/pyarrow-19.0.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:cc55d71898ea30dc95900297d191377caba257612f384207fe9f8293b5850f90", size = 30713987, upload_time = "2025-02-18T18:52:20.463Z" }, - { url = "https://files.pythonhosted.org/packages/13/12/428861540bb54c98a140ae858a11f71d041ef9e501e6b7eb965ca7909505/pyarrow-19.0.1-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:7a544ec12de66769612b2d6988c36adc96fb9767ecc8ee0a4d270b10b1c51e00", size = 32135613, upload_time = "2025-02-18T18:52:25.29Z" }, - { url = "https://files.pythonhosted.org/packages/2f/8a/23d7cc5ae2066c6c736bce1db8ea7bc9ac3ef97ac7e1c1667706c764d2d9/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0148bb4fc158bfbc3d6dfe5001d93ebeed253793fff4435167f6ce1dc4bddeae", size = 41149147, upload_time = "2025-02-18T18:52:30.975Z" }, - { url = "https://files.pythonhosted.org/packages/a2/7a/845d151bb81a892dfb368bf11db584cf8b216963ccce40a5cf50a2492a18/pyarrow-19.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f24faab6ed18f216a37870d8c5623f9c044566d75ec586ef884e13a02a9d62c5", size = 42178045, upload_time = "2025-02-18T18:52:36.859Z" }, - { url = "https://files.pythonhosted.org/packages/a7/31/e7282d79a70816132cf6cae7e378adfccce9ae10352d21c2fecf9d9756dd/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:4982f8e2b7afd6dae8608d70ba5bd91699077323f812a0448d8b7abdff6cb5d3", size = 40532998, upload_time = "2025-02-18T18:52:42.578Z" }, - { url = "https://files.pythonhosted.org/packages/b8/82/20f3c290d6e705e2ee9c1fa1d5a0869365ee477e1788073d8b548da8b64c/pyarrow-19.0.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:49a3aecb62c1be1d822f8bf629226d4a96418228a42f5b40835c1f10d42e4db6", size = 42084055, upload_time = "2025-02-18T18:52:48.749Z" }, - { url = "https://files.pythonhosted.org/packages/ff/77/e62aebd343238863f2c9f080ad2ef6ace25c919c6ab383436b5b81cbeef7/pyarrow-19.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:008a4009efdb4ea3d2e18f05cd31f9d43c388aad29c636112c2966605ba33466", size = 25283133, upload_time = "2025-02-18T18:52:54.549Z" }, - { url = "https://files.pythonhosted.org/packages/78/b4/94e828704b050e723f67d67c3535cf7076c7432cd4cf046e4bb3b96a9c9d/pyarrow-19.0.1-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:80b2ad2b193e7d19e81008a96e313fbd53157945c7be9ac65f44f8937a55427b", size = 30670749, upload_time = "2025-02-18T18:53:00.062Z" }, - { url = "https://files.pythonhosted.org/packages/7e/3b/4692965e04bb1df55e2c314c4296f1eb12b4f3052d4cf43d29e076aedf66/pyarrow-19.0.1-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:ee8dec072569f43835932a3b10c55973593abc00936c202707a4ad06af7cb294", size = 32128007, upload_time = "2025-02-18T18:53:06.581Z" }, - { url = "https://files.pythonhosted.org/packages/22/f7/2239af706252c6582a5635c35caa17cb4d401cd74a87821ef702e3888957/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d5d1ec7ec5324b98887bdc006f4d2ce534e10e60f7ad995e7875ffa0ff9cb14", size = 41144566, upload_time = "2025-02-18T18:53:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/fb/e3/c9661b2b2849cfefddd9fd65b64e093594b231b472de08ff658f76c732b2/pyarrow-19.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3ad4c0eb4e2a9aeb990af6c09e6fa0b195c8c0e7b272ecc8d4d2b6574809d34", size = 42202991, upload_time = "2025-02-18T18:53:17.678Z" }, - { url = "https://files.pythonhosted.org/packages/fe/4f/a2c0ed309167ef436674782dfee4a124570ba64299c551e38d3fdaf0a17b/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:d383591f3dcbe545f6cc62daaef9c7cdfe0dff0fb9e1c8121101cabe9098cfa6", size = 40507986, upload_time = "2025-02-18T18:53:26.263Z" }, - { url = "https://files.pythonhosted.org/packages/27/2e/29bb28a7102a6f71026a9d70d1d61df926887e36ec797f2e6acfd2dd3867/pyarrow-19.0.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b4c4156a625f1e35d6c0b2132635a237708944eb41df5fbe7d50f20d20c17832", size = 42087026, upload_time = "2025-02-18T18:53:33.063Z" }, - { url = "https://files.pythonhosted.org/packages/16/33/2a67c0f783251106aeeee516f4806161e7b481f7d744d0d643d2f30230a5/pyarrow-19.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:5bd1618ae5e5476b7654c7b55a6364ae87686d4724538c24185bbb2952679960", size = 25250108, upload_time = "2025-02-18T18:53:38.462Z" }, +version = "20.0.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, ] [[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, upload_time = "2024-03-30T13:22:22.564Z" } +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, upload_time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -2463,9 +2356,9 @@ dependencies = [ { name = "pydantic-core" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681, upload_time = "2025-01-24T01:42:12.693Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696, upload_time = "2025-01-24T01:42:10.371Z" }, + { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, ] [[package]] @@ -2475,58 +2368,36 @@ 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, upload_time = "2024-12-18T11:31:54.917Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/bc/fed5f74b5d802cf9a03e83f60f18864e90e3aed7223adaca5ffb7a8d8d64/pydantic_core-2.27.2-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:2d367ca20b2f14095a8f4fa1210f5a7b78b8a20009ecced6b12818f455b1e9fa", size = 1895938, upload_time = "2024-12-18T11:27:14.406Z" }, - { url = "https://files.pythonhosted.org/packages/71/2a/185aff24ce844e39abb8dd680f4e959f0006944f4a8a0ea372d9f9ae2e53/pydantic_core-2.27.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:491a2b73db93fab69731eaee494f320faa4e093dbed776be1a829c2eb222c34c", size = 1815684, upload_time = "2024-12-18T11:27:16.489Z" }, - { url = "https://files.pythonhosted.org/packages/c3/43/fafabd3d94d159d4f1ed62e383e264f146a17dd4d48453319fd782e7979e/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7969e133a6f183be60e9f6f56bfae753585680f3b7307a8e555a948d443cc05a", size = 1829169, upload_time = "2024-12-18T11:27:22.16Z" }, - { url = "https://files.pythonhosted.org/packages/a2/d1/f2dfe1a2a637ce6800b799aa086d079998959f6f1215eb4497966efd2274/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3de9961f2a346257caf0aa508a4da705467f53778e9ef6fe744c038119737ef5", size = 1867227, upload_time = "2024-12-18T11:27:25.097Z" }, - { url = "https://files.pythonhosted.org/packages/7d/39/e06fcbcc1c785daa3160ccf6c1c38fea31f5754b756e34b65f74e99780b5/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:e2bb4d3e5873c37bb3dd58714d4cd0b0e6238cebc4177ac8fe878f8b3aa8e74c", size = 2037695, upload_time = "2024-12-18T11:27:28.656Z" }, - { url = "https://files.pythonhosted.org/packages/7a/67/61291ee98e07f0650eb756d44998214231f50751ba7e13f4f325d95249ab/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:280d219beebb0752699480fe8f1dc61ab6615c2046d76b7ab7ee38858de0a4e7", size = 2741662, upload_time = "2024-12-18T11:27:30.798Z" }, - { url = "https://files.pythonhosted.org/packages/32/90/3b15e31b88ca39e9e626630b4c4a1f5a0dfd09076366f4219429e6786076/pydantic_core-2.27.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:47956ae78b6422cbd46f772f1746799cbb862de838fd8d1fbd34a82e05b0983a", size = 1993370, upload_time = "2024-12-18T11:27:33.692Z" }, - { url = "https://files.pythonhosted.org/packages/ff/83/c06d333ee3a67e2e13e07794995c1535565132940715931c1c43bfc85b11/pydantic_core-2.27.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:14d4a5c49d2f009d62a2a7140d3064f686d17a5d1a268bc641954ba181880236", size = 1996813, upload_time = "2024-12-18T11:27:37.111Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f7/89be1c8deb6e22618a74f0ca0d933fdcb8baa254753b26b25ad3acff8f74/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:337b443af21d488716f8d0b6164de833e788aa6bd7e3a39c005febc1284f4962", size = 2005287, upload_time = "2024-12-18T11:27:40.566Z" }, - { url = "https://files.pythonhosted.org/packages/b7/7d/8eb3e23206c00ef7feee17b83a4ffa0a623eb1a9d382e56e4aa46fd15ff2/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_armv7l.whl", hash = "sha256:03d0f86ea3184a12f41a2d23f7ccb79cdb5a18e06993f8a45baa8dfec746f0e9", size = 2128414, upload_time = "2024-12-18T11:27:43.757Z" }, - { url = "https://files.pythonhosted.org/packages/4e/99/fe80f3ff8dd71a3ea15763878d464476e6cb0a2db95ff1c5c554133b6b83/pydantic_core-2.27.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7041c36f5680c6e0f08d922aed302e98b3745d97fe1589db0a3eebf6624523af", size = 2155301, upload_time = "2024-12-18T11:27:47.36Z" }, - { url = "https://files.pythonhosted.org/packages/2b/a3/e50460b9a5789ca1451b70d4f52546fa9e2b420ba3bfa6100105c0559238/pydantic_core-2.27.2-cp310-cp310-win32.whl", hash = "sha256:50a68f3e3819077be2c98110c1f9dcb3817e93f267ba80a2c05bb4f8799e2ff4", size = 1816685, upload_time = "2024-12-18T11:27:50.508Z" }, - { url = "https://files.pythonhosted.org/packages/57/4c/a8838731cb0f2c2a39d3535376466de6049034d7b239c0202a64aaa05533/pydantic_core-2.27.2-cp310-cp310-win_amd64.whl", hash = "sha256:e0fd26b16394ead34a424eecf8a31a1f5137094cabe84a1bcb10fa6ba39d3d31", size = 1982876, upload_time = "2024-12-18T11:27:53.54Z" }, - { 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, upload_time = "2024-12-18T11:27:55.409Z" }, - { 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, upload_time = "2024-12-18T11:27:57.252Z" }, - { 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, upload_time = "2024-12-18T11:27:59.146Z" }, - { 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, upload_time = "2024-12-18T11:28:02.625Z" }, - { 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, upload_time = "2024-12-18T11:28:04.442Z" }, - { 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, upload_time = "2024-12-18T11:28:07.679Z" }, - { 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, upload_time = "2024-12-18T11:28:10.297Z" }, - { 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, upload_time = "2024-12-18T11:28:13.362Z" }, - { 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, upload_time = "2024-12-18T11:28:16.587Z" }, - { 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, upload_time = "2024-12-18T11:28:18.407Z" }, - { 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, upload_time = "2024-12-18T11:28:21.471Z" }, - { url = "https://files.pythonhosted.org/packages/72/9d/a241db83f973049a1092a079272ffe2e3e82e98561ef6214ab53fe53b1c7/pydantic_core-2.27.2-cp311-cp311-win32.whl", hash = "sha256:c70c26d2c99f78b125a3459f8afe1aed4d9687c24fd677c6a4436bc042e50d6c", size = 1812361, upload_time = "2024-12-18T11:28:23.53Z" }, - { url = "https://files.pythonhosted.org/packages/e8/ef/013f07248041b74abd48a385e2110aa3a9bbfef0fbd97d4e6d07d2f5b89a/pydantic_core-2.27.2-cp311-cp311-win_amd64.whl", hash = "sha256:08e125dbdc505fa69ca7d9c499639ab6407cfa909214d500897d02afb816e7cc", size = 1982484, upload_time = "2024-12-18T11:28:25.391Z" }, - { url = "https://files.pythonhosted.org/packages/10/1c/16b3a3e3398fd29dca77cea0a1d998d6bde3902fa2706985191e2313cc76/pydantic_core-2.27.2-cp311-cp311-win_arm64.whl", hash = "sha256:26f0d68d4b235a2bae0c3fc585c585b4ecc51382db0e3ba402a22cbc440915e4", size = 1867102, upload_time = "2024-12-18T11:28:28.593Z" }, - { 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, upload_time = "2024-12-18T11:28:30.346Z" }, - { 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, upload_time = "2024-12-18T11:28:32.521Z" }, - { 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, upload_time = "2024-12-18T11:28:34.507Z" }, - { 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, upload_time = "2024-12-18T11:28:36.488Z" }, - { 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, upload_time = "2024-12-18T11:28:39.409Z" }, - { 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, upload_time = "2024-12-18T11:28:41.221Z" }, - { 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, upload_time = "2024-12-18T11:28:44.709Z" }, - { 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, upload_time = "2024-12-18T11:28:46.839Z" }, - { 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, upload_time = "2024-12-18T11:28:48.896Z" }, - { 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, upload_time = "2024-12-18T11:28:50.755Z" }, - { 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, upload_time = "2024-12-18T11:28:54.122Z" }, - { url = "https://files.pythonhosted.org/packages/9b/67/4e197c300976af185b7cef4c02203e175fb127e414125916bf1128b639a9/pydantic_core-2.27.2-cp312-cp312-win32.whl", hash = "sha256:1e2cb691ed9834cd6a8be61228471d0a503731abfb42f82458ff27be7b2186fc", size = 1834064, upload_time = "2024-12-18T11:28:56.074Z" }, - { url = "https://files.pythonhosted.org/packages/1f/ea/cd7209a889163b8dcca139fe32b9687dd05249161a3edda62860430457a5/pydantic_core-2.27.2-cp312-cp312-win_amd64.whl", hash = "sha256:cc3f1a99a4f4f9dd1de4fe0312c114e740b5ddead65bb4102884b384c15d8bc9", size = 1989046, upload_time = "2024-12-18T11:28:58.107Z" }, - { url = "https://files.pythonhosted.org/packages/bc/49/c54baab2f4658c26ac633d798dab66b4c3a9bbf47cff5284e9c182f4137a/pydantic_core-2.27.2-cp312-cp312-win_arm64.whl", hash = "sha256:3911ac9284cd8a1792d3cb26a2da18f3ca26c6908cc434a18f730dc0db7bfa3b", size = 1885092, upload_time = "2024-12-18T11:29:01.335Z" }, - { url = "https://files.pythonhosted.org/packages/46/72/af70981a341500419e67d5cb45abe552a7c74b66326ac8877588488da1ac/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:2bf14caea37e91198329b828eae1618c068dfb8ef17bb33287a7ad4b61ac314e", size = 1891159, upload_time = "2024-12-18T11:30:54.382Z" }, - { url = "https://files.pythonhosted.org/packages/ad/3d/c5913cccdef93e0a6a95c2d057d2c2cba347815c845cda79ddd3c0f5e17d/pydantic_core-2.27.2-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:b0cb791f5b45307caae8810c2023a184c74605ec3bcbb67d13846c28ff731ff8", size = 1768331, upload_time = "2024-12-18T11:30:58.178Z" }, - { url = "https://files.pythonhosted.org/packages/f6/f0/a3ae8fbee269e4934f14e2e0e00928f9346c5943174f2811193113e58252/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:688d3fd9fcb71f41c4c015c023d12a79d1c4c0732ec9eb35d96e3388a120dcf3", size = 1822467, upload_time = "2024-12-18T11:31:00.6Z" }, - { url = "https://files.pythonhosted.org/packages/d7/7a/7bbf241a04e9f9ea24cd5874354a83526d639b02674648af3f350554276c/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3d591580c34f4d731592f0e9fe40f9cc1b430d297eecc70b962e93c5c668f15f", size = 1979797, upload_time = "2024-12-18T11:31:07.243Z" }, - { url = "https://files.pythonhosted.org/packages/4f/5f/4784c6107731f89e0005a92ecb8a2efeafdb55eb992b8e9d0a2be5199335/pydantic_core-2.27.2-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:82f986faf4e644ffc189a7f1aafc86e46ef70372bb153e7001e8afccc6e54133", size = 1987839, upload_time = "2024-12-18T11:31:09.775Z" }, - { url = "https://files.pythonhosted.org/packages/6d/a7/61246562b651dff00de86a5f01b6e4befb518df314c54dec187a78d81c84/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:bec317a27290e2537f922639cafd54990551725fc844249e64c523301d0822fc", size = 1998861, upload_time = "2024-12-18T11:31:13.469Z" }, - { url = "https://files.pythonhosted.org/packages/86/aa/837821ecf0c022bbb74ca132e117c358321e72e7f9702d1b6a03758545e2/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:0296abcb83a797db256b773f45773da397da75a08f5fcaef41f2044adec05f50", size = 2116582, upload_time = "2024-12-18T11:31:17.423Z" }, - { url = "https://files.pythonhosted.org/packages/81/b0/5e74656e95623cbaa0a6278d16cf15e10a51f6002e3ec126541e95c29ea3/pydantic_core-2.27.2-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:0d75070718e369e452075a6017fbf187f788e17ed67a3abd47fa934d001863d9", size = 2151985, upload_time = "2024-12-18T11:31:19.901Z" }, - { url = "https://files.pythonhosted.org/packages/63/37/3e32eeb2a451fddaa3898e2163746b0cffbbdbb4740d38372db0490d67f3/pydantic_core-2.27.2-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:7e17b560be3c98a8e3aa66ce828bdebb9e9ac6ad5466fba92eb74c4c95cb1151", size = 2004715, upload_time = "2024-12-18T11:31:22.821Z" }, +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 }, ] [[package]] @@ -2541,18 +2412,18 @@ dependencies = [ { name = "typing-extensions" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473, upload_time = "2025-02-21T13:45:58.262Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451, upload_time = "2025-02-21T13:45:55.519Z" }, + { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451 }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload_time = "2025-01-06T17:26:30.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload_time = "2025-01-06T17:26:25.553Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, ] [[package]] @@ -2572,27 +2443,18 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994, upload_time = "2025-03-04T15:17:40.692Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/05/41a3543cfc7f10440df8e4533d4a27a99e221c8d8048a1f38acff76bc764/pyiceberg-0.9.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b454d186c33aa3f0d03e4fa888df50d4861ffa4cdcc7c6f766237485d9a091d9", size = 525475, upload_time = "2025-03-04T15:16:42.905Z" }, - { url = "https://files.pythonhosted.org/packages/32/22/cf2afaaf7771080efc6e716270d498090408df640ffab3fbbfa4a5bc709c/pyiceberg-0.9.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:e4f6800f8bd5cb30fd095cf58498b45d8c42709330a0ce72df4e92e030eba402", size = 521645, upload_time = "2025-03-04T15:16:45.97Z" }, - { url = "https://files.pythonhosted.org/packages/52/e4/ef7a98aa3595d7403148f5e5279bc15cb5c84653d5566049772f7242c5b9/pyiceberg-0.9.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c7a7f83805dfc3af8aaaa88ac7d208aafe5005400cb9238d2195d8b7113927ef", size = 836989, upload_time = "2025-03-04T15:16:48.035Z" }, - { url = "https://files.pythonhosted.org/packages/3c/0e/2fcdea061032faf11d0343613aacc01e119389b9a5439e45b0b87510e251/pyiceberg-0.9.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:218d31b81c91cd3acf775bd796f8c02740b4bdb8a7bde7278029710c94eb136a", size = 836664, upload_time = "2025-03-04T15:16:50.343Z" }, - { url = "https://files.pythonhosted.org/packages/ef/7d/70eb575b8363a348e98dbca4e79943b1a93e9f65a655e79cdd4a23ae649a/pyiceberg-0.9.0-cp310-cp310-win_amd64.whl", hash = "sha256:f3680ac4aa6bada5a6823d4ded1e78ac86207fd3b275ca1a688bad5cb9191c3b", size = 521952, upload_time = "2025-03-04T15:16:52.947Z" }, - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652, upload_time = "2025-03-04T15:16:54.37Z" }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538, upload_time = "2025-03-04T15:16:57.415Z" }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661, upload_time = "2025-03-04T15:16:59.762Z" }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874, upload_time = "2025-03-04T15:17:02.224Z" }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840, upload_time = "2025-03-04T15:17:04.482Z" }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132, upload_time = "2025-03-04T15:17:06.049Z" }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703, upload_time = "2025-03-04T15:17:07.45Z" }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772, upload_time = "2025-03-04T15:17:10.419Z" }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452, upload_time = "2025-03-04T15:17:12.681Z" }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838, upload_time = "2025-03-04T15:17:14.962Z" }, - { url = "https://files.pythonhosted.org/packages/5b/60/fbcc8847ca1b23dea34f6e69e55e1e87e8bef1496b9e6a4bf3f8e22fb98e/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6d818b01ab259f4892e486b960e999b7a724b6829f9e3919d2ec454f5f3f857b", size = 666638, upload_time = "2025-03-04T15:17:25.507Z" }, - { url = "https://files.pythonhosted.org/packages/4b/19/55f93aba1c6fe8fa5f90c32bf1011b1dd7f276b1a9e2136c5867cda50bb1/pyiceberg-0.9.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:8161dc350e885d7bdc46f4fb4e9698bf1a84861056687823d53eaeed217e4324", size = 655812, upload_time = "2025-03-04T15:17:27.672Z" }, - { url = "https://files.pythonhosted.org/packages/54/8f/b0b102e795b8524504e8534d774e43f22d049823863d275e753a225baeaf/pyiceberg-0.9.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3bf765b91e96f66a01205a87cd8fd0eb8ffb148fdd9bf621d9a2a3249336116", size = 1351349, upload_time = "2025-03-04T15:17:29.356Z" }, - { url = "https://files.pythonhosted.org/packages/4a/0c/09267e34e2979a71612a3b2d02d25c51fcf35921542fcd9f40bf15073ed0/pyiceberg-0.9.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:a9a8699dbdec4ee81ac4dfc77d7489bffac3a7625a28df296657cec1edf79d6d", size = 655880, upload_time = "2025-03-04T15:17:30.882Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, ] [package.optional-dependencies] @@ -2604,9 +2466,9 @@ sql-sqlite = [ name = "pyjwt" version = "2.10.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785, upload_time = "2024-11-28T03:43:29.933Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997, upload_time = "2024-11-28T03:43:27.893Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, ] [package.optional-dependencies] @@ -2622,9 +2484,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload_time = "2025-04-27T23:48:29.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload_time = "2025-04-27T23:48:27.359Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, ] [[package]] @@ -2634,17 +2496,17 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854, upload_time = "2022-01-07T22:05:41.134Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920, upload_time = "2022-01-07T22:05:49.156Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722, upload_time = "2022-01-07T22:05:50.989Z" }, - { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087, upload_time = "2022-01-07T22:05:52.539Z" }, - { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678, upload_time = "2022-01-07T22:05:54.251Z" }, - { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660, upload_time = "2022-01-07T22:05:56.056Z" }, - { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824, upload_time = "2022-01-07T22:05:57.434Z" }, - { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912, upload_time = "2022-01-07T22:05:58.665Z" }, - { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624, upload_time = "2022-01-07T22:06:00.085Z" }, - { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141, upload_time = "2022-01-07T22:06:01.861Z" }, + { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, + { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, + { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, + { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, + { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, + { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, + { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, + { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, + { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, ] [[package]] @@ -2656,35 +2518,29 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950, upload_time = "2024-09-28T19:11:20.898Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/ea/cba24d241858a72b58d8fcd0ad2276f9631fd4528b3062157637e43581eb/pyogrio-0.10.0-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:046eeeae12a03a3ebc3dc5ff5a87664e4f5fc0a4fb1ea5d5c45d547fa941072b", size = 15083657, upload_time = "2024-09-28T19:10:10.886Z" }, - { url = "https://files.pythonhosted.org/packages/90/f8/a58795a2aee415c612aac8b425681d932b8983330884207fd1915d234d36/pyogrio-0.10.0-cp310-cp310-macosx_12_0_x86_64.whl", hash = "sha256:44380f4d9245c776f432526e29ce4d29238aea26adad991803c4f453474f51d3", size = 16457115, upload_time = "2024-09-28T19:10:13.62Z" }, - { url = "https://files.pythonhosted.org/packages/45/86/74c37e3d4d000bdcd91b25929fe4abc5ad6d93d5f5fbc59a4c7d4f0ed982/pyogrio-0.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14fd3b72b4e2dc59e264607b265c742b0c5ec2ea9e748b115f742381b28dd373", size = 23721911, upload_time = "2024-09-28T19:10:16.384Z" }, - { url = "https://files.pythonhosted.org/packages/a6/07/35e4127a878ecdcbaaf46f0f2d068b385a454b5b0cab44ea901adc5888a0/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:1fea7892f4633cab04d13563e47ec2e87dc2b5cd71b9546018d123184528c151", size = 22941003, upload_time = "2024-09-28T20:42:01.627Z" }, - { url = "https://files.pythonhosted.org/packages/56/8b/67187ae03dce5cd6f5c5a2f41c405e77059f4cf498e0817b69cec094f022/pyogrio-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:3539596a76eb8a9d166d6f9d3f36731a8c5bd5c43901209d89dc66b9dc00f079", size = 23861913, upload_time = "2024-09-28T19:10:19.269Z" }, - { url = "https://files.pythonhosted.org/packages/75/ca/b31083da2e6c4b598b6609a98c655977189fe8982c36d98ea4789a938045/pyogrio-0.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:eac90b2501656892c63bc500c12e71f3dbf7d66ddc5a7fb05cd480d25d1b7022", size = 16171065, upload_time = "2024-09-28T19:10:21.982Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526, upload_time = "2024-09-28T19:10:24.621Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867, upload_time = "2024-09-28T19:10:28.711Z" }, - { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332, upload_time = "2024-09-28T19:10:31.692Z" }, - { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693, upload_time = "2024-09-28T20:42:11.989Z" }, - { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952, upload_time = "2024-09-28T19:10:34.13Z" }, - { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573, upload_time = "2024-09-28T19:10:37.06Z" }, - { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211, upload_time = "2024-09-28T19:10:40.059Z" }, - { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782, upload_time = "2024-09-28T19:10:42.373Z" }, - { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832, upload_time = "2024-09-28T19:10:44.81Z" }, - { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469, upload_time = "2024-09-28T20:42:22.049Z" }, - { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758, upload_time = "2024-09-28T19:10:47.873Z" }, - { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294, upload_time = "2024-09-28T19:10:50.75Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526 }, + { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867 }, + { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332 }, + { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693 }, + { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952 }, + { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573 }, + { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211 }, + { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782 }, + { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832 }, + { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469 }, + { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758 }, + { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294 }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload_time = "2025-03-25T05:01:28.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload_time = "2025-03-25T05:01:24.908Z" }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, ] [[package]] @@ -2694,32 +2550,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload_time = "2025-02-16T04:28:46.621Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/a3/c4cd4bba5b336075f145fe784fcaf4ef56ffbc979833303303e7a659dda2/pyproj-3.7.1-cp310-cp310-macosx_13_0_x86_64.whl", hash = "sha256:bf09dbeb333c34e9c546364e7df1ff40474f9fddf9e70657ecb0e4f670ff0b0e", size = 6262524, upload_time = "2025-02-16T04:27:19.725Z" }, - { url = "https://files.pythonhosted.org/packages/40/45/4fdf18f4cc1995f1992771d2a51cf186a9d7a8ec973c9693f8453850c707/pyproj-3.7.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:6575b2e53cc9e3e461ad6f0692a5564b96e7782c28631c7771c668770915e169", size = 4665102, upload_time = "2025-02-16T04:27:24.428Z" }, - { url = "https://files.pythonhosted.org/packages/0c/d2/360eb127380106cee83569954ae696b88a891c804d7a93abe3fbc15f5976/pyproj-3.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8cb516ee35ed57789b46b96080edf4e503fdb62dbb2e3c6581e0d6c83fca014b", size = 9432667, upload_time = "2025-02-16T04:27:27.04Z" }, - { url = "https://files.pythonhosted.org/packages/76/a5/c6e11b9a99ce146741fb4d184d5c468446c6d6015b183cae82ac822a6cfa/pyproj-3.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e47c4e93b88d99dd118875ee3ca0171932444cdc0b52d493371b5d98d0f30ee", size = 9259185, upload_time = "2025-02-16T04:27:30.35Z" }, - { url = "https://files.pythonhosted.org/packages/41/56/a3c15c42145797a99363fa0fdb4e9805dccb8b4a76a6d7b2cdf36ebcc2a1/pyproj-3.7.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:3e8d276caeae34fcbe4813855d0d97b9b825bab8d7a8b86d859c24a6213a5a0d", size = 10469103, upload_time = "2025-02-16T04:27:33.542Z" }, - { url = "https://files.pythonhosted.org/packages/ef/73/c9194c2802fefe2a4fd4230bdd5ab083e7604e93c64d0356fa49c363bad6/pyproj-3.7.1-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:f173f851ee75e54acdaa053382b6825b400cb2085663a9bb073728a59c60aebb", size = 10401391, upload_time = "2025-02-16T04:27:36.051Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/ce8bb5b9251b04d7c22d63619bb3db3d2397f79000a9ae05b3fd86a5837e/pyproj-3.7.1-cp310-cp310-win32.whl", hash = "sha256:f550281ed6e5ea88fcf04a7c6154e246d5714be495c50c9e8e6b12d3fb63e158", size = 5869997, upload_time = "2025-02-16T04:27:38.302Z" }, - { url = "https://files.pythonhosted.org/packages/09/6a/ca145467fd2e5b21e3d5b8c2b9645dcfb3b68f08b62417699a1f5689008e/pyproj-3.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:3537668992a709a2e7f068069192138618c00d0ba113572fdd5ee5ffde8222f3", size = 6278581, upload_time = "2025-02-16T04:27:41.051Z" }, - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload_time = "2025-02-16T04:27:44.539Z" }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload_time = "2025-02-16T04:27:47.019Z" }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload_time = "2025-02-16T04:27:49.239Z" }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload_time = "2025-02-16T04:27:52.65Z" }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload_time = "2025-02-16T04:27:55.239Z" }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload_time = "2025-02-16T04:27:58.343Z" }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload_time = "2025-02-16T04:28:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload_time = "2025-02-16T04:28:04.988Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload_time = "2025-02-16T04:28:09.036Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload_time = "2025-02-16T04:28:10.944Z" }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload_time = "2025-02-16T04:28:13.342Z" }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload_time = "2025-02-16T04:28:15.818Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload_time = "2025-02-16T04:28:18.338Z" }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload_time = "2025-02-16T04:28:20.822Z" }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload_time = "2025-02-16T04:28:23.303Z" }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload_time = "2025-02-16T04:28:25.227Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, ] [[package]] @@ -2728,15 +2576,13 @@ version = "8.3.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, { name = "iniconfig" }, { name = "packaging" }, { name = "pluggy" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload_time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload_time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -2746,27 +2592,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload_time = "2024-03-01T18:36:20.211Z" } +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, upload_time = "2024-03-01T18:36:18.57Z" }, + { 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-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload_time = "2025-03-07T07:08:27.301Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload_time = "2025-03-07T07:08:25.627Z" }, + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload_time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload_time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, ] [[package]] @@ -2774,61 +2620,48 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/da/a5f38fffbba2fb99aa4aa905480ac4b8e83ca486659ac8c95bce47fb5276/pywin32-310-cp310-cp310-win32.whl", hash = "sha256:6dd97011efc8bf51d6793a82292419eba2c71cf8e7250cfac03bba284454abc1", size = 8848240, upload_time = "2025-03-17T00:55:46.783Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fe/d873a773324fa565619ba555a82c9dabd677301720f3660a731a5d07e49a/pywin32-310-cp310-cp310-win_amd64.whl", hash = "sha256:c3e78706e4229b915a0821941a84e7ef420bf2b77e08c9dae3c76fd03fd2ae3d", size = 9601854, upload_time = "2025-03-17T00:55:48.783Z" }, - { url = "https://files.pythonhosted.org/packages/3c/84/1a8e3d7a15490d28a5d816efa229ecb4999cdc51a7c30dd8914f669093b8/pywin32-310-cp310-cp310-win_arm64.whl", hash = "sha256:33babed0cf0c92a6f94cc6cc13546ab24ee13e3e800e61ed87609ab91e4c8213", size = 8522963, upload_time = "2025-03-17T00:55:50.969Z" }, - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload_time = "2025-03-17T00:55:53.124Z" }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload_time = "2025-03-17T00:55:55.203Z" }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload_time = "2025-03-17T00:55:57.048Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload_time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload_time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload_time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload_time = "2025-02-03T21:53:23.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/b7/855db919ae526d2628f3f2e6c281c4cdff7a9a8af51bb84659a9f07b1861/pywinpty-2.0.15-cp310-cp310-win_amd64.whl", hash = "sha256:8e7f5de756a615a38b96cd86fa3cd65f901ce54ce147a3179c45907fa11b4c4e", size = 1405161, upload_time = "2025-02-03T21:56:25.008Z" }, - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload_time = "2025-02-03T21:55:47.114Z" }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload_time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, ] [[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, upload_time = "2024-08-06T20:33:50.674Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9b/95/a3fac87cb7158e231b5a6012e438c647e1a87f09f8e0d123acec8ab8bf71/PyYAML-6.0.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086", size = 184199, upload_time = "2024-08-06T20:31:40.178Z" }, - { url = "https://files.pythonhosted.org/packages/c7/7a/68bd47624dab8fd4afbfd3c48e3b79efe09098ae941de5b58abcbadff5cb/PyYAML-6.0.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf", size = 171758, upload_time = "2024-08-06T20:31:42.173Z" }, - { url = "https://files.pythonhosted.org/packages/49/ee/14c54df452143b9ee9f0f29074d7ca5516a36edb0b4cc40c3f280131656f/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237", size = 718463, upload_time = "2024-08-06T20:31:44.263Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/de363a97476e766574650d742205be468921a7b532aa2499fcd886b62530/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b", size = 719280, upload_time = "2024-08-06T20:31:50.199Z" }, - { url = "https://files.pythonhosted.org/packages/6b/4e/1523cb902fd98355e2e9ea5e5eb237cbc5f3ad5f3075fa65087aa0ecb669/PyYAML-6.0.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed", size = 751239, upload_time = "2024-08-06T20:31:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/b7/33/5504b3a9a4464893c32f118a9cc045190a91637b119a9c881da1cf6b7a72/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180", size = 695802, upload_time = "2024-08-06T20:31:53.836Z" }, - { url = "https://files.pythonhosted.org/packages/5c/20/8347dcabd41ef3a3cdc4f7b7a2aff3d06598c8779faa189cdbf878b626a4/PyYAML-6.0.2-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68", size = 720527, upload_time = "2024-08-06T20:31:55.565Z" }, - { url = "https://files.pythonhosted.org/packages/be/aa/5afe99233fb360d0ff37377145a949ae258aaab831bde4792b32650a4378/PyYAML-6.0.2-cp310-cp310-win32.whl", hash = "sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99", size = 144052, upload_time = "2024-08-06T20:31:56.914Z" }, - { url = "https://files.pythonhosted.org/packages/b5/84/0fa4b06f6d6c958d207620fc60005e241ecedceee58931bb20138e1e5776/PyYAML-6.0.2-cp310-cp310-win_amd64.whl", hash = "sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e", size = 161774, upload_time = "2024-08-06T20:31:58.304Z" }, - { 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, upload_time = "2024-08-06T20:32:03.408Z" }, - { 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, upload_time = "2024-08-06T20:32:04.926Z" }, - { 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, upload_time = "2024-08-06T20:32:06.459Z" }, - { 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, upload_time = "2024-08-06T20:32:08.338Z" }, - { 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, upload_time = "2024-08-06T20:32:14.124Z" }, - { 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, upload_time = "2024-08-06T20:32:16.17Z" }, - { 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, upload_time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload_time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload_time = "2024-08-06T20:32:21.273Z" }, - { 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, upload_time = "2024-08-06T20:32:25.131Z" }, - { 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, upload_time = "2024-08-06T20:32:26.511Z" }, - { 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, upload_time = "2024-08-06T20:32:28.363Z" }, - { 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, upload_time = "2024-08-06T20:32:30.058Z" }, - { 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, upload_time = "2024-08-06T20:32:31.881Z" }, - { 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, upload_time = "2024-08-06T20:32:37.083Z" }, - { 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, upload_time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload_time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload_time = "2024-08-06T20:32:41.93Z" }, +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 }, ] [[package]] @@ -2838,9 +2671,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631, upload_time = "2020-11-12T02:38:26.239Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911, upload_time = "2020-11-12T02:38:24.638Z" }, + { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, ] [[package]] @@ -2850,51 +2683,61 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload_time = "2025-04-04T12:05:44.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/b8/af1d814ffc3ff9730f9a970cbf216b6f078e5d251a25ef5201d7bc32a37c/pyzmq-26.4.0-cp310-cp310-macosx_10_15_universal2.whl", hash = "sha256:0329bdf83e170ac133f44a233fc651f6ed66ef8e66693b5af7d54f45d1ef5918", size = 1339238, upload_time = "2025-04-04T12:03:07.022Z" }, - { url = "https://files.pythonhosted.org/packages/ee/e4/5aafed4886c264f2ea6064601ad39c5fc4e9b6539c6ebe598a859832eeee/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:398a825d2dea96227cf6460ce0a174cf7657d6f6827807d4d1ae9d0f9ae64315", size = 672848, upload_time = "2025-04-04T12:03:08.591Z" }, - { url = "https://files.pythonhosted.org/packages/79/39/026bf49c721cb42f1ef3ae0ee3d348212a7621d2adb739ba97599b6e4d50/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6d52d62edc96787f5c1dfa6c6ccff9b581cfae5a70d94ec4c8da157656c73b5b", size = 911299, upload_time = "2025-04-04T12:03:10Z" }, - { url = "https://files.pythonhosted.org/packages/03/23/b41f936a9403b8f92325c823c0f264c6102a0687a99c820f1aaeb99c1def/pyzmq-26.4.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1410c3a3705db68d11eb2424d75894d41cff2f64d948ffe245dd97a9debfebf4", size = 867920, upload_time = "2025-04-04T12:03:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/c1/3e/2de5928cdadc2105e7c8f890cc5f404136b41ce5b6eae5902167f1d5641c/pyzmq-26.4.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:7dacb06a9c83b007cc01e8e5277f94c95c453c5851aac5e83efe93e72226353f", size = 862514, upload_time = "2025-04-04T12:03:13.013Z" }, - { url = "https://files.pythonhosted.org/packages/ce/57/109569514dd32e05a61d4382bc88980c95bfd2f02e58fea47ec0ccd96de1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:6bab961c8c9b3a4dc94d26e9b2cdf84de9918931d01d6ff38c721a83ab3c0ef5", size = 1204494, upload_time = "2025-04-04T12:03:14.795Z" }, - { url = "https://files.pythonhosted.org/packages/aa/02/dc51068ff2ca70350d1151833643a598625feac7b632372d229ceb4de3e1/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:7a5c09413b924d96af2aa8b57e76b9b0058284d60e2fc3730ce0f979031d162a", size = 1514525, upload_time = "2025-04-04T12:03:16.246Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/a7d81873fff0645eb60afaec2b7c78a85a377af8f1d911aff045d8955bc7/pyzmq-26.4.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:7d489ac234d38e57f458fdbd12a996bfe990ac028feaf6f3c1e81ff766513d3b", size = 1414659, upload_time = "2025-04-04T12:03:17.652Z" }, - { url = "https://files.pythonhosted.org/packages/ef/ea/813af9c42ae21845c1ccfe495bd29c067622a621e85d7cda6bc437de8101/pyzmq-26.4.0-cp310-cp310-win32.whl", hash = "sha256:dea1c8db78fb1b4b7dc9f8e213d0af3fc8ecd2c51a1d5a3ca1cde1bda034a980", size = 580348, upload_time = "2025-04-04T12:03:19.384Z" }, - { url = "https://files.pythonhosted.org/packages/20/68/318666a89a565252c81d3fed7f3b4c54bd80fd55c6095988dfa2cd04a62b/pyzmq-26.4.0-cp310-cp310-win_amd64.whl", hash = "sha256:fa59e1f5a224b5e04dc6c101d7186058efa68288c2d714aa12d27603ae93318b", size = 643838, upload_time = "2025-04-04T12:03:20.795Z" }, - { url = "https://files.pythonhosted.org/packages/91/f8/fb1a15b5f4ecd3e588bfde40c17d32ed84b735195b5c7d1d7ce88301a16f/pyzmq-26.4.0-cp310-cp310-win_arm64.whl", hash = "sha256:a651fe2f447672f4a815e22e74630b6b1ec3a1ab670c95e5e5e28dcd4e69bbb5", size = 559565, upload_time = "2025-04-04T12:03:22.676Z" }, - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload_time = "2025-04-04T12:03:24.358Z" }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload_time = "2025-04-04T12:03:25.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload_time = "2025-04-04T12:03:27.625Z" }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload_time = "2025-04-04T12:03:29.004Z" }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload_time = "2025-04-04T12:03:31.032Z" }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload_time = "2025-04-04T12:03:32.687Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload_time = "2025-04-04T12:03:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload_time = "2025-04-04T12:03:35.478Z" }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload_time = "2025-04-04T12:03:36.846Z" }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload_time = "2025-04-04T12:03:38.578Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload_time = "2025-04-04T12:03:40.143Z" }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload_time = "2025-04-04T12:03:41.954Z" }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload_time = "2025-04-04T12:03:43.45Z" }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload_time = "2025-04-04T12:03:45.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload_time = "2025-04-04T12:03:47.188Z" }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload_time = "2025-04-04T12:03:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload_time = "2025-04-04T12:03:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload_time = "2025-04-04T12:03:52.473Z" }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload_time = "2025-04-04T12:03:54Z" }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload_time = "2025-04-04T12:03:55.815Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload_time = "2025-04-04T12:03:57.231Z" }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload_time = "2025-04-04T12:03:59.218Z" }, - { url = "https://files.pythonhosted.org/packages/47/03/96004704a84095f493be8d2b476641f5c967b269390173f85488a53c1c13/pyzmq-26.4.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:98d948288ce893a2edc5ec3c438fe8de2daa5bbbd6e2e865ec5f966e237084ba", size = 834408, upload_time = "2025-04-04T12:05:04.569Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7f/68d8f3034a20505db7551cb2260248be28ca66d537a1ac9a257913d778e4/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a9f34f5c9e0203ece706a1003f1492a56c06c0632d86cb77bcfe77b56aacf27b", size = 569580, upload_time = "2025-04-04T12:05:06.283Z" }, - { url = "https://files.pythonhosted.org/packages/9b/a6/2b0d6801ec33f2b2a19dd8d02e0a1e8701000fec72926e6787363567d30c/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80c9b48aef586ff8b698359ce22f9508937c799cc1d2c9c2f7c95996f2300c94", size = 798250, upload_time = "2025-04-04T12:05:07.88Z" }, - { url = "https://files.pythonhosted.org/packages/96/2a/0322b3437de977dcac8a755d6d7ce6ec5238de78e2e2d9353730b297cf12/pyzmq-26.4.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3f2a5b74009fd50b53b26f65daff23e9853e79aa86e0aa08a53a7628d92d44a", size = 756758, upload_time = "2025-04-04T12:05:09.483Z" }, - { url = "https://files.pythonhosted.org/packages/c2/33/43704f066369416d65549ccee366cc19153911bec0154da7c6b41fca7e78/pyzmq-26.4.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:61c5f93d7622d84cb3092d7f6398ffc77654c346545313a3737e266fc11a3beb", size = 555371, upload_time = "2025-04-04T12:05:11.062Z" }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload_time = "2025-04-04T12:05:13.3Z" }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload_time = "2025-04-04T12:05:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload_time = "2025-04-04T12:05:17.376Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload_time = "2025-04-04T12:05:19.19Z" }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload_time = "2025-04-04T12:05:20.702Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, +] + +[[package]] +name = "rasterio" +version = "1.4.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "affine" }, + { name = "attrs" }, + { name = "certifi" }, + { name = "click" }, + { name = "click-plugins" }, + { name = "cligj" }, + { name = "numpy" }, + { name = "pyparsing" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, + { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, + { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, + { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, + { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, + { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, + { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, + { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, ] [[package]] @@ -2906,9 +2749,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload_time = "2025-01-25T08:48:16.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload_time = "2025-01-25T08:48:14.241Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, ] [[package]] @@ -2921,9 +2764,9 @@ dependencies = [ { 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, upload_time = "2024-05-29T15:37:49.536Z" } +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, upload_time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] [[package]] @@ -2933,18 +2776,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload_time = "2021-05-12T16:37:54.178Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload_time = "2021-05-12T16:37:52.536Z" }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload_time = "2019-10-28T16:00:19.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload_time = "2019-10-28T16:00:13.976Z" }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, ] [[package]] @@ -2954,120 +2797,110 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markdown-it-py" }, { name = "pygments" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload_time = "2024-11-01T16:43:57.873Z" } +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 = "rioxarray" +version = "0.19.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pyproj" }, + { name = "rasterio" }, + { name = "xarray" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload_time = "2024-11-01T16:43:55.817Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, ] [[package]] name = "rpds-py" version = "0.24.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863, upload_time = "2025-03-26T14:56:01.518Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/21/cbc43b220c9deb536b07fbd598c97d463bbb7afb788851891252fc920742/rpds_py-0.24.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:006f4342fe729a368c6df36578d7a348c7c716be1da0a1a0f86e3021f8e98724", size = 377531, upload_time = "2025-03-26T14:52:41.754Z" }, - { url = "https://files.pythonhosted.org/packages/42/15/cc4b09ef160483e49c3aab3b56f3d375eadf19c87c48718fb0147e86a446/rpds_py-0.24.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2d53747da70a4e4b17f559569d5f9506420966083a31c5fbd84e764461c4444b", size = 362273, upload_time = "2025-03-26T14:52:44.341Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a2/67718a188a88dbd5138d959bed6efe1cc7413a4caa8283bd46477ed0d1ad/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8acd55bd5b071156bae57b555f5d33697998752673b9de554dd82f5b5352727", size = 388111, upload_time = "2025-03-26T14:52:46.944Z" }, - { url = "https://files.pythonhosted.org/packages/e5/e6/cbf1d3163405ad5f4a1a6d23f80245f2204d0c743b18525f34982dec7f4d/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:7e80d375134ddb04231a53800503752093dbb65dad8dabacce2c84cccc78e964", size = 394447, upload_time = "2025-03-26T14:52:48.753Z" }, - { url = "https://files.pythonhosted.org/packages/21/bb/4fe220ccc8a549b38b9e9cec66212dc3385a82a5ee9e37b54411cce4c898/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:60748789e028d2a46fc1c70750454f83c6bdd0d05db50f5ae83e2db500b34da5", size = 448028, upload_time = "2025-03-26T14:52:50.757Z" }, - { url = "https://files.pythonhosted.org/packages/a5/41/d2d6e0fd774818c4cadb94185d30cf3768de1c2a9e0143fc8bc6ce59389e/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6e1daf5bf6c2be39654beae83ee6b9a12347cb5aced9a29eecf12a2d25fff664", size = 447410, upload_time = "2025-03-26T14:52:52.292Z" }, - { url = "https://files.pythonhosted.org/packages/a7/a7/6d04d438f53d8bb2356bb000bea9cf5c96a9315e405b577117e344cc7404/rpds_py-0.24.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1b221c2457d92a1fb3c97bee9095c874144d196f47c038462ae6e4a14436f7bc", size = 389531, upload_time = "2025-03-26T14:52:54.233Z" }, - { url = "https://files.pythonhosted.org/packages/23/be/72e6df39bd7ca5a66799762bf54d8e702483fdad246585af96723109d486/rpds_py-0.24.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:66420986c9afff67ef0c5d1e4cdc2d0e5262f53ad11e4f90e5e22448df485bf0", size = 420099, upload_time = "2025-03-26T14:52:56.135Z" }, - { url = "https://files.pythonhosted.org/packages/8c/c9/ca100cd4688ee0aa266197a5cb9f685231676dd7d573041ca53787b23f4e/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:43dba99f00f1d37b2a0265a259592d05fcc8e7c19d140fe51c6e6f16faabeb1f", size = 564950, upload_time = "2025-03-26T14:52:57.583Z" }, - { url = "https://files.pythonhosted.org/packages/05/98/908cd95686d33b3ac8ac2e582d7ae38e2c3aa2c0377bf1f5663bafd1ffb2/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:a88c0d17d039333a41d9bf4616bd062f0bd7aa0edeb6cafe00a2fc2a804e944f", size = 591778, upload_time = "2025-03-26T14:52:59.518Z" }, - { url = "https://files.pythonhosted.org/packages/7b/ac/e143726f1dd3215efcb974b50b03bd08a8a1556b404a0a7872af6d197e57/rpds_py-0.24.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:cc31e13ce212e14a539d430428cd365e74f8b2d534f8bc22dd4c9c55b277b875", size = 560421, upload_time = "2025-03-26T14:53:01.422Z" }, - { url = "https://files.pythonhosted.org/packages/60/28/add1c1d2fcd5aa354f7225d036d4492261759a22d449cff14841ef36a514/rpds_py-0.24.0-cp310-cp310-win32.whl", hash = "sha256:fc2c1e1b00f88317d9de6b2c2b39b012ebbfe35fe5e7bef980fd2a91f6100a07", size = 222089, upload_time = "2025-03-26T14:53:02.859Z" }, - { url = "https://files.pythonhosted.org/packages/b0/ac/81f8066c6de44c507caca488ba336ae30d35d57f61fe10578824d1a70196/rpds_py-0.24.0-cp310-cp310-win_amd64.whl", hash = "sha256:c0145295ca415668420ad142ee42189f78d27af806fcf1f32a18e51d47dd2052", size = 234622, upload_time = "2025-03-26T14:53:04.676Z" }, - { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679, upload_time = "2025-03-26T14:53:06.557Z" }, - { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571, upload_time = "2025-03-26T14:53:08.439Z" }, - { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012, upload_time = "2025-03-26T14:53:10.314Z" }, - { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730, upload_time = "2025-03-26T14:53:11.953Z" }, - { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264, upload_time = "2025-03-26T14:53:13.42Z" }, - { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813, upload_time = "2025-03-26T14:53:15.036Z" }, - { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438, upload_time = "2025-03-26T14:53:17.037Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416, upload_time = "2025-03-26T14:53:18.671Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236, upload_time = "2025-03-26T14:53:20.357Z" }, - { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016, upload_time = "2025-03-26T14:53:22.216Z" }, - { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123, upload_time = "2025-03-26T14:53:23.733Z" }, - { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256, upload_time = "2025-03-26T14:53:25.217Z" }, - { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718, upload_time = "2025-03-26T14:53:26.631Z" }, - { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945, upload_time = "2025-03-26T14:53:28.149Z" }, - { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935, upload_time = "2025-03-26T14:53:29.684Z" }, - { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817, upload_time = "2025-03-26T14:53:31.177Z" }, - { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983, upload_time = "2025-03-26T14:53:33.163Z" }, - { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719, upload_time = "2025-03-26T14:53:34.721Z" }, - { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546, upload_time = "2025-03-26T14:53:36.26Z" }, - { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695, upload_time = "2025-03-26T14:53:37.728Z" }, - { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218, upload_time = "2025-03-26T14:53:39.326Z" }, - { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062, upload_time = "2025-03-26T14:53:40.885Z" }, - { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262, upload_time = "2025-03-26T14:53:42.544Z" }, - { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306, upload_time = "2025-03-26T14:53:44.2Z" }, - { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281, upload_time = "2025-03-26T14:53:45.769Z" }, - { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719, upload_time = "2025-03-26T14:53:47.187Z" }, - { url = "https://files.pythonhosted.org/packages/99/48/11dae46d0c7f7e156ca0971a83f89c510af0316cd5d42c771b7cef945f0c/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:619ca56a5468f933d940e1bf431c6f4e13bef8e688698b067ae68eb4f9b30e3a", size = 378224, upload_time = "2025-03-26T14:54:58.78Z" }, - { url = "https://files.pythonhosted.org/packages/33/18/e8398d255369e35d312942f3bb8ecaff013c44968904891be2ab63b3aa94/rpds_py-0.24.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:4b28e5122829181de1898c2c97f81c0b3246d49f585f22743a1246420bb8d399", size = 363252, upload_time = "2025-03-26T14:55:00.359Z" }, - { url = "https://files.pythonhosted.org/packages/17/39/dd73ba691f4df3e6834bf982de214086ac3359ab3ac035adfb30041570e3/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8e5ab32cf9eb3647450bc74eb201b27c185d3857276162c101c0f8c6374e098", size = 388871, upload_time = "2025-03-26T14:55:02.253Z" }, - { url = "https://files.pythonhosted.org/packages/2f/2e/da0530b25cabd0feca2a759b899d2df325069a94281eeea8ac44c6cfeff7/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:208b3a70a98cf3710e97cabdc308a51cd4f28aa6e7bb11de3d56cd8b74bab98d", size = 394766, upload_time = "2025-03-26T14:55:04.05Z" }, - { url = "https://files.pythonhosted.org/packages/4c/ee/dd1c5040a431beb40fad4a5d7868acf343444b0bc43e627c71df2506538b/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bbc4362e06f950c62cad3d4abf1191021b2ffaf0b31ac230fbf0526453eee75e", size = 448712, upload_time = "2025-03-26T14:55:06.03Z" }, - { url = "https://files.pythonhosted.org/packages/f5/ec/6b93ffbb686be948e4d91ec76f4e6757f8551034b2a8176dd848103a1e34/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:ebea2821cdb5f9fef44933617be76185b80150632736f3d76e54829ab4a3b4d1", size = 447150, upload_time = "2025-03-26T14:55:08.098Z" }, - { url = "https://files.pythonhosted.org/packages/55/d5/a1c23760adad85b432df074ced6f910dd28f222b8c60aeace5aeb9a6654e/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b9a4df06c35465ef4d81799999bba810c68d29972bf1c31db61bfdb81dd9d5bb", size = 390662, upload_time = "2025-03-26T14:55:09.781Z" }, - { url = "https://files.pythonhosted.org/packages/a5/f3/419cb1f9bfbd3a48c256528c156e00f3349e3edce5ad50cbc141e71f66a5/rpds_py-0.24.0-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d3aa13bdf38630da298f2e0d77aca967b200b8cc1473ea05248f6c5e9c9bdb44", size = 421351, upload_time = "2025-03-26T14:55:11.477Z" }, - { url = "https://files.pythonhosted.org/packages/98/8e/62d1a55078e5ede0b3b09f35e751fa35924a34a0d44d7c760743383cd54a/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:041f00419e1da7a03c46042453598479f45be3d787eb837af382bfc169c0db33", size = 566074, upload_time = "2025-03-26T14:55:13.386Z" }, - { url = "https://files.pythonhosted.org/packages/fc/69/b7d1003166d78685da032b3c4ff1599fa536a3cfe6e5ce2da87c9c431906/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_i686.whl", hash = "sha256:d8754d872a5dfc3c5bf9c0e059e8107451364a30d9fd50f1f1a85c4fb9481164", size = 592398, upload_time = "2025-03-26T14:55:15.202Z" }, - { url = "https://files.pythonhosted.org/packages/ea/a8/1c98bc99338c37faadd28dd667d336df7409d77b4da999506a0b6b1c0aa2/rpds_py-0.24.0-pp310-pypy310_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:896c41007931217a343eff197c34513c154267636c8056fb409eafd494c3dcdc", size = 561114, upload_time = "2025-03-26T14:55:17.072Z" }, - { url = "https://files.pythonhosted.org/packages/2b/41/65c91443685a4c7b5f1dd271beadc4a3e063d57c3269221548dd9416e15c/rpds_py-0.24.0-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:92558d37d872e808944c3c96d0423b8604879a3d1c86fdad508d7ed91ea547d5", size = 235548, upload_time = "2025-03-26T14:55:18.707Z" }, - { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386, upload_time = "2025-03-26T14:55:20.381Z" }, - { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440, upload_time = "2025-03-26T14:55:22.121Z" }, - { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816, upload_time = "2025-03-26T14:55:23.737Z" }, - { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058, upload_time = "2025-03-26T14:55:25.468Z" }, - { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692, upload_time = "2025-03-26T14:55:27.535Z" }, - { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462, upload_time = "2025-03-26T14:55:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460, upload_time = "2025-03-26T14:55:31.017Z" }, - { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609, upload_time = "2025-03-26T14:55:32.84Z" }, - { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818, upload_time = "2025-03-26T14:55:34.538Z" }, - { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627, upload_time = "2025-03-26T14:55:36.26Z" }, - { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885, upload_time = "2025-03-26T14:55:38Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679 }, + { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571 }, + { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012 }, + { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730 }, + { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264 }, + { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813 }, + { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416 }, + { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236 }, + { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016 }, + { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123 }, + { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256 }, + { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718 }, + { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945 }, + { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935 }, + { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817 }, + { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983 }, + { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719 }, + { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546 }, + { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695 }, + { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218 }, + { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062 }, + { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262 }, + { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, + { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, + { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, + { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386 }, + { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440 }, + { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816 }, + { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058 }, + { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692 }, + { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462 }, + { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460 }, + { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609 }, + { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818 }, + { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627 }, + { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885 }, ] [[package]] name = "ruff" -version = "0.11.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/89/6f9c9674818ac2e9cc2f2b35b704b7768656e6b7c139064fc7ba8fbc99f1/ruff-0.11.7.tar.gz", hash = "sha256:655089ad3224070736dc32844fde783454f8558e71f501cb207485fe4eee23d4", size = 4054861, upload_time = "2025-04-24T18:49:37.007Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/ec/21927cb906c5614b786d1621dba405e3d44f6e473872e6df5d1a6bca0455/ruff-0.11.7-py3-none-linux_armv6l.whl", hash = "sha256:d29e909d9a8d02f928d72ab7837b5cbc450a5bdf578ab9ebee3263d0a525091c", size = 10245403, upload_time = "2025-04-24T18:48:40.459Z" }, - { url = "https://files.pythonhosted.org/packages/e2/af/fec85b6c2c725bcb062a354dd7cbc1eed53c33ff3aa665165871c9c16ddf/ruff-0.11.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:dd1fb86b168ae349fb01dd497d83537b2c5541fe0626e70c786427dd8363aaee", size = 11007166, upload_time = "2025-04-24T18:48:44.742Z" }, - { url = "https://files.pythonhosted.org/packages/31/9a/2d0d260a58e81f388800343a45898fd8df73c608b8261c370058b675319a/ruff-0.11.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:d3d7d2e140a6fbbc09033bce65bd7ea29d6a0adeb90b8430262fbacd58c38ada", size = 10378076, upload_time = "2025-04-24T18:48:47.918Z" }, - { url = "https://files.pythonhosted.org/packages/c2/c4/9b09b45051404d2e7dd6d9dbcbabaa5ab0093f9febcae664876a77b9ad53/ruff-0.11.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4809df77de390a1c2077d9b7945d82f44b95d19ceccf0c287c56e4dc9b91ca64", size = 10557138, upload_time = "2025-04-24T18:48:51.707Z" }, - { url = "https://files.pythonhosted.org/packages/5e/5e/f62a1b6669870a591ed7db771c332fabb30f83c967f376b05e7c91bccd14/ruff-0.11.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:f3a0c2e169e6b545f8e2dba185eabbd9db4f08880032e75aa0e285a6d3f48201", size = 10095726, upload_time = "2025-04-24T18:48:54.243Z" }, - { url = "https://files.pythonhosted.org/packages/45/59/a7aa8e716f4cbe07c3500a391e58c52caf665bb242bf8be42c62adef649c/ruff-0.11.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:49b888200a320dd96a68e86736cf531d6afba03e4f6cf098401406a257fcf3d6", size = 11672265, upload_time = "2025-04-24T18:48:57.639Z" }, - { url = "https://files.pythonhosted.org/packages/dd/e3/101a8b707481f37aca5f0fcc3e42932fa38b51add87bfbd8e41ab14adb24/ruff-0.11.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:2b19cdb9cf7dae00d5ee2e7c013540cdc3b31c4f281f1dacb5a799d610e90db4", size = 12331418, upload_time = "2025-04-24T18:49:00.697Z" }, - { url = "https://files.pythonhosted.org/packages/dd/71/037f76cbe712f5cbc7b852e4916cd3cf32301a30351818d32ab71580d1c0/ruff-0.11.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64e0ee994c9e326b43539d133a36a455dbaab477bc84fe7bfbd528abe2f05c1e", size = 11794506, upload_time = "2025-04-24T18:49:03.545Z" }, - { url = "https://files.pythonhosted.org/packages/ca/de/e450b6bab1fc60ef263ef8fcda077fb4977601184877dce1c59109356084/ruff-0.11.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:bad82052311479a5865f52c76ecee5d468a58ba44fb23ee15079f17dd4c8fd63", size = 13939084, upload_time = "2025-04-24T18:49:07.159Z" }, - { url = "https://files.pythonhosted.org/packages/0e/2c/1e364cc92970075d7d04c69c928430b23e43a433f044474f57e425cbed37/ruff-0.11.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7940665e74e7b65d427b82bffc1e46710ec7f30d58b4b2d5016e3f0321436502", size = 11450441, upload_time = "2025-04-24T18:49:11.41Z" }, - { url = "https://files.pythonhosted.org/packages/9d/7d/1b048eb460517ff9accd78bca0fa6ae61df2b276010538e586f834f5e402/ruff-0.11.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:169027e31c52c0e36c44ae9a9c7db35e505fee0b39f8d9fca7274a6305295a92", size = 10441060, upload_time = "2025-04-24T18:49:14.184Z" }, - { url = "https://files.pythonhosted.org/packages/3a/57/8dc6ccfd8380e5ca3d13ff7591e8ba46a3b330323515a4996b991b10bd5d/ruff-0.11.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:305b93f9798aee582e91e34437810439acb28b5fc1fee6b8205c78c806845a94", size = 10058689, upload_time = "2025-04-24T18:49:17.559Z" }, - { url = "https://files.pythonhosted.org/packages/23/bf/20487561ed72654147817885559ba2aa705272d8b5dee7654d3ef2dbf912/ruff-0.11.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a681db041ef55550c371f9cd52a3cf17a0da4c75d6bd691092dfc38170ebc4b6", size = 11073703, upload_time = "2025-04-24T18:49:20.247Z" }, - { url = "https://files.pythonhosted.org/packages/9d/27/04f2db95f4ef73dccedd0c21daf9991cc3b7f29901a4362057b132075aa4/ruff-0.11.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:07f1496ad00a4a139f4de220b0c97da6d4c85e0e4aa9b2624167b7d4d44fd6b6", size = 11532822, upload_time = "2025-04-24T18:49:23.765Z" }, - { url = "https://files.pythonhosted.org/packages/e1/72/43b123e4db52144c8add336581de52185097545981ff6e9e58a21861c250/ruff-0.11.7-py3-none-win32.whl", hash = "sha256:f25dfb853ad217e6e5f1924ae8a5b3f6709051a13e9dad18690de6c8ff299e26", size = 10362436, upload_time = "2025-04-24T18:49:27.377Z" }, - { url = "https://files.pythonhosted.org/packages/c5/a0/3e58cd76fdee53d5c8ce7a56d84540833f924ccdf2c7d657cb009e604d82/ruff-0.11.7-py3-none-win_amd64.whl", hash = "sha256:0a931d85959ceb77e92aea4bbedfded0a31534ce191252721128f77e5ae1f98a", size = 11566676, upload_time = "2025-04-24T18:49:30.938Z" }, - { url = "https://files.pythonhosted.org/packages/68/ca/69d7c7752bce162d1516e5592b1cc6b6668e9328c0d270609ddbeeadd7cf/ruff-0.11.7-py3-none-win_arm64.whl", hash = "sha256:778c1e5d6f9e91034142dfd06110534ca13220bfaad5c3735f6cb844654f6177", size = 10677936, upload_time = "2025-04-24T18:49:34.392Z" }, +version = "0.11.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, ] [[package]] name = "s3fs" -version = "2025.3.2" +version = "2025.5.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiobotocore" }, { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/72/df/559dc6d796c38f1b8a09a5f6dcf62a467a84f3c87a837ee07c59f60a26ad/s3fs-2025.3.2.tar.gz", hash = "sha256:6798f896ec76dd3bfd8beb89f0bb7c5263cb2760e038bae0978505cd172a307c", size = 77280, upload_time = "2025-03-31T15:35:18.881Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305 } wheels = [ - { url = "https://files.pythonhosted.org/packages/66/e1/4db0388df5655de92ce5f9b60d2bef220a58dde130e0453e5433c579986e/s3fs-2025.3.2-py3-none-any.whl", hash = "sha256:81eae3f37b4b04bcc08845d7bcc607c6ca45878813ef7e6a28d77b2688417130", size = 30485, upload_time = "2025-03-31T15:35:17.384Z" }, + { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481 }, ] [[package]] @@ -3077,27 +2910,56 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload_time = "2025-02-26T20:44:57.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload_time = "2025-02-26T20:44:55.509Z" }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, +] + +[[package]] +name = "scipy" +version = "1.15.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload_time = "2024-04-07T00:01:09.267Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload_time = "2024-04-07T00:01:07.438Z" }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, ] [[package]] name = "setuptools" version = "80.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221, upload_time = "2025-04-27T17:21:10.806Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221 } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907, upload_time = "2025-04-27T17:21:09.175Z" }, + { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907 }, ] [[package]] @@ -3107,77 +2969,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617, upload_time = "2025-04-03T09:15:05.725Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/98/97/7027722bec6fba6fbfdb36ff987bc368f6cd01ff91d3815bce93439ef3f5/shapely-2.1.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d3e5c5e3864d4dc431dd85a8e5137ebd39c8ac287b009d3fa80a07017b29c940", size = 1826440, upload_time = "2025-04-03T09:13:56.755Z" }, - { url = "https://files.pythonhosted.org/packages/7e/de/d2ee50a66fcff3786a00b59b99b5bf3a7ec7bb1805e1c409a1c9c1817749/shapely-2.1.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d6eea89b16f5f3a064659126455d23fa3066bc3d6cd385c35214f06bf5871aa6", size = 1627651, upload_time = "2025-04-03T09:13:58.649Z" }, - { url = "https://files.pythonhosted.org/packages/54/c9/e0ead09661f58fb9ef65826ff6af7fa4386f9e52dc25ddd36cdd019235e2/shapely-2.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:183174ad0b21a81ee661f05e7c47aa92ebfae01814cd3cbe54adea7a4213f5f4", size = 2891260, upload_time = "2025-04-03T09:14:00.574Z" }, - { url = "https://files.pythonhosted.org/packages/16/6f/bcb800b2579b995bb61f429445b7328ae2336155964ca5f6c367ebd3fd17/shapely-2.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f239c1484af66bc14b81a76f2a8e0fada29d59010423253ff857d0ccefdaa93f", size = 3011154, upload_time = "2025-04-03T09:14:02.103Z" }, - { url = "https://files.pythonhosted.org/packages/c5/a0/8eeaf01fff142f092b64b53c425bd11a2c2a1564a30df283d9e8eb719fcf/shapely-2.1.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:6220a466d1475141dad0cd8065d2549a5c2ed3fa4e2e02fb8ea65d494cfd5b07", size = 3834153, upload_time = "2025-04-03T09:14:03.999Z" }, - { url = "https://files.pythonhosted.org/packages/7c/45/4a0b7e55731a410f44c4f8fbc61f484e04ec78eb6490d05576ff98efec59/shapely-2.1.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:4822d3ed3efb06145c34d29d5b56792f72b7d713300f603bfd5d825892c6f79f", size = 4017460, upload_time = "2025-04-03T09:14:05.894Z" }, - { url = "https://files.pythonhosted.org/packages/bf/75/c3f3e6f5d40b9bf9390aa47d7ec56b8d56e61a30487d76d7aa06f87b3308/shapely-2.1.0-cp310-cp310-win32.whl", hash = "sha256:ea51ddf3d3c60866dca746081b56c75f34ff1b01acbd4d44269071a673c735b9", size = 1527812, upload_time = "2025-04-03T09:14:07.528Z" }, - { url = "https://files.pythonhosted.org/packages/71/0a/2002b39da6935f361da9c6437e45e01f0ebac81f66c08c01da974227036c/shapely-2.1.0-cp310-cp310-win_amd64.whl", hash = "sha256:a6f5e02e2cded9f4ec5709900a296c7f2cce5f8e9e9d80ba7d89ae2f4ed89d7b", size = 1707475, upload_time = "2025-04-03T09:14:08.964Z" }, - { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974, upload_time = "2025-04-03T09:14:11.301Z" }, - { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137, upload_time = "2025-04-03T09:14:13.127Z" }, - { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161, upload_time = "2025-04-03T09:14:15.031Z" }, - { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530, upload_time = "2025-04-03T09:14:16.562Z" }, - { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208, upload_time = "2025-04-03T09:14:18.342Z" }, - { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863, upload_time = "2025-04-03T09:14:20.233Z" }, - { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488, upload_time = "2025-04-03T09:14:21.597Z" }, - { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311, upload_time = "2025-04-03T09:14:23.245Z" }, - { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732, upload_time = "2025-04-03T09:14:25.047Z" }, - { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404, upload_time = "2025-04-03T09:14:26.456Z" }, - { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316, upload_time = "2025-04-03T09:14:28.266Z" }, - { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099, upload_time = "2025-04-03T09:14:30.067Z" }, - { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873, upload_time = "2025-04-03T09:14:31.912Z" }, - { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004, upload_time = "2025-04-03T09:14:33.976Z" }, - { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366, upload_time = "2025-04-03T09:14:35.348Z" }, - { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265, upload_time = "2025-04-03T09:14:36.878Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974 }, + { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137 }, + { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161 }, + { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530 }, + { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208 }, + { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863 }, + { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488 }, + { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311 }, + { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732 }, + { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404 }, + { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316 }, + { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099 }, + { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873 }, + { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, + { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, + { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, ] [[package]] name = "six" version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload_time = "2024-12-04T17:35:28.174Z" } +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, upload_time = "2024-12-04T17:35:26.475Z" }, + { 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 = "smmap" version = "5.0.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329, upload_time = "2025-01-02T07:14:40.909Z" } +sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303, upload_time = "2025-01-02T07:14:38.724Z" }, + { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload_time = "2024-02-25T23:20:04.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload_time = "2024-02-25T23:20:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, ] [[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, upload_time = "2021-05-16T22:03:42.897Z" } +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, upload_time = "2021-05-16T22:03:41.177Z" }, + { 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.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload_time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload_time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, ] [[package]] @@ -3188,33 +3042,25 @@ dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299, upload_time = "2025-03-27T17:52:31.876Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/87/fa/8e8fd93684b04e65816be864bebf0000fe1602e5452d006f9acc5db14ce5/sqlalchemy-2.0.40-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f1ea21bef99c703f44444ad29c2c1b6bd55d202750b6de8e06a955380f4725d7", size = 2112843, upload_time = "2025-03-27T18:49:25.515Z" }, - { url = "https://files.pythonhosted.org/packages/ba/87/06992f78a9ce545dfd1fea3dd99262bec5221f6f9d2d2066c3e94662529f/sqlalchemy-2.0.40-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:afe63b208153f3a7a2d1a5b9df452b0673082588933e54e7c8aac457cf35e758", size = 2104032, upload_time = "2025-03-27T18:49:28.098Z" }, - { url = "https://files.pythonhosted.org/packages/92/ee/57dc77282e8be22d686bd4681825299aa1069bbe090564868ea270ed5214/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a8aae085ea549a1eddbc9298b113cffb75e514eadbb542133dd2b99b5fb3b6af", size = 3086406, upload_time = "2025-03-27T18:44:25.302Z" }, - { url = "https://files.pythonhosted.org/packages/94/3f/ceb9ab214b2e42d2e74a9209b3a2f2f073504eee16cddd2df81feeb67c2f/sqlalchemy-2.0.40-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5ea9181284754d37db15156eb7be09c86e16e50fbe77610e9e7bee09291771a1", size = 3094652, upload_time = "2025-03-27T18:55:16.174Z" }, - { url = "https://files.pythonhosted.org/packages/00/0a/3401232a5b6d91a2df16c1dc39c6504c54575744c2faafa1e5a50de96621/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:5434223b795be5c5ef8244e5ac98056e290d3a99bdcc539b916e282b160dda00", size = 3050503, upload_time = "2025-03-27T18:44:28.266Z" }, - { url = "https://files.pythonhosted.org/packages/93/c2/ea7171415ab131397f71a2673645c2fe29ebe9a93063d458eb89e42bf051/sqlalchemy-2.0.40-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:15d08d5ef1b779af6a0909b97be6c1fd4298057504eb6461be88bd1696cb438e", size = 3076011, upload_time = "2025-03-27T18:55:17.967Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ee/d8e229280d621bed8c51eebf1dd413aa09ca89e309b1fff40d881dd149af/sqlalchemy-2.0.40-cp310-cp310-win32.whl", hash = "sha256:cd2f75598ae70bcfca9117d9e51a3b06fe29edd972fdd7fd57cc97b4dbf3b08a", size = 2085136, upload_time = "2025-03-27T18:48:53.032Z" }, - { url = "https://files.pythonhosted.org/packages/60/7f/ea1086136bc648cd4713a1e01869f7fc31979d67b3a8f973f5d9ab8de7e1/sqlalchemy-2.0.40-cp310-cp310-win_amd64.whl", hash = "sha256:2cbafc8d39ff1abdfdda96435f38fab141892dc759a2165947d1a8fffa7ef596", size = 2109421, upload_time = "2025-03-27T18:48:54.258Z" }, - { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025, upload_time = "2025-03-27T18:49:29.456Z" }, - { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419, upload_time = "2025-03-27T18:49:30.75Z" }, - { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720, upload_time = "2025-03-27T18:44:29.871Z" }, - { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682, upload_time = "2025-03-27T18:55:20.097Z" }, - { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542, upload_time = "2025-03-27T18:44:31.333Z" }, - { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864, upload_time = "2025-03-27T18:55:21.784Z" }, - { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675, upload_time = "2025-03-27T18:48:55.915Z" }, - { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099, upload_time = "2025-03-27T18:48:57.45Z" }, - { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620, upload_time = "2025-03-27T18:40:00.071Z" }, - { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004, upload_time = "2025-03-27T18:40:04.204Z" }, - { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440, upload_time = "2025-03-27T18:51:25.624Z" }, - { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277, upload_time = "2025-03-27T18:50:28.142Z" }, - { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591, upload_time = "2025-03-27T18:51:27.543Z" }, - { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199, upload_time = "2025-03-27T18:50:30.069Z" }, - { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959, upload_time = "2025-03-27T18:45:57.574Z" }, - { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526, upload_time = "2025-03-27T18:45:58.965Z" }, - { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894, upload_time = "2025-03-27T18:40:43.796Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025 }, + { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419 }, + { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720 }, + { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682 }, + { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542 }, + { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864 }, + { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675 }, + { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099 }, + { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620 }, + { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004 }, + { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440 }, + { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277 }, + { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591 }, + { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199 }, + { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959 }, + { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526 }, + { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894 }, ] [[package]] @@ -3226,9 +3072,9 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload_time = "2023-09-30T13:58:05.479Z" } +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, upload_time = "2023-09-30T13:58:03.53Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, ] [[package]] @@ -3238,18 +3084,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload_time = "2023-03-10T12:50:27.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload_time = "2023-03-10T12:50:17.242Z" }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload_time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload_time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] [[package]] @@ -3261,9 +3107,21 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload_time = "2024-03-12T14:34:39.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload_time = "2024-03-12T14:34:36.569Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, +] + +[[package]] +name = "tifffile" +version = "2025.5.21" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, ] [[package]] @@ -3273,110 +3131,133 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload_time = "2024-10-24T14:58:29.895Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload_time = "2024-10-24T14:58:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] [[package]] -name = "tomli" -version = "2.2.1" +name = "tornado" +version = "6.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload_time = "2024-11-27T22:38:36.873Z" } +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/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload_time = "2024-11-27T22:37:54.956Z" }, - { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload_time = "2024-11-27T22:37:56.698Z" }, - { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload_time = "2024-11-27T22:37:57.63Z" }, - { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload_time = "2024-11-27T22:37:59.344Z" }, - { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload_time = "2024-11-27T22:38:00.429Z" }, - { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload_time = "2024-11-27T22:38:02.094Z" }, - { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload_time = "2024-11-27T22:38:03.206Z" }, - { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload_time = "2024-11-27T22:38:04.217Z" }, - { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload_time = "2024-11-27T22:38:05.908Z" }, - { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload_time = "2024-11-27T22:38:06.812Z" }, - { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload_time = "2024-11-27T22:38:07.731Z" }, - { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload_time = "2024-11-27T22:38:09.384Z" }, - { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload_time = "2024-11-27T22:38:10.329Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload_time = "2024-11-27T22:38:11.443Z" }, - { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload_time = "2024-11-27T22:38:13.099Z" }, - { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload_time = "2024-11-27T22:38:14.766Z" }, - { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload_time = "2024-11-27T22:38:15.843Z" }, - { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload_time = "2024-11-27T22:38:17.645Z" }, - { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload_time = "2024-11-27T22:38:19.159Z" }, - { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload_time = "2024-11-27T22:38:20.064Z" }, - { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload_time = "2024-11-27T22:38:35.385Z" }, + { 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 = "tornado" -version = "6.4.2" +name = "tqdm" +version = "4.67.1" 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, upload_time = "2024-11-22T03:06:38.036Z" } +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/26/7e/71f604d8cea1b58f82ba3590290b66da1e72d840aeb37e0d5f7291bd30db/tornado-6.4.2-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e828cce1123e9e44ae2a50a9de3055497ab1d0aeb440c5ac23064d9e44880da1", size = 436299, upload_time = "2024-11-22T03:06:20.162Z" }, - { 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, upload_time = "2024-11-22T03:06:22.39Z" }, - { 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, upload_time = "2024-11-22T03:06:24.214Z" }, - { 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, upload_time = "2024-11-22T03:06:25.559Z" }, - { 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, upload_time = "2024-11-22T03:06:27.584Z" }, - { 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, upload_time = "2024-11-22T03:06:28.933Z" }, - { 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, upload_time = "2024-11-22T03:06:30.428Z" }, - { 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, upload_time = "2024-11-22T03:06:32.458Z" }, - { url = "https://files.pythonhosted.org/packages/b5/25/36dbd49ab6d179bcfc4c6c093a51795a4f3bed380543a8242ac3517a1751/tornado-6.4.2-cp38-abi3-win32.whl", hash = "sha256:2876cef82e6c5978fde1e0d5b1f919d756968d5b4282418f3146b79b58556482", size = 438463, upload_time = "2024-11-22T03:06:34.71Z" }, - { url = "https://files.pythonhosted.org/packages/61/cc/58b1adeb1bb46228442081e746fcdbc4540905c87e8add7c277540934edb/tornado-6.4.2-cp38-abi3-win_amd64.whl", hash = "sha256:908b71bf3ff37d81073356a5fadcc660eb10c1476ee6e2725588626ce7e5ca38", size = 438907, upload_time = "2024-11-22T03:06:36.71Z" }, + { 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, upload_time = "2024-04-19T11:11:49.746Z" } +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, upload_time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20241206" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802, upload_time = "2024-12-06T02:56:41.019Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384, upload_time = "2024-12-06T02:56:39.412Z" }, + { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload_time = "2025-04-10T14:19:05.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload_time = "2025-04-10T14:19:03.967Z" }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload_time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload_time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, +] + +[[package]] +name = "ujson" +version = "5.10.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, + { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, + { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, + { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, + { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, + { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, + { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, + { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, + { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, + { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, +] + +[[package]] +name = "universal-pathlib" +version = "0.2.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "fsspec" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload_time = "2023-06-21T01:49:05.374Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload_time = "2023-06-21T01:49:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload_time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload_time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, ] [[package]] @@ -3388,116 +3269,131 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945, upload_time = "2025-03-31T16:33:29.185Z" } +sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461, upload_time = "2025-03-31T16:33:26.758Z" }, + { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461 }, +] + +[[package]] +name = "virtualizarr" +version = "1.3.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numcodecs" }, + { name = "numpy" }, + { name = "packaging" }, + { name = "ujson" }, + { name = "universal-pathlib" }, + { name = "xarray" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload_time = "2024-11-01T14:07:13.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/56/90994d789c61df619bfc5ce2ecdabd5eeff564e1eb47512bd01b5e019569/watchdog-6.0.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d1cdb490583ebd691c012b3d6dae011000fe42edb7a82ece80965b42abd61f26", size = 96390, upload_time = "2024-11-01T14:06:24.793Z" }, - { url = "https://files.pythonhosted.org/packages/55/46/9a67ee697342ddf3c6daa97e3a587a56d6c4052f881ed926a849fcf7371c/watchdog-6.0.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:bc64ab3bdb6a04d69d4023b29422170b74681784ffb9463ed4870cf2f3e66112", size = 88389, upload_time = "2024-11-01T14:06:27.112Z" }, - { url = "https://files.pythonhosted.org/packages/44/65/91b0985747c52064d8701e1075eb96f8c40a79df889e59a399453adfb882/watchdog-6.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:c897ac1b55c5a1461e16dae288d22bb2e412ba9807df8397a635d88f671d36c3", size = 89020, upload_time = "2024-11-01T14:06:29.876Z" }, - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload_time = "2024-11-01T14:06:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload_time = "2024-11-01T14:06:32.99Z" }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload_time = "2024-11-01T14:06:34.963Z" }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload_time = "2024-11-01T14:06:37.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload_time = "2024-11-01T14:06:39.748Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload_time = "2024-11-01T14:06:41.009Z" }, - { url = "https://files.pythonhosted.org/packages/30/ad/d17b5d42e28a8b91f8ed01cb949da092827afb9995d4559fd448d0472763/watchdog-6.0.0-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:c7ac31a19f4545dd92fc25d200694098f42c9a8e391bc00bdd362c5736dbf881", size = 87902, upload_time = "2024-11-01T14:06:53.119Z" }, - { url = "https://files.pythonhosted.org/packages/5c/ca/c3649991d140ff6ab67bfc85ab42b165ead119c9e12211e08089d763ece5/watchdog-6.0.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:9513f27a1a582d9808cf21a07dae516f0fab1cf2d7683a742c498b93eedabb11", size = 88380, upload_time = "2024-11-01T14:06:55.19Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload_time = "2024-11-01T14:06:59.472Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload_time = "2024-11-01T14:07:01.431Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload_time = "2024-11-01T14:07:02.568Z" }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload_time = "2024-11-01T14:07:03.893Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload_time = "2024-11-01T14:07:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload_time = "2024-11-01T14:07:06.376Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload_time = "2024-11-01T14:07:07.547Z" }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload_time = "2024-11-01T14:07:09.525Z" }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload_time = "2024-11-01T14:07:10.686Z" }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload_time = "2024-11-01T14:07:11.845Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] [[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, upload_time = "2024-01-06T02:10:57.829Z" } +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, upload_time = "2024-01-06T02:10:55.763Z" }, + { 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 = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload_time = "2024-11-11T07:43:24.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload_time = "2024-11-11T07:43:22.529Z" }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload_time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload_time = "2017-04-05T20:21:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload_time = "2024-04-23T22:16:16.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload_time = "2024-04-23T22:16:14.422Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload_time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/d1/1daec934997e8b160040c78d7b31789f19b122110a75eca3d4e8da0049e1/wrapt-1.17.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:3d57c572081fed831ad2d26fd430d565b76aa277ed1d30ff4d40670b1c0dd984", size = 53307, upload_time = "2025-01-14T10:33:13.616Z" }, - { url = "https://files.pythonhosted.org/packages/1b/7b/13369d42651b809389c1a7153baa01d9700430576c81a2f5c5e460df0ed9/wrapt-1.17.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b5e251054542ae57ac7f3fba5d10bfff615b6c2fb09abeb37d2f1463f841ae22", size = 38486, upload_time = "2025-01-14T10:33:15.947Z" }, - { url = "https://files.pythonhosted.org/packages/62/bf/e0105016f907c30b4bd9e377867c48c34dc9c6c0c104556c9c9126bd89ed/wrapt-1.17.2-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:80dd7db6a7cb57ffbc279c4394246414ec99537ae81ffd702443335a61dbf3a7", size = 38777, upload_time = "2025-01-14T10:33:17.462Z" }, - { url = "https://files.pythonhosted.org/packages/27/70/0f6e0679845cbf8b165e027d43402a55494779295c4b08414097b258ac87/wrapt-1.17.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0a6e821770cf99cc586d33833b2ff32faebdbe886bd6322395606cf55153246c", size = 83314, upload_time = "2025-01-14T10:33:21.282Z" }, - { url = "https://files.pythonhosted.org/packages/0f/77/0576d841bf84af8579124a93d216f55d6f74374e4445264cb378a6ed33eb/wrapt-1.17.2-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b60fb58b90c6d63779cb0c0c54eeb38941bae3ecf7a73c764c52c88c2dcb9d72", size = 74947, upload_time = "2025-01-14T10:33:24.414Z" }, - { url = "https://files.pythonhosted.org/packages/90/ec/00759565518f268ed707dcc40f7eeec38637d46b098a1f5143bff488fe97/wrapt-1.17.2-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b870b5df5b71d8c3359d21be8f0d6c485fa0ebdb6477dda51a1ea54a9b558061", size = 82778, upload_time = "2025-01-14T10:33:26.152Z" }, - { url = "https://files.pythonhosted.org/packages/f8/5a/7cffd26b1c607b0b0c8a9ca9d75757ad7620c9c0a9b4a25d3f8a1480fafc/wrapt-1.17.2-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:4011d137b9955791f9084749cba9a367c68d50ab8d11d64c50ba1688c9b457f2", size = 81716, upload_time = "2025-01-14T10:33:27.372Z" }, - { url = "https://files.pythonhosted.org/packages/7e/09/dccf68fa98e862df7e6a60a61d43d644b7d095a5fc36dbb591bbd4a1c7b2/wrapt-1.17.2-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:1473400e5b2733e58b396a04eb7f35f541e1fb976d0c0724d0223dd607e0f74c", size = 74548, upload_time = "2025-01-14T10:33:28.52Z" }, - { url = "https://files.pythonhosted.org/packages/b7/8e/067021fa3c8814952c5e228d916963c1115b983e21393289de15128e867e/wrapt-1.17.2-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:3cedbfa9c940fdad3e6e941db7138e26ce8aad38ab5fe9dcfadfed9db7a54e62", size = 81334, upload_time = "2025-01-14T10:33:29.643Z" }, - { url = "https://files.pythonhosted.org/packages/4b/0d/9d4b5219ae4393f718699ca1c05f5ebc0c40d076f7e65fd48f5f693294fb/wrapt-1.17.2-cp310-cp310-win32.whl", hash = "sha256:582530701bff1dec6779efa00c516496968edd851fba224fbd86e46cc6b73563", size = 36427, upload_time = "2025-01-14T10:33:30.832Z" }, - { url = "https://files.pythonhosted.org/packages/72/6a/c5a83e8f61aec1e1aeef939807602fb880e5872371e95df2137142f5c58e/wrapt-1.17.2-cp310-cp310-win_amd64.whl", hash = "sha256:58705da316756681ad3c9c73fd15499aa4d8c69f9fd38dc8a35e06c12468582f", size = 38774, upload_time = "2025-01-14T10:33:32.897Z" }, - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload_time = "2025-01-14T10:33:33.992Z" }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload_time = "2025-01-14T10:33:35.264Z" }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload_time = "2025-01-14T10:33:38.28Z" }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload_time = "2025-01-14T10:33:40.678Z" }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload_time = "2025-01-14T10:33:41.868Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload_time = "2025-01-14T10:33:43.598Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload_time = "2025-01-14T10:33:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload_time = "2025-01-14T10:33:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload_time = "2025-01-14T10:33:52.328Z" }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload_time = "2025-01-14T10:33:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload_time = "2025-01-14T10:33:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload_time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload_time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload_time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload_time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload_time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload_time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload_time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload_time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload_time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload_time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload_time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload_time = "2025-01-14T10:35:44.018Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +] + +[[package]] +name = "xarray" +version = "2025.4.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, + { name = "packaging" }, + { name = "pandas" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, ] [[package]] @@ -3509,58 +3405,57 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload_time = "2025-04-17T00:45:14.661Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/ab/66082639f99d7ef647a86b2ff4ca20f8ae13bd68a6237e6e166b8eb92edf/yarl-1.20.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f1f6670b9ae3daedb325fa55fbe31c22c8228f6e0b513772c2e1c623caa6ab22", size = 145054, upload_time = "2025-04-17T00:41:27.071Z" }, - { url = "https://files.pythonhosted.org/packages/3d/c2/4e78185c453c3ca02bd11c7907394d0410d26215f9e4b7378648b3522a30/yarl-1.20.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:85a231fa250dfa3308f3c7896cc007a47bc76e9e8e8595c20b7426cac4884c62", size = 96811, upload_time = "2025-04-17T00:41:30.235Z" }, - { url = "https://files.pythonhosted.org/packages/c7/45/91e31dccdcf5b7232dcace78bd51a1bb2d7b4b96c65eece0078b620587d1/yarl-1.20.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1a06701b647c9939d7019acdfa7ebbfbb78ba6aa05985bb195ad716ea759a569", size = 94566, upload_time = "2025-04-17T00:41:32.023Z" }, - { url = "https://files.pythonhosted.org/packages/c8/21/e0aa650bcee881fb804331faa2c0f9a5d6be7609970b2b6e3cdd414e174b/yarl-1.20.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7595498d085becc8fb9203aa314b136ab0516c7abd97e7d74f7bb4eb95042abe", size = 327297, upload_time = "2025-04-17T00:41:34.03Z" }, - { url = "https://files.pythonhosted.org/packages/1a/a4/58f10870f5c17595c5a37da4c6a0b321589b7d7976e10570088d445d0f47/yarl-1.20.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:af5607159085dcdb055d5678fc2d34949bd75ae6ea6b4381e784bbab1c3aa195", size = 323578, upload_time = "2025-04-17T00:41:36.492Z" }, - { url = "https://files.pythonhosted.org/packages/07/df/2506b1382cc0c4bb0d22a535dc3e7ccd53da9a59b411079013a7904ac35c/yarl-1.20.0-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:95b50910e496567434cb77a577493c26bce0f31c8a305135f3bda6a2483b8e10", size = 343212, upload_time = "2025-04-17T00:41:38.396Z" }, - { url = "https://files.pythonhosted.org/packages/ba/4a/d1c901d0e2158ad06bb0b9a92473e32d992f98673b93c8a06293e091bab0/yarl-1.20.0-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b594113a301ad537766b4e16a5a6750fcbb1497dcc1bc8a4daae889e6402a634", size = 337956, upload_time = "2025-04-17T00:41:40.519Z" }, - { url = "https://files.pythonhosted.org/packages/8b/fd/10fcf7d86f49b1a11096d6846257485ef32e3d3d322e8a7fdea5b127880c/yarl-1.20.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:083ce0393ea173cd37834eb84df15b6853b555d20c52703e21fbababa8c129d2", size = 333889, upload_time = "2025-04-17T00:41:42.437Z" }, - { url = "https://files.pythonhosted.org/packages/e2/cd/bae926a25154ba31c5fd15f2aa6e50a545c840e08d85e2e2e0807197946b/yarl-1.20.0-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4f1a350a652bbbe12f666109fbddfdf049b3ff43696d18c9ab1531fbba1c977a", size = 322282, upload_time = "2025-04-17T00:41:44.641Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c6/c3ac3597dfde746c63c637c5422cf3954ebf622a8de7f09892d20a68900d/yarl-1.20.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:fb0caeac4a164aadce342f1597297ec0ce261ec4532bbc5a9ca8da5622f53867", size = 336270, upload_time = "2025-04-17T00:41:46.812Z" }, - { url = "https://files.pythonhosted.org/packages/dd/42/417fd7b8da5846def29712370ea8916a4be2553de42a2c969815153717be/yarl-1.20.0-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:d88cc43e923f324203f6ec14434fa33b85c06d18d59c167a0637164863b8e995", size = 335500, upload_time = "2025-04-17T00:41:48.896Z" }, - { url = "https://files.pythonhosted.org/packages/37/aa/c2339683f8f05f4be16831b6ad58d04406cf1c7730e48a12f755da9f5ac5/yarl-1.20.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e52d6ed9ea8fd3abf4031325dc714aed5afcbfa19ee4a89898d663c9976eb487", size = 339672, upload_time = "2025-04-17T00:41:50.965Z" }, - { url = "https://files.pythonhosted.org/packages/be/12/ab6c4df95f00d7bc9502bf07a92d5354f11d9d3cb855222a6a8d2bd6e8da/yarl-1.20.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ce360ae48a5e9961d0c730cf891d40698a82804e85f6e74658fb175207a77cb2", size = 351840, upload_time = "2025-04-17T00:41:53.074Z" }, - { url = "https://files.pythonhosted.org/packages/83/3c/08d58c51bbd3899be3e7e83cd7a691fdcf3b9f78b8699d663ecc2c090ab7/yarl-1.20.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:06d06c9d5b5bc3eb56542ceeba6658d31f54cf401e8468512447834856fb0e61", size = 359550, upload_time = "2025-04-17T00:41:55.517Z" }, - { url = "https://files.pythonhosted.org/packages/8a/15/de7906c506f85fb476f0edac4bd74569f49e5ffdcf98e246a0313bf593b9/yarl-1.20.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c27d98f4e5c4060582f44e58309c1e55134880558f1add7a87c1bc36ecfade19", size = 351108, upload_time = "2025-04-17T00:41:57.582Z" }, - { url = "https://files.pythonhosted.org/packages/25/04/c6754f5ae2cdf057ac094ac01137c17875b629b1c29ed75354626a755375/yarl-1.20.0-cp310-cp310-win32.whl", hash = "sha256:f4d3fa9b9f013f7050326e165c3279e22850d02ae544ace285674cb6174b5d6d", size = 86733, upload_time = "2025-04-17T00:41:59.757Z" }, - { url = "https://files.pythonhosted.org/packages/db/1f/5c1952f3d983ac3f5fb079b5b13b62728f8a73fd27d03e1cef7e476addff/yarl-1.20.0-cp310-cp310-win_amd64.whl", hash = "sha256:bc906b636239631d42eb8a07df8359905da02704a868983265603887ed68c076", size = 92916, upload_time = "2025-04-17T00:42:02.177Z" }, - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload_time = "2025-04-17T00:42:04.511Z" }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload_time = "2025-04-17T00:42:06.43Z" }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload_time = "2025-04-17T00:42:07.976Z" }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload_time = "2025-04-17T00:42:09.902Z" }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload_time = "2025-04-17T00:42:11.768Z" }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload_time = "2025-04-17T00:42:13.983Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload_time = "2025-04-17T00:42:16.386Z" }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload_time = "2025-04-17T00:42:18.622Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload_time = "2025-04-17T00:42:20.9Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload_time = "2025-04-17T00:42:22.926Z" }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload_time = "2025-04-17T00:42:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload_time = "2025-04-17T00:42:27.475Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload_time = "2025-04-17T00:42:29.333Z" }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload_time = "2025-04-17T00:42:31.668Z" }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload_time = "2025-04-17T00:42:33.523Z" }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload_time = "2025-04-17T00:42:35.873Z" }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload_time = "2025-04-17T00:42:37.586Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload_time = "2025-04-17T00:42:39.602Z" }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload_time = "2025-04-17T00:42:41.469Z" }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload_time = "2025-04-17T00:42:43.666Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload_time = "2025-04-17T00:42:45.391Z" }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload_time = "2025-04-17T00:42:47.552Z" }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload_time = "2025-04-17T00:42:49.406Z" }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload_time = "2025-04-17T00:42:51.588Z" }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload_time = "2025-04-17T00:42:53.674Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload_time = "2025-04-17T00:42:55.49Z" }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload_time = "2025-04-17T00:42:57.895Z" }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload_time = "2025-04-17T00:43:00.094Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload_time = "2025-04-17T00:43:02.242Z" }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload_time = "2025-04-17T00:43:04.189Z" }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload_time = "2025-04-17T00:43:06.609Z" }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload_time = "2025-04-17T00:43:09.01Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload_time = "2025-04-17T00:43:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload_time = "2025-04-17T00:43:13.087Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload_time = "2025-04-17T00:45:12.199Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, +] + +[[package]] +name = "zarr" +version = "3.0.8" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "donfig" }, + { name = "numcodecs", extra = ["crc32c"] }, + { name = "numpy" }, + { name = "packaging" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, ] From 62f5f6319c9062d12a5f98eea4c044627aac67e7 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Fri, 23 May 2025 16:24:12 -0400 Subject: [PATCH 42/97] 2025.5: Pre-commit / linting --- .pre-commit-config.yaml | 2 + examples/Demo_Iceberg.ipynb | 301 ++++--- .../XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb | 282 +++--- pyproject.toml | 5 + .../src/get_module_parameters.py | 34 +- src/icefabric_api/src/run_modules.py | 161 ++-- .../src/icefabric_manage/_api.py | 4 +- .../src/icefabric_manage/iceberg_table.py | 199 ++--- .../src/icefabric_manage/map_fim_data.py | 532 +++++++----- src/icefabric_tools/pyproject.toml | 3 +- .../src/icefabric_tools/__init__.py | 2 +- .../src/icefabric_tools/_api.py | 10 +- .../src/icefabric_tools/{ => iceberg}/rnr.py | 42 +- .../src/icefabric_tools/icechunk/__init__.py | 6 + .../icechunk/arch_weather_file_utils.py | 289 +++++++ .../icechunk/icechunk_s3_module.py | 308 +++++++ .../icechunk/icechunk_testing.py | 176 ++++ .../icefabric_tools/icechunk/nc_conv_utils.py | 147 ++++ uv.lock | 811 +++++++++++------- 19 files changed, 2234 insertions(+), 1080 deletions(-) rename src/icefabric_tools/src/icefabric_tools/{ => iceberg}/rnr.py (73%) create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 1b1146b..a258935 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -3,7 +3,9 @@ repos: rev: v4.6.0 hooks: - id: trailing-whitespace + exclude: LICENSE|\.csv$ - id: end-of-file-fixer + exclude: LICENSE|\.csv$ - id: check-yaml - id: debug-statements diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index 9057e3d..48a7660 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -16,99 +16,108 @@ "metadata": {}, "outputs": [], "source": [ + "import os\n", + "import re\n", + "import warnings\n", + "\n", + "import boto3\n", "import pyarrow as pa\n", - "import pyiceberg\n", - "from pyiceberg.catalog import load_catalog\n", - "from pyiceberg.schema import Schema\n", - "from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType, BinaryType, BooleanType\n", - "from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual\n", "import pyarrow.parquet as pq\n", - "from pyiceberg.schema import Schema\n", - "import boto3\n", "import s3fs\n", - "import re\n", - "import os\n", - "import warnings\n", - "warnings.filterwarnings('ignore')\n", + "from pyiceberg.catalog import load_catalog\n", + "from pyiceberg.expressions import And, GreaterThan, GreaterThanOrEqual, LessThan\n", + "from pyiceberg.schema import Schema\n", + "from pyiceberg.types import (\n", + " BinaryType,\n", + " BooleanType,\n", + " DoubleType,\n", + " LongType,\n", + " NestedField,\n", + " StringType,\n", + ")\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", "\n", - "class IcebergTable(object):\n", - " '''\n", + "class IcebergTable:\n", + " \"\"\"\n", " Create a Iceberg table per parquet file w/ its inherited schema set.\n", "\n", " Note: Allows for user to have the option to read parquets from S3 or locally. It is okay to expect\n", " following warning statements throughout process: \"Iceberg does not have a dictionary type. will be inferred as string on read.\"\n", - " \n", - " '''\n", - " def __init__(self):\n", "\n", + " \"\"\"\n", + "\n", + " def __init__(self):\n", " # Generate folder for iceberg catalog\n", - " if not os.path.exists(f'{os.getcwd()}/iceberg_catalog'):\n", - " os.makedirs(f'{os.getcwd()}/iceberg_catalog')\n", + " if not os.path.exists(f\"{os.getcwd()}/iceberg_catalog\"):\n", + " os.makedirs(f\"{os.getcwd()}/iceberg_catalog\")\n", "\n", " # Set location of where the iceberg catalog will reside\n", - " os.environ['PYICEBERG_HOME'] = os.getcwd()\n", + " os.environ[\"PYICEBERG_HOME\"] = os.getcwd()\n", "\n", " # Initialize namespace to be set for Iceberg catalog\n", - " self.namespace = str()\n", - " \n", + " self.namespace = \"\"\n", + "\n", " def read_data_dirs(self, data_dir):\n", - " '''\n", + " \"\"\"\n", " Extract the list of parquet directories.\n", - " \n", + "\n", " Args:\n", " data_dir (str): Parent directory of the parquet files.\n", - " Note: All the ml_auxiliary_data parquet \n", - " files are save under same filenames, \n", + " Note: All the ml_auxiliary_data parquet\n", + " files are save under same filenames,\n", " but categorized by 'vpuid' conditions.\n", "\n", " Return (list): List of directories associated with each parquet file.\n", - " \n", - " '''\n", + "\n", + " \"\"\"\n", " parquet_list = []\n", " for folder, subfolders, files in os.walk(data_dir):\n", " if folder != data_dir:\n", " for file in files:\n", - " parquet_list.append(f'{folder}/{file}')\n", - " \n", + " parquet_list.append(f\"{folder}/{file}\")\n", + "\n", " return parquet_list\n", - " \n", + "\n", " def read_data(self, parquet_file_path):\n", - " '''\n", + " \"\"\"\n", " Load a single parquet as a Pyarrow table.\n", - " \n", - " Args: \n", + "\n", + " Args:\n", " parquet_file_path (str): Directory of a single parquet.\n", "\n", - " \n", + "\n", " Return: A Pyarrow table.\n", - " \n", - " '''\n", + "\n", + " \"\"\"\n", " data = pq.read_table(parquet_file_path)\n", - " \n", + "\n", " return data\n", "\n", " def establish_catalog(self, catalog_name, namespace):\n", - " '''\n", + " \"\"\"\n", " Creates a new Iceberg catalog.\n", - " \n", + "\n", " Args:\n", " catalog_name (str): Name of the catalog to be created.\n", " Default: 'dev' for development catalog\n", " namespace (str): Name of namespace.\n", "\n", " Return: None\n", - " \n", - " ''' \n", + "\n", + " \"\"\"\n", " # Establish a new Iceberg catalog & its configuration\n", - " self.catalog = load_catalog(name=catalog_name,\n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - " \n", + " self.catalog = load_catalog(\n", + " name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"}\n", + " )\n", + "\n", " # Establish namespace to be create w/in catalog\n", " self.namespace = namespace\n", " if self.namespace not in self.catalog.list_namespaces():\n", " self.catalog.create_namespace(self.namespace)\n", - " \n", + "\n", " return\n", "\n", " def convert_pyarrow_to_iceberg_schema(self, arrow_schema):\n", @@ -116,15 +125,14 @@ " Translate a given Pyarrow schema into a schema acceptable by Iceberg.\n", "\n", " Args:\n", - " arrow_schema (object): Pyarrow schema read from the loaded \n", + " arrow_schema (object): Pyarrow schema read from the loaded\n", " parquet of interest.\n", "\n", " Return (object): Iceberg schema\n", - " \n", + "\n", " \"\"\"\n", " fields = []\n", " for idx in range(len(arrow_schema)):\n", - " \n", " # Extraction of the datatype & name of each schema row\n", " field_name = arrow_schema.field(idx).name\n", " arrow_type = arrow_schema.field(idx).type\n", @@ -142,7 +150,7 @@ " iceberg_type = BooleanType()\n", " elif pa.types.is_binary(arrow_type):\n", " iceberg_type = BinaryType()\n", - " elif pa.types.is_dictionary(arrow_type): \n", + " elif pa.types.is_dictionary(arrow_type):\n", " if pa.types.is_string(arrow_type.value_type):\n", " iceberg_type = StringType()\n", " elif pa.types.is_int32(arrow_type.value_type):\n", @@ -151,45 +159,45 @@ " raise ValueError(f\"Unsupported PyArrow type: {arrow_type}\")\n", "\n", " # Establish the new schema acceptable to Iceberg\n", - " fields.append(NestedField(field_id=idx + 1,\n", - " required=False,\n", - " name=field_name,\n", - " field_type=iceberg_type))\n", + " fields.append(\n", + " NestedField(field_id=idx + 1, required=False, name=field_name, field_type=iceberg_type)\n", + " )\n", " # Iceberg schema\n", " schema = Schema(*fields)\n", - " \n", + "\n", " return schema\n", "\n", " def create_table_for_parquet(self, iceberg_tablename, data_table, schema):\n", - " '''\n", + " \"\"\"\n", " Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory.\n", "\n", " Args:\n", " iceberg_tablename (str): Name of the Iceberg table to be created.\n", - " \n", + "\n", " data_table (object): Pyarrow table\n", - " \n", + "\n", " schema (object): Unique Iceberg schema to be set for the Iceberg table.\n", - " \n", + "\n", " namespace (str): Namespace for which the Iceberg table will reside within\n", " the Iceberg catalog.\n", "\n", " Return: None\n", - " \n", - " '''\n", - " \n", + "\n", + " \"\"\"\n", " # Create an Iceberg table\n", - " iceberg_table = self.catalog.create_table(identifier=f\"{self.namespace}.{iceberg_tablename}\",\n", - " schema=schema,\n", - " location=f\"{os.environ['PYICEBERG_HOME']}/iceberg_catalog\")\n", - " \n", + " iceberg_table = self.catalog.create_table(\n", + " identifier=f\"{self.namespace}.{iceberg_tablename}\",\n", + " schema=schema,\n", + " location=f\"{os.environ['PYICEBERG_HOME']}/iceberg_catalog\",\n", + " )\n", + "\n", " # Updates the Iceberg table with data of interest.\n", " iceberg_table.append(data_table)\n", - " \n", + "\n", " return\n", "\n", - " def create_table_for_all_parquets(self, parquet_files, app_name='mip-xs'):\n", - " '''\n", + " def create_table_for_all_parquets(self, parquet_files, app_name=\"mip-xs\"):\n", + " \"\"\"\n", " Convert parquets to Iceberg tables - each w/ their inherited schema.\n", "\n", " Args:\n", @@ -200,70 +208,67 @@ "\n", " Return: None\n", "\n", - " Note: The sourced data structures for the data in 'mip-xs' & \n", + " Note: The sourced data structures for the data in 'mip-xs' &\n", " 'bathymetry_ml_auxiliary' S3 buckets differ.\n", - " \n", - " '''\n", + "\n", + " \"\"\"\n", " for idx, parquet_file in enumerate(parquet_files):\n", - " if app_name == 'mip_xs':\n", + " if app_name == \"mip_xs\":\n", " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}\"\n", - " \n", - " elif app_name == 'bathymetry_ml_auxiliary':\n", + "\n", + " elif app_name == \"bathymetry_ml_auxiliary\":\n", " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[0])[1]}\"\n", "\n", " data_table = self.read_data(parquet_file)\n", " data_pyarrow_schema = data_table.schema\n", " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(iceberg_tablename,\n", - " data_table, \n", - " schema)\n", + " self.create_table_for_parquet(iceberg_tablename, data_table, schema)\n", " return\n", "\n", - " def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name='default'):\n", - " '''\n", + " def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name=\"default\"):\n", + " \"\"\"\n", " Convert parquets from S3 to Iceberg tables - each w/ their inherited schema.\n", - " \n", + "\n", " Args:\n", " bucket_name (list): S3 bucket name.\n", "\n", " app_name (str): Application to create Iceberg tables.\n", " Options: 'mip_xs' & 'bathymetry_ml_auxiliary'\n", - " \n", + "\n", " namespace (str): Namespace for which the Iceberg table will reside within\n", " the Iceberg catalog.\n", "\n", - " profile_name (str: Profile name declared in the AWS configuration file. \n", - " Default: 'default' \n", - " \n", + " profile_name (str: Profile name declared in the AWS configuration file.\n", + " Default: 'default'\n", + "\n", " Return: None\n", "\n", - " '''\n", + " \"\"\"\n", " # Instantiate bucket of interest.\n", " session = boto3.Session(profile_name=profile_name)\n", - " s3 = session.resource('s3')\n", + " s3 = session.resource(\"s3\")\n", " bucket_ob = s3.Bucket(bucket_name)\n", " pyarrow_table = {}\n", " for s3obj in bucket_ob.objects.all():\n", - "\n", " # For sourcing the preprocessed XS parquets from S3\n", - " if app_name == 'mip_xs' and re.match(r'^xs_data/.*\\.parquet$', s3obj.key):\n", + " if app_name == \"mip_xs\" and re.match(r\"^xs_data/.*\\.parquet$\", s3obj.key):\n", " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}\"\n", - " pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", - " filesystem=s3fs.S3FileSystem())\n", - " \n", + " pyarrow_table[iceberg_tablename] = pq.read_table(\n", + " f\"s3://{bucket_name}/{s3obj.key}\", filesystem=s3fs.S3FileSystem()\n", + " )\n", + "\n", " # For sourcing the bathymetry_ml_auxiliary parquets from S3\n", - " elif app_name == 'bathymetry_ml_auxiliary':\n", + " elif app_name == \"bathymetry_ml_auxiliary\":\n", " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[0])[1]}\"\n", - " pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}',\n", - " filesystem=s3fs.S3FileSystem())\n", - " \n", - " # Xforming each unique parquet to an iceberg table \n", + " pyarrow_table[iceberg_tablename] = pq.read_table(\n", + " f\"s3://{bucket_name}/{s3obj.key}\", filesystem=s3fs.S3FileSystem()\n", + " )\n", + "\n", + " # Xforming each unique parquet to an iceberg table\n", " for key, data_table in pyarrow_table.items():\n", " data_pyarrow_schema = data_table.schema\n", " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(key,\n", - " data_table, \n", - " schema)\n", + " self.create_table_for_parquet(key, data_table, schema)\n", " return" ] }, @@ -382,15 +387,13 @@ "obj = IcebergTable()\n", "\n", "# Extract list of parquets\n", - "parquet_list = obj.read_data_dirs(data_dir=f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/')\n", + "parquet_list = obj.read_data_dirs(data_dir=f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/\")\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev',\n", - " namespace='bathymetry_ml_auxiliary')\n", + "obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev\", namespace=\"bathymetry_ml_auxiliary\")\n", "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected \n", - "obj.create_table_for_all_parquets(parquet_list, \n", - " app_name='bathymetry_ml_auxiliary')" + "# Generate tables w/in the new Iceberg catalog for all parquets detected\n", + "obj.create_table_for_all_parquets(parquet_list, app_name=\"bathymetry_ml_auxiliary\")" ] }, { @@ -505,13 +508,12 @@ "obj = IcebergTable()\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name='bathymetry_ml_auxiliary_dev2',\n", - " namespace='bathymetry_ml_auxiliary')\n", + "obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev2\", namespace=\"bathymetry_ml_auxiliary\")\n", "\n", "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "obj.create_table_for_all_s3parquets(app_name='bathymetry_ml_auxiliary',\n", - " bucket_name='ngwpc-bathymetry',\n", - " profile_name='default')" + "obj.create_table_for_all_s3parquets(\n", + " app_name=\"bathymetry_ml_auxiliary\", bucket_name=\"ngwpc-bathymetry\", profile_name=\"default\"\n", + ")" ] }, { @@ -526,13 +528,10 @@ "obj = IcebergTable()\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name='xs',\n", - " namespace='mip')\n", + "obj.establish_catalog(catalog_name=\"xs\", namespace=\"mip\")\n", "\n", "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "obj.create_table_for_all_s3parquets(app_name='mip_xs',\n", - " bucket_name='ngwpc-xs',\n", - " profile_name='default')" + "obj.create_table_for_all_s3parquets(app_name=\"mip_xs\", bucket_name=\"ngwpc-xs\", profile_name=\"default\")" ] }, { @@ -611,12 +610,11 @@ ], "source": [ "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "catalog_name = 'bathymetry_ml_auxiliary_dev'\n", - "namespace = 'bathymetry_ml_auxiliary'\n", - "tablename = 'vpuid=01'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "catalog_name = \"bathymetry_ml_auxiliary_dev\"\n", + "namespace = \"bathymetry_ml_auxiliary\"\n", + "tablename = \"vpuid=01\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", "print(iceberg_table.to_string(preview_cols=20))" ] }, @@ -628,13 +626,12 @@ "outputs": [], "source": [ "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "catalog_name = 'bathymetry_ml_auxiliary_dev2'\n", - "namespace = 'bathymetry_ml_auxiliary'\n", - "tablename = 'vpuid=01'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", - "#print(iceberg_table.to_string(preview_cols=20))" + "catalog_name = \"bathymetry_ml_auxiliary_dev2\"\n", + "namespace = \"bathymetry_ml_auxiliary\"\n", + "tablename = \"vpuid=01\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", + "# print(iceberg_table.to_string(preview_cols=20))" ] }, { @@ -1258,12 +1255,11 @@ ], "source": [ "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "catalog_name = 'xs'\n", - "namespace = 'mip'\n", - "tablename = 'huc_01020002'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "catalog_name = \"xs\"\n", + "namespace = \"mip\"\n", + "tablename = \"huc_01020002\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", "print(iceberg_table.to_string(preview_cols=20))" ] }, @@ -1293,7 +1289,7 @@ ], "source": [ "# All tables created within the namespace of interest.\n", - "print(f\"List of tables under {namespace} within {catalog_name}:\\n\\n{catalog.list_tables(namespace)}\") " + "print(f\"List of tables under {namespace} within {catalog_name}:\\n\\n{catalog.list_tables(namespace)}\")" ] }, { @@ -1364,11 +1360,11 @@ ], "source": [ "# Filter Iceberg table based on threshold set for a given feature\n", - "namespace='bathymetry_ml_auxiliary'\n", - "tablename = 'vpuid=01'\n", - "feature_name = 'owp_ahg_c'\n", + "namespace = \"bathymetry_ml_auxiliary\"\n", + "tablename = \"vpuid=01\"\n", + "feature_name = \"owp_ahg_c\"\n", "thresh_val = 0.25\n", - "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=LessThan(feature_name, thresh_val)).to_arrow()" + "catalog.load_table(f\"{namespace}.{tablename}\").scan(row_filter=LessThan(feature_name, thresh_val)).to_arrow()" ] }, { @@ -1430,12 +1426,13 @@ } ], "source": [ - "namespace='bathymetry_ml_auxiliary'\n", - "tablename = 'vpuid=01'\n", - "feature_name = 'owp_ahg_c'\n", + "namespace = \"bathymetry_ml_auxiliary\"\n", + "tablename = \"vpuid=01\"\n", + "feature_name = \"owp_ahg_c\"\n", "thresh_lower, thresh_upper = 0.25, 0.28\n", - "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=And(GreaterThan(feature_name, thresh_lower), \n", - " LessThan(feature_name, thresh_upper))).to_arrow()\n" + "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", + " row_filter=And(GreaterThan(feature_name, thresh_lower), LessThan(feature_name, thresh_upper))\n", + ").to_arrow()" ] }, { @@ -1465,12 +1462,14 @@ } ], "source": [ - "namespace='bathymetry_ml_auxiliary'\n", - "tablename = 'vpuid=01'\n", - "feature_name = 'owp_ahg_c'\n", + "namespace = \"bathymetry_ml_auxiliary\"\n", + "tablename = \"vpuid=01\"\n", + "feature_name = \"owp_ahg_c\"\n", "thresh = 0.25\n", - "catalog.load_table(f'{namespace}.{tablename}').scan(row_filter=GreaterThanOrEqual(feature_name, thresh),\n", - " selected_fields=(\"owp_ahg_m\", \"slope\", \"LENGTHKM\", \"owp_ahg_f\")).to_arrow()\n" + "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", + " row_filter=GreaterThanOrEqual(feature_name, thresh),\n", + " selected_fields=(\"owp_ahg_m\", \"slope\", \"LENGTHKM\", \"owp_ahg_f\"),\n", + ").to_arrow()" ] }, { @@ -1538,7 +1537,7 @@ ], "source": [ "# Load a XS parquet file into a DataFrame\n", - "parquet_file_path = f'{os.getcwd()}//xs_data/mip_01020002/huc_01020002.parquet'\n", + "parquet_file_path = f\"{os.getcwd()}//xs_data/mip_01020002/huc_01020002.parquet\"\n", "df = pq.read_table(parquet_file_path)\n", "df" ] @@ -1603,7 +1602,7 @@ ], "source": [ "# Load a m1_auxiliary parquet file into a DataFrame\n", - "parquet_file_path = f'{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet'\n", + "parquet_file_path = f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet\"\n", "df = pq.read_table(parquet_file_path)\n", "df" ] diff --git a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb index a34f4e7..18efcf7 100644 --- a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb +++ b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb @@ -26,19 +26,17 @@ "metadata": {}, "outputs": [], "source": [ - "import geopandas\n", - "import pyarrow as pa\n", - "import pyarrow.parquet as pq\n", "import collections\n", - "import pandas as pd\n", - "import numpy as np\n", - "import re\n", - "import json\n", - "import pickle\n", - "from icefabric_manage import MapData\n", "import os\n", + "import pickle\n", "import warnings\n", - "warnings.filterwarnings('ignore')" + "\n", + "import pandas as pd\n", + "import pyarrow.parquet as pq\n", + "\n", + "from icefabric_manage import MapData\n", + "\n", + "warnings.filterwarnings(\"ignore\")" ] }, { @@ -330,17 +328,24 @@ ], "source": [ "# Instantiate class\n", - "obj = MapData(data_dir=f'{os.getcwd()}/segment_data/',\n", - " subfolder_key_prefix='ble')\n", + "obj = MapData(data_dir=f\"{os.getcwd()}/segment_data/\", subfolder_key_prefix=\"ble\")\n", "\n", "# Extract list of fim-c data sample's directories.\n", "fim_data_dirs = obj.fim_data_dirs\n", "\n", "# Categorize FIM-C data sample files (e.g. geopackage of a given model @ HUC#, json, source_models.gpkg, ripple.gpkg)\n", - "model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = obj.model_gpkg_dirs, obj.src_models_gpkg_dirs, obj.rip_gpkg_dirs\n", + "model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = (\n", + " obj.model_gpkg_dirs,\n", + " obj.src_models_gpkg_dirs,\n", + " obj.rip_gpkg_dirs,\n", + ")\n", "gpkg_dirs, json_dirs = obj.gpkg_dirs, obj.json_dirs\n", "\n", - "model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = obj.model_gpkg_tablenames, obj.src_models_gpkg_tablenames, obj.rip_gpkg_tablenames\n", + "model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = (\n", + " obj.model_gpkg_tablenames,\n", + " obj.src_models_gpkg_tablenames,\n", + " obj.rip_gpkg_tablenames,\n", + ")\n", "gpkg_tablenames, json_tablenames = obj.gpkg_tablenames, obj.json_tablenames\n", "\n", "# Generate a dictionary to map each conflation json files to their corresponding model_id & HUC #.\n", @@ -361,7 +366,7 @@ "\n", "# [OPTIONAL: If a user wants to extract individual river geopandas, parquet, &/or gpkg]\n", "# Map of XS as geopandas per river per HUC w/ their inherited CRS by HUC\n", - "#xsbyriver_map = obj.groupbyriver_dict\n", + "# xsbyriver_map = obj.groupbyriver_dict\n", "\n", "# [OPTIONAL: Map of inherited CRS to HUC, model_id, river name]\n", "crs_map = obj.crs_dict\n", @@ -737,8 +742,8 @@ ], "source": [ "# Scenario I\n", - "us_network_to_id = '11908200'\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "us_network_to_id = \"11908200\"\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", "queried_xsbyid" ] }, @@ -851,8 +856,8 @@ ], "source": [ "# Scenario II\n", - "us_network_to_id = '13801634'\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "us_network_to_id = \"13801634\"\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", "queried_xsbyid" ] }, @@ -1030,8 +1035,8 @@ ], "source": [ "# Scenario III\n", - "us_network_to_id = '21294311'\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "us_network_to_id = \"21294311\"\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", "queried_xsbyid" ] }, @@ -1147,8 +1152,8 @@ ], "source": [ "# Scenario IV\n", - "us_network_to_id = '23597193'\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs['us_network_to_id'] == us_network_to_id]\n", + "us_network_to_id = \"23597193\"\n", + "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", "queried_xsbyid" ] }, @@ -1308,20 +1313,20 @@ ], "source": [ "# Scenario I\n", - "model_id = 'GF_EGF_FIS_Submittal1204'\n", - "huc_num = '09020301'\n", + "model_id = \"GF_EGF_FIS_Submittal1204\"\n", + "huc_num = \"09020301\"\n", "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", - "tt.insert(0, 'huc', tt.pop('huc')) \n", - "tt.insert(1, 'model_id', tt.pop('model_id')) \n", - "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", - "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", - "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", - "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", - "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", - "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", - "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", - "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", + "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", + "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", + "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", + "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", + "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", + "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", + "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", + "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", + "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", + "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", "tt.head(2)" ] }, @@ -1472,20 +1477,20 @@ ], "source": [ "# Scenario II\n", - "model_id = 'sa_1'\n", - "huc_num = '07130010'\n", + "model_id = \"sa_1\"\n", + "huc_num = \"07130010\"\n", "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", - "tt.insert(0, 'huc', tt.pop('huc')) \n", - "tt.insert(1, 'model_id', tt.pop('model_id')) \n", - "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", - "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", - "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", - "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", - "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", - "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", - "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", - "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", + "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", + "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", + "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", + "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", + "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", + "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", + "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", + "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", + "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", + "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", "tt.head(2)" ] }, @@ -1632,20 +1637,20 @@ ], "source": [ "# Scenario III\n", - "model_id = 'BorregoCyn_Existing'\n", - "huc_num = '18070204'\n", + "model_id = \"BorregoCyn_Existing\"\n", + "huc_num = \"18070204\"\n", "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", - "tt.insert(0, 'huc', tt.pop('huc')) \n", - "tt.insert(1, 'model_id', tt.pop('model_id')) \n", - "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", - "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", - "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", - "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", - "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", - "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", - "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", - "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", + "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", + "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", + "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", + "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", + "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", + "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", + "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", + "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", + "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", + "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", "tt.head(2)" ] }, @@ -1796,22 +1801,22 @@ ], "source": [ "# Scenario IV\n", - "model_id = 'cottonwood_creek_ras'\n", - "huc_num = '17060305'\n", + "model_id = \"cottonwood_creek_ras\"\n", + "huc_num = \"17060305\"\n", "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)]['XS']\n", - "tt.insert(0, 'huc', tt.pop('huc')) \n", - "tt.insert(1, 'model_id', tt.pop('model_id')) \n", - "tt.insert(2, 'us_reach_id', tt.pop('us_reach_id')) \n", - "tt.insert(3, 'us_network_to_id', tt.pop('us_network_to_id')) \n", - "tt.insert(4, 'ds_reach_id', tt.pop('ds_reach_id')) \n", - "tt.insert(5, 'ds_network_to_id', tt.pop('ds_network_to_id')) \n", - "tt.insert(6, 'river_reach_rs', tt.pop('river_reach_rs')) \n", - "tt.insert(7, 'thalweg', tt.pop('thalweg')) \n", - "tt.insert(8, 'xs_max_elevation', tt.pop('xs_max_elevation')) \n", - "tt.insert(9, 'river_station', tt.pop('river_station')) \n", + "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", + "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", + "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", + "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", + "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", + "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", + "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", + "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", + "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", + "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", + "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", "tt.head(2)\n", - "#tt.tail()" + "# tt.tail()" ] }, { @@ -1849,7 +1854,7 @@ "# # # Scenario II\n", "\n", "# # Read Parquet file\n", - "# df2 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_01020002/Martin Stream.parquet', \n", + "# df2 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_01020002/Martin Stream.parquet',\n", "# engine='pyarrow')\n", "\n", "# # Display the first few rows\n", @@ -2031,11 +2036,10 @@ "source": [ "# # Scenario I\n", "# Read Parquet file\n", - "df1 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_10120203/huc_10120203.parquet',\n", - " engine='pyarrow')\n", + "df1 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_10120203/huc_10120203.parquet\", engine=\"pyarrow\")\n", "\n", - "#set(df1['river'])\n", - "#set(df1['huc'])\n", + "# set(df1['river'])\n", + "# set(df1['huc'])\n", "df1[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" ] }, @@ -2221,11 +2225,10 @@ "source": [ "# Scenario II\n", "# Read Parquet file\n", - "df2 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_17060305/huc_17060305.parquet',\n", - " engine='pyarrow')\n", + "df2 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_17060305/huc_17060305.parquet\", engine=\"pyarrow\")\n", "\n", - "#set(df2['river'])\n", - "#set(df2['huc'])\n", + "# set(df2['river'])\n", + "# set(df2['huc'])\n", "df2[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" ] }, @@ -2395,11 +2398,10 @@ "source": [ "# Scenario III\n", "# Read Parquet file\n", - "df3 = pd.read_parquet(f'/{os.getcwd()}/xs_data/mip_15040007/huc_15040007.parquet',\n", - " engine='pyarrow')\n", + "df3 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_15040007/huc_15040007.parquet\", engine=\"pyarrow\")\n", "\n", - "#set(df2['river'])\n", - "#set(df2['huc'])\n", + "# set(df2['river'])\n", + "# set(df2['huc'])\n", "df3[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" ] }, @@ -2443,16 +2445,14 @@ "iceberg_obj = IcebergTable()\n", "\n", "# Extract list of parquets\n", - "file_list = iceberg_obj.read_data_dirs(data_dir=f'{os.getcwd()}/xs_data/')\n", - "parquet_list = [file for file in file_list if file.endswith('.parquet')]\n", - " \n", - "#Establish new Iceberg catalog for XS data\n", - "iceberg_obj.establish_catalog(catalog_name='xs',\n", - " namespace='mip')\n", + "file_list = iceberg_obj.read_data_dirs(data_dir=f\"{os.getcwd()}/xs_data/\")\n", + "parquet_list = [file for file in file_list if file.endswith(\".parquet\")]\n", + "\n", + "# Establish new Iceberg catalog for XS data\n", + "iceberg_obj.establish_catalog(catalog_name=\"xs\", namespace=\"mip\")\n", "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected \n", - "iceberg_obj.create_table_for_all_parquets(parquet_list,\n", - " app_name='mip_xs')" + "# Generate tables w/in the new Iceberg catalog for all parquets detected\n", + "iceberg_obj.create_table_for_all_parquets(parquet_list, app_name=\"mip_xs\")" ] }, { @@ -3128,15 +3128,14 @@ "source": [ "# Scenario I\n", "# User Args\n", - "catalog_name = 'xs'\n", + "catalog_name = \"xs\"\n", "huc_num = 10120203\n", "\n", "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f'huc_{huc_num}'\n", - "namespace = 'mip'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "tablename = f\"huc_{huc_num}\"\n", + "namespace = \"mip\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", "print(iceberg_table.to_string(preview_cols=30))" ] }, @@ -3709,15 +3708,14 @@ "source": [ "# Scenario II\n", "# User Args\n", - "catalog_name = 'xs'\n", + "catalog_name = \"xs\"\n", "huc_num = 17060305\n", "\n", "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f'huc_{huc_num}'\n", - "namespace = 'mip'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "tablename = f\"huc_{huc_num}\"\n", + "namespace = \"mip\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", "print(iceberg_table.to_string(preview_cols=30))" ] }, @@ -4447,15 +4445,14 @@ "source": [ "# Scenario III\n", "# User Args\n", - "catalog_name = 'xs'\n", + "catalog_name = \"xs\"\n", "huc_num = 15040007\n", "\n", "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f'huc_{huc_num}'\n", - "namespace = 'mip'\n", - "catalog = load_catalog(name=catalog_name, \n", - " **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'})\n", - "iceberg_table = catalog.load_table(f'{namespace}.{tablename}').scan().to_arrow()\n", + "tablename = f\"huc_{huc_num}\"\n", + "namespace = \"mip\"\n", + "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", + "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", "print(iceberg_table.to_string(preview_cols=30))" ] }, @@ -4499,7 +4496,9 @@ ], "source": [ "# Query iceberg table for specific features of interest\n", - "catalog.load_table(f'{namespace}.{tablename}').scan(selected_fields=(\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\")).to_arrow()" + "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", + " selected_fields=(\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\")\n", + ").to_arrow()" ] }, { @@ -4518,7 +4517,7 @@ "metadata": {}, "outputs": [], "source": [ - "with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'rb') as handle:\n", + "with open(f\"{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle\", \"rb\") as handle:\n", " crs_map = pickle.load(handle)" ] }, @@ -6051,7 +6050,7 @@ } ], "source": [ - "rip_huc2gpkg_map['07130010'].keys()" + "rip_huc2gpkg_map[\"07130010\"].keys()" ] }, { @@ -6181,7 +6180,7 @@ } ], "source": [ - "rip_huc2gpkg_map['07130010']['reaches']" + "rip_huc2gpkg_map[\"07130010\"][\"reaches\"]" ] }, { @@ -6372,7 +6371,7 @@ } ], "source": [ - "rip_huc2gpkg_map['07130010']['rating_curves']" + "rip_huc2gpkg_map[\"07130010\"][\"rating_curves\"]" ] }, { @@ -6490,7 +6489,7 @@ } ], "source": [ - "rip_huc2gpkg_map['07130010']['network']" + "rip_huc2gpkg_map[\"07130010\"][\"network\"]" ] }, { @@ -6614,7 +6613,7 @@ } ], "source": [ - "rip_huc2gpkg_map['07130010']['models']" + "rip_huc2gpkg_map[\"07130010\"][\"models\"]" ] }, { @@ -6691,11 +6690,13 @@ ], "source": [ "s3_xs_keys2objs = collections.defaultdict()\n", - "for folder, subfolders, files in os.walk(f'{os.getcwd()}/xs_data/'):\n", + "for folder, subfolders, files in os.walk(f\"{os.getcwd()}/xs_data/\"):\n", " for file in files:\n", - " if folder != f'{os.getcwd()}/xs_data/':\n", - " s3_xs_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}'] = f'{folder}/{file}'\n", - " \n", + " if folder != f\"{os.getcwd()}/xs_data/\":\n", + " s3_xs_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}\"] = (\n", + " f\"{folder}/{file}\"\n", + " )\n", + "\n", "s3_xs_keys2objs" ] }, @@ -6900,16 +6901,20 @@ ], "source": [ "s3_xs_iceberg_keys2objs = collections.defaultdict()\n", - "for folder, subfolders, files in os.walk(f'{os.getcwd()}/iceberg_catalog/'):\n", + "for folder, subfolders, files in os.walk(f\"{os.getcwd()}/iceberg_catalog/\"):\n", " for file in files:\n", - " if folder != f'{os.getcwd()}/iceberg_catalog/':\n", + " if folder != f\"{os.getcwd()}/iceberg_catalog/\":\n", " # For all files not the database\n", - " s3_xs_iceberg_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}'] = f'{folder}/{file}'\n", + " s3_xs_iceberg_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}\"] = (\n", + " f\"{folder}/{file}\"\n", + " )\n", " else:\n", " # For the database.\n", - " s3_xs_iceberg_keys2objs[f'{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}{file}'] = f'{folder}{file}'\n", - " \n", - " \n", + " s3_xs_iceberg_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}{file}\"] = (\n", + " f\"{folder}{file}\"\n", + " )\n", + "\n", + "\n", "s3_xs_iceberg_keys2objs" ] }, @@ -6921,10 +6926,10 @@ "outputs": [], "source": [ "# Instantiate bucket of interest.\n", - "profile_name = 'default'\n", + "profile_name = \"default\"\n", "session = boto3.Session(profile_name=profile_name)\n", - "s3 = session.resource('s3')\n", - "bucket_name = 'ngwpc-xs'\n", + "s3 = session.resource(\"s3\")\n", + "bucket_name = \"ngwpc-xs\"\n", "\n", "# # Uploading the xs by HUC parquets\n", "# for key, file_dir in s3_xs_keys2objs.items():\n", @@ -6932,8 +6937,7 @@ "\n", "# Uploading the xs by HUC parquets\n", "# for key, file_dir in s3_xs_iceberg_keys2objs.items():\n", - "# s3.Bucket(bucket_name).upload_file(file_dir, key)\n", - "\n" + "# s3.Bucket(bucket_name).upload_file(file_dir, key)" ] }, { @@ -7001,7 +7005,7 @@ ], "source": [ "# Load the Parquet file into a DataFrame\n", - "parquet_file_path = f'{os.getcwd()}/xs_data/mip_01020002/huc_01020002.parquet'\n", + "parquet_file_path = f\"{os.getcwd()}/xs_data/mip_01020002/huc_01020002.parquet\"\n", "parquet_content = pq.read_table(parquet_file_path)\n", "parquet_content" ] diff --git a/pyproject.toml b/pyproject.toml index 3856a56..e5aa895 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -64,6 +64,7 @@ target-version = ['py311'] [tool.ruff] line-length = 110 +exclude = [".csv", "LICENSE"] lint.select = [ "F", # Errors detected by Pyflakes "E", # Error detected by Pycodestyle @@ -104,8 +105,11 @@ lint.ignore = [ "D203", # We want docstrings to start immediately after the opening triple quote "D213", + # Bare except okay for passing + "E722", ] + [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -114,6 +118,7 @@ convention = "numpy" "tests/*" = ["D"] "*/__init__.py" = ["F401"] + [tool.mypy] python_version = "3.11" warn_return_any = true diff --git a/src/icefabric_api/src/get_module_parameters.py b/src/icefabric_api/src/get_module_parameters.py index 4753e60..f9adb26 100644 --- a/src/icefabric_api/src/get_module_parameters.py +++ b/src/icefabric_api/src/get_module_parameters.py @@ -1,38 +1,28 @@ -import pandas as pd import geopandas as gpd +import pandas as pd -param_file = 'cfe_params.csv' -gpkg_file = 'gauge_06710385.gpkg' +param_file = "cfe_params.csv" +gpkg_file = "gauge_06710385.gpkg" -divides = gpd.read_file(gpkg_file,layer='divides') -divides = divides['divide_id'].to_list() +divides = gpd.read_file(gpkg_file, layer="divides") +divides = divides["divide_id"].to_list() module_params = pd.read_csv(param_file) -param_values = module_params[['name','default_value']] +param_values = module_params[["name", "default_value"]] for divide in divides: - - cfg_file = f'{divide}_bmi_cfg_cfe.txt' + cfg_file = f"{divide}_bmi_cfg_cfe.txt" f = open(cfg_file, "x") for index, row in param_values.iterrows(): - key = row['name'] - value = row['default_value'] - f.write(f'{key}={value}\n') + key = row["name"] + value = row["default_value"] + f.write(f"{key}={value}\n") f.close() -params_calibratable = module_params.loc[module_params['calibratable'] == 'TRUE'] -params_calibratable.to_json('out.json',orient='split') - - - - - - - - - +params_calibratable = module_params.loc[module_params["calibratable"] == "TRUE"] +params_calibratable.to_json("out.json", orient="split") diff --git a/src/icefabric_api/src/run_modules.py b/src/icefabric_api/src/run_modules.py index 076c480..eeb79d8 100644 --- a/src/icefabric_api/src/run_modules.py +++ b/src/icefabric_api/src/run_modules.py @@ -1,126 +1,127 @@ -from hf_attributes import * import pandas as pd +from hf_attributes import * -gpkg_file = '../data/gauge_06710385.gpkg' -version = '2.2' -domain = 'CONUS' +gpkg_file = "../data/gauge_06710385.gpkg" +version = "2.2" +domain = "CONUS" -#Get divide attributes from the geopackage -attr = get_hydrofabric_attributes(gpkg_file,version,domain) -#Get list of divide IDs +# Get divide attributes from the geopackage +attr = get_hydrofabric_attributes(gpkg_file, version, domain) +# Get list of divide IDs -def module_ipe(module,attr,domain,version): - #Create empty dataframe for csv parameters +def module_ipe(module, attr, domain, version): + # Create empty dataframe for csv parameters csv_params = pd.DataFrame() - #Get list of divides - divides = attr['divide_id'].to_list() - - #Look up parameter csv file for module - module_df = pd.read_csv('../data/modules.csv') - param_file = module_df.loc[module_df['module'] == module]['file'].to_string(index = False) - - #Get module parameters - datatypes = {'name':'object','description':'object','units':'object','data_type':'object','calibratable':'bool', - 'source':'object','min':'float64','max':'float64','default_value':'object','divide_attr_name':'object', - 'source_file':'object'} - module_params = pd.read_csv(f'../data/{param_file}', dtype=datatypes) - - #Filter data frame for parameter names and default values. Create dictionary to collect - #parameters for cfg files. - param_values = module_params[['name','default_value']] - param_values = pd.Series(param_values['default_value'].values, index=param_values['name']).to_dict() - - #Get sources - attr_list = module_params['source'].to_list() - - #Create dictionary with divide IDs as the keys and parameter dictionary for the values. + # Get list of divides + divides = attr["divide_id"].to_list() + + # Look up parameter csv file for module + module_df = pd.read_csv("../data/modules.csv") + param_file = module_df.loc[module_df["module"] == module]["file"].to_string(index=False) + + # Get module parameters + datatypes = { + "name": "object", + "description": "object", + "units": "object", + "data_type": "object", + "calibratable": "bool", + "source": "object", + "min": "float64", + "max": "float64", + "default_value": "object", + "divide_attr_name": "object", + "source_file": "object", + } + module_params = pd.read_csv(f"../data/{param_file}", dtype=datatypes) + + # Filter data frame for parameter names and default values. Create dictionary to collect + # parameters for cfg files. + param_values = module_params[["name", "default_value"]] + param_values = pd.Series(param_values["default_value"].values, index=param_values["name"]).to_dict() + + # Get sources + attr_list = module_params["source"].to_list() + + # Create dictionary with divide IDs as the keys and parameter dictionary for the values. all_cats = dict.fromkeys(divides, param_values) - #For attributes, get list of attribute names - attr_list = module_params.loc[module_params['source'] == 'attr']['divide_attr_name'].to_list() - attr_list.append('divide_id') - #Get corresponding list of parameter names to create a dictionary for mapping - attr_names = module_params.loc[module_params['source'] == 'attr']['name'].to_list() - attr_name_map = dict(zip(attr_list, attr_names)) - #Filter attributes for those needed for this module + # For attributes, get list of attribute names + attr_list = module_params.loc[module_params["source"] == "attr"]["divide_attr_name"].to_list() + attr_list.append("divide_id") + # Get corresponding list of parameter names to create a dictionary for mapping + attr_names = module_params.loc[module_params["source"] == "attr"]["name"].to_list() + attr_name_map = dict(zip(attr_list, attr_names, strict=False)) + # Filter attributes for those needed for this module attr = attr[attr_list] - #Rename attribute names to module names + # Rename attribute names to module names attr.rename(columns=attr_name_map, inplace=True) - #Get CSV file parameters - if 'csv' in module_params['source'].values: - csv_file = module_params.loc[module_params['source'] == 'csv']['source_file'].to_list() + # Get CSV file parameters + if "csv" in module_params["source"].values: + csv_file = module_params.loc[module_params["source"] == "csv"]["source_file"].to_list() csv_file = csv_file[0] - csv_file = f'{csv_file}_{domain}_{version}.csv' - csv_params = pd.read_csv(f'../data/{csv_file}') - + csv_file = f"{csv_file}_{domain}_{version}.csv" + csv_params = pd.read_csv(f"../data/{csv_file}") + for divide in divides: - attr_div = attr.loc[attr['divide_id'] == divide] - attr_div = attr_div.to_dict(orient='list') + attr_div = attr.loc[attr["divide_id"] == divide] + attr_div = attr_div.to_dict(orient="list") all_cats[divide].update(attr_div) if not csv_params.empty: - csv_params_div = csv_params.loc[csv_params['divide_id'] == divide] - csv_params_div = csv_params_div.to_dict(orient='list') + csv_params_div = csv_params.loc[csv_params["divide_id"] == divide] + csv_params_div = csv_params_div.to_dict(orient="list") all_cats[divide].update(csv_params_div) - #print(all_cats[divide]) + # print(all_cats[divide]) write_cfg(all_cats) - s3_uri = 's3://' + s3_uri = "s3://" module_json = write_json(all_cats[divides[1]], module_params, module, s3_uri) return module_json def write_cfg(params): - divides = params.keys() for divide in divides: - cfg_file = f'{divide}_bmi_config_cfe.txt' + cfg_file = f"{divide}_bmi_config_cfe.txt" f = open(cfg_file, "x") for key, value in params[divide].items(): - f.write(f'{key}={value}\n') + f.write(f"{key}={value}\n") f.close() + def write_json(params, all_params, module, s3_uri): - - json_columns = ['name', 'description', 'default_value', 'min', 'max', 'data_type', 'units'] - all_params = all_params.loc[all_params['calibratable'] == True, json_columns] - all_params = all_params.to_dict(orient = 'records') - + json_columns = ["name", "description", "default_value", "min", "max", "data_type", "units"] + all_params = all_params.loc[all_params["calibratable"] == True, json_columns] + all_params = all_params.to_dict(orient="records") + for item in all_params: - name = item['name'] + name = item["name"] value = params[name] - item['default_value'] = value + item["default_value"] = value + + module_dict = { + "module_name": module, + "parameter_file": {"uri": s3_uri}, + "calibrate_parameters": all_params, + } - module_dict = {'module_name':module, - 'parameter_file':{'uri':s3_uri}, - 'calibrate_parameters': all_params} - return module_dict all_modules = [] -#modules = ['CFE-X', 'Noah-OWP-Modular'] -modules = ['UEB'] - -for module in modules: +# modules = ['CFE-X', 'Noah-OWP-Modular'] +modules = ["UEB"] - module_json = module_ipe(module,attr,domain,version) +for module in modules: + module_json = module_ipe(module, attr, domain, version) all_modules.append(module_json) -final_json = {'modules':all_modules} +final_json = {"modules": all_modules} print(final_json) - - - - - - - - - diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index 4aa8600..ad6f7aa 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -49,8 +49,8 @@ def build(catalog: Catalog, file_dir: Path) -> None: file_dir : Path The path to the parquet files to add into the iceberg catalog """ - if not any(ns == ('hydrofabric',) for ns in catalog.list_namespaces()): - catalog.create_namespace('hydrofabric') + if not any(ns == ("hydrofabric",) for ns in catalog.list_namespaces()): + catalog.create_namespace("hydrofabric") print("Created 'hydrofabric' namespace") parquet_files = list(file_dir.glob("*.parquet")) diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 315c2dc..91a4bdc 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -1,94 +1,101 @@ +import os +import re + +import boto3 import pyarrow as pa -import pyiceberg -from pyiceberg.catalog import load_catalog -from pyiceberg.schema import Schema -from pyiceberg.types import NestedField, IntegerType, StringType, DoubleType, LongType, BinaryType, BooleanType -from pyiceberg.expressions import EqualTo, LessThan, And, GreaterThan, GreaterThanOrEqual import pyarrow.parquet as pq -from pyiceberg.schema import Schema -import boto3 import s3fs -import re -import os - -class IcebergTable(object): - ''' +from pyiceberg.catalog import load_catalog +from pyiceberg.schema import Schema +from pyiceberg.types import ( + BinaryType, + BooleanType, + DoubleType, + LongType, + NestedField, + StringType, +) + + +class IcebergTable: + """ Create a Iceberg table per parquet file w/ its inherited schema set. Note: Allows for user to have the option to read parquets from S3 or locally. It is okay to expect following warning statements throughout process: "Iceberg does not have a dictionary type. will be inferred as string on read." - - ''' - def __init__(self): + """ + + def __init__(self): # Generate folder for iceberg catalog - if not os.path.exists(f'{os.getcwd()}/iceberg_catalog'): - os.makedirs(f'{os.getcwd()}/iceberg_catalog') + if not os.path.exists(f"{os.getcwd()}/iceberg_catalog"): + os.makedirs(f"{os.getcwd()}/iceberg_catalog") # Set location of where the iceberg catalog will reside - os.environ['PYICEBERG_HOME'] = os.getcwd() + os.environ["PYICEBERG_HOME"] = os.getcwd() # Initialize namespace to be set for Iceberg catalog - self.namespace = str() - + self.namespace = "" + def read_data_dirs(self, data_dir): - ''' + """ Extract the list of parquet directories. - + Args: data_dir (str): Parent directory of the parquet files. - Note: All the ml_auxiliary_data parquet - files are save under same filenames, + Note: All the ml_auxiliary_data parquet + files are save under same filenames, but categorized by 'vpuid' conditions. Return (list): List of directories associated with each parquet file. - - ''' + + """ parquet_list = [] for folder, subfolders, files in os.walk(data_dir): if folder != data_dir: for file in files: - parquet_list.append(f'{folder}/{file}') - + parquet_list.append(f"{folder}/{file}") + return parquet_list - + def read_data(self, parquet_file_path): - ''' + """ Load a single parquet as a Pyarrow table. - - Args: + + Args: parquet_file_path (str): Directory of a single parquet. - + Return: A Pyarrow table. - - ''' + + """ data = pq.read_table(parquet_file_path) - + return data def establish_catalog(self, catalog_name, namespace): - ''' + """ Creates a new Iceberg catalog. - + Args: catalog_name (str): Name of the catalog to be created. Default: 'dev' for development catalog namespace (str): Name of namespace. Return: None - - ''' + + """ # Establish a new Iceberg catalog & its configuration - self.catalog = load_catalog(name=catalog_name, - **{'uri': f'sqlite:///iceberg_catalog/{catalog_name}_catalog.db'}) - + self.catalog = load_catalog( + name=catalog_name, **{"uri": f"sqlite:///iceberg_catalog/{catalog_name}_catalog.db"} + ) + # Establish namespace to be create w/in catalog self.namespace = namespace if self.namespace not in self.catalog.list_namespaces(): self.catalog.create_namespace(self.namespace) - + return def convert_pyarrow_to_iceberg_schema(self, arrow_schema): @@ -96,15 +103,14 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): Translate a given Pyarrow schema into a schema acceptable by Iceberg. Args: - arrow_schema (object): Pyarrow schema read from the loaded + arrow_schema (object): Pyarrow schema read from the loaded parquet of interest. Return (object): Iceberg schema - + """ fields = [] for idx in range(len(arrow_schema)): - # Extraction of the datatype & name of each schema row field_name = arrow_schema.field(idx).name arrow_type = arrow_schema.field(idx).type @@ -122,7 +128,7 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): iceberg_type = BooleanType() elif pa.types.is_binary(arrow_type): iceberg_type = BinaryType() - elif pa.types.is_dictionary(arrow_type): + elif pa.types.is_dictionary(arrow_type): if pa.types.is_string(arrow_type.value_type): iceberg_type = StringType() elif pa.types.is_int32(arrow_type.value_type): @@ -131,45 +137,45 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): raise ValueError(f"Unsupported PyArrow type: {arrow_type}") # Establish the new schema acceptable to Iceberg - fields.append(NestedField(field_id=idx + 1, - required=False, - name=field_name, - field_type=iceberg_type)) + fields.append( + NestedField(field_id=idx + 1, required=False, name=field_name, field_type=iceberg_type) + ) # Iceberg schema schema = Schema(*fields) - + return schema def create_table_for_parquet(self, iceberg_tablename, data_table, schema): - ''' + """ Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory. Args: iceberg_tablename (str): Name of the Iceberg table to be created. - + data_table (object): Pyarrow table - + schema (object): Unique Iceberg schema to be set for the Iceberg table. - + namespace (str): Namespace for which the Iceberg table will reside within the Iceberg catalog. Return: None - - ''' - + + """ # Create an Iceberg table - iceberg_table = self.catalog.create_table(identifier=f"{self.namespace}.{iceberg_tablename}", - schema=schema, - location=f"{os.environ['PYICEBERG_HOME']}/iceberg_catalog") - + iceberg_table = self.catalog.create_table( + identifier=f"{self.namespace}.{iceberg_tablename}", + schema=schema, + location=f"{os.environ['PYICEBERG_HOME']}/iceberg_catalog", + ) + # Updates the Iceberg table with data of interest. iceberg_table.append(data_table) - + return - def create_table_for_all_parquets(self, parquet_files, app_name='mip-xs'): - ''' + def create_table_for_all_parquets(self, parquet_files, app_name="mip-xs"): + """ Convert parquets to Iceberg tables - each w/ their inherited schema. Args: @@ -180,68 +186,65 @@ def create_table_for_all_parquets(self, parquet_files, app_name='mip-xs'): Return: None - Note: The sourced data structures for the data in 'mip-xs' & + Note: The sourced data structures for the data in 'mip-xs' & 'bathymetry_ml_auxiliary' S3 buckets differ. - - ''' + + """ for idx, parquet_file in enumerate(parquet_files): - if app_name == 'mip_xs': + if app_name == "mip_xs": iceberg_tablename = f"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}" - - elif app_name == 'bathymetry_ml_auxiliary': + + elif app_name == "bathymetry_ml_auxiliary": iceberg_tablename = f"{os.path.split(os.path.split(parquet_file)[0])[1]}" data_table = self.read_data(parquet_file) data_pyarrow_schema = data_table.schema schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) - self.create_table_for_parquet(iceberg_tablename, - data_table, - schema) + self.create_table_for_parquet(iceberg_tablename, data_table, schema) return - def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name='default'): - ''' + def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name="default"): + """ Convert parquets from S3 to Iceberg tables - each w/ their inherited schema. - + Args: bucket_name (list): S3 bucket name. app_name (str): Application to create Iceberg tables. Options: 'mip_xs' & 'bathymetry_ml_auxiliary' - + namespace (str): Namespace for which the Iceberg table will reside within the Iceberg catalog. - profile_name (str: Profile name declared in the AWS configuration file. - Default: 'default' - + profile_name (str: Profile name declared in the AWS configuration file. + Default: 'default' + Return: None - ''' + """ # Instantiate bucket of interest. session = boto3.Session(profile_name=profile_name) - s3 = session.resource('s3') + s3 = session.resource("s3") bucket_ob = s3.Bucket(bucket_name) pyarrow_table = {} for s3obj in bucket_ob.objects.all(): - # For sourcing the preprocessed XS parquets from S3 - if app_name == 'mip_xs' and re.match(r'^xs_data/.*\.parquet$', s3obj.key): + if app_name == "mip_xs" and re.match(r"^xs_data/.*\.parquet$", s3obj.key): iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}" - pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', - filesystem=s3fs.S3FileSystem()) - + pyarrow_table[iceberg_tablename] = pq.read_table( + f"s3://{bucket_name}/{s3obj.key}", filesystem=s3fs.S3FileSystem() + ) + # For sourcing the bathymetry_ml_auxiliary parquets from S3 - elif app_name == 'bathymetry_ml_auxiliary': + elif app_name == "bathymetry_ml_auxiliary": iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[0])[1]}" - pyarrow_table[iceberg_tablename]= pq.read_table(f's3://{bucket_name}/{s3obj.key}', - filesystem=s3fs.S3FileSystem()) - - # Xforming each unique parquet to an iceberg table + pyarrow_table[iceberg_tablename] = pq.read_table( + f"s3://{bucket_name}/{s3obj.key}", filesystem=s3fs.S3FileSystem() + ) + + # Xforming each unique parquet to an iceberg table for key, data_table in pyarrow_table.items(): data_pyarrow_schema = data_table.schema schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) - self.create_table_for_parquet(key, - data_table, - schema) + self.create_table_for_parquet(key, data_table, schema) return diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index 8f843da..03e170e 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -1,48 +1,50 @@ -import geopandas -import pyarrow as pa -import pyarrow.parquet as pq import collections -import pandas as pd -import numpy as np -import re import json -import pickle import os +import pickle +import re import warnings -warnings.filterwarnings('ignore') - -class MapData(object): - ''' - Maps FIM MIP & BLE XS datasets to relevant IDs & categorize by HUC. - At this time, ensure FIM datasets are saved to local disk. - - ''' + +import geopandas +import numpy as np +import pandas as pd + +warnings.filterwarnings("ignore") + + +class MapData: + """ + Maps FIM MIP & BLE XS datasets to relevant IDs & categorize by HUC. + At this time, ensure FIM datasets are saved to local disk. + + """ + def __init__(self, data_dir, subfolder_key_prefix): self.data_dir = data_dir self.subfolder_key_prefix = subfolder_key_prefix # Parent directory of the FIM files. - # Note: All the jsons & geopackages are relevant + # Note: All the jsons & geopackages are relevant # to map the files to IDs. self.fim_data_dirs = [] - # List of directories associated with each file type of - # the FIM data sample (e.g. geopackage of a given model @ HUC#, json, - # source_models.gpkg, ripple.gpkg) + # List of directories associated with each file type of + # the FIM data sample (e.g. geopackage of a given model @ HUC#, json, + # source_models.gpkg, ripple.gpkg) self.model_gpkg_dirs = [] self.src_models_gpkg_dirs = [] self.rip_gpkg_dirs = [] self.gpkg_dirs = [] self.json_dirs = [] self.xs_df_list = [] - + # Variables to be used later self.model_gpkg_tablenames = [] self.src_models_gpkg_tablenames = [] self.rip_gpkg_tablenames = [] self.gpkg_tablenames = [] self.json_tablenames = [] - + self.id2json = collections.defaultdict(dict) self.model_id2gpkg = collections.defaultdict(dict) self.us_ref_dict = collections.defaultdict(dict) @@ -51,16 +53,16 @@ def __init__(self, data_dir, subfolder_key_prefix): self.groupbyriver_dict = collections.defaultdict(dict) self.crs_dict = collections.defaultdict(dict) self.consolidated_id2xs = geopandas.GeoDataFrame() - + self.read_data_dirs() self.cat_data_dirs(self.subfolder_key_prefix) self.map_model2huc() - self.filter_model2huc_map(keys_to_drop={'metrics','low_flow', - 'high_flow', 'eclipsed', - 'lengths', 'coverage'}) - + self.filter_model2huc_map( + keys_to_drop={"metrics", "low_flow", "high_flow", "eclipsed", "lengths", "coverage"} + ) + # Generate maps of model_id & HUC # to xs (for both us & ds cross-section) - # to reach ID & "network_to_id" from each model @ HUC's json file + # to reach ID & "network_to_id" from each model @ HUC's json file self.map_modelhuc_xs2ids() # Generate maps of model_id & HUC # to gpkg from each model @ HUC's geopackage @@ -73,7 +75,7 @@ def __init__(self, data_dir, subfolder_key_prefix): self.map_model_xs2ids() # [Optional: Per HUC, save each river's set of XS data as geoparquetss & geopackages] - #self.save_xs_data() + # self.save_xs_data() # Save map of inherited CRS to HUC, model_id, river name self.save_crs_map() @@ -83,85 +85,86 @@ def __init__(self, data_dir, subfolder_key_prefix): # Save HEC RAS models' cross-sections consolidated by HUC as geoparquets & geopackages self.save_xsbyhuc_data() - - def read_data_dirs(self): - ''' + """ Extract the list of FIM data sample's directories. - + Args: None - Return (list): List of directories associated with each file type of + Return (list): List of directories associated with each file type of the FIM data sample. - - ''' + + """ fim_data_dirs = [] for folder, subfolders, files in os.walk(self.data_dir): if folder != self.data_dir: for file in files: - self.fim_data_dirs.append(f'{folder}/{file}') + self.fim_data_dirs.append(f"{folder}/{file}") return - + def cat_data_dirs(self, subfolder_key_prefix): - ''' + """ Categorize FIM data sample files. - + Args: subfolder_key_prefix (str): Prefix of the FIM subfolder's data of interest Options: 'mip' or 'ble' Return: None - - ''' - # Extract a list of directories corresponding to each set of files + + """ + # Extract a list of directories corresponding to each set of files for x in self.fim_data_dirs: - - # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains reach_id & nwm_to_id - # for network layer & reaches layer. The rating curves layer only has reach_id. The models layer + # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains reach_id & nwm_to_id + # for network layer & reaches layer. The rating curves layer only has reach_id. The models layer # contains collection_id & model_id) - if re.search('ripple.gpkg', x): + if re.search("ripple.gpkg", x): self.rip_gpkg_dirs.append(x) - t = re.search(f'/{subfolder_key_prefix}(.*)', x) + t = re.search(f"/{subfolder_key_prefix}(.*)", x) rip_gpkg_tblname = t.group() - self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip('/').replace('/', '_')) + self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip("/").replace("/", "_")) # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id) - elif not x.endswith('source_models.gpkg') and not x.endswith('.json') and not re.search('ripple.gpkg', x): + elif ( + not x.endswith("source_models.gpkg") + and not x.endswith(".json") + and not re.search("ripple.gpkg", x) + ): self.model_gpkg_dirs.append(x) - t = re.search(f'/{subfolder_key_prefix}(.*)', x) + t = re.search(f"/{subfolder_key_prefix}(.*)", x) model_gpkg_tblname = t.group() - self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip('/').replace('/', '_')) + self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip("/").replace("/", "_")) # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines) - elif x.endswith('source_models.gpkg'): + elif x.endswith("source_models.gpkg"): self.src_models_gpkg_dirs.append(x) - t = re.search(f'/{subfolder_key_prefix}(.*)', x) + t = re.search(f"/{subfolder_key_prefix}(.*)", x) src_models_gpkg_tblname = t.group() - self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip('/').replace('/', '_')) - + self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip("/").replace("/", "_")) + # Covers all HEC-RAS models + Ripple gpkg per HUC - if x.endswith('.gpkg'): + if x.endswith(".gpkg"): self.gpkg_dirs.append(x) - t = re.search(f'/{subfolder_key_prefix}(.*)', x) + t = re.search(f"/{subfolder_key_prefix}(.*)", x) gpkg_tblname = t.group() - self.gpkg_tablenames.append(gpkg_tblname.lstrip('/').replace('/', '_')) + self.gpkg_tablenames.append(gpkg_tblname.lstrip("/").replace("/", "_")) # Covers each HEC-RAS models' result of conflating its model w/ the NWM network - elif x.endswith('.json'): + elif x.endswith(".json"): self.json_dirs.append(x) - t = re.search(f'/{subfolder_key_prefix}(.*)', x) + t = re.search(f"/{subfolder_key_prefix}(.*)", x) json_tblname = t.group() - self.json_tablenames.append(json_tblname.lstrip('/').replace('/', '_')) + self.json_tablenames.append(json_tblname.lstrip("/").replace("/", "_")) return - + def drop_nested_keys(self, map_dict, keys_to_drop): - ''' + """ Drop keys irrelevant for linking each XS to IDs - + Args: map_dict (dict): Dictionary to filter @@ -169,124 +172,132 @@ def drop_nested_keys(self, map_dict, keys_to_drop): Return: None - ''' + """ if isinstance(map_dict, dict): - return {k: self.drop_nested_keys(v, keys_to_drop) for k, v in map_dict.items() if k not in keys_to_drop} + return { + k: self.drop_nested_keys(v, keys_to_drop) + for k, v in map_dict.items() + if k not in keys_to_drop + } elif isinstance(map_dict, list): return [self.drop_nested_keys(i, keys_to_drop) for i in map_dict] else: return map_dict - + def map_model2huc(self): - ''' + """ Map each conflation json file to their corresponding model ID & HUC #. - + Args: None Return: None - ''' + """ for x in self.json_dirs: # Note: model_ids found in each src source_models.gpkg is featured is declared as # sub-foldername of where model gpkg file resides model_id = x.split("/")[-2] - huc_num = x.split("/")[-4].split('_')[1] + huc_num = x.split("/")[-4].split("_")[1] self.id2json[model_id][huc_num] = {} try: - with open(x, 'r') as f: - json2dict = json.loads(f.read()) + with open(x) as f: + json2dict = json.loads(f.read()) self.id2json[model_id][huc_num].update(json2dict) except: pass - return - + return + def filter_model2huc_map(self, keys_to_drop): - ''' - Extract only relevant keys from model2huc map for linking each XS to a feature ID. - + """ + Extract only relevant keys from model2huc map for linking each XS to a feature ID. + Args: keys_to_drop (dict): List of keys irrelevant for linking each XS to IDs. - (e.g. {'metrics','low_flow', 'high_flow', 'eclipsed', + (e.g. {'metrics','low_flow', 'high_flow', 'eclipsed', 'lengths', 'coverage'}) Return: None - ''' + """ self.id2json = self.drop_nested_keys(self.id2json, keys_to_drop) - + return - + def map_modelhuc_xs2ids(self): - ''' + """ Parse JSONs & map model_id & HUC # to xs to reach ID & "network_to_id" - + Args: None Return: None - Note: Per model @ HUC cross-section layer, the attribute of interest is "river_reach_rs" + Note: Per model @ HUC cross-section layer, the attribute of interest is "river_reach_rs" in order to link the IDs to each individual cross-section & their associated xs_id. - To map each cross-section of a model @ HUC#, there has to be a shared attribute between a - model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s + To map each cross-section of a model @ HUC#, there has to be a shared attribute between a + model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s conflation json file. - + - Each conflation json file reveals ... - Per reach, there is a set of cross-sections. - - Within each model's cross-section (XS) layers, there are a set of cross-section - instances - each instance featuring a unique "thalweg" (aka "min_elevation"), + - Within each model's cross-section (XS) layers, there are a set of cross-section + instances - each instance featuring a unique "thalweg" (aka "min_elevation"), "xs_max_elevation" (aka "max_elevation"), "reach_id" ("reaches"), & "river_station" (aka "xs_id") - - Each model @ HUC#'s XS layer contains a collection of cross-section instancees. - Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in + - Each model @ HUC#'s XS layer contains a collection of cross-section instancees. + Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in such a way to allow each cross-section to be associated with a feature ID (aka "reach_id" and/or - "network_to_id"). - - - "river_reach_rs" is formatted differently across models' XS layers, however multplie keys - referenced in the conflation jsons can be referenced to obtain the "river_reach_rs" from the jsons + "network_to_id"). + + - "river_reach_rs" is formatted differently across models' XS layers, however multplie keys + referenced in the conflation jsons can be referenced to obtain the "river_reach_rs" from the jsons As a result, the mapping of IDs to each model's cross-section instance will be based on the info. extracted from a model @ HUC#'s conflation.json - There can be multiple reach_ids tied to same nwm_to_id (aka "network_to_id). - ''' + """ # Keys to join values from that makes up the 'river_reach_rs' reflected in each model's XS layer - keys_to_join = ['river', 'reach', 'xs_id'] + keys_to_join = ["river", "reach", "xs_id"] for model_id, huc_dict in self.id2json.items(): for huc_num, reach_dict in huc_dict.items(): - for reach_id, v_dict in reach_dict['reaches'].items(): + for reach_id, v_dict in reach_dict["reaches"].items(): # Joining the attribute because each model's xs layer features three atttrib concat (to be used as reference) if "us_xs" in v_dict: - usxs_joined_values = ' '.join(str(v_dict["us_xs"][key]) for key in keys_to_join) + usxs_joined_values = " ".join(str(v_dict["us_xs"][key]) for key in keys_to_join) if "min_elevation" in v_dict["us_xs"]: us_xs_min_elev = v_dict["us_xs"]["min_elevation"] if "max_elevation" in v_dict["us_xs"]: us_xs_max_elev = v_dict["us_xs"]["max_elevation"] - + if "ds_xs" in v_dict: - dsxs_joined_values = ' '.join(str(v_dict["ds_xs"][key]) for key in keys_to_join) + dsxs_joined_values = " ".join(str(v_dict["ds_xs"][key]) for key in keys_to_join) if "min_elevation" in v_dict["ds_xs"]: ds_xs_min_elev = v_dict["ds_xs"]["min_elevation"] if "max_elevation" in v_dict["ds_xs"]: ds_xs_max_elev = v_dict["ds_xs"]["max_elevation"] - + if "network_to_id" in v_dict: nwm2id = v_dict["network_to_id"] # Generated maps of model_id & HUC # to xs (for both us & ds cross-section) - # to reach ID & "network_to_id" - self.us_ref_dict[(model_id, huc_num)].update({(usxs_joined_values, us_xs_min_elev , us_xs_max_elev):[reach_id, nwm2id]}) - self.ds_ref_dict[(model_id, huc_num)].update({(dsxs_joined_values, ds_xs_min_elev , ds_xs_max_elev):[reach_id, nwm2id]}) - + # to reach ID & "network_to_id" + self.us_ref_dict[(model_id, huc_num)].update( + {(usxs_joined_values, us_xs_min_elev, us_xs_max_elev): [reach_id, nwm2id]} + ) + self.ds_ref_dict[(model_id, huc_num)].update( + {(dsxs_joined_values, ds_xs_min_elev, ds_xs_max_elev): [reach_id, nwm2id]} + ) + return def map_model2huc_gpkg(self): - ''' + """ Map model ID & HUC # to each HEC-RAS model's geopackage. - + Args: None @@ -295,37 +306,39 @@ def map_model2huc_gpkg(self): Note: model_ids found in each source_models.gpkg is featured in last sub-foldername of where model gpkg file resides - ''' + """ # Each HEC-RAS model gpkg per model per HUC for x in self.model_gpkg_dirs: model_id = x.split("/")[-2] - huc_num = x.split("/")[-4].split('_')[1] - self.model_id2gpkg[(model_id, huc_num)] = {'XS': None} + huc_num = x.split("/")[-4].split("_")[1] + self.model_id2gpkg[(model_id, huc_num)] = {"XS": None} self.model_id2gpkg[(model_id, huc_num)] = {"XS concave hull": None} self.model_id2gpkg[(model_id, huc_num)] = {"River": None} try: - self.model_id2gpkg[(model_id, huc_num)].update({'XS': geopandas.read_file(x, engine='pyogrio', - use_arrow=True, - layer="XS")}) - - self.model_id2gpkg[(model_id, huc_num)].update({"River": geopandas.read_file(x, - engine='pyogrio', - use_arrow=True, - layer="River")}) - self.model_id2gpkg[(model_id, huc_num)].update({"XS concave hull": geopandas.read_file(x, - engine='pyogrio', - use_arrow=True, - layer="XS concave hull")}) + self.model_id2gpkg[(model_id, huc_num)].update( + {"XS": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="XS")} + ) + + self.model_id2gpkg[(model_id, huc_num)].update( + {"River": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="River")} + ) + self.model_id2gpkg[(model_id, huc_num)].update( + { + "XS concave hull": geopandas.read_file( + x, engine="pyogrio", use_arrow=True, layer="XS concave hull" + ) + } + ) except: pass - + return - + def map_huc2ripple_gpkg(self): - ''' + """ Map HUC # to ripple geopackage (features HEC RAS 1D model flowlines). - + Args: None @@ -333,109 +346,144 @@ def map_huc2ripple_gpkg(self): Note: ripple.gpkg features the HEC RAS 1D model flowlines categorized by HUC #. - ''' + """ for x in self.rip_gpkg_dirs: - huc_num = x.split("/")[-2].split('_')[1] - self.rip_huc2gpkg[huc_num] = {'reaches': None} + huc_num = x.split("/")[-2].split("_")[1] + self.rip_huc2gpkg[huc_num] = {"reaches": None} self.rip_huc2gpkg[huc_num] = {"rating curves": None} self.rip_huc2gpkg[huc_num] = {"network": None} - self.rip_huc2gpkg[huc_num] = {'models': None} + self.rip_huc2gpkg[huc_num] = {"models": None} self.rip_huc2gpkg[huc_num] = {"metadata": None} self.rip_huc2gpkg[huc_num] = {"rating_curves_no_map": None} self.rip_huc2gpkg[huc_num] = {"processing": None} try: - self.rip_huc2gpkg[huc_num].update({"reaches": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="reaches")}) - self.rip_huc2gpkg[huc_num].update({"rating_curves": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="rating_curves")}) - self.rip_huc2gpkg[huc_num].update({"network": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="network")}) - self.rip_huc2gpkg[huc_num].update({"models": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="models")}) - self.rip_huc2gpkg[huc_num].update({"metadata": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="metadata")}) - self.rip_huc2gpkg[huc_num].update({"rating_curves_no_map": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="rating_curves_no_map")}) - self.rip_huc2gpkg[huc_num].update({"processing": geopandas.read_file(x, engine='pyogrio', use_arrow=True, layer="processing")}) + self.rip_huc2gpkg[huc_num].update( + {"reaches": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="reaches")} + ) + self.rip_huc2gpkg[huc_num].update( + { + "rating_curves": geopandas.read_file( + x, engine="pyogrio", use_arrow=True, layer="rating_curves" + ) + } + ) + self.rip_huc2gpkg[huc_num].update( + {"network": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="network")} + ) + self.rip_huc2gpkg[huc_num].update( + {"models": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="models")} + ) + self.rip_huc2gpkg[huc_num].update( + {"metadata": geopandas.read_file(x, engine="pyogrio", use_arrow=True, layer="metadata")} + ) + self.rip_huc2gpkg[huc_num].update( + { + "rating_curves_no_map": geopandas.read_file( + x, engine="pyogrio", use_arrow=True, layer="rating_curves_no_map" + ) + } + ) + self.rip_huc2gpkg[huc_num].update( + { + "processing": geopandas.read_file( + x, engine="pyogrio", use_arrow=True, layer="processing" + ) + } + ) except: - pass return - + def map_model_xs2ids(self): - ''' + """ Map each cross-section instance featured in HEC-RAS model's cross-section layer to their corresponding IDs. - + Args: None Return: None - ''' - + """ for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): - df = model_gpkg_dict['XS'] - df['huc'] = huc_num - df['model_id'] = model_id + df = model_gpkg_dict["XS"] + df["huc"] = huc_num + df["model_id"] = model_id array_of_lists = [[None, None] for _ in range(len(df))] - df['us_ids'] = pd.DataFrame([array_of_lists]).T - df['ds_ids'] = pd.DataFrame([array_of_lists]).T - + df["us_ids"] = pd.DataFrame([array_of_lists]).T + df["ds_ids"] = pd.DataFrame([array_of_lists]).T + # Covers us_xs if (model_id, huc_num) in self.us_ref_dict: - df['us_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.us_ref_dict[(model_id, huc_num)].get) + df["us_ids"] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map( + self.us_ref_dict[(model_id, huc_num)].get + ) else: - print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") + print( + f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file." + ) continue # Covers ds_xs if (model_id, huc_num) in self.ds_ref_dict: - df['ds_ids'] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map(self.ds_ref_dict[(model_id, huc_num)].get) + df["ds_ids"] = df.set_index(["river_reach_rs", "thalweg", "xs_max_elevation"]).index.map( + self.ds_ref_dict[(model_id, huc_num)].get + ) else: - print(f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file.") + print( + f"The model_id @ HUC# ({(model_id, huc_num)}) IS NOT featured in current model @ HUC's conflation json file." + ) continue - # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS + # Extracts & appends reach_id & network_to_id to each model @ HUC's unique XS # Should the ids not be available in the conflation, must initialize columns - us_id_df = df['us_ids'].apply(pd.Series) - if us_id_df.shape[1]==0: + us_id_df = df["us_ids"].apply(pd.Series) + if us_id_df.shape[1] == 0: us_id_df = pd.DataFrame(np.nan, index=range(us_id_df.shape[0]), columns=[0, 1]) - us_id_df.columns=['us_reach_id', 'us_network_to_id'] + us_id_df.columns = ["us_reach_id", "us_network_to_id"] # Should the ids not be available in the conflation, must initialize columns - ds_id_df = df['ds_ids'].apply(pd.Series) - if ds_id_df.shape[1]==0: + ds_id_df = df["ds_ids"].apply(pd.Series) + if ds_id_df.shape[1] == 0: ds_id_df = pd.DataFrame(np.nan, index=range(ds_id_df.shape[0]), columns=[0, 1]) - ds_id_df.columns=['ds_reach_id', 'ds_network_to_id'] - - # Fill any nan to string - us_id_df[['us_reach_id', 'us_network_to_id']] = us_id_df[['us_reach_id', 'us_network_to_id']].fillna('None') - ds_id_df[['ds_reach_id', 'ds_network_to_id']] = ds_id_df[['ds_reach_id', 'ds_network_to_id']].fillna('None') - df = df.fillna('None') + ds_id_df.columns = ["ds_reach_id", "ds_network_to_id"] + + # Fill any nan to string + us_id_df[["us_reach_id", "us_network_to_id"]] = us_id_df[ + ["us_reach_id", "us_network_to_id"] + ].fillna("None") + ds_id_df[["ds_reach_id", "ds_network_to_id"]] = ds_id_df[ + ["ds_reach_id", "ds_network_to_id"] + ].fillna("None") + df = df.fillna("None") df = pd.concat([df, us_id_df, ds_id_df], axis=1) - df = df.drop(['us_ids', 'ds_ids'], axis=1) - - model_gpkg_dict['XS'] = df - self.xs_df_list.append(model_gpkg_dict['XS']) - + df = df.drop(["us_ids", "ds_ids"], axis=1) + + model_gpkg_dict["XS"] = df + self.xs_df_list.append(model_gpkg_dict["XS"]) + return - + def save_xs_data(self): - ''' + """ Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage - + Args: None Return: None - Note: These saved parquet files will preserve each river @ HUC's inherited CRS. + Note: These saved parquet files will preserve each river @ HUC's inherited CRS. - ''' + """ for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): - # Generate data folder per HUC - if not os.path.exists(f'{os.getcwd()}/xs_data/huc_{huc_num}'): - os.makedirs(f'{os.getcwd()}/xs_data/huc_{huc_num}') + if not os.path.exists(f"{os.getcwd()}/xs_data/huc_{huc_num}"): + os.makedirs(f"{os.getcwd()}/xs_data/huc_{huc_num}") - # Save each river's geopandas as a geoparquet & geopackage under each HUC folder - grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river']) - for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']): + # Save each river's geopandas as a geoparquet & geopackage under each HUC folder + grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]["XS"].groupby(["river"]) + for river_name in set(self.model_id2gpkg[(model_id, huc_num)]["XS"]["river"]): filterbyriver = grouped_xslayers.get_group(river_name) # Generate map of each river's set of XS to HUC & model ID to be used as a @@ -443,66 +491,70 @@ def save_xs_data(self): self.groupbyriver_dict[huc_num].update({model_id: filterbyriver}) # Save XS as geoparquet per river per HUC - filterbyriver.to_parquet(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.parquet', - engine="pyarrow") + filterbyriver.to_parquet( + f"{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.parquet", engine="pyarrow" + ) # Save XS as geopackage per river per HUC - filterbyriver.to_file(f'{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.gpkg', - driver='GPKG') - + filterbyriver.to_file(f"{os.getcwd()}/xs_data/huc_{huc_num}/{river_name}.gpkg", driver="GPKG") + return - + def save_crs_map(self): - ''' + """ Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage - + Args: None Return: None - Note: This saved pickle file will map each river @ HUC's inherited CRS for one to - analyze & reference. + Note: This saved pickle file will map each river @ HUC's inherited CRS for one to + analyze & reference. - ''' + """ for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): - # Generate data folder per HUC - if not os.path.exists(f'{os.getcwd()}/xs_data/crs_map'): - os.makedirs(f'{os.getcwd()}/xs_data/crs_map') + if not os.path.exists(f"{os.getcwd()}/xs_data/crs_map"): + os.makedirs(f"{os.getcwd()}/xs_data/crs_map") - # Generate map of the CRS to each river's geopandas per HUC - grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]['XS'].groupby(['river']) - for river_name in set(self.model_id2gpkg[(model_id, huc_num)]['XS']['river']): + # Generate map of the CRS to each river's geopandas per HUC + grouped_xslayers = self.model_id2gpkg[(model_id, huc_num)]["XS"].groupby(["river"]) + for river_name in set(self.model_id2gpkg[(model_id, huc_num)]["XS"]["river"]): filterbyriver = grouped_xslayers.get_group(river_name) - self.crs_dict[(huc_num, model_id)].update({river_name: f'ESPG: {str(filterbyriver.crs.to_epsg()) if \ - filterbyriver.crs.to_epsg() else None}, {filterbyriver.crs.name},'}) + self.crs_dict[(huc_num, model_id)].update( + { + river_name: f"ESPG: { + str(filterbyriver.crs.to_epsg()) if filterbyriver.crs.to_epsg() else None + }, {filterbyriver.crs.name}," + } + ) # Save map of inherited CRS to HUC, model_id, river name - with open(f'{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle', 'wb') as handle: + with open(f"{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle", "wb") as handle: pickle.dump(self.crs_dict, handle, protocol=pickle.HIGHEST_PROTOCOL) - + return def consolidate_id2xs_dfs(self): - ''' + """ Consolidate HEC-RAS models cross-sections featuring their corresponding IDs. - + Args: None Return: None Note: A set CRS standard is needed in order to consolidates all XS layers of all models - under a single dataframe to maintain a consistent CRS. This consolidation will check if the XS - dataframes have a consistent CRS if it does not then it will not consolidate the XS dataframes. + under a single dataframe to maintain a consistent CRS. This consolidation will check if the XS + dataframes have a consistent CRS if it does not then it will not consolidate the XS dataframes. As of 05/14/25, only CRS in this condition is considering the NAD83, but additional CRS can be added to this methods as new findings are made. - - ''' + + """ crs_list = [] for xs_df in self.xs_df_list: - if 'NAD83' in xs_df.crs.name or 'NAD_1983' in xs_df.crs.name: + if "NAD83" in xs_df.crs.name or "NAD_1983" in xs_df.crs.name: # Convert all GeoDataFrames in the list to the target CRS crs_list.append("EPSG:5070") else: @@ -511,18 +563,23 @@ def consolidate_id2xs_dfs(self): # Will consolidate ONLY if the CRS is consistent across XS geodpandas dataframes if len(set(crs_list)) == 1: target_crs = str(np.unique(crs_list)[0]) - self.consolidated_id2xs = geopandas.GeoDataFrame(pd.concat([xs_df.to_crs(target_crs) for xs_df in self.xs_df_list], - ignore_index=True)) - print(f"The consolidated XS geopandas dataframes now has a standardized CRS of:\n{self.consolidated_id2xs.crs.name}") + self.consolidated_id2xs = geopandas.GeoDataFrame( + pd.concat([xs_df.to_crs(target_crs) for xs_df in self.xs_df_list], ignore_index=True) + ) + print( + f"The consolidated XS geopandas dataframes now has a standardized CRS of:\n{self.consolidated_id2xs.crs.name}" + ) else: - print("Cannot consolidate XS geodpandas dataframes because the CRS is inconsistent across XS geodpandas dataframes.") - + print( + "Cannot consolidate XS geodpandas dataframes because the CRS is inconsistent across XS geodpandas dataframes." + ) + return def save_xsbyhuc_data(self, xs_data_type): - ''' + """ Consolidate HEC-RAS models cross-sections based on HUC & save to storage - + Args: xs_data_type (str): Cross-section data type to be saved either 'mip' or 'ble' cross-section type. Options: 'mip' or 'ble' @@ -530,29 +587,30 @@ def save_xsbyhuc_data(self, xs_data_type): Return: None Note: These saved parquet files will be the transformed CRS of all XS per HUC to ensure - a consistent standardized CRS. + a consistent standardized CRS. - ''' - unique_huc_nums = set(self.consolidated_id2xs['huc']) + """ + unique_huc_nums = set(self.consolidated_id2xs["huc"]) for huc_num in unique_huc_nums: - # Generate data folder per HUC - if not os.path.exists(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}'): - os.makedirs(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}') - + if not os.path.exists(f"{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}"): + os.makedirs(f"{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}") + # Filter consolidated XS geopanda dataframe by HUC - filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs['huc'] == huc_num] - + filterbyhuc = self.consolidated_id2xs[self.consolidated_id2xs["huc"] == huc_num] + # Save XS as geoparquet per HUC - filterbyhuc['thalweg'] = filterbyhuc['thalweg'].astype(str) - filterbyhuc['xs_max_elevation'] = filterbyhuc['xs_max_elevation'].astype(str) - filterbyhuc.to_parquet(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.parquet', - engine="pyarrow") - + filterbyhuc["thalweg"] = filterbyhuc["thalweg"].astype(str) + filterbyhuc["xs_max_elevation"] = filterbyhuc["xs_max_elevation"].astype(str) + filterbyhuc.to_parquet( + f"{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.parquet", engine="pyarrow" + ) + # Save XS as geopackage per HUC - filterbyhuc.to_file(f'{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.gpkg', - driver='GPKG') - - print(f'{xs_data_type}_{huc_num}') - + filterbyhuc.to_file( + f"{os.getcwd()}/xs_data/{xs_data_type}_{huc_num}/huc_{huc_num}.gpkg", driver="GPKG" + ) + + print(f"{xs_data_type}_{huc_num}") + return diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index ba640ed..15c6df6 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -38,7 +38,8 @@ dependencies = [ "h5py==3.13.0", "h5netcdf==1.6.1", "fsspec==2025.5.0", - + "dask==2025.5.1", + "netCDF4==1.7.2", ] [build-system] diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index de371af..27fadc5 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -1,4 +1,4 @@ from icefabric_tools._api import find_origin, load_hydrofabric, table_to_geopandas, to_geopandas -from icefabric_tools import rnr +from icefabric_tools.iceberg import rnr __all__ = ["find_origin", "load_hydrofabric", "rnr", "to_geopandas", "table_to_geopandas"] diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/_api.py index cefb45f..1b7310a 100644 --- a/src/icefabric_tools/src/icefabric_tools/_api.py +++ b/src/icefabric_tools/src/icefabric_tools/_api.py @@ -23,12 +23,13 @@ def load_hydrofabric(catalog_settings: dict[str, str]) -> Catalog: """ return load_catalog("hydrofabric", **catalog_settings) + def table_to_geopandas( table: Table, row_filter: str | BooleanExpression = ALWAYS_TRUE, case_sensitive: bool | None = True, snapshot_id: int | None = None, - limit: int | None = None + limit: int | None = None, ) -> gpd.GeoDataFrame: """Converts a table to a geopandas dataframe @@ -61,10 +62,7 @@ def table_to_geopandas( return to_geopandas(df) -def to_geopandas( - df: pd.DataFrame, - crs: str = "EPSG:5070" -) -> gpd.GeoDataFrame: +def to_geopandas(df: pd.DataFrame, crs: str = "EPSG:5070") -> gpd.GeoDataFrame: """Converts the geometries in a pandas df to a geopandas dataframe Parameters @@ -91,7 +89,7 @@ def to_geopandas( return gpd.GeoDataFrame(df, geometry=geometry, crs=crs) -def find_origin(network_table: Table, identifier: str, id_type: str ="hl_uri") -> pd.DataFrame: +def find_origin(network_table: Table, identifier: str, id_type: str = "hl_uri") -> pd.DataFrame: """Find an origin point in the hydrofabric network. This function handles the case where multiple records match the identifier. diff --git a/src/icefabric_tools/src/icefabric_tools/rnr.py b/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py similarity index 73% rename from src/icefabric_tools/src/icefabric_tools/rnr.py rename to src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py index d9ae9e0..e2546d7 100644 --- a/src/icefabric_tools/src/icefabric_tools/rnr.py +++ b/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py @@ -38,35 +38,45 @@ def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.Ge hydrolocations = catalog.load_table("hydrofabric.hydrolocations") origin_row = network.scan(row_filter=f"hf_id = {reach_id}").to_pandas() - mainstem_expression = EqualTo("hf_mainstem", origin_row['hf_mainstem'].values[0]) - hydroseq_expression = LessThanOrEqual("hydroseq", origin_row['hydroseq'].values[0]) + mainstem_expression = EqualTo("hf_mainstem", origin_row["hf_mainstem"].values[0]) + hydroseq_expression = LessThanOrEqual("hydroseq", origin_row["hydroseq"].values[0]) combined_filter = And(mainstem_expression, hydroseq_expression) # Find all streams with the same stream order # TODO Determine lakes to break segments mainstem_features = network.scan(row_filter=combined_filter).to_pandas() - segment_flowpaths = flowpaths.scan(row_filter=In("divide_id", mainstem_features["divide_id"].drop_duplicates().values)).to_pandas() - joined_df = pd.merge( - mainstem_features, - segment_flowpaths, - on="divide_id", - how="outer" - ) + segment_flowpaths = flowpaths.scan( + row_filter=In("divide_id", mainstem_features["divide_id"].drop_duplicates().values) + ).to_pandas() + joined_df = pd.merge(mainstem_features, segment_flowpaths, on="divide_id", how="outer") stream_order = joined_df[joined_df["hf_id"] == reach_id]["order"].values[0] filtered_flowpaths = segment_flowpaths[segment_flowpaths["order"] == stream_order] - filtered_poi_list = [int(_id) for _id in segment_flowpaths[segment_flowpaths["order"] == stream_order]["poi_id"].values if _id is not None] + filtered_poi_list = [ + int(_id) + for _id in segment_flowpaths[segment_flowpaths["order"] == stream_order]["poi_id"].values + if _id is not None + ] # Get full river network filtered_nexus_points = table_to_geopandas(table=nexus, row_filter=In("id", filtered_flowpaths["toid"])) - filtered_divides = table_to_geopandas(table=divides, row_filter=In("divide_id", filtered_flowpaths["divide_id"])) - filtered_divide_attr = divides_attr.scan(row_filter=In("divide_id", filtered_flowpaths["divide_id"])).to_pandas() + filtered_divides = table_to_geopandas( + table=divides, row_filter=In("divide_id", filtered_flowpaths["divide_id"]) + ) + filtered_divide_attr = divides_attr.scan( + row_filter=In("divide_id", filtered_flowpaths["divide_id"]) + ).to_pandas() filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", filtered_flowpaths["id"])).to_pandas() - filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", filtered_flowpaths["id"])).to_pandas() + filtered_flowpath_attr_ml = flowpath_attr_ml.scan( + row_filter=In("id", filtered_flowpaths["id"]) + ).to_pandas() filtered_pois = pois.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() filtered_hydrolocations = hydrolocations.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() filtered_flowpaths = to_geopandas(filtered_flowpaths) - filtered_network = network.scan(row_filter=In("id", np.concatenate([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]))).to_pandas() - + filtered_network = network.scan( + row_filter=In( + "id", np.concatenate([filtered_flowpaths["toid"].values, filtered_flowpaths["id"].values]) + ) + ).to_pandas() layers = { "flowpaths": filtered_flowpaths, @@ -81,4 +91,4 @@ def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.Ge "hydrolocations": filtered_hydrolocations, } for table, layer in layers.items(): - gpd.GeoDataFrame(layer).to_file(output_file, layer=table, driver='GPKG') + gpd.GeoDataFrame(layer).to_file(output_file, layer=table, driver="GPKG") diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py b/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py new file mode 100644 index 0000000..c0ef9ae --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py @@ -0,0 +1,6 @@ +from icefabric_tools.icechunk.icechunk_s3_module import ( + IcechunkS3Repo, + NGWPCLocations, + S3Path, + get_icechunk_data, +) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py new file mode 100644 index 0000000..dadf8e5 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py @@ -0,0 +1,289 @@ +""" +Moduile interacting with archival weather files + +Utilities for loading/supplying/interacting/virtualizing +archival weather files, mainly to interface with icechunk +""" + +import os +from enum import Enum + +import fsspec +import pandas as pd +import rioxarray as rxr +import xarray as xr +from tqdm import tqdm +from virtualizarr import open_virtual_dataset + +from icefabric_tools.icechunk import S3Path + + +class FileType(Enum): + """ + Archival weather file types + + Enum class for instantiating different archival weather file + formats. Used when virtualizing and collecting files. + """ + + GEOTIFF = ".tif" + NETCDF = ".nc" + + +def load_tiff_file(fp: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: + """ + Loads a GEOTIFF + + Takes a local filepath to a TIFF and loads it into an Xarray + Dataset object. Could also return a Dataarray or list of + Datasets. + + Parameters + ---------- + fp : str + File path to the TIFF that will be returned as a dataset. + + Returns + ------- + xr.Dataset | xr.DataArray | list[xr.Dataset] + The Xarray representation of the TIFF file. + + Raises + ------ + FileNotFoundError + """ + if os.path.exists(fp) is False: + raise FileNotFoundError(f"Cannot find: {fp}") + ds = rxr.open_rasterio(fp) + return ds + + +def get_archival_weather_files( + loc: str | S3Path, file_type: FileType | None = None, manual_file_pattern: str | None = None +) -> list[str]: + """ + Collect files from a directory + + Given a directory in either local or S3 storage, return all files of a specific type or + matching a file pattern. + + Parameters + ---------- + loc : str | S3Path + Directory housing the files - could be a string for a local path, or an S3Path object + for files on an S3 bucket + file_type : FileType | None, optional + The file type to be collected - NETCDF, TIF, etc. Must be given if no manual pattern is + supplied. By default None + manual_file_pattern : str | None, optional + If supplied, will collect filepaths according to the file pattern instead of by + filetype. Should be parsable by an fsspec.glob() call. By default None + + Returns + ------- + list[str] + A list of all retrieved filepaths associated with the directory, file type and/or + manual file pattern. + + Raises + ------ + ValueError + """ + sort_prefix = "" + if type(loc) is S3Path: + sort_prefix = "s3://" + fs = fsspec.filesystem("s3") + else: + loc = os.path.abspath(loc) + fs = fsspec.implementations.local.LocalFileSystem() + + if manual_file_pattern: + print(manual_file_pattern) + files = fs.glob(f"{str(loc)}/{manual_file_pattern}") + else: + if not file_type: + raise ValueError("Must supply a file_type argument if no manual_file_pattern is given") + files = fs.glob(f"{str(loc)}/*{file_type.value}") + files = sorted([f"{sort_prefix}{f}" for f in files]) + return files + + +def extract_dates_from_archival_files( + file_paths: list[str], file_pattern: str, just_year: bool | None = False +) -> list[pd.DatetimeIndex] | list[int]: + """ + Pull dates out of list of file names + + Extracts and returns a sorted list of datetimes corresponding to the provided + list of filepaths. + + Parameters + ---------- + file_paths: list[str] + List of filepaths. File names should correspond to a datetime, and + should contain the datetime embedded in the filename. + file_pattern: str + Matching pattern used to extract the datetime. Format should match the files, + with an asterisk replacing the datetime section of the filename. + just_year: bool | None, optional + If supplied, will only extract year values in int form. + + Returns + ------- + list[DatetimeIndex] | list[int] + Sorted list of the DatetimeIndexes extracted from the filenames. Same + length and ordering as the list of filepaths. Could also just be years + as ints. + """ + pre, post = file_pattern.split("*")[0:2] + files = [fp.split("/")[-1] for fp in file_paths] + dates = [f.replace(pre, "").replace(post, "") for f in files] + if just_year: + date_dims = [pd.date_range(d, periods=1).year for d in sorted(dates)] + else: + date_dims = [pd.date_range(d, periods=1) for d in sorted(dates)] + return date_dims + + +def virtualize_datasets( + file_list: list[str], loadable_vars: list[str] | None = None, testing_file_quantity: int | None = None +) -> list[xr.Dataset]: + """ + Virtualize archival weather files + + Takes a list of archival weather filepaths and converts each to a virtual dataset. + NOTE: May take a very long time to process if the filelist is long or large. + + Parameters + ---------- + file_list : list[str] + List of archival weather filepaths, each of which will be converted to a virtual dataset. + loadable_vars : list[str] | None, optional + List of variables to open as lazy numpy/dask arrays instead of instances of + ManifestArray. By default None. + testing_file_quantity : int | None, optional + Include if you want to test the virtualization with a subset of files. + Only opens the number specified, starting with the first in the list. By default None + + Returns + ------- + list[xr.Dataset] + List of the virtualized datasets derived from the provided archival weather files. + """ + if testing_file_quantity: + file_list = file_list[:testing_file_quantity] + v_datasets = [] + for i in tqdm( + range(len(file_list)), + desc="Opening files as virtual datasets.", + unit="files", + ncols=125, + colour="#37B6BD", + ): + v_datasets.append( + open_virtual_dataset(filepath=file_list[i], indexes={}, loadable_variables=loadable_vars) + ) + return v_datasets + + +def add_time_dim_to_datasets( + timeless_datasets: list[xr.Dataset], + datetimes: list[pd.DatetimeIndex], + just_year: bool | None = False, + testing_file_quantity: int | None = None, +) -> list[xr.Dataset]: + """ + Add time dimension to a collection of data + + Expands each entry in a list of virtualized datasets with a single time dimension + + Parameters + ---------- + timeless_datasets : list[xr.Dataset] + List of virtualized datasets missing time dimensions. + datetimes : list[pd.DatetimeIndex] + List of the DatetimeIndexes that will be added onto ```timeless_datasets```. + Should be the same length and ordering. + just_year: bool | None, optional + Include if your datetimes list is only years in int format. Will add a 'year' dimension + instead. By default False. + testing_file_quantity : int | None, optional + Include if you want to only add the time dimension to a subset of the virtualized datasets. + Only opens the number specified, starting with the first in the list. + NOTE: Make sure the length of ```timeless_datasets``` and ```datetimes``` are equal after + accounting for this. By default None. + + Returns + ------- + list[xr.Dataset] + List of the virtualized datasets with newly added time dimensions. + """ + if testing_file_quantity: + datetimes = datetimes[:testing_file_quantity] + v_datasets = [ + d.expand_dims(year=t) if just_year else d.expand_dims(time=t) + for d, t in zip(timeless_datasets, datetimes, strict=False) + ] + return v_datasets + + +def virtualize_and_concat_archival_files_on_time( + location: str | S3Path, + file_date_pattern: str, + file_type: FileType | None = None, + manual_file_pattern: str | None = None, + just_year: bool | None = False, + loadable_vars: list[str] | None = None, + testing_file_quantity: int | None = None, +) -> xr.Dataset: + """ + Virtualize a collection of weather files and combine them + + Per a given local file directory or S3 bucket directory, collect every archival + weather file (with time data only in the filename) and virtualize and concatenate + the set on a time dimension. Produces a single virtualized dataset. + + Parameters + ---------- + lcoation : str | S3Path + Directory housing the files - could be a string for a local path, or an S3Path object + for files on an S3 bucket + file_date_pattern : str + Matching pattern used to extract the datetime. Format should match the files, + with an asterisk replacing the datetime section of the filename. + file_type: FileType | None, optional + The file type to be collected - NETCDF, TIF, etc. Must be given if no manual pattern is + supplied. By default None + manual_file_pattern : str | None, optional + If supplied, will collect filepaths according to the file pattern instead of by + filetype. Should be parsable by an fsspec.glob() call. By default None. + just_year: bool | None, optional + Include if your filenames only contain years. Will add a 'year' dimension + instead when virtualizing. By default False. + loadable_vars : list[str] | None, optional + List of dataset variables to open as lazy numpy/dask arrays when virtualizing, + instead of instances of ManifestArray. Leads to data duplication, but is necessary + in some cases. By default None. + testing_file_quantity : int | None, optional + Include if you want to test the virtualization with a subset files. + Only opens the number specified, starting with the first. Useful for virtualizing + smaller groups of files when testing or debugging. By default None. + + Returns + ------- + xr.Dataset + The fully time-concatenated, virtualized dataset. + """ + arch_files = get_archival_weather_files( + loc=location, file_type=file_type, manual_file_pattern=manual_file_pattern + ) + datetimes = extract_dates_from_archival_files(arch_files, file_date_pattern, just_year=just_year) + timeless_datasets = virtualize_datasets(arch_files, loadable_vars, testing_file_quantity) + time_added_datasets = add_time_dim_to_datasets( + timeless_datasets, datetimes, just_year, testing_file_quantity + ) + concat_dim = "year" if just_year else "time" + final_dataset = xr.concat( + time_added_datasets, dim=concat_dim, coords="minimal", compat="override", combine_attrs="override" + ) + return final_dataset diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py new file mode 100644 index 0000000..53a5d66 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py @@ -0,0 +1,308 @@ +""" +NGWPC Icechunk interface module + +Module containing classes/methods pertaining +to S3 pathing and Icechunk repos +""" + +import subprocess +from enum import Enum + +import icechunk as ic +import xarray as xr +from icechunk.xarray import to_icechunk + +TOPO_BP = "surface/nws-topobathy" +TOPO_NOS = f"{TOPO_BP}/nws-nos-surveys" + + +class S3Path: + """ + Class representing an S3 path. + + Corresponds to an S3 bucket, prefix and region + + Parameters + ---------- + bucket: str + The bucket of the S3 path. + prefix: str + The S3 path (minus the bucket). + region: str + The S3 region the bucket/path belongs to. Defaults to 'us-east-1'. + """ + + bucket: str + prefix: str + region: str + + def __init__(self, bucket: str, prefix: str, region: str | None = "us-east-1"): + self.bucket = bucket + self.prefix = prefix + self.region = region + + def __str__(self): + """Returns the full S3 path""" + return f"s3://{self.bucket}/{self.prefix}" + + def partial_path(self): + """Returns the S3 path without the 'S3://' prefix""" + return f"{self.bucket}/{self.prefix}" + + +class NGWPCLocations(Enum): + """ + Important NGWPC S3 locations + + Enum class for instantiating S3Paths corresponding to the + icechunk stores, as well as the reference locations for virtualized + stores. + """ + + SNODAS_REF = ("ngwpc-forcing", "snodas_nc_v4") + SNODAS_V3 = ("ngwpc-forcing", "snodas_nc") + SNODAS_IC = ("hydrofabric-data", "forcing/snodas") + NLCD_REF = ("ngwpc-hydrofabric", "NLCD_Land_Cover_CONUS") + NLCD_IC = ("hydrofabric-data", "land-cover/NLCD-Land-Cover") + USGS_IC = ("ngwpc-hydrofabric", "usgs_observations") + TOPO_AK_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_10m") + TOPO_AK_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_30m") + TOPO_CONUS_ATL_GULF_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_atlantic_gulf_30m") + TOPO_CONUS_PAC_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_pacific_30m") + TOPO_GREAT_LAKES_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_great_lakes_30m") + TOPO_HA_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_10m") + TOPO_HA_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_30m") + TOPO_PR_USVI_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_10m") + TOPO_PR_USVI_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_30m") + TOPO_ALBEMARLE_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Albemarle_Sound_NOS_NCEI") + TOPO_CHESAPEAKE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Chesapeake_Bay_NOS_NCEI") + TOPO_MOBILE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Mobile_Bay_NOS_NCEI") + TOPO_TANGIER_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Tangier_Sound_NOS_NCEI") + + def __init__(self, bucket, prefix): + self.path = S3Path(bucket, prefix) + + +class IcechunkS3Repo: + """ + Class representing an S3 bucket icechunk store + + Parameters + ---------- + location: S3Path + The S3Path of the repo. + repo: ic.Repository + The icechunk repo, derived from the bucket, prefix, and region. S3 + credentials are provided from the environment. + virtual_chunks: list[ic.VirtualChunkContainer] | None + A list of virtual chunk containers corresponding to reference data + for virtualized stores. Allows icechunk to reference S3 locations + in virtualized datasets. + """ + + location: S3Path + repo: ic.Repository + virtual_chunks: list[ic.VirtualChunkContainer] | None + + def __init__(self, location: S3Path, virtual_chunk_mapping: list[dict[str, str]] | None = None): + self.location = location + self.virtual_chunks = self.gen_virtual_chunk_containers(virtual_chunk_mapping) + self.repo = self.open_repo() + + def open_repo(self) -> ic.Repository: + """ + Opens an icechunk repo + + Using the class instance parameters, open and assign an icechunk repo corresponding + to the setup (bucket, prefix, region, etc.) + + Returns + ------- + ic.Repository + Icechunk repo corresponding to the S3 bucket path defined in the instance + """ + storage = ic.s3_storage( + bucket=self.location.bucket, + prefix=self.location.prefix, + region=self.location.region, + from_env=True, + ) + config = ic.RepositoryConfig.default() + if self.virtual_chunks: + for vcc in self.virtual_chunks: + config.set_virtual_chunk_container(vcc) + credentials = ic.containers_credentials({self.location.bucket: ic.s3_credentials(from_env=True)}) + repo = ic.Repository.open_or_create(storage, config, credentials) + return repo + + def delete_repo(self, quiet: bool | None = False): + """ + Deletes the entire icechunk repo from S3. + + Parameters + ---------- + quiet : bool | None, optional + Suppresses AWS CLI output. By default False + """ + del_command = ["aws", "s3", "rm", str(self.location), "--recursive"] + if quiet: + del_command.append("--quiet") + subprocess.call(del_command) + print(f"Icechunk repo @ {str(self.location)} in its entirety was successfully deleted.") + + def gen_virtual_chunk_containers( + self, virtual_chunk_mapping: list[dict[str, str]] | None = None + ) -> list[ic.VirtualChunkContainer]: + """ + Create a list of virtual chunk containers + + Given a list of dictionaries mapping out virtual chunks, generate + and return a list of VirtualChunkContainers + + Parameters + ---------- + virtual_chunk_mapping : list[dict[str, str]] | None, optional + A list of dictionaries, each entry mapping out a single + virtual chunk definition. Should include a bucket and region. + By default None + + Returns + ------- + list[ic.VirtualChunkContainer] + A list of VirtualChunkContainers corresponding to the list of passed-in + dict mappings. + """ + v_chunks = None + if virtual_chunk_mapping: + v_chunks = [ + set_up_virtual_chunk_container(vc["bucket"], vc["region"]) for vc in virtual_chunk_mapping + ] + return v_chunks + + def create_session(self, read_only: bool | None = True, branch: str | None = "main") -> ic.Session: + """ + Open a session under the repo defined by an instance of IcechunkS3Repo + + Parameters + ---------- + read_only : bool | None, optional + Denotes if the session will be read-only or writable. By default True + branch : str | None, optional + Icechunk repo branch to be opened. By default "main" + + Returns + ------- + ic.Session + Icechunk repo session. Writable or read-only based on parameters. Branch + can be configured. + """ + if read_only: + return self.repo.readonly_session(branch) + return self.repo.writable_session(branch) + + def retrieve_dataset(self, read_only: bool | None = True, branch: str | None = "main") -> xr.Dataset: + """ + Returns the repo's store contents as an Xarray dataset + + Parameters + ---------- + read_only : bool | None, optional + Denotes if the session will be read-only or writable, by default True + branch : str | None, optional + Icechunk repo branch to be opened, by default "main" + + Returns + ------- + xr.Dataset + Xarray dataset representation of the Icechunk store + """ + session = self.create_session(read_only, branch) + ds = xr.open_zarr(session.store, consolidated=False, chunks={}) + return ds + + def write_dataset( + self, ds: xr.Dataset, commit: str, virtualized: bool | None = False, branch: str | None = "main" + ): + """ + Given a dataset, push a new commit alongisde the data to the icechunk store + + Parameters + ---------- + ds : xr.Dataset + Dataset to be commited to the icechunk store. + commit : str + Commit message that will accompany the dataset push. + virtualized : bool | None, optional + Designates if the dataset to be written is virtualized. Affects + how it's written to icechunk. By default False + branch : str | None, optional + Icechunk repo branch to be pushed. By default "main". + """ + session = self.create_session(read_only=False, branch=branch) + if virtualized: + ds.virtualize.to_icechunk(session.store) + else: + to_icechunk(ds, session) + snapshot = session.commit(commit) + print(f"Dataset is uploaded. Commit: {snapshot}") + + def append_virt_data_to_store( + self, vds: xr.Dataset, append_dim: str, commit: str, branch: str | None = "main" + ): + """ + Add new data to the store + + Given a virtualized dataset, push a new commit to append + data to an existing icechunk store. The data will be + appended on a specified dimension. + + Parameters + ---------- + vds : xr.Dataset + The virtualized dataset to be appended to the + existing icechunk store. + append_dim : str + What dimension the dataset will be appended on. Likely + time or year, etc. + commit : str + Commit message that will accompany the dataset addition. + branch : str | None, optional + Icechunk repo branch to be pushed. By default "main". + """ + session = self.create_session(read_only=False, branch=branch) + vds.virtualize.to_icechunk(session.store, append_dim=append_dim) + snapshot = session.commit(commit) + print(f"Dataset has been appended on the {append_dim} dimension. Commit: {snapshot}") + + +@staticmethod +def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkContainer: + """ + Create a virtual chunk container from a mapping + + Given an S3 bucket/region, generate and return a VirtualChunkContainer + so Icechunk can point to virtualized data inside S3 buckets. + + Parameters + ---------- + bucket : str + The S3 bucket the virtual chunk points to. + region : str + The region of the S3 bucket. + + Returns + ------- + ic.VirtualChunkContainer + A definition of a virtual chunk that the icechunk repo + uses to define access to virtualized data. + """ + return ic.VirtualChunkContainer( + name=bucket, url_prefix=f"s3://{bucket}/", store=ic.s3_store(region=region) + ) + + +@staticmethod +def get_icechunk_data(repo: NGWPCLocations) -> xr.Dataset: + """Return data from a designated NGWPCLocations Icechunk repo""" + ic_repo = IcechunkS3Repo(location=repo.path) + return ic_repo.retrieve_dataset() diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py new file mode 100644 index 0000000..285daa0 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py @@ -0,0 +1,176 @@ +""" +Icechunk examples + +General example/testing code for Icechunk functionality. Covers archival weather +file virtualization/concatenation & uploading/appending/retrieving data to/from repos. +""" + +import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils +import icefabric_tools.icechunk.nc_conv_utils as ncc_utils +from icefabric_tools.icechunk.icechunk_s3_module import ( + IcechunkS3Repo, + NGWPCLocations, + S3Path, +) + +ICECHUNK_STORES = [loc for loc in NGWPCLocations if "_IC" in loc.name] + + +def output_icechunk_stores(): + """Print out each icechunk store""" + for loc in ICECHUNK_STORES: + print(f"{loc.name}\n {loc.path}") + + +def snodas_virtualize_push_test( + new_ic_repo: S3Path, test_quant: int | None = None, clean_up: bool | None = False +): + """ + Push a collection of SNODAS NETCDFs + + Take the collection of SNODAS NETCDF files, virtualize and concatenate + them, and create a new IC repo to store the combined dataset. + + Specify clean-up to delete the icechunk repo after creation. + + NOTE: Take care to not overwrite an existing IC repo + """ + snodas_repo = IcechunkS3Repo( + location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-forcing", "region": "us-east-1"}] + ) + nc_virt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + location=NGWPCLocations.SNODAS_REF.path, + file_date_pattern="zz_ssmv11034tS__T0001TTNATS*05HP001.nc", + file_type=awf_utils.FileType.NETCDF, + loadable_vars=["crs"], + testing_file_quantity=test_quant, + ) + snodas_repo.write_dataset(ds=nc_virt_ds, virtualized=True, commit="first commit") + print(snodas_repo.retrieve_dataset()) + if clean_up: + snodas_repo.delete_repo(quiet=True) + + +def snodas_yearly_virt_append_test( + new_ic_repo: S3Path, years: range, test_quant: int | None = None, clean_up: bool | None = False +): + """ + Incrementally push a by-year-collection of SNODAS NETCDFs + + Take the collection of SNODAS NETCDF files and virtualize/concatenate + them on a yearly basis. The year range is supplied. The data is virtualized + and concatted individually by year, and each year is appended to the IC repo. + + Specify clean-up to delete the icechunk repo after creation. + + NOTE: Take care to not overwrite an existing IC repo + """ + snodas_repo = IcechunkS3Repo( + location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-forcing", "region": "us-east-1"}] + ) + for y in years: + nc_virt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + location=NGWPCLocations.SNODAS_REF.path, + file_date_pattern="zz_ssmv11034tS__T0001TTNATS*05HP001.nc", + manual_file_pattern=f"zz_ssmv11034tS__T0001TTNATS{y}*.nc", + file_type=awf_utils.FileType.NETCDF, + loadable_vars=["crs"], + testing_file_quantity=test_quant, + ) + if y == min(years): + snodas_repo.write_dataset(ds=nc_virt_ds, virtualized=True, commit="first commit") + else: + snodas_repo.append_virt_data_to_store( + vds=nc_virt_ds, append_dim="time", commit=f"appended new data from the year {y}" + ) + del nc_virt_ds + print(snodas_repo.retrieve_dataset()) + if clean_up: + snodas_repo.delete_repo(quiet=True) + + +def land_cover_virtualize_push_test( + new_ic_repo: S3Path, test_quant: int | None = None, clean_up: bool | None = False +): + """ + Push a collection of NLCD GEOTIFFs + + Take the collection of NLCD GEOTIFF files, virtualize and concatenate + them, and create a new IC repo to store the combined dataset. + + Specify clean-up to delete the icechunk repo after creation. + + NOTE: Take care to not overwrite an existing IC repo + """ + nlcd_repo = IcechunkS3Repo( + location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-hydrofabric", "region": "us-east-1"}] + ) + nlcd_vrt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + location=NGWPCLocations.NLCD_REF.path, + file_date_pattern="Annual_NLCD_LndCov_*_CU_C1V0.tif", + file_type=awf_utils.FileType.GEOTIFF, + just_year=True, + testing_file_quantity=test_quant, + ) + nlcd_repo.write_dataset(ds=nlcd_vrt_ds, virtualized=True, commit="first commit") + print(nlcd_repo.retrieve_dataset()) + if clean_up: + nlcd_repo.delete_repo(quiet=True) + + +def topo_push_test(tiff_fp: str, new_ic_repo: S3Path, clean_up: bool | None = False): + """ + Push a topobathy GEOTIFF + + Take a topobathy GEOTIFF file and create a new IC repo + containing that file's contents. 'repo_dir' specifies + the IC repo name under the base topobathy S3 path + + Specify clean-up to delete the icechunk repo after creation. + + NOTE: Take care to not overwrite an existing IC repo + """ + topo_repo = IcechunkS3Repo(location=new_ic_repo) + topo_ds = awf_utils.load_tiff_file(tiff_fp) + topo_repo.write_dataset(ds=topo_ds, commit="first commit") + print(topo_repo.retrieve_dataset()) + if clean_up: + topo_repo.delete_repo(quiet=True) + + +def get_nc_by_year(years: range): + """Return all SNODAS reference files for a given year range""" + files = [] + for y in years: + print(y) + files += awf_utils.get_archival_weather_files( + loc=NGWPCLocations.SNODAS_REF.path, + file_type=awf_utils.FileType.NETCDF, + manual_file_pattern=f"zz_ssmv11034tS__T0001TTNATS{y}*.nc", + ) + return files + + +def conv_nc_by_year(year: str, test_quant: int | None = None): + """Convert original NETCDF3 SNODAS files into NETCDF4.""" + ncc_utils.convert_nc_files_from_s3( + orig=NGWPCLocations.SNODAS_V3.path, + dest=NGWPCLocations.SNODAS_REF.path, + manual_file_pattern=f"zz_ssmv11034tS__T0001TTNATS{year}*.nc", + testing_file_quantity=test_quant, + ) + + +if __name__ == "__main__": + snodas_virtualize_push_test( + new_ic_repo=S3Path("hydrofabric-data", "ic_testing/snodas_test"), test_quant=5, clean_up=True + ) + snodas_yearly_virt_append_test( + new_ic_repo=S3Path("hydrofabric-data", "ic_testing/snodas_yearly_append_test"), + years=range(2012, 2016), + test_quant=3, + clean_up=True, + ) + land_cover_virtualize_push_test( + new_ic_repo=S3Path("hydrofabric-data", "ic_testing/nlcd_test"), test_quant=5, clean_up=True + ) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py b/src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py new file mode 100644 index 0000000..71476cb --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py @@ -0,0 +1,147 @@ +"""Utilities for converting NETCDF3 files into NETCDF4""" + +import os +import subprocess + +from netCDF4 import Dataset as NCDataset +from tqdm import tqdm + +import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils +from icefabric_tools.icechunk import S3Path + + +def convert_files_to_netcdf4( + files: list[str], + new_dir: str | None = "", + fn_prefix: str | None = "", + fn_suffix: str | None = "", +): + """ + Convert collection of NCDF3 files to v4 + + Given a list of NETCDF3 files, convert them all to NETCDF4 and store them + in a new directory. Pre/suffixes can be specified as well for the new file + names. Will be stored alongside the old files, or in a sibling directory if + a dir name is provided. + + Parameters + ---------- + files : list[str] + The list of NETCDF3 filepaths to be converted. + new_dir : str | None, optional + If provided, will store the newly converted files + in a different directory. It will create the directory + in the same relative path as all the files to be converted. + By default "" + fn_prefix : str | None, optional + If provided, will prepend a prefix to the new file names. By default "". + fn_suffix : str | None, optional + If provided, will append a suffix to the new file names. By default "". + """ + if not new_dir and not fn_prefix and not fn_suffix: + fn_suffix = "_new" + for f in files: + dir_path, basename = os.path.split(f) + basename, ext = os.path.splitext(basename) + if not os.path.exists(os.path.join(dir_path, new_dir)): + os.makedirs(os.path.join(dir_path, new_dir)) + dir_path = os.path.join(dir_path, new_dir) + conv_nc(f, f"{dir_path}/{fn_prefix}{basename}{fn_suffix}{ext}") + + +def convert_nc_files_from_s3( + orig: S3Path, + dest: S3Path, + manual_file_pattern: str | None = None, + testing_file_quantity: int | None = None, +): + """ + Convert NETCDF3 collection from S3 location to v4 + + Given an S3 path populated with NETCDF3 files, sequentially + DL & convert them to NETCDF4, then re-upload them to a different + S3 path. All files created on local filesystems are deleted as the + process runs. + + Parameters + ---------- + orig : S3Path + S3 path containing the files to be converted + dest : S3Path + S3 path where the newly-converetd files will be + uploaded. + manual_file_pattern : str | None, optional + If given, will supply a manual file pattern to + when gathering the filepaths for conversion. May be + useful to only include subsets of files. By default None. + testing_file_quantity : int | None, optional + Include if you want to test the conversion with a subset files. + Only opens the number specified, starting with the first. By default None. + """ + temp_down_dir = os.path.join(os.getcwd(), ".tmp") + temp_conv_dir = os.path.join(os.getcwd(), ".tmp/conv") + nc3_file_list = awf_utils.get_archival_weather_files( + loc=orig, file_type=awf_utils.FileType.NETCDF, manual_file_pattern=manual_file_pattern + ) + if testing_file_quantity: + nc3_file_list = nc3_file_list[:testing_file_quantity] + os.makedirs(temp_down_dir, exist_ok=True) + os.makedirs(temp_conv_dir, exist_ok=True) + + for i in tqdm( + range(len(nc3_file_list)), + desc="Converting netcdf files from S3", + unit="files", + ncols=125, + colour="#37B6BD", + ): + nc3_file = nc3_file_list[i].removesuffix("s3://").split("/")[-1] + down_path = os.path.join(temp_down_dir, nc3_file) + conv_path = os.path.join(temp_conv_dir, "conv.nc") + subprocess.call(["aws", "s3", "cp", nc3_file_list[i], down_path, "--quiet"]) + conv_nc(down_path, conv_path, quiet=True) + subprocess.call(["aws", "s3", "cp", conv_path, f"{str(dest)}/{nc3_file}", "--quiet"]) + subprocess.call(["rm", down_path, "-f"]) + subprocess.call(["rm", conv_path, "-f"]) + + +def conv_nc(orig_file_path: str, new_file_path: str, quiet: bool | None = False): + """ + Given a NETCDF3-formatted file, convert it to NETCDF4. + + Parameters + ---------- + orig_file_path : str + NETCDF3 filepath. + new_file_path : str + Filepath where the converted file will end up. + quiet : bool | None, optional + Provide if no print/log statements are desired. + By default False. + """ + # Open the NetCDF3 file in read mode + nc3_data = NCDataset(orig_file_path, mode="r", format="NETCDF3_CLASSIC") + + # Create a new NetCDF4 file in write mode + nc4_data = NCDataset(new_file_path, mode="w", format="NETCDF4") + + # Copy global attributes + for attr_name in nc3_data.ncattrs(): + nc4_data.setncattr(attr_name, nc3_data.getncattr(attr_name)) + + # Copy dimensions + for dim_name, dim in nc3_data.dimensions.items(): + nc4_data.createDimension(dim_name, len(dim) if not dim.isunlimited() else None) + + # Copy variables + for var_name, var in nc3_data.variables.items(): + nc4_var = nc4_data.createVariable(var_name, var.datatype, var.dimensions) + nc4_var.setncatts({attr_name: var.getncattr(attr_name) for attr_name in var.ncattrs()}) + nc4_var[:] = var[:] + + # Close both files + nc3_data.close() + nc4_data.close() + + if not quiet: + print(f"Conversion from NetCDF3 to NetCDF4 completed: {new_file_path}") diff --git a/uv.lock b/uv.lock index 9f1a05a..e2280fc 100644 --- a/uv.lock +++ b/uv.lock @@ -23,7 +23,7 @@ wheels = [ [[package]] name = "aiobotocore" -version = "2.21.1" +version = "2.22.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiohttp" }, @@ -34,9 +34,9 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d2/dc/f5f872fb01ce37c09525cedc7ecfad7002ffe2a8a23f77d7d2c234399b51/aiobotocore-2.21.1.tar.gz", hash = "sha256:010357f43004413e92a9d066bb0db1f241aeb29ffed306e9197061ffc94e6577", size = 108900 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } wheels = [ - { url = "https://files.pythonhosted.org/packages/95/67/026598918f92145156f2feb7957f57daefda20375cc2ac1a0692a9b8010b/aiobotocore-2.21.1-py3-none-any.whl", hash = "sha256:bd7c49a6d6f8a3d9444b0a94417c8da13813b5c7eec1c4f0ec2db7e8ce8f23e7", size = 78313 }, + { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, ] [[package]] @@ -300,30 +300,30 @@ css = [ [[package]] name = "boto3" -version = "1.37.1" +version = "1.37.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/21/8c/c2af03daafaacea1db1823d23073facffa75818b61d376c3be77dd297ae8/boto3-1.37.1.tar.gz", hash = "sha256:96d18f7feb0c1fcb95f8837b74b6c8880e1b4e35ce5f8a8f8cb243a090c278ed", size = 111175 } +sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } wheels = [ - { url = "https://files.pythonhosted.org/packages/63/ec/e722c53c9dc41e8df094587c32e19409bace8b43b5eb31fe3536ca57a38b/boto3-1.37.1-py3-none-any.whl", hash = "sha256:4320441f904435a1b85e6ecb81793192e522c737cc9ed6566014e29f0a11cb22", size = 139338 }, + { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, ] [[package]] name = "botocore" -version = "1.37.1" +version = "1.37.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jmespath" }, { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/e5/01/3083bff25fd91193162298920cb093b9095609408416526d52b2826965b7/botocore-1.37.1.tar.gz", hash = "sha256:b194db8fb2a0ffba53568c364ae26166e7eec0445496b2ac86a6e142f3dd982f", size = 13578835 } +sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/20/352b2bf99f93ba18986615841786cbd0d38f7856bd49d4e154a540f04afe/botocore-1.37.1-py3-none-any.whl", hash = "sha256:c1db1bfc5d8c6b3b6d1ca6794f605294b4264e82a7e727b88e0fef9c2b9fbb9c", size = 13359164 }, + { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, ] [[package]] @@ -349,7 +349,7 @@ wheels = [ [[package]] name = "cairosvg" -version = "2.7.1" +version = "2.8.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cairocffi" }, @@ -358,9 +358,9 @@ dependencies = [ { name = "pillow" }, { name = "tinycss2" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d5/e6/ec5900b724e3c44af7f6f51f719919137284e5da4aabe96508baec8a1b40/CairoSVG-2.7.1.tar.gz", hash = "sha256:432531d72347291b9a9ebfb6777026b607563fd8719c46ee742db0aef7271ba0", size = 8399085 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl", hash = "sha256:8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b", size = 43235 }, + { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773 }, ] [[package]] @@ -415,51 +415,74 @@ 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 = "cftime" +version = "1.6.4.post1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, + { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, + { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, + { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, + { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, + { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, + { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, + { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, + { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, + { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, + { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, +] + [[package]] name = "charset-normalizer" -version = "3.4.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/16/b0/572805e227f01586461c80e0fd25d65a2115599cc9dad142fee4b747c357/charset_normalizer-3.4.1.tar.gz", hash = "sha256:44251f18cd68a75b56585dd00dae26183e102cd5e0f9f1466e6df5da2ed64ea3", size = 123188 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/80/41ef5d5a7935d2d3a773e3eaebf0a9350542f2cab4eac59a7a4741fbbbbe/charset_normalizer-3.4.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:8bfa33f4f2672964266e940dd22a195989ba31669bd84629f05fab3ef4e2d125", size = 194995 }, - { url = "https://files.pythonhosted.org/packages/7a/28/0b9fefa7b8b080ec492110af6d88aa3dea91c464b17d53474b6e9ba5d2c5/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:28bf57629c75e810b6ae989f03c0828d64d6b26a5e205535585f96093e405ed1", size = 139471 }, - { url = "https://files.pythonhosted.org/packages/71/64/d24ab1a997efb06402e3fc07317e94da358e2585165930d9d59ad45fcae2/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:f08ff5e948271dc7e18a35641d2f11a4cd8dfd5634f55228b691e62b37125eb3", size = 149831 }, - { url = "https://files.pythonhosted.org/packages/37/ed/be39e5258e198655240db5e19e0b11379163ad7070962d6b0c87ed2c4d39/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:234ac59ea147c59ee4da87a0c0f098e9c8d169f4dc2a159ef720f1a61bbe27cd", size = 142335 }, - { url = "https://files.pythonhosted.org/packages/88/83/489e9504711fa05d8dde1574996408026bdbdbd938f23be67deebb5eca92/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd4ec41f914fa74ad1b8304bbc634b3de73d2a0889bd32076342a573e0779e00", size = 143862 }, - { url = "https://files.pythonhosted.org/packages/c6/c7/32da20821cf387b759ad24627a9aca289d2822de929b8a41b6241767b461/charset_normalizer-3.4.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:eea6ee1db730b3483adf394ea72f808b6e18cf3cb6454b4d86e04fa8c4327a12", size = 145673 }, - { url = "https://files.pythonhosted.org/packages/68/85/f4288e96039abdd5aeb5c546fa20a37b50da71b5cf01e75e87f16cd43304/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c96836c97b1238e9c9e3fe90844c947d5afbf4f4c92762679acfe19927d81d77", size = 140211 }, - { url = "https://files.pythonhosted.org/packages/28/a3/a42e70d03cbdabc18997baf4f0227c73591a08041c149e710045c281f97b/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:4d86f7aff21ee58f26dcf5ae81a9addbd914115cdebcbb2217e4f0ed8982e146", size = 148039 }, - { url = "https://files.pythonhosted.org/packages/85/e4/65699e8ab3014ecbe6f5c71d1a55d810fb716bbfd74f6283d5c2aa87febf/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:09b5e6733cbd160dcc09589227187e242a30a49ca5cefa5a7edd3f9d19ed53fd", size = 151939 }, - { url = "https://files.pythonhosted.org/packages/b1/82/8e9fe624cc5374193de6860aba3ea8070f584c8565ee77c168ec13274bd2/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:5777ee0881f9499ed0f71cc82cf873d9a0ca8af166dfa0af8ec4e675b7df48e6", size = 149075 }, - { url = "https://files.pythonhosted.org/packages/3d/7b/82865ba54c765560c8433f65e8acb9217cb839a9e32b42af4aa8e945870f/charset_normalizer-3.4.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:237bdbe6159cff53b4f24f397d43c6336c6b0b42affbe857970cefbb620911c8", size = 144340 }, - { url = "https://files.pythonhosted.org/packages/b5/b6/9674a4b7d4d99a0d2df9b215da766ee682718f88055751e1e5e753c82db0/charset_normalizer-3.4.1-cp311-cp311-win32.whl", hash = "sha256:8417cb1f36cc0bc7eaba8ccb0e04d55f0ee52df06df3ad55259b9a323555fc8b", size = 95205 }, - { url = "https://files.pythonhosted.org/packages/1e/ab/45b180e175de4402dcf7547e4fb617283bae54ce35c27930a6f35b6bef15/charset_normalizer-3.4.1-cp311-cp311-win_amd64.whl", hash = "sha256:d7f50a1f8c450f3925cb367d011448c39239bb3eb4117c36a6d354794de4ce76", size = 102441 }, - { url = "https://files.pythonhosted.org/packages/0a/9a/dd1e1cdceb841925b7798369a09279bd1cf183cef0f9ddf15a3a6502ee45/charset_normalizer-3.4.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:73d94b58ec7fecbc7366247d3b0b10a21681004153238750bb67bd9012414545", size = 196105 }, - { url = "https://files.pythonhosted.org/packages/d3/8c/90bfabf8c4809ecb648f39794cf2a84ff2e7d2a6cf159fe68d9a26160467/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dad3e487649f498dd991eeb901125411559b22e8d7ab25d3aeb1af367df5efd7", size = 140404 }, - { url = "https://files.pythonhosted.org/packages/ad/8f/e410d57c721945ea3b4f1a04b74f70ce8fa800d393d72899f0a40526401f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c30197aa96e8eed02200a83fba2657b4c3acd0f0aa4bdc9f6c1af8e8962e0757", size = 150423 }, - { url = "https://files.pythonhosted.org/packages/f0/b8/e6825e25deb691ff98cf5c9072ee0605dc2acfca98af70c2d1b1bc75190d/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2369eea1ee4a7610a860d88f268eb39b95cb588acd7235e02fd5a5601773d4fa", size = 143184 }, - { url = "https://files.pythonhosted.org/packages/3e/a2/513f6cbe752421f16d969e32f3583762bfd583848b763913ddab8d9bfd4f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc2722592d8998c870fa4e290c2eec2c1569b87fe58618e67d38b4665dfa680d", size = 145268 }, - { url = "https://files.pythonhosted.org/packages/74/94/8a5277664f27c3c438546f3eb53b33f5b19568eb7424736bdc440a88a31f/charset_normalizer-3.4.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffc9202a29ab3920fa812879e95a9e78b2465fd10be7fcbd042899695d75e616", size = 147601 }, - { url = "https://files.pythonhosted.org/packages/7c/5f/6d352c51ee763623a98e31194823518e09bfa48be2a7e8383cf691bbb3d0/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:804a4d582ba6e5b747c625bf1255e6b1507465494a40a2130978bda7b932c90b", size = 141098 }, - { url = "https://files.pythonhosted.org/packages/78/d4/f5704cb629ba5ab16d1d3d741396aec6dc3ca2b67757c45b0599bb010478/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:0f55e69f030f7163dffe9fd0752b32f070566451afe180f99dbeeb81f511ad8d", size = 149520 }, - { url = "https://files.pythonhosted.org/packages/c5/96/64120b1d02b81785f222b976c0fb79a35875457fa9bb40827678e54d1bc8/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c4c3e6da02df6fa1410a7680bd3f63d4f710232d3139089536310d027950696a", size = 152852 }, - { url = "https://files.pythonhosted.org/packages/84/c9/98e3732278a99f47d487fd3468bc60b882920cef29d1fa6ca460a1fdf4e6/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:5df196eb874dae23dcfb968c83d4f8fdccb333330fe1fc278ac5ceeb101003a9", size = 150488 }, - { url = "https://files.pythonhosted.org/packages/13/0e/9c8d4cb99c98c1007cc11eda969ebfe837bbbd0acdb4736d228ccaabcd22/charset_normalizer-3.4.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e358e64305fe12299a08e08978f51fc21fac060dcfcddd95453eabe5b93ed0e1", size = 146192 }, - { url = "https://files.pythonhosted.org/packages/b2/21/2b6b5b860781a0b49427309cb8670785aa543fb2178de875b87b9cc97746/charset_normalizer-3.4.1-cp312-cp312-win32.whl", hash = "sha256:9b23ca7ef998bc739bf6ffc077c2116917eabcc901f88da1b9856b210ef63f35", size = 95550 }, - { url = "https://files.pythonhosted.org/packages/21/5b/1b390b03b1d16c7e382b561c5329f83cc06623916aab983e8ab9239c7d5c/charset_normalizer-3.4.1-cp312-cp312-win_amd64.whl", hash = "sha256:6ff8a4a60c227ad87030d76e99cd1698345d4491638dfa6673027c48b3cd395f", size = 102785 }, - { url = "https://files.pythonhosted.org/packages/0e/f6/65ecc6878a89bb1c23a086ea335ad4bf21a588990c3f535a227b9eea9108/charset_normalizer-3.4.1-py3-none-any.whl", hash = "sha256:d98b1668f06378c6dbefec3b92299716b931cd4e6061f3c875a71ced1780ab85", size = 49767 }, +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] name = "click" -version = "8.1.8" +version = "8.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] @@ -486,6 +509,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, ] +[[package]] +name = "cloudpickle" +version = "3.1.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, +] + [[package]] name = "colorama" version = "0.4.6" @@ -573,41 +605,43 @@ wheels = [ [[package]] name = "cryptography" -version = "44.0.2" +version = "45.0.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/cd/25/4ce80c78963834b8a9fd1cc1266be5ed8d1840785c0f2e1b73b8d128d505/cryptography-44.0.2.tar.gz", hash = "sha256:c63454aa261a0cf0c5b4718349629793e9e634993538db841165b3df74f37ec0", size = 710807 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/92/ef/83e632cfa801b221570c5f58c0369db6fa6cef7d9ff859feab1aae1a8a0f/cryptography-44.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:efcfe97d1b3c79e486554efddeb8f6f53a4cdd4cf6086642784fa31fc384e1d7", size = 6676361 }, - { url = "https://files.pythonhosted.org/packages/30/ec/7ea7c1e4c8fc8329506b46c6c4a52e2f20318425d48e0fe597977c71dbce/cryptography-44.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:29ecec49f3ba3f3849362854b7253a9f59799e3763b0c9d0826259a88efa02f1", size = 3952350 }, - { url = "https://files.pythonhosted.org/packages/27/61/72e3afdb3c5ac510330feba4fc1faa0fe62e070592d6ad00c40bb69165e5/cryptography-44.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc821e161ae88bfe8088d11bb39caf2916562e0a2dc7b6d56714a48b784ef0bb", size = 4166572 }, - { url = "https://files.pythonhosted.org/packages/26/e4/ba680f0b35ed4a07d87f9e98f3ebccb05091f3bf6b5a478b943253b3bbd5/cryptography-44.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:3c00b6b757b32ce0f62c574b78b939afab9eecaf597c4d624caca4f9e71e7843", size = 3958124 }, - { url = "https://files.pythonhosted.org/packages/9c/e8/44ae3e68c8b6d1cbc59040288056df2ad7f7f03bbcaca6b503c737ab8e73/cryptography-44.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7bdcd82189759aba3816d1f729ce42ffded1ac304c151d0a8e89b9996ab863d5", size = 3678122 }, - { url = "https://files.pythonhosted.org/packages/27/7b/664ea5e0d1eab511a10e480baf1c5d3e681c7d91718f60e149cec09edf01/cryptography-44.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:4973da6ca3db4405c54cd0b26d328be54c7747e89e284fcff166132eb7bccc9c", size = 4191831 }, - { url = "https://files.pythonhosted.org/packages/2a/07/79554a9c40eb11345e1861f46f845fa71c9e25bf66d132e123d9feb8e7f9/cryptography-44.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:4e389622b6927d8133f314949a9812972711a111d577a5d1f4bee5e58736b80a", size = 3960583 }, - { url = "https://files.pythonhosted.org/packages/bb/6d/858e356a49a4f0b591bd6789d821427de18432212e137290b6d8a817e9bf/cryptography-44.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:f514ef4cd14bb6fb484b4a60203e912cfcb64f2ab139e88c2274511514bf7308", size = 4191753 }, - { url = "https://files.pythonhosted.org/packages/b2/80/62df41ba4916067fa6b125aa8c14d7e9181773f0d5d0bd4dcef580d8b7c6/cryptography-44.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:1bc312dfb7a6e5d66082c87c34c8a62176e684b6fe3d90fcfe1568de675e6688", size = 4079550 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/2558cc08f7b1bb40683f99ff4327f8dcfc7de3affc669e9065e14824511b/cryptography-44.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:3b721b8b4d948b218c88cb8c45a01793483821e709afe5f622861fc6182b20a7", size = 4298367 }, - { url = "https://files.pythonhosted.org/packages/71/59/94ccc74788945bc3bd4cf355d19867e8057ff5fdbcac781b1ff95b700fb1/cryptography-44.0.2-cp37-abi3-win32.whl", hash = "sha256:51e4de3af4ec3899d6d178a8c005226491c27c4ba84101bfb59c901e10ca9f79", size = 2772843 }, - { url = "https://files.pythonhosted.org/packages/ca/2c/0d0bbaf61ba05acb32f0841853cfa33ebb7a9ab3d9ed8bb004bd39f2da6a/cryptography-44.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:c505d61b6176aaf982c5717ce04e87da5abc9a36a5b39ac03905c4aafe8de7aa", size = 3209057 }, - { url = "https://files.pythonhosted.org/packages/9e/be/7a26142e6d0f7683d8a382dd963745e65db895a79a280a30525ec92be890/cryptography-44.0.2-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:8e0ddd63e6bf1161800592c71ac794d3fb8001f2caebe0966e77c5234fa9efc3", size = 6677789 }, - { url = "https://files.pythonhosted.org/packages/06/88/638865be7198a84a7713950b1db7343391c6066a20e614f8fa286eb178ed/cryptography-44.0.2-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:81276f0ea79a208d961c433a947029e1a15948966658cf6710bbabb60fcc2639", size = 3951919 }, - { url = "https://files.pythonhosted.org/packages/d7/fc/99fe639bcdf58561dfad1faa8a7369d1dc13f20acd78371bb97a01613585/cryptography-44.0.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9a1e657c0f4ea2a23304ee3f964db058c9e9e635cc7019c4aa21c330755ef6fd", size = 4167812 }, - { url = "https://files.pythonhosted.org/packages/53/7b/aafe60210ec93d5d7f552592a28192e51d3c6b6be449e7fd0a91399b5d07/cryptography-44.0.2-cp39-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:6210c05941994290f3f7f175a4a57dbbb2afd9273657614c506d5976db061181", size = 3958571 }, - { url = "https://files.pythonhosted.org/packages/16/32/051f7ce79ad5a6ef5e26a92b37f172ee2d6e1cce09931646eef8de1e9827/cryptography-44.0.2-cp39-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:d1c3572526997b36f245a96a2b1713bf79ce99b271bbcf084beb6b9b075f29ea", size = 3679832 }, - { url = "https://files.pythonhosted.org/packages/78/2b/999b2a1e1ba2206f2d3bca267d68f350beb2b048a41ea827e08ce7260098/cryptography-44.0.2-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:b042d2a275c8cee83a4b7ae30c45a15e6a4baa65a179a0ec2d78ebb90e4f6699", size = 4193719 }, - { url = "https://files.pythonhosted.org/packages/72/97/430e56e39a1356e8e8f10f723211a0e256e11895ef1a135f30d7d40f2540/cryptography-44.0.2-cp39-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:d03806036b4f89e3b13b6218fefea8d5312e450935b1a2d55f0524e2ed7c59d9", size = 3960852 }, - { url = "https://files.pythonhosted.org/packages/89/33/c1cf182c152e1d262cac56850939530c05ca6c8d149aa0dcee490b417e99/cryptography-44.0.2-cp39-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:c7362add18b416b69d58c910caa217f980c5ef39b23a38a0880dfd87bdf8cd23", size = 4193906 }, - { url = "https://files.pythonhosted.org/packages/e1/99/87cf26d4f125380dc674233971069bc28d19b07f7755b29861570e513650/cryptography-44.0.2-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:8cadc6e3b5a1f144a039ea08a0bdb03a2a92e19c46be3285123d32029f40a922", size = 4081572 }, - { url = "https://files.pythonhosted.org/packages/b3/9f/6a3e0391957cc0c5f84aef9fbdd763035f2b52e998a53f99345e3ac69312/cryptography-44.0.2-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:6f101b1f780f7fc613d040ca4bdf835c6ef3b00e9bd7125a4255ec574c7916e4", size = 4298631 }, - { url = "https://files.pythonhosted.org/packages/e2/a5/5bc097adb4b6d22a24dea53c51f37e480aaec3465285c253098642696423/cryptography-44.0.2-cp39-abi3-win32.whl", hash = "sha256:3dc62975e31617badc19a906481deacdeb80b4bb454394b4098e3f2525a488c5", size = 2773792 }, - { url = "https://files.pythonhosted.org/packages/33/cf/1f7649b8b9a3543e042d3f348e398a061923ac05b507f3f4d95f11938aa9/cryptography-44.0.2-cp39-abi3-win_amd64.whl", hash = "sha256:5f6f90b72d8ccadb9c6e311c775c8305381db88374c65fa1a68250aa8a9cb3a6", size = 3210957 }, - { url = "https://files.pythonhosted.org/packages/d6/d7/f30e75a6aa7d0f65031886fa4a1485c2fbfe25a1896953920f6a9cfe2d3b/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:909c97ab43a9c0c0b0ada7a1281430e4e5ec0458e6d9244c0e821bbf152f061d", size = 3887513 }, - { url = "https://files.pythonhosted.org/packages/9c/b4/7a494ce1032323ca9db9a3661894c66e0d7142ad2079a4249303402d8c71/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:96e7a5e9d6e71f9f4fca8eebfd603f8e86c5225bb18eb621b2c1e50b290a9471", size = 4107432 }, - { url = "https://files.pythonhosted.org/packages/45/f8/6b3ec0bc56123b344a8d2b3264a325646d2dcdbdd9848b5e6f3d37db90b3/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d1b3031093a366ac767b3feb8bcddb596671b3aaff82d4050f984da0c248b615", size = 3891421 }, - { url = "https://files.pythonhosted.org/packages/57/ff/f3b4b2d007c2a646b0f69440ab06224f9cf37a977a72cdb7b50632174e8a/cryptography-44.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:04abd71114848aa25edb28e225ab5f268096f44cf0127f3d36975bdf1bdf3390", size = 4107081 }, +sdist = { url = "https://files.pythonhosted.org/packages/f6/47/92a8914716f2405f33f1814b97353e3cfa223cd94a77104075d42de3099e/cryptography-45.0.2.tar.gz", hash = "sha256:d784d57b958ffd07e9e226d17272f9af0c41572557604ca7554214def32c26bf", size = 743865 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3d/2f/46b9e715157643ad16f039ec3c3c47d174da6f825bf5034b1c5f692ab9e2/cryptography-45.0.2-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:61a8b1bbddd9332917485b2453d1de49f142e6334ce1d97b7916d5a85d179c84", size = 7043448 }, + { url = "https://files.pythonhosted.org/packages/90/52/49e6c86278e1b5ec226e96b62322538ccc466306517bf9aad8854116a088/cryptography-45.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cc31c66411e14dd70e2f384a9204a859dc25b05e1f303df0f5326691061b839", size = 4201098 }, + { url = "https://files.pythonhosted.org/packages/7b/3a/201272539ac5b66b4cb1af89021e423fc0bfacb73498950280c51695fb78/cryptography-45.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:463096533acd5097f8751115bc600b0b64620c4aafcac10c6d0041e6e68f88fe", size = 4429839 }, + { url = "https://files.pythonhosted.org/packages/99/89/fa1a84832b8f8f3917875cb15324bba98def5a70175a889df7d21a45dc75/cryptography-45.0.2-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:cdafb86eb673c3211accffbffdb3cdffa3aaafacd14819e0898d23696d18e4d3", size = 4205154 }, + { url = "https://files.pythonhosted.org/packages/1c/c5/5225d5230d538ab461725711cf5220560a813d1eb68bafcfb00131b8f631/cryptography-45.0.2-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:05c2385b1f5c89a17df19900cfb1345115a77168f5ed44bdf6fd3de1ce5cc65b", size = 3897145 }, + { url = "https://files.pythonhosted.org/packages/fe/24/f19aae32526cc55ae17d473bc4588b1234af2979483d99cbfc57e55ffea6/cryptography-45.0.2-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e9e4bdcd70216b08801e267c0b563316b787f957a46e215249921f99288456f9", size = 4462192 }, + { url = "https://files.pythonhosted.org/packages/19/18/4a69ac95b0b3f03355970baa6c3f9502bbfc54e7df81fdb179654a00f48e/cryptography-45.0.2-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b2de529027579e43b6dc1f805f467b102fb7d13c1e54c334f1403ee2b37d0059", size = 4208093 }, + { url = "https://files.pythonhosted.org/packages/7c/54/2dea55ccc9558b8fa14f67156250b6ee231e31765601524e4757d0b5db6b/cryptography-45.0.2-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10d68763892a7b19c22508ab57799c4423c7c8cd61d7eee4c5a6a55a46511949", size = 4461819 }, + { url = "https://files.pythonhosted.org/packages/37/f1/1b220fcd5ef4b1f0ff3e59e733b61597505e47f945606cc877adab2c1a17/cryptography-45.0.2-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2a90ce2f0f5b695e4785ac07c19a58244092f3c85d57db6d8eb1a2b26d2aad6", size = 4329202 }, + { url = "https://files.pythonhosted.org/packages/6d/e0/51d1dc4f96f819a56db70f0b4039b4185055bbb8616135884c3c3acc4c6d/cryptography-45.0.2-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:59c0c8f043dd376bbd9d4f636223836aed50431af4c5a467ed9bf61520294627", size = 4570412 }, + { url = "https://files.pythonhosted.org/packages/dc/44/88efb40a3600d15277a77cdc69eeeab45a98532078d2a36cffd9325d3b3f/cryptography-45.0.2-cp311-abi3-win32.whl", hash = "sha256:80303ee6a02ef38c4253160446cbeb5c400c07e01d4ddbd4ff722a89b736d95a", size = 2933584 }, + { url = "https://files.pythonhosted.org/packages/d9/a1/bc9f82ba08760442cc8346d1b4e7b769b86d197193c45b42b3595d231e84/cryptography-45.0.2-cp311-abi3-win_amd64.whl", hash = "sha256:7429936146063bd1b2cfc54f0e04016b90ee9b1c908a7bed0800049cbace70eb", size = 3408537 }, + { url = "https://files.pythonhosted.org/packages/59/bc/1b6acb1dca366f9c0b3880888ecd7fcfb68023930d57df854847c6da1d10/cryptography-45.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:e86c8d54cd19a13e9081898b3c24351683fd39d726ecf8e774aaa9d8d96f5f3a", size = 7025581 }, + { url = "https://files.pythonhosted.org/packages/31/a3/a3e4a298d3db4a04085728f5ae6c8cda157e49c5bb784886d463b9fbff70/cryptography-45.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e328357b6bbf79928363dbf13f4635b7aac0306afb7e5ad24d21d0c5761c3253", size = 4189148 }, + { url = "https://files.pythonhosted.org/packages/53/90/100dfadd4663b389cb56972541ec1103490a19ebad0132af284114ba0868/cryptography-45.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49af56491473231159c98c2c26f1a8f3799a60e5cf0e872d00745b858ddac9d2", size = 4424113 }, + { url = "https://files.pythonhosted.org/packages/0d/40/e2b9177dbed6f3fcbbf1942e1acea2fd15b17007204b79d675540dd053af/cryptography-45.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f169469d04a23282de9d0be349499cb6683b6ff1b68901210faacac9b0c24b7d", size = 4189696 }, + { url = "https://files.pythonhosted.org/packages/70/ae/ec29c79f481e1767c2ff916424ba36f3cf7774de93bbd60428a3c52d1357/cryptography-45.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9cfd1399064b13043082c660ddd97a0358e41c8b0dc7b77c1243e013d305c344", size = 3881498 }, + { url = "https://files.pythonhosted.org/packages/5f/4a/72937090e5637a232b2f73801c9361cd08404a2d4e620ca4ec58c7ea4b70/cryptography-45.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f8084b7ca3ce1b8d38bdfe33c48116edf9a08b4d056ef4a96dceaa36d8d965", size = 4451678 }, + { url = "https://files.pythonhosted.org/packages/d3/fa/1377fced81fd67a4a27514248261bb0d45c3c1e02169411fe231583088c8/cryptography-45.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2cb03a944a1a412724d15a7c051d50e63a868031f26b6a312f2016965b661942", size = 4192296 }, + { url = "https://files.pythonhosted.org/packages/d1/cf/b6fe837c83a08b9df81e63299d75fc5b3c6d82cf24b3e1e0e331050e9e5c/cryptography-45.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a9727a21957d3327cf6b7eb5ffc9e4b663909a25fea158e3fcbc49d4cdd7881b", size = 4451749 }, + { url = "https://files.pythonhosted.org/packages/af/d8/5a655675cc635c7190bfc8cffb84bcdc44fc62ce945ad1d844adaa884252/cryptography-45.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ddb8d01aa900b741d6b7cc585a97aff787175f160ab975e21f880e89d810781a", size = 4317601 }, + { url = "https://files.pythonhosted.org/packages/b9/d4/75d2375a20d80aa262a8adee77bf56950e9292929e394b9fae2481803f11/cryptography-45.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c0c000c1a09f069632d8a9eb3b610ac029fcc682f1d69b758e625d6ee713f4ed", size = 4560535 }, + { url = "https://files.pythonhosted.org/packages/aa/18/c3a94474987ebcfb88692036b2ec44880d243fefa73794bdcbf748679a6e/cryptography-45.0.2-cp37-abi3-win32.whl", hash = "sha256:08281de408e7eb71ba3cd5098709a356bfdf65eebd7ee7633c3610f0aa80d79b", size = 2922045 }, + { url = "https://files.pythonhosted.org/packages/63/63/fb28b30c144182fd44ce93d13ab859791adbf923e43bdfb610024bfecda1/cryptography-45.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:48caa55c528617fa6db1a9c3bf2e37ccb31b73e098ac2b71408d1f2db551dde4", size = 3393321 }, + { url = "https://files.pythonhosted.org/packages/d7/74/2a0fb642c4c34d8c46c12b6eac89b10769b378c7b6a901ff94a8d4ba1b52/cryptography-45.0.2-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1655d3a76e3dedb683c982a6c3a2cbfae2d08f47a48ec5a3d58db52b3d29ea6f", size = 3587805 }, + { url = "https://files.pythonhosted.org/packages/8a/18/57bc98fa5d93e74c2c2b16a3c5383f7ec218f957aa44559c0008a46c3629/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc7693573f16535428183de8fd27f0ca1ca37a51baa0b41dc5ed7b3d68fe80e2", size = 4143347 }, + { url = "https://files.pythonhosted.org/packages/84/6f/d015e7e7bd7f3a6c538973005de5a780d93b68138c2d88c804422cf46b1c/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:614bca7c6ed0d8ad1dce683a6289afae1f880675b4090878a0136c3da16bc693", size = 4387414 }, + { url = "https://files.pythonhosted.org/packages/de/9e/fa5ec89cce7e4b86e430438da4d66b79113bdf321d0a00167d34b61daf19/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:4142e20c29224cec63e9e32eb1e6014fb285fe39b7be66b3564ca978a3a8afe9", size = 4145849 }, + { url = "https://files.pythonhosted.org/packages/7c/09/5887d4fcc6f9c6fb19920789d094c4e25c2f604cc1b10b7e69d6f56187fe/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9a900036b42f7324df7c7ad9569eb92ba0b613cf699160dd9c2154b24fd02f8e", size = 4387449 }, + { url = "https://files.pythonhosted.org/packages/a5/4a/e27ab71dc3e517becc3f2ae358454bb4b78c0cb5af52f8e11b8943525ea6/cryptography-45.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:057723b79752a142efbc609e90b0dff27b0361ccbee3bd48312d70f5cdf53b78", size = 3335090 }, ] [[package]] @@ -632,6 +666,25 @@ 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 = "2025.5.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/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, +] + [[package]] name = "debugpy" version = "1.8.14" @@ -764,27 +817,27 @@ wheels = [ [[package]] name = "fonttools" -version = "4.57.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/03/2d/a9a0b6e3a0cf6bd502e64fc16d894269011930cabfc89aee20d1635b1441/fonttools-4.57.0.tar.gz", hash = "sha256:727ece10e065be2f9dd239d15dd5d60a66e17eac11aea47d447f9f03fdbc42de", size = 3492448 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/1f/e67c99aa3c6d3d2f93d956627e62a57ae0d35dc42f26611ea2a91053f6d6/fonttools-4.57.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:3871349303bdec958360eedb619169a779956503ffb4543bb3e6211e09b647c4", size = 2757392 }, - { url = "https://files.pythonhosted.org/packages/aa/f1/f75770d0ddc67db504850898d96d75adde238c35313409bfcd8db4e4a5fe/fonttools-4.57.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c59375e85126b15a90fcba3443eaac58f3073ba091f02410eaa286da9ad80ed8", size = 2285609 }, - { url = "https://files.pythonhosted.org/packages/f5/d3/bc34e4953cb204bae0c50b527307dce559b810e624a733351a654cfc318e/fonttools-4.57.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:967b65232e104f4b0f6370a62eb33089e00024f2ce143aecbf9755649421c683", size = 4873292 }, - { url = "https://files.pythonhosted.org/packages/41/b8/d5933559303a4ab18c799105f4c91ee0318cc95db4a2a09e300116625e7a/fonttools-4.57.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39acf68abdfc74e19de7485f8f7396fa4d2418efea239b7061d6ed6a2510c746", size = 4902503 }, - { url = "https://files.pythonhosted.org/packages/32/13/acb36bfaa316f481153ce78de1fa3926a8bad42162caa3b049e1afe2408b/fonttools-4.57.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9d077f909f2343daf4495ba22bb0e23b62886e8ec7c109ee8234bdbd678cf344", size = 5077351 }, - { url = "https://files.pythonhosted.org/packages/b5/23/6d383a2ca83b7516d73975d8cca9d81a01acdcaa5e4db8579e4f3de78518/fonttools-4.57.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:46370ac47a1e91895d40e9ad48effbe8e9d9db1a4b80888095bc00e7beaa042f", size = 5275067 }, - { url = "https://files.pythonhosted.org/packages/bc/ca/31b8919c6da0198d5d522f1d26c980201378c087bdd733a359a1e7485769/fonttools-4.57.0-cp311-cp311-win32.whl", hash = "sha256:ca2aed95855506b7ae94e8f1f6217b7673c929e4f4f1217bcaa236253055cb36", size = 2158263 }, - { url = "https://files.pythonhosted.org/packages/13/4c/de2612ea2216eb45cfc8eb91a8501615dd87716feaf5f8fb65cbca576289/fonttools-4.57.0-cp311-cp311-win_amd64.whl", hash = "sha256:17168a4670bbe3775f3f3f72d23ee786bd965395381dfbb70111e25e81505b9d", size = 2204968 }, - { url = "https://files.pythonhosted.org/packages/cb/98/d4bc42d43392982eecaaca117d79845734d675219680cd43070bb001bc1f/fonttools-4.57.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:889e45e976c74abc7256d3064aa7c1295aa283c6bb19810b9f8b604dfe5c7f31", size = 2751824 }, - { url = "https://files.pythonhosted.org/packages/1a/62/7168030eeca3742fecf45f31e63b5ef48969fa230a672216b805f1d61548/fonttools-4.57.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0425c2e052a5f1516c94e5855dbda706ae5a768631e9fcc34e57d074d1b65b92", size = 2283072 }, - { url = "https://files.pythonhosted.org/packages/5d/82/121a26d9646f0986ddb35fbbaf58ef791c25b59ecb63ffea2aab0099044f/fonttools-4.57.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:44c26a311be2ac130f40a96769264809d3b0cb297518669db437d1cc82974888", size = 4788020 }, - { url = "https://files.pythonhosted.org/packages/5b/26/e0f2fb662e022d565bbe280a3cfe6dafdaabf58889ff86fdef2d31ff1dde/fonttools-4.57.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:84c41ba992df5b8d680b89fd84c6a1f2aca2b9f1ae8a67400c8930cd4ea115f6", size = 4859096 }, - { url = "https://files.pythonhosted.org/packages/9e/44/9075e323347b1891cdece4b3f10a3b84a8f4c42a7684077429d9ce842056/fonttools-4.57.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ea1e9e43ca56b0c12440a7c689b1350066595bebcaa83baad05b8b2675129d98", size = 4964356 }, - { url = "https://files.pythonhosted.org/packages/48/28/caa8df32743462fb966be6de6a79d7f30393859636d7732e82efa09fbbb4/fonttools-4.57.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:84fd56c78d431606332a0627c16e2a63d243d0d8b05521257d77c6529abe14d8", size = 5226546 }, - { url = "https://files.pythonhosted.org/packages/f6/46/95ab0f0d2e33c5b1a4fc1c0efe5e286ba9359602c0a9907adb1faca44175/fonttools-4.57.0-cp312-cp312-win32.whl", hash = "sha256:f4376819c1c778d59e0a31db5dc6ede854e9edf28bbfa5b756604727f7f800ac", size = 2146776 }, - { url = "https://files.pythonhosted.org/packages/06/5d/1be5424bb305880e1113631f49a55ea7c7da3a5fe02608ca7c16a03a21da/fonttools-4.57.0-cp312-cp312-win_amd64.whl", hash = "sha256:57e30241524879ea10cdf79c737037221f77cc126a8cdc8ff2c94d4a522504b9", size = 2193956 }, - { url = "https://files.pythonhosted.org/packages/90/27/45f8957c3132917f91aaa56b700bcfc2396be1253f685bd5c68529b6f610/fonttools-4.57.0-py3-none-any.whl", hash = "sha256:3122c604a675513c68bd24c6a8f9091f1c2376d18e8f5fe5a101746c81b3e98f", size = 1093605 }, +version = "4.58.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, + { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, + { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, + { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, + { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, + { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, + { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, + { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, + { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, + { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, + { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, + { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, + { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, + { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, + { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, ] [[package]] @@ -903,28 +956,28 @@ wheels = [ [[package]] name = "greenlet" -version = "3.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/26/80/a6ee52c59f75a387ec1f0c0075cf7981fb4644e4162afd3401dabeaa83ca/greenlet-3.2.1-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:aa30066fd6862e1153eaae9b51b449a6356dcdb505169647f69e6ce315b9468b", size = 268609 }, - { url = "https://files.pythonhosted.org/packages/ad/11/bd7a900629a4dd0e691dda88f8c2a7bfa44d0c4cffdb47eb5302f87a30d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0f3a0a67786facf3b907a25db80efe74310f9d63cc30869e49c79ee3fcef7e", size = 628776 }, - { url = "https://files.pythonhosted.org/packages/46/f1/686754913fcc2707addadf815c884fd49c9f00a88e6dac277a1e1a8b8086/greenlet-3.2.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:64a4d0052de53ab3ad83ba86de5ada6aeea8f099b4e6c9ccce70fb29bc02c6a2", size = 640827 }, - { url = "https://files.pythonhosted.org/packages/03/74/bef04fa04125f6bcae2c1117e52f99c5706ac6ee90b7300b49b3bc18fc7d/greenlet-3.2.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852ef432919830022f71a040ff7ba3f25ceb9fe8f3ab784befd747856ee58530", size = 636752 }, - { url = "https://files.pythonhosted.org/packages/aa/08/e8d493ab65ae1e9823638b8d0bf5d6b44f062221d424c5925f03960ba3d0/greenlet-3.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4818116e75a0dd52cdcf40ca4b419e8ce5cb6669630cb4f13a6c384307c9543f", size = 635993 }, - { url = "https://files.pythonhosted.org/packages/1f/9d/3a3a979f2b019fb756c9a92cd5e69055aded2862ebd0437de109cf7472a2/greenlet-3.2.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9afa05fe6557bce1642d8131f87ae9462e2a8e8c46f7ed7929360616088a3975", size = 583927 }, - { url = "https://files.pythonhosted.org/packages/59/21/a00d27d9abb914c1213926be56b2a2bf47999cf0baf67d9ef5b105b8eb5b/greenlet-3.2.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:5c12f0d17a88664757e81a6e3fc7c2452568cf460a2f8fb44f90536b2614000b", size = 1112891 }, - { url = "https://files.pythonhosted.org/packages/20/c7/922082bf41f0948a78d703d75261d5297f3db894758317409e4677dc1446/greenlet-3.2.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:dbb4e1aa2000852937dd8f4357fb73e3911da426df8ca9b8df5db231922da474", size = 1138318 }, - { url = "https://files.pythonhosted.org/packages/34/d7/e05aa525d824ec32735ba7e66917e944a64866c1a95365b5bd03f3eb2c08/greenlet-3.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:cb5ee928ce5fedf9a4b0ccdc547f7887136c4af6109d8f2fe8e00f90c0db47f5", size = 295407 }, - { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381 }, - { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195 }, - { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381 }, - { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110 }, - { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070 }, - { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816 }, - { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, - { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, - { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, +version = "3.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635 }, + { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786 }, + { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866 }, + { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752 }, + { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028 }, + { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869 }, + { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886 }, + { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355 }, + { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437 }, + { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413 }, + { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242 }, + { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067 }, + { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153 }, + { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865 }, + { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575 }, + { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460 }, + { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239 }, ] [[package]] @@ -1125,6 +1178,7 @@ name = "icefabric-tools" version = "2025.5" source = { editable = "src/icefabric_tools" } dependencies = [ + { name = "dask" }, { name = "fiona" }, { name = "fsspec" }, { name = "geopandas" }, @@ -1133,6 +1187,7 @@ dependencies = [ { name = "icechunk" }, { name = "kerchunk" }, { name = "matplotlib" }, + { name = "netcdf4" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, @@ -1149,6 +1204,7 @@ dependencies = [ [package.metadata] requires-dist = [ + { name = "dask", specifier = "==2025.5.1" }, { name = "fiona", specifier = "==1.10.1" }, { name = "fsspec", specifier = "==2025.5.0" }, { name = "geopandas", specifier = "==1.0.1" }, @@ -1157,6 +1213,7 @@ requires-dist = [ { name = "icechunk", specifier = "==0.2.14" }, { name = "kerchunk", specifier = "==0.2.8" }, { name = "matplotlib", specifier = "==3.10.3" }, + { name = "netcdf4", specifier = "==1.7.2" }, { name = "numpy", specifier = "==2.2.6" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, @@ -1173,11 +1230,11 @@ requires-dist = [ [[package]] name = "identify" -version = "2.6.10" +version = "2.6.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0c/83/b6ea0334e2e7327084a46aaaf71f2146fc061a192d6518c0d020120cd0aa/identify-2.6.10.tar.gz", hash = "sha256:45e92fd704f3da71cc3880036633f48b4b7265fd4de2b57627cb157216eb7eb8", size = 99201 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2b/d3/85feeba1d097b81a44bcffa6a0beab7b4dfffe78e82fc54978d3ac380736/identify-2.6.10-py2.py3-none-any.whl", hash = "sha256:5f34248f54136beed1a7ba6a6b5c4b6cf21ff495aac7c359e1ef831ae3b8ab25", size = 99101 }, + { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, ] [[package]] @@ -1189,6 +1246,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] +[[package]] +name = "importlib-metadata" +version = "8.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, +] + [[package]] name = "iniconfig" version = "2.1.0" @@ -1421,7 +1490,7 @@ wheels = [ [[package]] name = "jupyter-server" -version = "2.15.0" +version = "2.16.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -1444,9 +1513,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/61/8c/df09d4ab646141f130f9977b32b206ba8615d1969b2eba6a2e84b7f89137/jupyter_server-2.15.0.tar.gz", hash = "sha256:9d446b8697b4f7337a1b7cdcac40778babdd93ba614b6d68ab1c0c918f1c4084", size = 725227 } +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/a2/89eeaf0bb954a123a909859fa507fa86f96eb61b62dc30667b60dbd5fdaf/jupyter_server-2.15.0-py3-none-any.whl", hash = "sha256:872d989becf83517012ee669f09604aa4a28097c0bd90b2f424310156c2cdae3", size = 385826 }, + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, ] [[package]] @@ -1567,6 +1636,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, ] +[[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 = "markdown" version = "3.8" @@ -1766,7 +1844,7 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.6.12" +version = "9.6.14" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, @@ -1781,9 +1859,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654 }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, ] [[package]] @@ -1837,45 +1915,45 @@ wheels = [ [[package]] name = "multidict" -version = "6.4.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/2c/e367dfb4c6538614a0c9453e510d75d66099edf1c4e69da1b5ce691a1931/multidict-6.4.3.tar.gz", hash = "sha256:3ada0b058c9f213c5f95ba301f922d402ac234f1111a7d8fd70f1b99f3c281ec", size = 89372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/16/e0/53cf7f27eda48fffa53cfd4502329ed29e00efb9e4ce41362cbf8aa54310/multidict-6.4.3-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f6f19170197cc29baccd33ccc5b5d6a331058796485857cf34f7635aa25fb0cd", size = 65259 }, - { url = "https://files.pythonhosted.org/packages/44/79/1dcd93ce7070cf01c2ee29f781c42b33c64fce20033808f1cc9ec8413d6e/multidict-6.4.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f2882bf27037eb687e49591690e5d491e677272964f9ec7bc2abbe09108bdfb8", size = 38451 }, - { url = "https://files.pythonhosted.org/packages/f4/35/2292cf29ab5f0d0b3613fad1b75692148959d3834d806be1885ceb49a8ff/multidict-6.4.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:fbf226ac85f7d6b6b9ba77db4ec0704fde88463dc17717aec78ec3c8546c70ad", size = 37706 }, - { url = "https://files.pythonhosted.org/packages/f6/d1/6b157110b2b187b5a608b37714acb15ee89ec773e3800315b0107ea648cd/multidict-6.4.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2e329114f82ad4b9dd291bef614ea8971ec119ecd0f54795109976de75c9a852", size = 226669 }, - { url = "https://files.pythonhosted.org/packages/40/7f/61a476450651f177c5570e04bd55947f693077ba7804fe9717ee9ae8de04/multidict-6.4.3-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:1f4e0334d7a555c63f5c8952c57ab6f1c7b4f8c7f3442df689fc9f03df315c08", size = 223182 }, - { url = "https://files.pythonhosted.org/packages/51/7b/eaf7502ac4824cdd8edcf5723e2e99f390c879866aec7b0c420267b53749/multidict-6.4.3-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:740915eb776617b57142ce0bb13b7596933496e2f798d3d15a20614adf30d229", size = 235025 }, - { url = "https://files.pythonhosted.org/packages/3b/f6/facdbbd73c96b67a93652774edd5778ab1167854fa08ea35ad004b1b70ad/multidict-6.4.3-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:255dac25134d2b141c944b59a0d2f7211ca12a6d4779f7586a98b4b03ea80508", size = 231481 }, - { url = "https://files.pythonhosted.org/packages/70/57/c008e861b3052405eebf921fd56a748322d8c44dcfcab164fffbccbdcdc4/multidict-6.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d4e8535bd4d741039b5aad4285ecd9b902ef9e224711f0b6afda6e38d7ac02c7", size = 223492 }, - { url = "https://files.pythonhosted.org/packages/30/4d/7d8440d3a12a6ae5d6b202d6e7f2ac6ab026e04e99aaf1b73f18e6bc34bc/multidict-6.4.3-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:30c433a33be000dd968f5750722eaa0991037be0be4a9d453eba121774985bc8", size = 217279 }, - { url = "https://files.pythonhosted.org/packages/7f/e7/bca0df4dd057597b94138d2d8af04eb3c27396a425b1b0a52e082f9be621/multidict-6.4.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:4eb33b0bdc50acd538f45041f5f19945a1f32b909b76d7b117c0c25d8063df56", size = 228733 }, - { url = "https://files.pythonhosted.org/packages/88/f5/383827c3f1c38d7c92dbad00a8a041760228573b1c542fbf245c37bbca8a/multidict-6.4.3-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:75482f43465edefd8a5d72724887ccdcd0c83778ded8f0cb1e0594bf71736cc0", size = 218089 }, - { url = "https://files.pythonhosted.org/packages/36/8a/a5174e8a7d8b94b4c8f9c1e2cf5d07451f41368ffe94d05fc957215b8e72/multidict-6.4.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ce5b3082e86aee80b3925ab4928198450d8e5b6466e11501fe03ad2191c6d777", size = 225257 }, - { url = "https://files.pythonhosted.org/packages/8c/76/1d4b7218f0fd00b8e5c90b88df2e45f8af127f652f4e41add947fa54c1c4/multidict-6.4.3-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e413152e3212c4d39f82cf83c6f91be44bec9ddea950ce17af87fbf4e32ca6b2", size = 234728 }, - { url = "https://files.pythonhosted.org/packages/64/44/18372a4f6273fc7ca25630d7bf9ae288cde64f29593a078bff450c7170b6/multidict-6.4.3-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:8aac2eeff69b71f229a405c0a4b61b54bade8e10163bc7b44fcd257949620618", size = 230087 }, - { url = "https://files.pythonhosted.org/packages/0f/ae/28728c314a698d8a6d9491fcacc897077348ec28dd85884d09e64df8a855/multidict-6.4.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ab583ac203af1d09034be41458feeab7863c0635c650a16f15771e1386abf2d7", size = 223137 }, - { url = "https://files.pythonhosted.org/packages/22/50/785bb2b3fe16051bc91c70a06a919f26312da45c34db97fc87441d61e343/multidict-6.4.3-cp311-cp311-win32.whl", hash = "sha256:1b2019317726f41e81154df636a897de1bfe9228c3724a433894e44cd2512378", size = 34959 }, - { url = "https://files.pythonhosted.org/packages/2f/63/2a22e099ae2f4d92897618c00c73a09a08a2a9aa14b12736965bf8d59fd3/multidict-6.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:43173924fa93c7486402217fab99b60baf78d33806af299c56133a3755f69589", size = 38541 }, - { url = "https://files.pythonhosted.org/packages/fc/bb/3abdaf8fe40e9226ce8a2ba5ecf332461f7beec478a455d6587159f1bf92/multidict-6.4.3-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:1f1c2f58f08b36f8475f3ec6f5aeb95270921d418bf18f90dffd6be5c7b0e676", size = 64019 }, - { url = "https://files.pythonhosted.org/packages/7e/b5/1b2e8de8217d2e89db156625aa0fe4a6faad98972bfe07a7b8c10ef5dd6b/multidict-6.4.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:26ae9ad364fc61b936fb7bf4c9d8bd53f3a5b4417142cd0be5c509d6f767e2f1", size = 37925 }, - { url = "https://files.pythonhosted.org/packages/b4/e2/3ca91c112644a395c8eae017144c907d173ea910c913ff8b62549dcf0bbf/multidict-6.4.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:659318c6c8a85f6ecfc06b4e57529e5a78dfdd697260cc81f683492ad7e9435a", size = 37008 }, - { url = "https://files.pythonhosted.org/packages/60/23/79bc78146c7ac8d1ac766b2770ca2e07c2816058b8a3d5da6caed8148637/multidict-6.4.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1eb72c741fd24d5a28242ce72bb61bc91f8451877131fa3fe930edb195f7054", size = 224374 }, - { url = "https://files.pythonhosted.org/packages/86/35/77950ed9ebd09136003a85c1926ba42001ca5be14feb49710e4334ee199b/multidict-6.4.3-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:3cd06d88cb7398252284ee75c8db8e680aa0d321451132d0dba12bc995f0adcc", size = 230869 }, - { url = "https://files.pythonhosted.org/packages/49/97/2a33c6e7d90bc116c636c14b2abab93d6521c0c052d24bfcc231cbf7f0e7/multidict-6.4.3-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4543d8dc6470a82fde92b035a92529317191ce993533c3c0c68f56811164ed07", size = 231949 }, - { url = "https://files.pythonhosted.org/packages/56/ce/e9b5d9fcf854f61d6686ada7ff64893a7a5523b2a07da6f1265eaaea5151/multidict-6.4.3-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:30a3ebdc068c27e9d6081fca0e2c33fdf132ecea703a72ea216b81a66860adde", size = 231032 }, - { url = "https://files.pythonhosted.org/packages/f0/ac/7ced59dcdfeddd03e601edb05adff0c66d81ed4a5160c443e44f2379eef0/multidict-6.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b038f10e23f277153f86f95c777ba1958bcd5993194fda26a1d06fae98b2f00c", size = 223517 }, - { url = "https://files.pythonhosted.org/packages/db/e6/325ed9055ae4e085315193a1b58bdb4d7fc38ffcc1f4975cfca97d015e17/multidict-6.4.3-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c605a2b2dc14282b580454b9b5d14ebe0668381a3a26d0ac39daa0ca115eb2ae", size = 216291 }, - { url = "https://files.pythonhosted.org/packages/fa/84/eeee6d477dd9dcb7691c3bb9d08df56017f5dd15c730bcc9383dcf201cf4/multidict-6.4.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8bd2b875f4ca2bb527fe23e318ddd509b7df163407b0fb717df229041c6df5d3", size = 228982 }, - { url = "https://files.pythonhosted.org/packages/82/94/4d1f3e74e7acf8b0c85db350e012dcc61701cd6668bc2440bb1ecb423c90/multidict-6.4.3-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c2e98c840c9c8e65c0e04b40c6c5066c8632678cd50c8721fdbcd2e09f21a507", size = 226823 }, - { url = "https://files.pythonhosted.org/packages/09/f0/1e54b95bda7cd01080e5732f9abb7b76ab5cc795b66605877caeb2197476/multidict-6.4.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:66eb80dd0ab36dbd559635e62fba3083a48a252633164857a1d1684f14326427", size = 222714 }, - { url = "https://files.pythonhosted.org/packages/e7/a2/f6cbca875195bd65a3e53b37ab46486f3cc125bdeab20eefe5042afa31fb/multidict-6.4.3-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:c23831bdee0a2a3cf21be057b5e5326292f60472fb6c6f86392bbf0de70ba731", size = 233739 }, - { url = "https://files.pythonhosted.org/packages/79/68/9891f4d2b8569554723ddd6154375295f789dc65809826c6fb96a06314fd/multidict-6.4.3-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:1535cec6443bfd80d028052e9d17ba6ff8a5a3534c51d285ba56c18af97e9713", size = 230809 }, - { url = "https://files.pythonhosted.org/packages/e6/72/a7be29ba1e87e4fc5ceb44dabc7940b8005fd2436a332a23547709315f70/multidict-6.4.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3b73e7227681f85d19dec46e5b881827cd354aabe46049e1a61d2f9aaa4e285a", size = 226934 }, - { url = "https://files.pythonhosted.org/packages/12/c1/259386a9ad6840ff7afc686da96808b503d152ac4feb3a96c651dc4f5abf/multidict-6.4.3-cp312-cp312-win32.whl", hash = "sha256:8eac0c49df91b88bf91f818e0a24c1c46f3622978e2c27035bfdca98e0e18124", size = 35242 }, - { url = "https://files.pythonhosted.org/packages/06/24/c8fdff4f924d37225dc0c56a28b1dca10728fc2233065fafeb27b4b125be/multidict-6.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:11990b5c757d956cd1db7cb140be50a63216af32cd6506329c2c59d732d802db", size = 38635 }, - { url = "https://files.pythonhosted.org/packages/96/10/7d526c8974f017f1e7ca584c71ee62a638e9334d8d33f27d7cdfc9ae79e4/multidict-6.4.3-py3-none-any.whl", hash = "sha256:59fe01ee8e2a1e8ceb3f6dbb216b09c8d9f4ef1c22c4fc825d045a147fa2ebc9", size = 10400 }, +version = "6.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, ] [[package]] @@ -1976,6 +2054,29 @@ 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 = "netcdf4" +version = "1.7.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "certifi" }, + { name = "cftime" }, + { name = "numpy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, + { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, + { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, + { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, + { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, + { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, + { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, + { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, + { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, + { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, +] + [[package]] name = "nodeenv" version = "1.9.1" @@ -2125,6 +2226,19 @@ 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 = "pathspec" version = "0.12.1" @@ -2185,20 +2299,20 @@ wheels = [ [[package]] name = "platformdirs" -version = "4.3.7" +version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b6/2d/7d512a3913d60623e7eb945c6d1b4f0bddf1d0b7ada5225274c87e5b53d1/platformdirs-4.3.7.tar.gz", hash = "sha256:eb437d586b6a0986388f0d6f74aa0cde27b48d0e3d66843640bfb6bdcdb6e351", size = 21291 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6d/45/59578566b3275b8fd9157885918fcd0c4d74162928a5310926887b856a51/platformdirs-4.3.7-py3-none-any.whl", hash = "sha256:a03875334331946f13c549dbd8f4bac7a13a50a895a0eb1e8c6a8ace80d40a94", size = 18499 }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, ] [[package]] name = "pluggy" -version = "1.5.0" +version = "1.6.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 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/5f/e351af9a41f866ac3f1fac4ca0613908d9a41741cfcf2228f4ad853b697d/pluggy-1.5.0-py3-none-any.whl", hash = "sha256:44e1ad92c8ca002de6377e165f3e0f1be63266ab4d554740532335b9d75ea669", size = 20556 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] @@ -2219,11 +2333,11 @@ wheels = [ [[package]] name = "prometheus-client" -version = "0.21.1" +version = "0.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/62/14/7d0f567991f3a9af8d1cd4f619040c93b68f09a02b6d0b6ab1b2d1ded5fe/prometheus_client-0.21.1.tar.gz", hash = "sha256:252505a722ac04b0456be05c05f75f45d760c2911ffc45f2a06bcaed9f3ae3fb", size = 78551 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ff/c2/ab7d37426c179ceb9aeb109a85cda8948bb269b7561a0be870cc656eefe4/prometheus_client-0.21.1-py3-none-any.whl", hash = "sha256:594b45c410d6f4f8888940fe80b5cc2521b305a1fafe1c58609ef715a001f301", size = 54682 }, + { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, ] [[package]] @@ -2349,55 +2463,65 @@ wheels = [ [[package]] name = "pydantic" -version = "2.10.6" +version = "2.11.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, { name = "pydantic-core" }, { name = "typing-extensions" }, + { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b7/ae/d5220c5c52b158b1de7ca89fc5edb72f304a70a4c540c84c8844bf4008de/pydantic-2.10.6.tar.gz", hash = "sha256:ca5daa827cce33de7a42be142548b0096bf05a7e7b365aebfa5f8eeec7128236", size = 761681 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/3c/8cc1cc84deffa6e25d2d0c688ebb80635dfdbf1dbea3e30c541c8cf4d860/pydantic-2.10.6-py3-none-any.whl", hash = "sha256:427d664bf0b8a2b34ff5dd0f5a18df00591adcee7198fbd71981054cef37b584", size = 431696 }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] name = "pydantic-core" -version = "2.27.2" +version = "2.33.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 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, ] [[package]] @@ -2511,27 +2635,27 @@ wheels = [ [[package]] name = "pyogrio" -version = "0.10.0" +version = "0.11.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a5/8f/5a784595524a79c269f2b1c880f4fdb152867df700c97005dda51997da02/pyogrio-0.10.0.tar.gz", hash = "sha256:ec051cb568324de878828fae96379b71858933413e185148acb6c162851ab23c", size = 281950 } +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8d/2c/c761e6adeb81bd4029a137b3240e7214a8c9aaf225883356196afd6ef9d8/pyogrio-0.10.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:5b1a51431a27a1cb3e4e19558939c1423106e06e7b67d6285f4fba9c2d0a91b9", size = 15083526 }, - { url = "https://files.pythonhosted.org/packages/c3/e5/983aa9ddf2ff784e973d6b2ec3e874065d6655a5329ca26311b0f3b9f92f/pyogrio-0.10.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:216d69cd77b2b4a0c9d7d449bc239f8b77f3d73f4a05d9c738a0745b236902d8", size = 16457867 }, - { url = "https://files.pythonhosted.org/packages/fa/9a/7103eee7aa3b6ec88e072ef18a05c3aae1ed96fe00009a7a5ce139b50f30/pyogrio-0.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a2f0b75f0077ce33256aec6278c2a9c3b79bf0637ddf4f93d3ab2609f0501d96", size = 23926332 }, - { url = "https://files.pythonhosted.org/packages/8b/b2/2ca124343aba24b9a5dcd7c1f43da81e652849cfaf3110d3f507a80af0a1/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:0a47f702d29808c557d2ebea8542c23903f021eae44e16838adef2ab4281c71b", size = 23138693 }, - { url = "https://files.pythonhosted.org/packages/ae/15/501aa4823c142232169d54255ab343f28c4ea9e7fa489b8433dcc873a942/pyogrio-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:11e6c71d12da6b445e77d0fc0198db1bd35a77e03a0685e45338cbab9ce02add", size = 24062952 }, - { url = "https://files.pythonhosted.org/packages/94/8d/24f21e6a93ca418231aee3bddade7a0766c89c523832f29e08a8860f83e6/pyogrio-0.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:d0d74e91a9c0ff2f9abe01b556ff663977193b2d6922208406172d0fc833beff", size = 16172573 }, - { url = "https://files.pythonhosted.org/packages/b5/b5/3c5dfd0b50cbce6f3d4e42c0484647feb1809dbe20e225c4c6abd067e69f/pyogrio-0.10.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:2d6558b180e020f71ab7aa7f82d592ed3305c9f698d98f6d0a4637ec7a84c4ce", size = 15079211 }, - { url = "https://files.pythonhosted.org/packages/b8/9a/1ba9c707a094976f343bd0177741eaba0e842fa05ecd8ab97192db4f2ec1/pyogrio-0.10.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:a99102037eead8ba491bc57825c1e395ee31c9956d7bff7b4a9e4fdbff3a13c2", size = 16442782 }, - { url = "https://files.pythonhosted.org/packages/5e/bb/b4250746c2c85fea5004cae93e9e25ad01516e9e94e04de780a2e78139da/pyogrio-0.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a4c373281d7cbf560c5b61f8f3c7442103ad7f1c7ac4ef3a84572ed7a5dd2f6", size = 23899832 }, - { url = "https://files.pythonhosted.org/packages/bd/4c/79e47e40a8e54e79a45133786a0a58209534f580591c933d40c5ed314fe7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:19f18411bdf836d24cdc08b9337eb3ec415e4ac4086ba64516b36b73a2e88622", size = 23081469 }, - { url = "https://files.pythonhosted.org/packages/47/78/2b62c8a340bcb0ea56b9ddf2ef5fd3d1f101dc0e98816b9e6da87c5ac3b7/pyogrio-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:1abbcdd9876f30bebf1df8a0273f6cdeb29d03259290008275c7fddebe139f20", size = 24024758 }, - { url = "https://files.pythonhosted.org/packages/43/97/34605480f06b0ad9611bf58a174eccc6f3673275f3d519cf763391892881/pyogrio-0.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:2a3e09839590d71ff832aa95c4f23fa00a2c63c3de82c1fbd4fb8d265792acfc", size = 16160294 }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, ] [[package]] @@ -2666,14 +2790,14 @@ wheels = [ [[package]] name = "pyyaml-env-tag" -version = "0.1" +version = "1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] @@ -2821,47 +2945,49 @@ wheels = [ [[package]] name = "rpds-py" -version = "0.24.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/b3/52b213298a0ba7097c7ea96bee95e1947aa84cc816d48cebb539770cdf41/rpds_py-0.24.0.tar.gz", hash = "sha256:772cc1b2cd963e7e17e6cc55fe0371fb9c704d63e44cacec7b9b7f523b78919e", size = 26863 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/80/e6/c1458bbfb257448fdb2528071f1f4e19e26798ed5ef6d47d7aab0cb69661/rpds_py-0.24.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:2d3ee4615df36ab8eb16c2507b11e764dcc11fd350bbf4da16d09cda11fcedef", size = 377679 }, - { url = "https://files.pythonhosted.org/packages/dd/26/ea4181ef78f58b2c167548c6a833d7dc22408e5b3b181bda9dda440bb92d/rpds_py-0.24.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e13ae74a8a3a0c2f22f450f773e35f893484fcfacb00bb4344a7e0f4f48e1f97", size = 362571 }, - { url = "https://files.pythonhosted.org/packages/56/fa/1ec54dd492c64c280a2249a047fc3369e2789dc474eac20445ebfc72934b/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf86f72d705fc2ef776bb7dd9e5fbba79d7e1f3e258bf9377f8204ad0fc1c51e", size = 388012 }, - { url = "https://files.pythonhosted.org/packages/3a/be/bad8b0e0f7e58ef4973bb75e91c472a7d51da1977ed43b09989264bf065c/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:c43583ea8517ed2e780a345dd9960896afc1327e8cf3ac8239c167530397440d", size = 394730 }, - { url = "https://files.pythonhosted.org/packages/35/56/ab417fc90c21826df048fc16e55316ac40876e4b790104ececcbce813d8f/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:4cd031e63bc5f05bdcda120646a0d32f6d729486d0067f09d79c8db5368f4586", size = 448264 }, - { url = "https://files.pythonhosted.org/packages/b6/75/4c63862d5c05408589196c8440a35a14ea4ae337fa70ded1f03638373f06/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:34d90ad8c045df9a4259c47d2e16a3f21fdb396665c94520dbfe8766e62187a4", size = 446813 }, - { url = "https://files.pythonhosted.org/packages/e7/0c/91cf17dffa9a38835869797a9f041056091ebba6a53963d3641207e3d467/rpds_py-0.24.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e838bf2bb0b91ee67bf2b889a1a841e5ecac06dd7a2b1ef4e6151e2ce155c7ae", size = 389438 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/60e6c72727c978276e02851819f3986bc40668f115be72c1bc4d922c950f/rpds_py-0.24.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04ecf5c1ff4d589987b4d9882872f80ba13da7d42427234fce8f22efb43133bc", size = 420416 }, - { url = "https://files.pythonhosted.org/packages/a1/d7/f46f85b9f863fb59fd3c534b5c874c48bee86b19e93423b9da8784605415/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:630d3d8ea77eabd6cbcd2ea712e1c5cecb5b558d39547ac988351195db433f6c", size = 565236 }, - { url = "https://files.pythonhosted.org/packages/2a/d1/1467620ded6dd70afc45ec822cdf8dfe7139537780d1f3905de143deb6fd/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ebcb786b9ff30b994d5969213a8430cbb984cdd7ea9fd6df06663194bd3c450c", size = 592016 }, - { url = "https://files.pythonhosted.org/packages/5d/13/fb1ded2e6adfaa0c0833106c42feb290973f665300f4facd5bf5d7891d9c/rpds_py-0.24.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:174e46569968ddbbeb8a806d9922f17cd2b524aa753b468f35b97ff9c19cb718", size = 560123 }, - { url = "https://files.pythonhosted.org/packages/1e/df/09fc1857ac7cc2eb16465a7199c314cbce7edde53c8ef21d615410d7335b/rpds_py-0.24.0-cp311-cp311-win32.whl", hash = "sha256:5ef877fa3bbfb40b388a5ae1cb00636a624690dcb9a29a65267054c9ea86d88a", size = 222256 }, - { url = "https://files.pythonhosted.org/packages/ff/25/939b40bc4d54bf910e5ee60fb5af99262c92458f4948239e8c06b0b750e7/rpds_py-0.24.0-cp311-cp311-win_amd64.whl", hash = "sha256:e274f62cbd274359eff63e5c7e7274c913e8e09620f6a57aae66744b3df046d6", size = 234718 }, - { url = "https://files.pythonhosted.org/packages/1a/e0/1c55f4a3be5f1ca1a4fd1f3ff1504a1478c1ed48d84de24574c4fa87e921/rpds_py-0.24.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:d8551e733626afec514b5d15befabea0dd70a343a9f23322860c4f16a9430205", size = 366945 }, - { url = "https://files.pythonhosted.org/packages/39/1b/a3501574fbf29118164314dbc800d568b8c1c7b3258b505360e8abb3902c/rpds_py-0.24.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0e374c0ce0ca82e5b67cd61fb964077d40ec177dd2c4eda67dba130de09085c7", size = 351935 }, - { url = "https://files.pythonhosted.org/packages/dc/47/77d3d71c55f6a374edde29f1aca0b2e547325ed00a9da820cabbc9497d2b/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d69d003296df4840bd445a5d15fa5b6ff6ac40496f956a221c4d1f6f7b4bc4d9", size = 390817 }, - { url = "https://files.pythonhosted.org/packages/4e/ec/1e336ee27484379e19c7f9cc170f4217c608aee406d3ae3a2e45336bff36/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:8212ff58ac6dfde49946bea57474a386cca3f7706fc72c25b772b9ca4af6b79e", size = 401983 }, - { url = "https://files.pythonhosted.org/packages/07/f8/39b65cbc272c635eaea6d393c2ad1ccc81c39eca2db6723a0ca4b2108fce/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:528927e63a70b4d5f3f5ccc1fa988a35456eb5d15f804d276709c33fc2f19bda", size = 451719 }, - { url = "https://files.pythonhosted.org/packages/32/05/05c2b27dd9c30432f31738afed0300659cb9415db0ff7429b05dfb09bbde/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a824d2c7a703ba6daaca848f9c3d5cb93af0505be505de70e7e66829affd676e", size = 442546 }, - { url = "https://files.pythonhosted.org/packages/7d/e0/19383c8b5d509bd741532a47821c3e96acf4543d0832beba41b4434bcc49/rpds_py-0.24.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:44d51febb7a114293ffd56c6cf4736cb31cd68c0fddd6aa303ed09ea5a48e029", size = 393695 }, - { url = "https://files.pythonhosted.org/packages/9d/15/39f14e96d94981d0275715ae8ea564772237f3fa89bc3c21e24de934f2c7/rpds_py-0.24.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:3fab5f4a2c64a8fb64fc13b3d139848817a64d467dd6ed60dcdd6b479e7febc9", size = 427218 }, - { url = "https://files.pythonhosted.org/packages/22/b9/12da7124905a680f690da7a9de6f11de770b5e359f5649972f7181c8bf51/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9be4f99bee42ac107870c61dfdb294d912bf81c3c6d45538aad7aecab468b6b7", size = 568062 }, - { url = "https://files.pythonhosted.org/packages/88/17/75229017a2143d915f6f803721a6d721eca24f2659c5718a538afa276b4f/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:564c96b6076a98215af52f55efa90d8419cc2ef45d99e314fddefe816bc24f91", size = 596262 }, - { url = "https://files.pythonhosted.org/packages/aa/64/8e8a1d8bd1b6b638d6acb6d41ab2cec7f2067a5b8b4c9175703875159a7c/rpds_py-0.24.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:75a810b7664c17f24bf2ffd7f92416c00ec84b49bb68e6a0d93e542406336b56", size = 564306 }, - { url = "https://files.pythonhosted.org/packages/68/1c/a7eac8d8ed8cb234a9b1064647824c387753343c3fab6ed7c83481ed0be7/rpds_py-0.24.0-cp312-cp312-win32.whl", hash = "sha256:f6016bd950be4dcd047b7475fdf55fb1e1f59fc7403f387be0e8123e4a576d30", size = 224281 }, - { url = "https://files.pythonhosted.org/packages/bb/46/b8b5424d1d21f2f2f3f2d468660085318d4f74a8df8289e3dd6ad224d488/rpds_py-0.24.0-cp312-cp312-win_amd64.whl", hash = "sha256:998c01b8e71cf051c28f5d6f1187abbdf5cf45fc0efce5da6c06447cba997034", size = 239719 }, - { url = "https://files.pythonhosted.org/packages/65/53/40bcc246a8354530d51a26d2b5b9afd1deacfb0d79e67295cc74df362f52/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:f9e0057a509e096e47c87f753136c9b10d7a91842d8042c2ee6866899a717c0d", size = 378386 }, - { url = "https://files.pythonhosted.org/packages/80/b0/5ea97dd2f53e3618560aa1f9674e896e63dff95a9b796879a201bc4c1f00/rpds_py-0.24.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d6e109a454412ab82979c5b1b3aee0604eca4bbf9a02693bb9df027af2bfa91a", size = 363440 }, - { url = "https://files.pythonhosted.org/packages/57/9d/259b6eada6f747cdd60c9a5eb3efab15f6704c182547149926c38e5bd0d5/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fc1c892b1ec1f8cbd5da8de287577b455e388d9c328ad592eabbdcb6fc93bee5", size = 388816 }, - { url = "https://files.pythonhosted.org/packages/94/c1/faafc7183712f89f4b7620c3c15979ada13df137d35ef3011ae83e93b005/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:9c39438c55983d48f4bb3487734d040e22dad200dab22c41e331cee145e7a50d", size = 395058 }, - { url = "https://files.pythonhosted.org/packages/6c/96/d7fa9d2a7b7604a61da201cc0306a355006254942093779d7121c64700ce/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9d7e8ce990ae17dda686f7e82fd41a055c668e13ddcf058e7fb5e9da20b57793", size = 448692 }, - { url = "https://files.pythonhosted.org/packages/96/37/a3146c6eebc65d6d8c96cc5ffdcdb6af2987412c789004213227fbe52467/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ea7f4174d2e4194289cb0c4e172d83e79a6404297ff95f2875cf9ac9bced8ba", size = 446462 }, - { url = "https://files.pythonhosted.org/packages/1f/13/6481dfd9ac7de43acdaaa416e3a7da40bc4bb8f5c6ca85e794100aa54596/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bb2954155bb8f63bb19d56d80e5e5320b61d71084617ed89efedb861a684baea", size = 390460 }, - { url = "https://files.pythonhosted.org/packages/61/e1/37e36bce65e109543cc4ff8d23206908649023549604fa2e7fbeba5342f7/rpds_py-0.24.0-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:04f2b712a2206e13800a8136b07aaedc23af3facab84918e7aa89e4be0260032", size = 421609 }, - { url = "https://files.pythonhosted.org/packages/20/dd/1f1a923d6cd798b8582176aca8a0784676f1a0449fb6f07fce6ac1cdbfb6/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:eda5c1e2a715a4cbbca2d6d304988460942551e4e5e3b7457b50943cd741626d", size = 565818 }, - { url = "https://files.pythonhosted.org/packages/56/ec/d8da6df6a1eb3a418944a17b1cb38dd430b9e5a2e972eafd2b06f10c7c46/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:9abc80fe8c1f87218db116016de575a7998ab1629078c90840e8d11ab423ee25", size = 592627 }, - { url = "https://files.pythonhosted.org/packages/b3/14/c492b9c7d5dd133e13f211ddea6bb9870f99e4f73932f11aa00bc09a9be9/rpds_py-0.24.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:6a727fd083009bc83eb83d6950f0c32b3c94c8b80a9b667c87f4bd1274ca30ba", size = 560885 }, +version = "0.25.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, ] [[package]] @@ -2955,38 +3081,38 @@ wheels = [ [[package]] name = "setuptools" -version = "80.0.0" +version = "80.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/80/97e25f0f1e4067677806084b7382a6ff9979f3d15119375c475c288db9d7/setuptools-80.0.0.tar.gz", hash = "sha256:c40a5b3729d58dd749c0f08f1a07d134fb8a0a3d7f87dc33e7c5e1f762138650", size = 1354221 } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } wheels = [ - { url = "https://files.pythonhosted.org/packages/23/63/5517029d6696ddf2bd378d46f63f479be001c31b462303170a1da57650cb/setuptools-80.0.0-py3-none-any.whl", hash = "sha256:a38f898dcd6e5380f4da4381a87ec90bd0a7eec23d204a5552e80ee3cab6bd27", size = 1240907 }, + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, ] [[package]] name = "shapely" -version = "2.1.0" +version = "2.1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/fe/3b0d2f828ffaceadcdcb51b75b9c62d98e62dd95ce575278de35f24a1c20/shapely-2.1.0.tar.gz", hash = "sha256:2cbe90e86fa8fc3ca8af6ffb00a77b246b918c7cf28677b7c21489b678f6b02e", size = 313617 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1c/37/ae448f06f363ff3dfe4bae890abd842c4e3e9edaf01245dbc9b97008c9e6/shapely-2.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c8323031ef7c1bdda7a92d5ddbc7b6b62702e73ba37e9a8ccc8da99ec2c0b87c", size = 1820974 }, - { url = "https://files.pythonhosted.org/packages/78/da/ea2a898e93c6953c5eef353a0e1781a0013a1352f2b90aa9ab0b800e0c75/shapely-2.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4da7c6cd748d86ec6aace99ad17129d30954ccf5e73e9911cdb5f0fa9658b4f8", size = 1624137 }, - { url = "https://files.pythonhosted.org/packages/64/4a/f903f82f0fabcd3f43ea2e8132cabda079119247330a9fe58018c39c4e22/shapely-2.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f0cdf85ff80831137067e7a237085a3ee72c225dba1b30beef87f7d396cf02b", size = 2957161 }, - { url = "https://files.pythonhosted.org/packages/92/07/3e2738c542d73182066196b8ce99388cb537d19e300e428d50b1537e3b21/shapely-2.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:41f2be5d79aac39886f23000727cf02001aef3af8810176c29ee12cdc3ef3a50", size = 3078530 }, - { url = "https://files.pythonhosted.org/packages/82/08/32210e63d8f8af9142d37c2433ece4846862cdac91a0fe66f040780a71bd/shapely-2.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:21a4515009f56d7a159cf5c2554264e82f56405b4721f9a422cb397237c5dca8", size = 3902208 }, - { url = "https://files.pythonhosted.org/packages/19/0e/0abb5225f8a32fbdb615476637038a7d2db40c0af46d1bb3a08b869bee39/shapely-2.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:15cebc323cec2cb6b2eaa310fdfc621f6dbbfaf6bde336d13838fcea76c885a9", size = 4082863 }, - { url = "https://files.pythonhosted.org/packages/f8/1b/7cd816fd388108c872ab7e2930180b02d0c34891213f361e4a66e5e032f2/shapely-2.1.0-cp311-cp311-win32.whl", hash = "sha256:cad51b7a5c8f82f5640472944a74f0f239123dde9a63042b3c5ea311739b7d20", size = 1527488 }, - { url = "https://files.pythonhosted.org/packages/fd/28/7bb5b1944d4002d4b2f967762018500381c3b532f98e456bbda40c3ded68/shapely-2.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:d4005309dde8658e287ad9c435c81877f6a95a9419b932fa7a1f34b120f270ae", size = 1708311 }, - { url = "https://files.pythonhosted.org/packages/4e/d1/6a9371ec39d3ef08e13225594e6c55b045209629afd9e6d403204507c2a8/shapely-2.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:53e7ee8bd8609cf12ee6dce01ea5affe676976cf7049315751d53d8db6d2b4b2", size = 1830732 }, - { url = "https://files.pythonhosted.org/packages/32/87/799e3e48be7ce848c08509b94d2180f4ddb02e846e3c62d0af33da4d78d3/shapely-2.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3cab20b665d26dbec0b380e15749bea720885a481fa7b1eedc88195d4a98cfa4", size = 1638404 }, - { url = "https://files.pythonhosted.org/packages/85/00/6665d77f9dd09478ab0993b8bc31668aec4fd3e5f1ddd1b28dd5830e47be/shapely-2.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f4a38b39a09340273c3c92b3b9a374272a12cc7e468aeeea22c1c46217a03e5c", size = 2945316 }, - { url = "https://files.pythonhosted.org/packages/34/49/738e07d10bbc67cae0dcfe5a484c6e518a517f4f90550dda2adf3a78b9f2/shapely-2.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:edaec656bdd9b71278b98e6f77c464b1c3b2daa9eace78012ff0f0b4b5b15b04", size = 3063099 }, - { url = "https://files.pythonhosted.org/packages/88/b8/138098674559362ab29f152bff3b6630de423378fbb0324812742433a4ef/shapely-2.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c8a732ddd9b25e7a54aa748e7df8fd704e23e5d5d35b7d376d80bffbfc376d04", size = 3887873 }, - { url = "https://files.pythonhosted.org/packages/67/a8/fdae7c2db009244991d86f4d2ca09d2f5ccc9d41c312c3b1ee1404dc55da/shapely-2.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9c93693ad8adfdc9138a5a2d42da02da94f728dd2e82d2f0f442f10e25027f5f", size = 4067004 }, - { url = "https://files.pythonhosted.org/packages/ed/78/17e17d91b489019379df3ee1afc4bd39787b232aaa1d540f7d376f0280b7/shapely-2.1.0-cp312-cp312-win32.whl", hash = "sha256:d8ac6604eefe807e71a908524de23a37920133a1729fe3a4dfe0ed82c044cbf4", size = 1527366 }, - { url = "https://files.pythonhosted.org/packages/b8/bd/9249bd6dda948441e25e4fb14cbbb5205146b0fff12c66b19331f1ff2141/shapely-2.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:f4f47e631aa4f9ec5576eac546eb3f38802e2f82aeb0552f9612cb9a14ece1db", size = 1708265 }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, ] [[package]] @@ -3036,31 +3162,31 @@ wheels = [ [[package]] name = "sqlalchemy" -version = "2.0.40" +version = "2.0.41" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/68/c3/3f2bfa5e4dcd9938405fe2fab5b6ab94a9248a4f9536ea2fd497da20525f/sqlalchemy-2.0.40.tar.gz", hash = "sha256:d827099289c64589418ebbcaead0145cd19f4e3e8a93919a0100247af245fa00", size = 9664299 } +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/7e/55044a9ec48c3249bb38d5faae93f09579c35e862bb318ebd1ed7a1994a5/sqlalchemy-2.0.40-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f6bacab7514de6146a1976bc56e1545bee247242fab030b89e5f70336fc0003e", size = 2114025 }, - { url = "https://files.pythonhosted.org/packages/77/0f/dcf7bba95f847aec72f638750747b12d37914f71c8cc7c133cf326ab945c/sqlalchemy-2.0.40-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5654d1ac34e922b6c5711631f2da497d3a7bffd6f9f87ac23b35feea56098011", size = 2104419 }, - { url = "https://files.pythonhosted.org/packages/75/70/c86a5c20715e4fe903dde4c2fd44fc7e7a0d5fb52c1b954d98526f65a3ea/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:35904d63412db21088739510216e9349e335f142ce4a04b69e2528020ee19ed4", size = 3222720 }, - { url = "https://files.pythonhosted.org/packages/12/cf/b891a8c1d0c27ce9163361664c2128c7a57de3f35000ea5202eb3a2917b7/sqlalchemy-2.0.40-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9c7a80ed86d6aaacb8160a1caef6680d4ddd03c944d985aecee940d168c411d1", size = 3222682 }, - { url = "https://files.pythonhosted.org/packages/15/3f/7709d8c8266953d945435a96b7f425ae4172a336963756b58e996fbef7f3/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:519624685a51525ddaa7d8ba8265a1540442a2ec71476f0e75241eb8263d6f51", size = 3159542 }, - { url = "https://files.pythonhosted.org/packages/85/7e/717eaabaf0f80a0132dc2032ea8f745b7a0914451c984821a7c8737fb75a/sqlalchemy-2.0.40-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:2ee5f9999a5b0e9689bed96e60ee53c3384f1a05c2dd8068cc2e8361b0df5b7a", size = 3179864 }, - { url = "https://files.pythonhosted.org/packages/e4/cc/03eb5dfcdb575cbecd2bd82487b9848f250a4b6ecfb4707e834b4ce4ec07/sqlalchemy-2.0.40-cp311-cp311-win32.whl", hash = "sha256:c0cae71e20e3c02c52f6b9e9722bca70e4a90a466d59477822739dc31ac18b4b", size = 2084675 }, - { url = "https://files.pythonhosted.org/packages/9a/48/440946bf9dc4dc231f4f31ef0d316f7135bf41d4b86aaba0c0655150d370/sqlalchemy-2.0.40-cp311-cp311-win_amd64.whl", hash = "sha256:574aea2c54d8f1dd1699449f332c7d9b71c339e04ae50163a3eb5ce4c4325ee4", size = 2110099 }, - { url = "https://files.pythonhosted.org/packages/92/06/552c1f92e880b57d8b92ce6619bd569b25cead492389b1d84904b55989d8/sqlalchemy-2.0.40-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:9d3b31d0a1c44b74d3ae27a3de422dfccd2b8f0b75e51ecb2faa2bf65ab1ba0d", size = 2112620 }, - { url = "https://files.pythonhosted.org/packages/01/72/a5bc6e76c34cebc071f758161dbe1453de8815ae6e662393910d3be6d70d/sqlalchemy-2.0.40-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:37f7a0f506cf78c80450ed1e816978643d3969f99c4ac6b01104a6fe95c5490a", size = 2103004 }, - { url = "https://files.pythonhosted.org/packages/bf/fd/0e96c8e6767618ed1a06e4d7a167fe13734c2f8113c4cb704443e6783038/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0bb933a650323e476a2e4fbef8997a10d0003d4da996aad3fd7873e962fdde4d", size = 3252440 }, - { url = "https://files.pythonhosted.org/packages/cd/6a/eb82e45b15a64266a2917a6833b51a334ea3c1991728fd905bfccbf5cf63/sqlalchemy-2.0.40-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6959738971b4745eea16f818a2cd086fb35081383b078272c35ece2b07012716", size = 3263277 }, - { url = "https://files.pythonhosted.org/packages/45/97/ebe41ab4530f50af99e3995ebd4e0204bf1b0dc0930f32250dde19c389fe/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:110179728e442dae85dd39591beb74072ae4ad55a44eda2acc6ec98ead80d5f2", size = 3198591 }, - { url = "https://files.pythonhosted.org/packages/e6/1c/a569c1b2b2f5ac20ba6846a1321a2bf52e9a4061001f282bf1c5528dcd69/sqlalchemy-2.0.40-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8040680eaacdce4d635f12c55c714f3d4c7f57da2bc47a01229d115bd319191", size = 3225199 }, - { url = "https://files.pythonhosted.org/packages/8f/91/87cc71a6b10065ca0209d19a4bb575378abda6085e72fa0b61ffb2201b84/sqlalchemy-2.0.40-cp312-cp312-win32.whl", hash = "sha256:650490653b110905c10adac69408380688cefc1f536a137d0d69aca1069dc1d1", size = 2082959 }, - { url = "https://files.pythonhosted.org/packages/2a/9f/14c511cda174aa1ad9b0e42b64ff5a71db35d08b0d80dc044dae958921e5/sqlalchemy-2.0.40-cp312-cp312-win_amd64.whl", hash = "sha256:2be94d75ee06548d2fc591a3513422b873490efb124048f50556369a834853b0", size = 2108526 }, - { url = "https://files.pythonhosted.org/packages/d1/7c/5fc8e802e7506fe8b55a03a2e1dab156eae205c91bee46305755e086d2e2/sqlalchemy-2.0.40-py3-none-any.whl", hash = "sha256:32587e2e1e359276957e6fe5dad089758bc042a971a8a09ae8ecf7a8fe23d07a", size = 1903894 }, + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, ] [[package]] @@ -3136,22 +3262,32 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] +[[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" +version = "6.5.1" 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 } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } 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 }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, ] [[package]] @@ -3177,11 +3313,11 @@ wheels = [ [[package]] name = "types-python-dateutil" -version = "2.9.0.20241206" +version = "2.9.0.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/60/47d92293d9bc521cd2301e423a358abfac0ad409b3a1606d8fbae1321961/types_python_dateutil-2.9.0.20241206.tar.gz", hash = "sha256:18f493414c26ffba692a72369fea7a154c502646301ebfe3d56a04b3767284cb", size = 13802 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/b3/ca41df24db5eb99b00d97f89d7674a90cb6b3134c52fb8121b6d8d30f15c/types_python_dateutil-2.9.0.20241206-py3-none-any.whl", hash = "sha256:e248a4bc70a486d3e3ec84d0dc30eec3a5f979d6e7ee4123ae043eedbb987f53", size = 14384 }, + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, ] [[package]] @@ -3193,6 +3329,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] +[[package]] +name = "typing-inspection" +version = "0.4.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, +] + [[package]] name = "tzdata" version = "2025.2" @@ -3262,16 +3410,16 @@ wheels = [ [[package]] name = "virtualenv" -version = "20.30.0" +version = "20.31.2" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "distlib" }, { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/e0/633e369b91bbc664df47dcb5454b6c7cf441e8f5b9d0c250ce9f0546401e/virtualenv-20.30.0.tar.gz", hash = "sha256:800863162bcaa5450a6e4d721049730e7f2dae07720e0902b0e4040bd6f9ada8", size = 4346945 } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/ed/3cfeb48175f0671ec430ede81f628f9fb2b1084c9064ca67ebe8c0ed6a05/virtualenv-20.30.0-py3-none-any.whl", hash = "sha256:e34302959180fca3af42d1800df014b35019490b119eba981af27f2fa486e5d6", size = 4329461 }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, ] [[package]] @@ -3459,3 +3607,12 @@ sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d wheels = [ { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, ] + +[[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 1909fd9870a05de4c90c6245ba439b40ad9dc8fd Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 27 May 2025 16:49:21 -0400 Subject: [PATCH 43/97] Creating the `build/` dir (#13) * initial commit: adding all files for building local data warehouses with sql * patch: updating README.md to add pre-commit info * added to the readme of the icefabric_manage * updated to use s3 backends * updated docs * changing scripts to local_builds * changing scripts to builds * CLEAN: cleaning up the docs * PR COMMENTS: addressed quercoak comments * patch: file change wasnt uploaded --- .gitignore | 1 + NOTICE.txt | 8 ++ README.md | 20 +++- docs/img/icefabric_mission.png | Bin 0 -> 195061 bytes docs/index.md | 19 +-- docs/user_guide/icefabric_manage.md | 111 ++++++++++++++++++ docs/user_guide/index.md | 20 ++++ examples/quick_start.ipynb | 2 +- mkdocs.yml | 54 ++++++++- pyproject.toml | 6 - src/icefabric_manage/README.md | 6 + .../builds/build_hydrofabric.py | 41 +++++++ .../build_usgs_streamflow_observations.py | 27 +++++ src/icefabric_manage/pyproject.toml | 1 + .../src/icefabric_manage/_api.py | 60 ++-------- 15 files changed, 301 insertions(+), 75 deletions(-) create mode 100644 NOTICE.txt create mode 100644 docs/img/icefabric_mission.png create mode 100644 docs/user_guide/icefabric_manage.md create mode 100644 docs/user_guide/index.md create mode 100644 src/icefabric_manage/builds/build_hydrofabric.py create mode 100644 src/icefabric_manage/builds/build_usgs_streamflow_observations.py diff --git a/.gitignore b/.gitignore index ce6cd93..f9443dd 100644 --- a/.gitignore +++ b/.gitignore @@ -25,6 +25,7 @@ share/python-wheels/ .installed.cfg *.egg MANIFEST +.DS_Store # PyInstaller # Usually these files are written by a python script from a template diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..4c987a6 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,8 @@ +-- + +The Hydrofabric data used in this repo is credited to Lynker and its contributors + +Johnson, J. M. (2022). National Hydrologic Geospatial Fabric (hydrofabric) for the Next Generation (NextGen) Hydrologic Modeling Framework, +HydroShare http://www.hydroshare.org/resource/129787b468aa4d55ace7b124ed27dbde + +-- diff --git a/README.md b/README.md index 1e2efd3..dc6db8e 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,20 @@ An [Apache Iceberg](https://py.iceberg.apache.org/) implementation of the Hydrofabric to disseminate continental hydrologic data -#### Credits: - -Lynker and its contributors +### Getting Started +This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: +```sh +uv venv +source .venv/bin/activate +uv sync ``` -Johnson, J. M. (2022). National Hydrologic Geospatial Fabric (hydrofabric) for the Next Generation (NextGen) Hydrologic Modeling Framework, -HydroShare http://www.hydroshare.org/resource/129787b468aa4d55ace7b124ed27dbde + +### Development +To ensure that icefabric follows the specified structure, be sure to install the local dev dependencies and run `pre-commit install` + +### Documentation +To build the user guide documentation for Icefabric locally, run the following commands: +```sh +uv pip install ".[docs]" +mkdocs serve ``` diff --git a/docs/img/icefabric_mission.png b/docs/img/icefabric_mission.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3ffc5ae1905589bdb6c21cff581f4f9c69a532 GIT binary patch literal 195061 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

R_|^L2W~Lv^;v&kwyTc(0E~5S{!*KjF7 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

    jOwN3BhwOuZIE6EBv+9YYlA$P9pDk-R7+@Y_n>O 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 CJ*r{= literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md index 000ea34..d400578 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,17 +1,6 @@ -# Welcome to MkDocs +# Welcome to Icefabric -For full documentation visit [mkdocs.org](https://www.mkdocs.org). +!!! warning "In Progress" + These docs are a work in progress and will continously be updated -## Commands - -* `mkdocs new [dir-name]` - Create a new project. -* `mkdocs serve` - Start the live-reloading docs server. -* `mkdocs build` - Build the documentation site. -* `mkdocs -h` - Print help message and exit. - -## Project layout - - mkdocs.yml # The configuration file. - docs/ - index.md # The documentation homepage. - ... # Other markdown pages, images and other files. +This is the local build of the docs diff --git a/docs/user_guide/icefabric_manage.md b/docs/user_guide/icefabric_manage.md new file mode 100644 index 0000000..178a9b3 --- /dev/null +++ b/docs/user_guide/icefabric_manage.md @@ -0,0 +1,111 @@ +# Table Building Guide + +## Overview + +IceFabric Manage is a Python package that simplifies building Apache Iceberg catalogs from Parquet files + +## Architecture + +The system consists of two main components: + +1. **Core API** (`src/icefabric_manage/_api.py`) - Contains the table building logic +2. **Build Scripts** (`builds/`) - Orchestrates the catalog creation process + +## How It Works + +!!! info "Build Process Overview" + The system automatically converts Parquet files into queryable Iceberg tables through a simple directory scan and conversion process. + +### The Build Process + +1. **Create Catalog** - Sets up a SQLite-backed Apache Iceberg catalog +2. **Scan Directory** - Finds all `.parquet` files in the specified data directory +3. **Create Tables** - For each Parquet file, creates a corresponding Iceberg table +4. **Populate Data** - Appends the Parquet data to the newly created Iceberg tables + +### File Structure + +!!! note "File Hierarchy" + The below files only show the hydrofabric. This logic can be extended to any tabular data managed by Apache Iceberg. + +```text +project/ +├── src/icefabric_manage/ +│ └── _api.py # Core table building functions +├── build_hydrofabric.py # Main build script +└── data/ + ├── warehouse/ # Iceberg catalog storage (auto-created) + │ └── pyiceberg_catalog.db + └── hydrofabric/ # Source Parquet files + ├── divides.parquet + ├── nexus.parquet + └── ... +``` + +## Usage + +### Prerequisites + +!!! warning "Important Requirements" + - The `icefabric_manage` package must be installed through `uv sync` + - There must be parquet files locally to build from. These files are to be downloaded from the NGWPC S3 bucket @ `s3://hydrofabric-data/icefabric/` and placed in `src/icefabric_manage/data/` + +### Running the Build + +To build a specific table, one must be working/CD into the `scripts/` directory +```bash +python build_hydrofabric.py +``` + +!!! success "Expected Output" + ```text + Created hydrofabric namespace + Build successful + ``` + +### What Happens During Build + +1. **Warehouse Setup** - Creates `../data/warehouse/` directory if it doesn't exist +2. **Catalog Configuration** - Sets up SQLite catalog with file-based storage +3. **Namespace Creation** - Creates the `hydrofabric` namespace if it doesn't exist +4. **Table Creation** - For each `.parquet` file in `../data/hydrofabric/`: + - Uses the filename (without extension) as the table name + - Reads the Parquet schema and creates matching Iceberg table + - Appends all data from the Parquet file to the Iceberg table + - Skips files if tables already exist + +## Configuration + +### Catalog Settings + +The build script uses these default settings: + +```python +catalog_settings = { + "type": "sql", # SQLite-backed catalog + "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", # Database location + "warehouse": f"file://{warehouse_path}", # Data storage location +} +``` + +In most functions, it's predefined to the user's `/tmp` dir since it's the same per each user's machine + +## Customization + +The following customizations can be done to update where/what is being added to the PyIceberg table + +### Changing Data Directory + +Modify the `data_dir` path in `build_hydrofabric.py`: + +```python +data_dir = Path("/path/to/your/parquet/files") +``` + +### Different Namespace + +Change the namespace name: + +```python +namespace = "your_namespace" +``` diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md new file mode 100644 index 0000000..cf57a98 --- /dev/null +++ b/docs/user_guide/index.md @@ -0,0 +1,20 @@ +# Icefabric + +## The mission + +![A diagram describing the icefabric mission](../img/icefabric_mission.png) + +The idea for the icefabric came from the need to version control datasets for the National Water Model 4.0. There were many different file formats, and hydrofabric versions, but the need for an [Apache Iceberg](https://iceberg.apache.org/) style backend was realized. The name itself, icefabric, is a reference to this. + +Thus, this repo is a workspace for all icefabric assembly, tranformation, and dissemination. + +The repo is structured in the following workspace packages: + +### Icefabric Manage +The repo for building a local version of the icefabric and updating cloud stores + +### Icefabric Tools +The repo for all compute services built on the icefabric + +### Icefabric API +The interface between the icefabric and outside entities diff --git a/examples/quick_start.ipynb b/examples/quick_start.ipynb index 6980cf7..6e18088 100644 --- a/examples/quick_start.ipynb +++ b/examples/quick_start.ipynb @@ -1065,7 +1065,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.2" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/mkdocs.yml b/mkdocs.yml index c97182f..0e4fee3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1 +1,53 @@ -site_name: My Docs +site_name: Icefabric +site_description: A version controlled method for storing multi-dimensional and tabular data through Pyiceberg and icechunk +repo_url: https://github.com/NGWPC/icefabric +repo_name: NGWPC/icefabric +theme: + name: material + features: + - navigation.footer + - navigation.indexes + - navigation.sections + - navigation.tabs + - navigation.top + - navigation.tracking + - search.suggest + icon: + repo: fontawesome/brands/github + palette: + - scheme: light blue + toggle: + icon: material/brightness-7 + name: Switch to dark mode + - scheme: slate + toggle: + icon: material/brightness-4 + name: Switch to light mode + +markdown_extensions: + - def_list + - pymdownx.tasklist: + custom_checkbox: true + - pymdownx.arithmatex: + generic: true + - pymdownx.highlight: + anchor_linenums: true + - pymdownx.inlinehilite + - pymdownx.snippets + - admonition + - footnotes + - pymdownx.details + - pymdownx.superfences + - pymdownx.mark + - attr_list + - md_in_html + +plugins: + - search + +nav: + - Home: + - index.md + - User Guide: + - user_guide/index.md + - Icefabric Manage: user_guide/icefabric_manage.md diff --git a/pyproject.toml b/pyproject.toml index e5aa895..ef140c8 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -24,13 +24,7 @@ dependencies = [] [project.optional-dependencies] docs = [ - "pillow", - "cairosvg", "mkdocs-material", - "mkdocs-git-committers-plugin", - "mkdocs-material-extensions", - "mkdocs-git-authors-plugin", - "mkdocs-git-revision-date-localized-plugin", ] [tool.uv.sources] diff --git a/src/icefabric_manage/README.md b/src/icefabric_manage/README.md index e0d26b6..dbb02f0 100644 --- a/src/icefabric_manage/README.md +++ b/src/icefabric_manage/README.md @@ -1,3 +1,9 @@ # Icefabric Manage A repo which contains scripts for building the icefabric from scratch + +### How to build locally +- The `icefabric_manage` package must be installed through `uv sync` +- There must be parquet files locally to build from. These files are to be downloaded from the NGWPC S3 bucket @ `s3://hydrofabric-data/icefabric/` and placed in `src/icefabric_manage/data/` + +Once you have parquet files locally in the `data/` dir, you can convert them to an icefabric warehouse through a build script in `scripts/` or make your own! diff --git a/src/icefabric_manage/builds/build_hydrofabric.py b/src/icefabric_manage/builds/build_hydrofabric.py new file mode 100644 index 0000000..e438391 --- /dev/null +++ b/src/icefabric_manage/builds/build_hydrofabric.py @@ -0,0 +1,41 @@ +from pathlib import Path + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog + +from icefabric_manage import build + +load_dotenv() + +if __name__ == "__main__": + warehouse_path = Path("/tmp/warehouse") + warehouse_path.mkdir(exist_ok=True) + catalog_settings = { + "type": "sql", + "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", + "warehouse": f"file://{warehouse_path}", + } + + namespace = "hydrofabric" + catalog = load_catalog(namespace, **catalog_settings) + layers = [ + "divide-attributes", + "divides", + "flowpath-attributes-ml", + "flowpath-attributes", + "flowpaths", + "hydrolocations", + "lakes", + "network", + "nexus", + "pois", + ] + for layer in layers: + print(f"building layer: {layer}") + build( + catalog=catalog, + parquet_file=f"s3://hydrofabric-data/icefabric/hydrofabric/{layer}.parquet", + namespace=namespace, + table_name=layer, + ) + print(f"Build successful. Files written into metadata store @ {warehouse_path}") diff --git a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py new file mode 100644 index 0000000..f112418 --- /dev/null +++ b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py @@ -0,0 +1,27 @@ +from pathlib import Path + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog + +from icefabric_manage import build + +load_dotenv() + +if __name__ == "__main__": + warehouse_path = Path("/tmp/warehouse") + warehouse_path.mkdir(exist_ok=True) + catalog_settings = { + "type": "sql", + "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", + "warehouse": f"file://{warehouse_path}", + } + + namespace = "observations" + catalog = load_catalog(namespace, **catalog_settings) + build( + catalog=catalog, + parquet_file="s3://hydrofabric-data/icefabric/observations/usgs_hourly.parquet", + namespace=namespace, + table_name="usgs_hourly", + ) + print(f"Build successful. Files written into metadata store @ {warehouse_path}") diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 4df9884..3a5217c 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -25,6 +25,7 @@ dependencies = [ "s3fs==2025.5.0", "pyarrow==20.0.0", "pyiceberg[sql-sqlite]==0.9.0", + "python-dotenv==1.1.0" ] [build-system] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index ad6f7aa..7d61784 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -1,45 +1,10 @@ """Contains all api functions that can be called outside of the icefabric_manage package""" -from pathlib import Path - import pyarrow.parquet as pq from pyiceberg.catalog import Catalog -def _add_parquet_to_catalog(catalog: Catalog, file_path: Path, table_name: str): - """Adding a parquet file to the hydrofabric catalog - - Parameters - ---------- - catalog : Catalog - A PyIceberg catalog - file_path : Path - The path to the parquet file - table_name : str - The table name that's wanted - - Returns - ------- - Table - A PyIceberg table - - Raises - ------ - FileNotFoundError - The parquet file given doesn't exist - """ - if file_path.exists(): - arrow_table = pq.read_table(file_path) - iceberg_table = catalog.create_table( - f"hydrofabric.{table_name}", - schema=arrow_table.schema, - ) - iceberg_table.append(arrow_table) - else: - raise FileNotFoundError(f"Cannot find file: {file_path}") - - -def build(catalog: Catalog, file_dir: Path) -> None: +def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str) -> None: """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. Parameters @@ -49,15 +14,16 @@ def build(catalog: Catalog, file_dir: Path) -> None: file_dir : Path The path to the parquet files to add into the iceberg catalog """ - if not any(ns == ("hydrofabric",) for ns in catalog.list_namespaces()): - catalog.create_namespace("hydrofabric") - print("Created 'hydrofabric' namespace") - - parquet_files = list(file_dir.glob("*.parquet")) + if not any(ns == (namespace,) for ns in catalog.list_namespaces()): + catalog.create_namespace(namespace) + print(f"Created {namespace} namespace") - for parquet_file in parquet_files: - table_name = parquet_file.stem # Get filename without extension - if catalog.table_exists(f"hydrofabric.{table_name}"): - print(f"Table {table_name} already exists. Skipping build") - else: - _add_parquet_to_catalog(catalog, parquet_file, table_name) + if catalog.table_exists(f"{namespace}.{table_name}"): + print(f"Table {table_name} already exists. Skipping build") + else: + arrow_table = pq.read_table(parquet_file) + iceberg_table = catalog.create_table( + f"{namespace}.{table_name}", + schema=arrow_table.schema, + ) + iceberg_table.append(arrow_table) From facc38c51bc1b18ed9863a2b4bfea7e64d2be060 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Wed, 28 May 2025 09:09:36 -0400 Subject: [PATCH 44/97] Observational Streamflow API (#14) * initial commit: adding all files for building local data warehouses with sql * patch: updating README.md to add pre-commit info * added to the readme of the icefabric_manage * added fast-api app (initial commit) * updated to use s3 backends * updated docs * created API endpoint for streamflow data * updated datetime, removed unused files, added docs * Created a docker container to run the fastapi icefabric locally: * added local tests for the streamflow router, sample data, and moved the main.py file to be in app/ * added info for snapshot in API * finished router tests, updated missing paths and docs * PATCH: updating docker CMD --- .gitignore | 2 + README.md | 22 +- docker/Dockerfile.api | 42 + docker/compose.yaml | 9 + docs/user_guide/icefabric_api.md | 182 + docs/user_guide/icefabric_manage.md | 184 +- docs/user_guide/icefabric_tools.md | 0 docs/user_guide/index.md | 13 +- mkdocs.yml | 2 + pyproject.toml | 14 +- src/icefabric_api/app/__init__.py | 0 src/icefabric_api/app/conftest.py | 23 + src/icefabric_api/app/main.py | 40 + src/icefabric_api/app/routers/__init__.py | 0 .../streamflow_observations/__init__.py | 0 .../streamflow_observations/conftest.py | 18 + .../routers/streamflow_observations/router.py | 343 ++ .../streamflow_observations/test_router.py | 86 + src/icefabric_api/app/test_main.py | 4 + src/icefabric_api/pyproject.toml | 11 + ...ta_from_20211231_1400_to_20220101_1400.csv | 26 + ...rom_20211231_1400_to_20220101_1400.parquet | Bin 0 -> 3415 bytes src/icefabric_manage/pyproject.toml | 1 - .../scripts/build_hydrofabric.py | 41 + .../build_usgs_streamflow_observations.py | 27 + src/icefabric_tools/pyproject.toml | 1 - uv.lock | 3114 +++++++++-------- 27 files changed, 2642 insertions(+), 1563 deletions(-) create mode 100644 docker/Dockerfile.api create mode 100644 docker/compose.yaml create mode 100644 docs/user_guide/icefabric_api.md create mode 100644 docs/user_guide/icefabric_tools.md create mode 100644 src/icefabric_api/app/__init__.py create mode 100644 src/icefabric_api/app/conftest.py create mode 100644 src/icefabric_api/app/main.py create mode 100644 src/icefabric_api/app/routers/__init__.py create mode 100644 src/icefabric_api/app/routers/streamflow_observations/__init__.py create mode 100644 src/icefabric_api/app/routers/streamflow_observations/conftest.py create mode 100644 src/icefabric_api/app/routers/streamflow_observations/router.py create mode 100644 src/icefabric_api/app/routers/streamflow_observations/test_router.py create mode 100644 src/icefabric_api/app/test_main.py create mode 100644 src/icefabric_api/pyproject.toml create mode 100644 src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv create mode 100644 src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet create mode 100644 src/icefabric_manage/scripts/build_hydrofabric.py create mode 100644 src/icefabric_manage/scripts/build_usgs_streamflow_observations.py diff --git a/.gitignore b/.gitignore index f9443dd..663065c 100644 --- a/.gitignore +++ b/.gitignore @@ -174,6 +174,8 @@ cython_debug/ # PyPI configuration file .pypirc +Pipfile + .qodo _version.py data/ diff --git a/README.md b/README.md index dc6db8e..3c37794 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,25 @@ source .venv/bin/activate uv sync ``` +### Running the API locally +To run the API locally, ensure your `.env` file in your project root has the right credentials, then run +```sh +uv pip install -e src/icefabric_api +cd src/icefabric_api +python -m app.main +``` +This should spin up the API services + +### Building the API through Docker +To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run +```sh +docker compose -f docker/compose.yaml build --no-cache +docker compose -f docker/compose.yaml up +``` +This should spin up the API services +``` + + ### Development To ensure that icefabric follows the specified structure, be sure to install the local dev dependencies and run `pre-commit install` @@ -22,5 +41,6 @@ To ensure that icefabric follows the specified structure, be sure to install the To build the user guide documentation for Icefabric locally, run the following commands: ```sh uv pip install ".[docs]" -mkdocs serve +mkdocs serve -a localhost:8080 ``` +Docs will be spun up at localhost:8080/ diff --git a/docker/Dockerfile.api b/docker/Dockerfile.api new file mode 100644 index 0000000..31c449f --- /dev/null +++ b/docker/Dockerfile.api @@ -0,0 +1,42 @@ +FROM python:3.12-slim + +# Install system dependencies including GDAL +RUN apt-get update && apt-get install -y \ + curl \ + gdal-bin \ + libgdal-dev \ + gcc \ + g++ \ + && rm -rf /var/lib/apt/lists/* + +# Set GDAL environment variables +ENV GDAL_CONFIG=/usr/bin/gdal-config +ENV CPLUS_INCLUDE_PATH=/usr/include/gdal +ENV C_INCLUDE_PATH=/usr/include/gdal + +# Install curl for UV installation +RUN apt-get update && apt-get install -y curl + +# Install UV properly by copying from the official image +COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ + +# Set the working directory +WORKDIR /app + +# Copy the content of the build context to /app +COPY ../ /app + +RUN uv venv +ENV PATH="/app/.venv/bin:$PATH" + +# Install the package in development mode +RUN uv sync +RUN uv pip install -e src/icefabric_api + +WORKDIR /app/src/icefabric_manage/scripts +RUN python build_hydrofabric.py +RUN python build_usgs_streamflow_observations.py + +# Run the API +WORKDIR /app/src/icefabric_api +CMD ["python", "-m", "app.main"] diff --git a/docker/compose.yaml b/docker/compose.yaml new file mode 100644 index 0000000..19cd5b7 --- /dev/null +++ b/docker/compose.yaml @@ -0,0 +1,9 @@ +services: + myapp: + build: + context: ../ + dockerfile: docker/Dockerfile.api + ports: + - "8000:8000" + env_file: + - ../.env diff --git a/docs/user_guide/icefabric_api.md b/docs/user_guide/icefabric_api.md new file mode 100644 index 0000000..ed94598 --- /dev/null +++ b/docs/user_guide/icefabric_api.md @@ -0,0 +1,182 @@ +# Icefabric API Guide + +## Overview + +The Icefabric API is a FastAPI-based service that provides access to EDFS data stored in Apache Iceberg format. The API offers multiple data export formats and comprehensive metadata endpoints for hydrology and water resources applications. + +## Architecture + +The API consists of several key components: + +1. **Main Application** (`app/main.py`) - FastAPI application with health checks and router configuration +2. **Data Routers** - Handles all data endpoints. Currently only working with streamflow observations +3. **Apache Iceberg Backend** - SQLite-backed catalog stored in `/tmp/warehouse` built using `icefabric_manage` + +### Running the API locally +To run the API locally, ensure your `.env` file in your project root has the right credentials, then run +```sh +uv pip install -e src/icefabric_api +cd src/icefabric_api +python -m app.main +``` +This should spin up the API services + +### Building the API through Docker +To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run +```sh +docker compose -f docker/compose.yaml build --no-cache +docker compose -f docker/compose.yaml up +``` +This should spin up the API services + +## How It Works + +### Data Flow + +1. **Request Processing** - Validates data source and identifier parameters +2. **Data Filtering** - Applies optional date range filters to Iceberg tables +3. **Format Conversion** - Exports data in requested format (CSV/Parquet) +4. **Response Generation** - Returns data with appropriate headers and metadata + +### Supported Data Sources + +#### Observations +Currently supports: +- **USGS** - United States Geological Survey hourly streamflow data + +!!! note "Data Storage" + All data is stored as Apache Iceberg tables in a SQLite-backed catalog locally built at `/tmp/warehouse/pyiceberg_catalog.db` + +## Usage Examples + +### Python Client + +```python +import requests +import pandas as pd +from io import StringIO, BytesIO + +# Base URL +base_url = "http://localhost:8000/v1/streamflow_observations" + +# Get station information +response = requests.get(f"{base_url}/usgs/info", params={"identifier": "01031500"}) +info = response.json() +print(f"Station has {info['total_records']} records") + +# Download CSV data +csv_response = requests.get( + f"{base_url}/usgs/csv", + params={ + "identifier": "01031500", + "start_date": "2023-01-01T00:00:00", + "end_date": "2023-01-31T23:59:59" + } +) +df_csv = pd.read_csv(StringIO(csv_response.text)) + +# Download Parquet data (more efficient for large datasets) +parquet_response = requests.get( + f"{base_url}/usgs/parquet", + params={ + "identifier": "01031500", + "start_date": "2023-01-01T00:00:00" + } +) +df_parquet = pd.read_parquet(BytesIO(parquet_response.content)) +``` + +## Performance Considerations + +### Data Format Recommendations + +| Dataset Size | Recommended Format | Reason | +|-------------|-------------------|---------| +| < 50,000 records | CSV | Simple, widely supported | +| > 50,000 records | Parquet | Better compression, faster processing | +| > 200,000 records | Parquet + date filters | Reduced data transfer | + +## Configuration + +### Catalog Settings + +The default catalog is pointing to a local instance. To build this catalog, one must use the build scripts in `icefabric_manage` + +```python +catalog_settings = { + "type": "sql", + "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", + "warehouse": "file:///tmp/warehouse", +} +``` + +## Development + +### Running the API + +```bash +# Install dependencies +uv sync + +# Start development server +python src/icefabric_api/app/main.py +``` + +### Adding New Data Sources + +To add a new data source, update the configuration in your router: + +Below is an example for the observations router + +```python +class DataSource(str, Enum): + USGS = "usgs" + NEW_SOURCE = "new_source" # Add new source + +# Add configuration +DATA_SOURCE_CONFIG = { + DataSource.NEW_SOURCE: { + "namespace": "observations", + "table": "new_source_table", + "time_column": "timestamp", + "units": "m³/s", + "description": "New data source description", + }, +} +``` + +## API Documentation + +### Interactive Documentation + +The API provides interactive documentation at: + +- **Swagger UI**: `http://localhost:8000/docs` +- **ReDoc**: `http://localhost:8000/redoc` + +### OpenAPI Schema + +Access the OpenAPI schema at: `http://localhost:8000/openapi.json` + + +### Verification + +Test your API setup: + +```bash + +# List available sources +curl http://localhost:8000/v1/streamflow_observations/sources + +# Test with a known identifier +curl "http://localhost:8000/v1/streamflow_observations/usgs/available?limit=1" + +# Get a CSV reponse +curl "http://localhost:8000/v1/streamflow_observations/usgs/csv?identifier=01010000&include_headers=true" + +# Fitler based on timestamps +curl "http://localhost:8000/v1/streamflow_observations/usgs/csv?identifier=01010000&start_date=2021-12-31T14%3A00%3A00&end_date=2022-01-01T14%3A00%3A00&include_headers=true" + +# Get a Parquet Response +curl "http://localhost:8000/v1/streamflow_observations/usgs/parquet\?identifier\=01010000\&start_date\=2021-12-31T14%3A00%3A00\&end_date\=2022-01-01T14%3A00%3A00" -o "output.parquet" +``` diff --git a/docs/user_guide/icefabric_manage.md b/docs/user_guide/icefabric_manage.md index 178a9b3..2199631 100644 --- a/docs/user_guide/icefabric_manage.md +++ b/docs/user_guide/icefabric_manage.md @@ -2,7 +2,7 @@ ## Overview -IceFabric Manage is a Python package that simplifies building Apache Iceberg catalogs from Parquet files +IceFabric Manage is a Python package that simplifies building Apache Iceberg catalogs from Parquet files stored on S3 or locally. ## Architecture @@ -14,19 +14,19 @@ The system consists of two main components: ## How It Works !!! info "Build Process Overview" - The system automatically converts Parquet files into queryable Iceberg tables through a simple directory scan and conversion process. + The system converts individual Parquet files (local or S3) into queryable Iceberg tables through a simple file-by-file conversion process. ### The Build Process -1. **Create Catalog** - Sets up a SQLite-backed Apache Iceberg catalog -2. **Scan Directory** - Finds all `.parquet` files in the specified data directory -3. **Create Tables** - For each Parquet file, creates a corresponding Iceberg table +1. **Create Catalog** - Sets up a SQLite-backed Apache Iceberg catalog in `/tmp/warehouse` +2. **Create Namespace** - Creates the specified namespace if it doesn't exist +3. **Create Tables** - For each specified Parquet file, creates a corresponding Iceberg table 4. **Populate Data** - Appends the Parquet data to the newly created Iceberg tables ### File Structure -!!! note "File Hierarchy" - The below files only show the hydrofabric. This logic can be extended to any tabular data managed by Apache Iceberg. +!!! note "Project Structure" + The warehouse is now stored in `/tmp/warehouse` and supports both S3 and local Parquet files. ```text project/ @@ -48,39 +48,116 @@ project/ !!! warning "Important Requirements" - The `icefabric_manage` package must be installed through `uv sync` - - There must be parquet files locally to build from. These files are to be downloaded from the NGWPC S3 bucket @ `s3://hydrofabric-data/icefabric/` and placed in `src/icefabric_manage/data/` + - AWS credentials configured for S3 access (if using S3 files) + - Environment variables loaded via `.env` file -### Running the Build +### Running the Build Scripts -To build a specific table, one must be working/CD into the `scripts/` directory +To build the hydrofabric dataset, run from the `scripts/` directory: ```bash python build_hydrofabric.py ``` +To build USGS streamflow observations: +```bash +python build_usgs_streamflow_observations.py +``` + !!! success "Expected Output" ```text - Created hydrofabric namespace + building layer: divide-attributes + building layer: divides + building layer: flowpath-attributes-ml + ... Build successful ``` ### What Happens During Build -1. **Warehouse Setup** - Creates `../data/warehouse/` directory if it doesn't exist +1. **Warehouse Setup** - Creates `/tmp/warehouse/` directory if it doesn't exist 2. **Catalog Configuration** - Sets up SQLite catalog with file-based storage -3. **Namespace Creation** - Creates the `hydrofabric` namespace if it doesn't exist -4. **Table Creation** - For each `.parquet` file in `../data/hydrofabric/`: - - Uses the filename (without extension) as the table name - - Reads the Parquet schema and creates matching Iceberg table +3. **Namespace Creation** - Creates the specified namespace if it doesn't exist +4. **Table Creation** - For each specified Parquet file: + - Reads the Parquet file (from S3 or local path) + - Creates an Iceberg table with matching schema - Appends all data from the Parquet file to the Iceberg table - Skips files if tables already exist +## API Reference + +### `build(catalog, parquet_file, namespace, table_name)` + +!!! function "Main Build Function" + Creates an Iceberg table from a single Parquet file (local or S3). + +**Parameters:** + +| Parameter | Type | Description | +|-----------|------|-------------| +| `catalog` | `Catalog` | PyIceberg catalog instance | +| `parquet_file` | `str` | Path to Parquet file (local path or S3 URL) | +| `namespace` | `str` | Iceberg namespace to create the table in | +| `table_name` | `str` | Name for the new table | + +**Behavior:** +- Creates namespace if it doesn't exist +- Reads Parquet file schema using PyArrow +- Creates Iceberg table with matching schema +- Appends all data from the Parquet file +- Skips table creation if table already exists + +**Example Usage:** +```python +from pyiceberg.catalog import load_catalog +from icefabric_manage import build + +catalog = load_catalog("hydrofabric", **catalog_settings) +build( + catalog=catalog, + parquet_file="s3://hydrofabric-data/icefabric/hydrofabric/divides.parquet", + namespace="hydrofabric", + table_name="divides" +) +``` + +## Build Scripts + +### Hydrofabric Build Script + +The `build_hydrofabric.py` script processes multiple hydrofabric layers: + +```python +layers = [ + "divide-attributes", + "divides", + "flowpath-attributes-ml", + "flowpath-attributes", + "flowpaths", + "hydrolocations", + "lakes", + "network", + "nexus", + "pois" +] +``` + +Each layer is read from `s3://hydrofabric-data/icefabric/hydrofabric/{layer}.parquet` and created as a table in the `hydrofabric` namespace. + +### USGS Streamflow Observations Build Script + +The `build_usgs_streamflow_observations.py` script processes USGS hourly streamflow data: +- Source: `s3://hydrofabric-data/icefabric/streamflow_observations/usgs_hourly.parquet` +- Namespace: `observations` +- Table: `usgs_hourly` + ## Configuration ### Catalog Settings -The build script uses these default settings: +Both build scripts use these default settings: ```python +warehouse_path = Path("/tmp/warehouse") catalog_settings = { "type": "sql", # SQLite-backed catalog "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", # Database location @@ -88,6 +165,79 @@ catalog_settings = { } ``` +### Data Sources + +!!! note "Supported File Locations" + - **S3 URLs**: `s3://bucket-name/path/to/file.parquet` + - **Local paths**: `/path/to/local/file.parquet` + - **Relative paths**: `./data/file.parquet` + +!!! danger "Common Issues" + - **S3 Access** - Ensure AWS credentials are properly configured + - **Nanosecond timestamps** - Convert to microseconds before building + - **Invalid schemas** - Verify Parquet files can be read with `pyarrow.parquet.read_table()` + +## Customization + +### Adding New Datasets + +Create a new build script following this pattern: + +```python +from pathlib import Path +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog +from icefabric_manage import build + +load_dotenv() + +if __name__ == "__main__": + warehouse_path = Path("/tmp/warehouse") + warehouse_path.mkdir(exist_ok=True) + catalog_settings = { + "type": "sql", + "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", + "warehouse": f"file://{warehouse_path}", + } + + namespace = "your_namespace" + catalog = load_catalog(namespace, **catalog_settings) + + build( + catalog=catalog, + parquet_file="path/to/your/file.parquet", + namespace=namespace, + table_name="your_table_name", + ) + print("Build successful") +``` + +### Changing Warehouse Location + +Modify the `warehouse_path` in your build script: + +```python +warehouse_path = Path("/your/custom/warehouse/path") +``` + +### Alternative Catalog Backend + +Replace SQLite with other supported backends: + +```python +catalog_settings = { + "type": "sql", + "uri": "postgresql://user:pass@host:port/db", + "warehouse": "s3://your-bucket/warehouse/", +} +``` + +## Best Practices + +!!! tip "Recommendations" + 1. **Table Naming** - Use descriptive table names that reflect the data content + 2. **Data Preparation** - Ensure timestamps are properly formatted before building + In most functions, it's predefined to the user's `/tmp` dir since it's the same per each user's machine ## Customization diff --git a/docs/user_guide/icefabric_tools.md b/docs/user_guide/icefabric_tools.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md index cf57a98..3e66a0a 100644 --- a/docs/user_guide/index.md +++ b/docs/user_guide/index.md @@ -4,17 +4,20 @@ ![A diagram describing the icefabric mission](../img/icefabric_mission.png) -The idea for the icefabric came from the need to version control datasets for the National Water Model 4.0. There were many different file formats, and hydrofabric versions, but the need for an [Apache Iceberg](https://iceberg.apache.org/) style backend was realized. The name itself, icefabric, is a reference to this. +The idea for the icefabric came from the need to version control datasets for the National Water Model 4.0. There were many different file formats, and hydrofabric versions, but the need for an [Apache Iceberg](https://iceberg.apache.org/) style backend was realized. The name itself, icefabric, is a reference to this. -Thus, this repo is a workspace for all icefabric assembly, tranformation, and dissemination. +Thus, this repo is a workspace for all icefabric assembly, tranformation, and dissemination. The repo is structured in the following workspace packages: -### Icefabric Manage +*Icefabric Manage:* + The repo for building a local version of the icefabric and updating cloud stores -### Icefabric Tools +*Icefabric Tools:* + The repo for all compute services built on the icefabric -### Icefabric API +*Icefabric API:* + The interface between the icefabric and outside entities diff --git a/mkdocs.yml b/mkdocs.yml index 0e4fee3..8f176e3 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -51,3 +51,5 @@ nav: - User Guide: - user_guide/index.md - Icefabric Manage: user_guide/icefabric_manage.md + - Icefabric Tools: user_guide/icefabric_tools.md + - Icefabric API: user_guide/icefabric_api.md diff --git a/pyproject.toml b/pyproject.toml index ef140c8..709ad31 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -28,11 +28,16 @@ docs = [ ] [tool.uv.sources] -icefabric_tools = { workspace = true } +icefabric_api = { workspace = true } icefabric_manage = { workspace = true } +icefabric_tools = { workspace = true } [tool.uv.workspace] -members = ["src/icefabric_manage", "src/icefabric_tools"] +members = [ + "src/icefabric_api", + "src/icefabric_manage", + "src/icefabric_tools", +] [tool.uv] dev-dependencies = [ @@ -43,10 +48,11 @@ dev-dependencies = [ "ruff==0.11.0", "black==25.1.0", "mypy==1.15.0", - "icefabric_manage", - "icefabric_tools", "examples", "boto3", + "icefabric_api", + "icefabric_manage", + "icefabric_tools", ] package = false diff --git a/src/icefabric_api/app/__init__.py b/src/icefabric_api/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/app/conftest.py b/src/icefabric_api/app/conftest.py new file mode 100644 index 0000000..0dc546f --- /dev/null +++ b/src/icefabric_api/app/conftest.py @@ -0,0 +1,23 @@ +import pytest +from fastapi.testclient import TestClient + +from app.main import app + + +@pytest.fixture(scope="session") +def client(): + """Create a test client for the FastAPI app.""" + return TestClient(app) + + +@pytest.fixture(scope="function") +def fresh_client(): + """Create a fresh test client for each test function.""" + return TestClient(app) + + +def pytest_configure(config): + """Configure pytest markers.""" + config.addinivalue_line("markers", "performance: marks tests as performance tests") + config.addinivalue_line("markers", "integration: marks tests as integration tests") + config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py new file mode 100644 index 0000000..216412f --- /dev/null +++ b/src/icefabric_api/app/main.py @@ -0,0 +1,40 @@ +import uvicorn +from fastapi import FastAPI, status +from pydantic import BaseModel + +from app.routers.streamflow_observations.router import api_router as streamflow_api_router + +app = FastAPI( + title="Icefabric API", + description="API for accessing iceberg or icechunk data from EDFS services", + version="1.0.0", + docs_url="/docs", + redoc_url="/redoc", +) + + +class HealthCheck(BaseModel): + """Response model to validate and return when performing a health check.""" + + status: str = "OK" + + +# Include routers +app.include_router(streamflow_api_router, prefix="/v1") + + +@app.head( + "/health", + tags=["Health"], + summary="Perform a Health Check", + response_description="Return HTTP Status Code 200 (OK)", + status_code=status.HTTP_200_OK, + response_model=HealthCheck, +) +def get_health() -> HealthCheck: + """Returns a HeatlhCheck for the server""" + return HealthCheck(status="OK") + + +if __name__ == "__main__": + uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="info") diff --git a/src/icefabric_api/app/routers/__init__.py b/src/icefabric_api/app/routers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/app/routers/streamflow_observations/__init__.py b/src/icefabric_api/app/routers/streamflow_observations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/app/routers/streamflow_observations/conftest.py b/src/icefabric_api/app/routers/streamflow_observations/conftest.py new file mode 100644 index 0000000..ea8b020 --- /dev/null +++ b/src/icefabric_api/app/routers/streamflow_observations/conftest.py @@ -0,0 +1,18 @@ +from pathlib import Path + +import pandas as pd +import pytest + + +@pytest.fixture +def local_usgs_streamflow_csv(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + return pd.read_csv(Path.cwd() / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv") + + +@pytest.fixture +def local_usgs_streamflow_parquet(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + return pd.read_parquet( + Path.cwd() / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet" + ) diff --git a/src/icefabric_api/app/routers/streamflow_observations/router.py b/src/icefabric_api/app/routers/streamflow_observations/router.py new file mode 100644 index 0000000..e2c3055 --- /dev/null +++ b/src/icefabric_api/app/routers/streamflow_observations/router.py @@ -0,0 +1,343 @@ +import io +from datetime import datetime +from enum import Enum + +from fastapi import APIRouter, HTTPException, Path, Query +from fastapi.responses import Response +from pyiceberg.catalog import load_catalog + +api_router = APIRouter(prefix="/streamflow_observations") + +catalog_settings: dict = { + "type": "sql", + "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", + "warehouse": "file:///tmp/warehouse", +} + + +# TODO add other gauges used by NWM +class DataSource(str, Enum): + """All observational streamflow sources""" + + USGS = "usgs" + + +# Configuration for each data source +DATA_SOURCE_CONFIG = { + DataSource.USGS: { + "namespace": "observations", + "table": "usgs_hourly", + "time_column": "time", + "units": "cms", + "description": "USGS stream gauge hourly data", + }, +} + + +def get_catalog_and_table(data_source: DataSource): + """Get catalog and table for a given data source""" + config = DATA_SOURCE_CONFIG[data_source] + catalog = load_catalog(config["namespace"], **catalog_settings) + table = catalog.load_table(f"{config['namespace']}.{config['table']}") + return catalog, table, config + + +def validate_identifier(data_source: DataSource, identifier: str): + """Check if identifier exists in the dataset""" + catalog, table, config = get_catalog_and_table(data_source) + schema = table.schema() + available_columns = [field.name for field in schema.fields] + + if identifier not in available_columns: + available_ids = [col for col in available_columns if col != config["time_column"]] + raise HTTPException( + status_code=404, + detail=f"ID '{identifier}' not found in {data_source} dataset. Available IDs: {available_ids[:10]}...", + ) + + return catalog, table, config + + +@api_router.get("/{data_source}/available") +async def get_available_identifiers( + data_source: DataSource = Path(..., description="Data source type"), + limit: int = Query(100, description="Maximum number of IDs to return"), +): + """ + Get list of available identifiers for a data source + + Examples + -------- + GET /data/usgs/available + GET /data/usgs/available?limit=50 + """ + try: + _, table, config = get_catalog_and_table(data_source) + + schema = table.schema() + # Get all columns except time column + identifier_columns = [field.name for field in schema.fields if field.name != config["time_column"]] + + return { + "data_source": data_source.value, + "description": config["description"], + "total_identifiers": len(identifier_columns), + "identifiers": sorted(identifier_columns)[:limit], + "showing": min(limit, len(identifier_columns)), + "units": config["units"], + } + + except HTTPException as e: + raise HTTPException(status_code=500, detail=str(e)) from e + + +@api_router.get("/{data_source}/csv") +async def get_data_csv( + data_source: DataSource = Path(..., description="Data source type"), + identifier: str = Query( + ..., + description="Station/gauge ID", + examples=["01010000"], + openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, + ), + start_date: datetime | None = Query( + None, + description="Start Date", + openapi_examples={"sample_date": {"summary": "Sample Date", "value": "2021-12-31T14:00:00"}}, + ), + end_date: datetime | None = Query( + None, + description="End Date", + openapi_examples={"sample_date": {"summary": "Sample Date", "value": "2022-01-01T14:00:00"}}, + ), + include_headers: bool = Query(True, description="Include CSV headers"), +): + """ + Get data as CSV file for any data source + + Examples + -------- + GET /data/usgs_hourly/csv?identifier=01031500 + """ + try: + _, table, config = validate_identifier(data_source, identifier) + scan_builder = table.scan(selected_fields=[config["time_column"], identifier]) + if start_date: + scan_builder = scan_builder.filter(f"{config['time_column']} >= '{start_date.isoformat()}'") + if end_date: + scan_builder = scan_builder.filter(f"{config['time_column']} <= '{end_date.isoformat()}'") + + df = scan_builder.to_pandas() + + if df.empty: + return Response( + content="Error: No data available for the specified parameters", + status_code=404, + media_type="text/plain", + ) + + df = df.rename(columns={config["time_column"]: "time", identifier: "q_cms"}) + + csv_buffer = io.StringIO() + df.to_csv(csv_buffer, index=False, header=include_headers) + csv_data = csv_buffer.getvalue() + + filename_parts = [data_source.value, identifier, "data"] + if start_date: + filename_parts.append(f"from_{start_date.strftime('%Y%m%d_%H%M')}") + if end_date: + filename_parts.append(f"to_{end_date.strftime('%Y%m%d_%H%M')}") + filename = "_".join(filename_parts) + ".csv" + + return Response( + content=csv_data, + media_type="text/csv", + headers={ + "Content-Disposition": f"attachment; filename={filename}", + "X-Total-Records": str(len(df)), + "X-Data-Source": data_source.value, + "X-Units": config["units"], + }, + ) + + except HTTPException: + raise + + +@api_router.get("/{data_source}/parquet") +async def get_data_parquet( + data_source: DataSource = Path(..., description="Data source type"), + identifier: str = Query( + ..., + description="Station/gauge ID", + examples=["01010000"], + openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, + ), + start_date: datetime | None = Query( + None, + description="Start Date", + openapi_examples={"sample_date": {"summary": "Sample Date", "value": "2021-12-31T14:00:00"}}, + ), + end_date: datetime | None = Query( + None, + description="End Date", + openapi_examples={"sample_date": {"summary": "Sample Date", "value": "2022-01-01T14:00:00"}}, + ), +): + """ + Get data as Parquet file for any data source + + Examples + -------- + GET /data/usgs/parquet?identifier=01031500 + GET /data/usgs/parquet?identifier=01031500&start_date=2023-01-01T00:00:00&compression=gzip + """ + try: + _, table, config = validate_identifier(data_source, identifier) + + scan_builder = table.scan(selected_fields=[config["time_column"], identifier]) + + if start_date: + scan_builder = scan_builder.filter(f"{config['time_column']} >= '{start_date.isoformat()}'") + if end_date: + scan_builder = scan_builder.filter(f"{config['time_column']} <= '{end_date.isoformat()}'") + + df = scan_builder.to_pandas() + if df.empty: + raise HTTPException(status_code=404, detail="No data available for the specified parameters") + + # Prepare output with metadata + df = df.rename(columns={config["time_column"]: "time", identifier: "q_cms"}).copy() + df["data_source"] = data_source.value + df["identifier"] = identifier + df["units"] = config["units"] + + parquet_buffer = io.BytesIO() + df.to_parquet(parquet_buffer, index=False, compression="lz4", engine="pyarrow") + parquet_data = parquet_buffer.getvalue() + + # Fix filename generation with proper datetime formatting + filename_parts = [data_source.value, identifier, "data"] + if start_date: + filename_parts.append(f"from_{start_date.strftime('%Y%m%d_%H%M')}") + if end_date: + filename_parts.append(f"to_{end_date.strftime('%Y%m%d_%H%M')}") + filename = "_".join(filename_parts) + ".parquet" + + return Response( + content=parquet_data, + media_type="application/octet-stream", + headers={ + "Content-Disposition": f"attachment; filename={filename}", + "X-Total-Records": str(len(df)), + "X-Data-Source": data_source.value, + "X-Compression": "lz4", + "X-Units": config["units"], + }, + ) + + except HTTPException: + raise + except ValueError as e: + Response(content=f"Error: {str(e)}", status_code=500, media_type="text/plain") + + +@api_router.get("/{data_source}/info") +async def get_data_source_info( + data_source: DataSource = Path(..., description="Data source type"), +): + """ + Get information about dataset size and recommendations + + Examples + -------- + GET /data/usgs/info + """ + try: + _, table, config = get_catalog_and_table(data_source) + + df = table.inspect.snapshots().to_pandas() + + # Converting to an int rather than a numpy.int64 + latest_snapshot_id = int(df.loc[df["committed_at"].idxmax(), "snapshot_id"]) + snapshots = table.inspect.snapshots().to_pydict() + + snapshots = dict(snapshots) + # Converting to an int rather than a numpy.int64 + if "snapshot_id" in snapshots and snapshots["snapshot_id"]: + snapshots["snapshot_id"] = [int(sid) for sid in snapshots["snapshot_id"]] + + return { + "data_source": data_source.value, + "latest_snapshot": latest_snapshot_id, + "description": config["description"], + "units": config["units"], + "snapshots": snapshots, + } + except HTTPException as e: + raise HTTPException(status_code=500, detail=str(e)) from e + + +@api_router.get("/{data_source}/{identifier}/info") +async def get_data_info( + data_source: DataSource = Path(..., description="Data source type"), + identifier: str = Path(..., description="Station/gauge ID", examples=["01031500"]), +): + """ + Get information about dataset size and recommendations + + Examples + -------- + GET /data/usgs/01031500/info + """ + try: + _, table, config = validate_identifier(data_source, identifier) + + # Get data info + df = table.scan(selected_fields=[config["time_column"], identifier]).to_pandas() + df_clean = df.dropna(subset=[identifier]) # Droping NA to determine full date range + + return { + "data_source": data_source.value, + "identifier": identifier, + "description": config["description"], + "total_records": len(df_clean), + "units": config["units"], + "date_range": { + "start": df_clean[config["time_column"]].min().isoformat() if not df_clean.empty else None, + "end": df_clean[config["time_column"]].max().isoformat() if not df_clean.empty else None, + }, + "estimated_sizes": { + "csv_mb": round(len(df_clean) * 25 / 1024 / 1024, 2), + "parquet_mb": round(len(df_clean) * 8 / 1024 / 1024, 2), + }, + } + + except HTTPException: + raise + except ValueError as e: + Response(content=f"Error: {str(e)}", status_code=500, media_type="text/plain") + + +@api_router.get("/sources") +async def get_available_sources(): + """ + Get list of all available data sources + + Examples + -------- + GET /data/sources + """ + sources = [] + for source, config in DATA_SOURCE_CONFIG.items(): + sources.append( + { + "name": source.value, + "description": config["description"], + "namespace": config["namespace"], + "table": config["table"], + "units": config["units"], + } + ) + + return {"available_sources": sources, "total_sources": len(sources)} diff --git a/src/icefabric_api/app/routers/streamflow_observations/test_router.py b/src/icefabric_api/app/routers/streamflow_observations/test_router.py new file mode 100644 index 0000000..dcd91ad --- /dev/null +++ b/src/icefabric_api/app/routers/streamflow_observations/test_router.py @@ -0,0 +1,86 @@ +from io import BytesIO, StringIO + +import pandas as pd +import pytest + + +@pytest.mark.integration +def test_sources_endpoint(client): + """Test: GET /streamflow_observations/sources""" + response = client.get("/v1/streamflow_observations/sources") + assert response.status_code == 200 + + data = response.json() + assert "available_sources" in data + assert "total_sources" in data + + sources = data["available_sources"] + usgs_source = next((s for s in sources if s["name"] == "usgs"), None) + assert usgs_source is not None + assert usgs_source["description"] == "USGS stream gauge hourly data" + assert usgs_source["units"] == "cms" + + +@pytest.mark.integration +def test_available_identifiers_example(client): + """Test: GET /streamflow_observations/usgs/available""" + response = client.get("/v1/streamflow_observations/usgs/available") + + assert response.status_code in [200, 500] # Will return if the PyIceberg DB exists in the /tmp/ dir + + if response.status_code == 200: + data = response.json() + assert "data_source" in data + assert "identifiers" in data + assert "total_identifiers" in data + assert data["data_source"] == "usgs" + + +@pytest.mark.integration +def test_available_identifiers_with_limit_example(client): + """Test: GET /streamflow_observations/usgs/available?limit=50""" + response = client.get("/v1/streamflow_observations/usgs/available?limit=50") + + assert response.status_code in [200, 500] + + if response.status_code == 200: + data = response.json() + assert data["showing"] <= 50 + + +@pytest.mark.integration +def test_csv_generation(client, local_usgs_streamflow_csv): + """Test: GET /streamflow_observations/usgs/csv""" + response = client.get( + "/v1/streamflow_observations/usgs/csv", + params={ + "identifier": "01010000", + "start_date": "2021-12-31T14:00:00", + "end_date": "2022-01-01T14:00:00", + }, + ) + + assert response.status_code in [200, 500] + + if response.status_code == 200: + df = pd.read_csv(StringIO(response.text)) + assert local_usgs_streamflow_csv.equals(df) + + +@pytest.mark.integration +def test_parquet_generation(client, local_usgs_streamflow_parquet): + """Test: GET /streamflow_observations/usgs/parquet""" + response = client.get( + "/v1/streamflow_observations/usgs/parquet", + params={ + "identifier": "01010000", + "start_date": "2021-12-31T14:00:00", + "end_date": "2022-01-01T14:00:00", + }, + ) + + assert response.status_code in [200, 500] + + if response.status_code == 200: + df = pd.read_parquet(BytesIO(response.content)) + assert local_usgs_streamflow_parquet.equals(df) diff --git a/src/icefabric_api/app/test_main.py b/src/icefabric_api/app/test_main.py new file mode 100644 index 0000000..ced3427 --- /dev/null +++ b/src/icefabric_api/app/test_main.py @@ -0,0 +1,4 @@ +def test_health_with_fixture(client): + """Test using the client fixture from conftest.py.""" + response = client.head("/health") + assert response.status_code == 200 diff --git a/src/icefabric_api/pyproject.toml b/src/icefabric_api/pyproject.toml new file mode 100644 index 0000000..b0970da --- /dev/null +++ b/src/icefabric_api/pyproject.toml @@ -0,0 +1,11 @@ +[project] +name = "icefabric-api" +version = "2025.5.0" +description = "A FastAPI API for querying apache iceberg tables" +readme = "README.md" +requires-python = ">=3.11, <3.13" +dependencies = [ + "fastapi[standard]>=0.115.12", + "pydantic==2.11.5", + "pydantic-settings==2.9.1", +] diff --git a/src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv b/src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv new file mode 100644 index 0000000..2853a97 --- /dev/null +++ b/src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv @@ -0,0 +1,26 @@ +q_cms,time +17.698,2021-12-31 14:00:00 +17.698,2021-12-31 15:00:00 +17.698,2021-12-31 16:00:00 +17.698,2021-12-31 17:00:00 +17.698,2021-12-31 18:00:00 +17.698,2021-12-31 19:00:00 +17.698,2021-12-31 20:00:00 +17.698,2021-12-31 21:00:00 +17.414831,2021-12-31 22:00:00 +17.414831,2021-12-31 23:00:00 +17.414831,2022-01-01 00:00:00 +17.414831,2022-01-01 01:00:00 +17.414831,2022-01-01 02:00:00 +17.414831,2022-01-01 03:00:00 +17.414831,2022-01-01 04:00:00 +17.414831,2022-01-01 05:00:00 +17.414831,2022-01-01 06:00:00 +17.414831,2022-01-01 07:00:00 +17.414831,2022-01-01 08:00:00 +17.414831,2022-01-01 09:00:00 +17.15998,2022-01-01 10:00:00 +17.15998,2022-01-01 11:00:00 +17.15998,2022-01-01 12:00:00 +17.15998,2022-01-01 13:00:00 +17.15998,2022-01-01 14:00:00 diff --git a/src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet b/src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet new file mode 100644 index 0000000000000000000000000000000000000000..bf8419c13a9d8823fca3b221b73ecb72083ae3db GIT binary patch literal 3415 zcmcgvO>7%Q6ka=yaoe=AqOMt2J{XHy1=3<~;!;e#6r8{4g2;=i^E`Q==4h>+I_n(QD~f&^ytW5KYlLXxA9c(soc=U5o{5 z84K1qs9k+4ilXkAVPH*WJH?nbn*sIG5PjF20B4MQhx%pW%Be4hDeCHNrDmfJ9Xb)N z!}Q%xPTfZNFPysvi?IhkY1pYlciw+%0ap4!y$KWZMZ5*mN76%WFns3MpJ8FS_*n-G zuesk{gjHgB@mZMeMKh;iy8QL7Ghn!{@;fZ0yzqg(T`{mX*HmaH*S$+Y6gpKc`5ABu zZKs(TJ~e|4X$!ntbXk>lZcn^A>KX%A$iN6lw}_n1&D1N6njr0@60V+nvn)!QF3-wR ztzSIc&}6;dl{i?Z%Xz{}xoDd+Kw0h1E+4(k!8)#)9M?_WgI?SHs?|9LNu+2qK4?2k z2OhCHy%Y;UU{p&Nl|)WJzqL4SSiB!vyvrsRRKVY@h5OTtbZPoiLD-f|j`Jq(Wvlmx zVb{7k7(jH~HaYua?}7H^kzl@Ia$Gfe-+sXRqZMPW)IwiX3}Rmz+7R0~3GeSjas9N2#-+lb# znA>A4XNXQ(Cnd{8kH)DIn0rXodB6wCM-gWR#0J%j-mVh!S*611<1BX28fvw@kwTSp z4wovxYYjy?J?37e!-YM_)|0Ly0}!dFTFchc?43B?sGr1u_ap7QH-p^klf)^6%9*S-yZmQpc*_~_I~9acF(xyG{uadOy)>#ztI|*>subjPiO8hLMRPi z{5*xw1PaZe2tsoxJV#`q&>DRc3&E$SPfr?a7zql|#}H~F@PiqHObU2{HA2aKVR(BY zrYenMG&_-JQw#i5R_C>(d_)fM`D4wwnA(*o!78t26e*hR#LAVqoZnZEh2v$OZTb0J zz>tmCWnPWw#bdF(plbo1F0^CVPUUjhdNC4g6motA`^U7%Y=QN6Vlr@Op%P%11b@&c zB8+5S%j&|EGAm9g%`U#mM}sACGT9~=s$UVKk@-SCQ^NRQU+1SF z#;G+i`8dpvIn`pdm}|}F*+7ZUO~ZbXEJhU^JC3(m$OQl^)z62qfn&v{A?Ex|Dcc`& zrX)tQgdj z{b%`GD5zDXFrGH_xvZ~{!`O%M*~8vi^;tN7sU2TEGgX-{<^r%k$X(tzm!hgDd^9uL zckWfFr3T~)$8Ma>{}mtJb3S9#)JEr<3sl9aB-yVJjX=#uI{EQTK!6;P^9Ox_4bFFS zzrpziWlqhO#W1N6y$H1i7`_6o_h`V+M_a+}ooN?y5g$Ju!?}d})v6Y>cuCOa2@ljU zyvG+r<8H9Ue7wWuf(>#n%CTmmj2g*sJc#RlHO`_UXsIgCP7sWwJkd^+lk#jDMe$Yc z*}*IH3xxc5h~p*z9R!{v9!OINrE#l)MJSXZ!U7&iKOjrPUo>(Bl5hpvOGjbA?Ib-- zI?EKXC9mX-^rz^W`amf4G&nsrkNv@@$4BDn<4a%wlE-YY!;fd%1$G+81APtSPfqvz z!zFBq*2jx`CL;HegfkiK+J`X+Bm??h0fm}I3c8@!C4^ddLINK8;vxAHvcWQ+PvYzu x{v>KJOrs|$#$DxVry7#JTc}odlV1YvZj*N#?caF<{%Y<2p|)= '3.12'", @@ -8,6 +9,7 @@ resolution-markers = [ [manifest] members = [ "icefabric", + "icefabric-api", "icefabric-manage", "icefabric-tools", ] @@ -16,9 +18,9 @@ members = [ name = "affine" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } +sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132, upload-time = "2023-01-19T23:44:30.696Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, + { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662, upload-time = "2023-01-19T23:44:28.833Z" }, ] [[package]] @@ -34,18 +36,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322, upload-time = "2025-05-01T16:45:45.484Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, + { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930, upload-time = "2025-05-01T16:45:43.508Z" }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, ] [[package]] @@ -61,49 +63,49 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload-time = "2025-04-21T09:43:09.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload-time = "2025-04-21T09:40:55.776Z" }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload-time = "2025-04-21T09:40:57.301Z" }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload-time = "2025-04-21T09:40:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload-time = "2025-04-21T09:41:00.795Z" }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload-time = "2025-04-21T09:41:02.89Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload-time = "2025-04-21T09:41:04.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload-time = "2025-04-21T09:41:06.728Z" }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload-time = "2025-04-21T09:41:08.293Z" }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload-time = "2025-04-21T09:41:11.054Z" }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload-time = "2025-04-21T09:41:13.213Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload-time = "2025-04-21T09:41:14.827Z" }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload-time = "2025-04-21T09:41:17.168Z" }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload-time = "2025-04-21T09:41:19.353Z" }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload-time = "2025-04-21T09:41:21.868Z" }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload-time = "2025-04-21T09:41:24.78Z" }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload-time = "2025-04-21T09:41:26.48Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload-time = "2025-04-21T09:41:28.021Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload-time = "2025-04-21T09:41:29.783Z" }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload-time = "2025-04-21T09:41:31.327Z" }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload-time = "2025-04-21T09:41:33.541Z" }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload-time = "2025-04-21T09:41:35.634Z" }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload-time = "2025-04-21T09:41:37.456Z" }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload-time = "2025-04-21T09:41:39.756Z" }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload-time = "2025-04-21T09:41:41.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload-time = "2025-04-21T09:41:44.192Z" }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload-time = "2025-04-21T09:41:46.049Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload-time = "2025-04-21T09:41:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload-time = "2025-04-21T09:41:50.323Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload-time = "2025-04-21T09:41:52.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload-time = "2025-04-21T09:41:53.94Z" }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload-time = "2025-04-21T09:41:55.689Z" }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload-time = "2025-04-21T09:41:57.977Z" }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload-time = "2024-09-02T03:33:40.349Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload-time = "2024-09-02T03:34:59.454Z" }, ] [[package]] @@ -113,18 +115,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424, upload-time = "2024-12-13T17:10:40.86Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597, upload-time = "2024-12-13T17:10:38.469Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -136,18 +138,18 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] [[package]] @@ -157,9 +159,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload-time = "2023-08-15T14:13:12.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload-time = "2023-08-15T14:13:10.752Z" }, ] [[package]] @@ -169,18 +171,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, ] [[package]] @@ -191,57 +193,57 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] [[package]] name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload-time = "2025-02-25T18:15:32.003Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload-time = "2025-02-25T16:53:14.607Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload-time = "2025-02-25T16:53:17.266Z" }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload-time = "2025-02-25T16:53:26.378Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload-time = "2025-02-25T16:53:29.858Z" }, ] [[package]] @@ -252,9 +254,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, ] [[package]] @@ -268,17 +270,17 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload-time = "2025-01-29T05:37:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload-time = "2025-01-29T05:37:14.309Z" }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload-time = "2025-01-29T04:18:17.688Z" }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload-time = "2025-01-29T04:18:51.711Z" }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, ] [[package]] @@ -288,9 +290,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, ] [package.optional-dependencies] @@ -307,9 +309,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } +sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160, upload-time = "2025-02-27T20:28:15.588Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, + { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344, upload-time = "2025-02-27T20:28:13.085Z" }, ] [[package]] @@ -321,55 +323,27 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } +sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648, upload-time = "2025-02-27T20:27:59.559Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, + { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066, upload-time = "2025-02-27T20:27:53.137Z" }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, -] - -[[package]] -name = "cairocffi" -version = "1.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/70/c5/1a4dc131459e68a173cbdab5fad6b524f53f9c1ef7861b7698e998b837cc/cairocffi-1.7.1.tar.gz", hash = "sha256:2e48ee864884ec4a3a34bfa8c9ab9999f688286eb714a15a43ec9d068c36557b", size = 88096 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d8/ba13451aa6b745c49536e87b6bf8f629b950e84bd0e8308f7dc6883b67e2/cairocffi-1.7.1-py3-none-any.whl", hash = "sha256:9803a0e11f6c962f3b0ae2ec8ba6ae45e957a146a004697a1ac1bbf16b073b3f", size = 75611 }, -] - -[[package]] -name = "cairosvg" -version = "2.8.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cairocffi" }, - { name = "cssselect2" }, - { name = "defusedxml" }, - { name = "pillow" }, - { name = "tinycss2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/b9/5106168bd43d7cd8b7cc2a2ee465b385f14b63f4c092bb89eee2d48c8e67/cairosvg-2.8.2.tar.gz", hash = "sha256:07cbf4e86317b27a92318a4cac2a4bb37a5e9c1b8a27355d06874b22f85bef9f", size = 8398590 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/48/816bd4aaae93dbf9e408c58598bc32f4a8c65f4b86ab560864cb3ee60adb/cairosvg-2.8.2-py3-none-any.whl", hash = "sha256:eab46dad4674f33267a671dce39b64be245911c901c70d65d2b7b0821e852bf5", size = 45773 }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, ] [[package]] @@ -379,40 +353,40 @@ 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +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, upload-time = "2024-09-04T20:43:51.124Z" }, + { 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, upload-time = "2024-09-04T20:43:52.872Z" }, + { 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, upload-time = "2024-09-04T20:43:56.123Z" }, + { 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, upload-time = "2024-09-04T20:43:57.891Z" }, + { 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, upload-time = "2024-09-04T20:44:00.18Z" }, + { 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, upload-time = "2024-09-04T20:44:01.585Z" }, + { 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, upload-time = "2024-09-04T20:44:03.467Z" }, + { 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, upload-time = "2024-09-04T20:44:05.023Z" }, + { 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, upload-time = "2024-09-04T20:44:06.444Z" }, + { 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, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { 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, upload-time = "2024-09-04T20:44:12.232Z" }, + { 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, upload-time = "2024-09-04T20:44:13.739Z" }, + { 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, upload-time = "2024-09-04T20:44:15.231Z" }, + { 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, upload-time = "2024-09-04T20:44:17.188Z" }, + { 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, upload-time = "2024-09-04T20:44:18.688Z" }, + { 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, upload-time = "2024-09-04T20:44:20.248Z" }, + { 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, upload-time = "2024-09-04T20:44:21.673Z" }, + { 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, upload-time = "2024-09-04T20:44:23.245Z" }, + { 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, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, ] [[package]] @@ -422,55 +396,55 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631, upload-time = "2024-10-22T18:48:34.194Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, - { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, - { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, - { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, - { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, - { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, - { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, - { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, - { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, - { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, - { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, + { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445, upload-time = "2024-10-22T18:47:51.09Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458, upload-time = "2024-10-22T18:47:52.245Z" }, + { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075, upload-time = "2024-10-22T18:47:53.338Z" }, + { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218, upload-time = "2024-10-22T18:47:54.763Z" }, + { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704, upload-time = "2024-10-22T18:47:56.035Z" }, + { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200, upload-time = "2024-10-22T18:47:58.036Z" }, + { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615, upload-time = "2024-10-22T18:47:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193, upload-time = "2024-10-22T18:48:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215, upload-time = "2024-10-22T18:48:02.275Z" }, + { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426, upload-time = "2024-10-22T18:48:03.57Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593, upload-time = "2024-10-22T18:48:04.918Z" }, + { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918, upload-time = "2024-10-22T18:48:06.195Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] [[package]] @@ -480,9 +454,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, ] [[package]] @@ -492,9 +466,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload-time = "2019-04-04T04:27:04.82Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload-time = "2019-04-04T04:27:03.36Z" }, ] [[package]] @@ -504,27 +478,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload-time = "2021-05-28T21:23:27.935Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload-time = "2021-05-28T21:23:26.877Z" }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -534,9 +508,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, ] [[package]] @@ -546,124 +520,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, ] [[package]] name = "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 }, -] - -[[package]] -name = "cryptography" -version = "45.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/47/92a8914716f2405f33f1814b97353e3cfa223cd94a77104075d42de3099e/cryptography-45.0.2.tar.gz", hash = "sha256:d784d57b958ffd07e9e226d17272f9af0c41572557604ca7554214def32c26bf", size = 743865 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/2f/46b9e715157643ad16f039ec3c3c47d174da6f825bf5034b1c5f692ab9e2/cryptography-45.0.2-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:61a8b1bbddd9332917485b2453d1de49f142e6334ce1d97b7916d5a85d179c84", size = 7043448 }, - { url = "https://files.pythonhosted.org/packages/90/52/49e6c86278e1b5ec226e96b62322538ccc466306517bf9aad8854116a088/cryptography-45.0.2-cp311-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4cc31c66411e14dd70e2f384a9204a859dc25b05e1f303df0f5326691061b839", size = 4201098 }, - { url = "https://files.pythonhosted.org/packages/7b/3a/201272539ac5b66b4cb1af89021e423fc0bfacb73498950280c51695fb78/cryptography-45.0.2-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:463096533acd5097f8751115bc600b0b64620c4aafcac10c6d0041e6e68f88fe", size = 4429839 }, - { url = "https://files.pythonhosted.org/packages/99/89/fa1a84832b8f8f3917875cb15324bba98def5a70175a889df7d21a45dc75/cryptography-45.0.2-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:cdafb86eb673c3211accffbffdb3cdffa3aaafacd14819e0898d23696d18e4d3", size = 4205154 }, - { url = "https://files.pythonhosted.org/packages/1c/c5/5225d5230d538ab461725711cf5220560a813d1eb68bafcfb00131b8f631/cryptography-45.0.2-cp311-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:05c2385b1f5c89a17df19900cfb1345115a77168f5ed44bdf6fd3de1ce5cc65b", size = 3897145 }, - { url = "https://files.pythonhosted.org/packages/fe/24/f19aae32526cc55ae17d473bc4588b1234af2979483d99cbfc57e55ffea6/cryptography-45.0.2-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e9e4bdcd70216b08801e267c0b563316b787f957a46e215249921f99288456f9", size = 4462192 }, - { url = "https://files.pythonhosted.org/packages/19/18/4a69ac95b0b3f03355970baa6c3f9502bbfc54e7df81fdb179654a00f48e/cryptography-45.0.2-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:b2de529027579e43b6dc1f805f467b102fb7d13c1e54c334f1403ee2b37d0059", size = 4208093 }, - { url = "https://files.pythonhosted.org/packages/7c/54/2dea55ccc9558b8fa14f67156250b6ee231e31765601524e4757d0b5db6b/cryptography-45.0.2-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:10d68763892a7b19c22508ab57799c4423c7c8cd61d7eee4c5a6a55a46511949", size = 4461819 }, - { url = "https://files.pythonhosted.org/packages/37/f1/1b220fcd5ef4b1f0ff3e59e733b61597505e47f945606cc877adab2c1a17/cryptography-45.0.2-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:d2a90ce2f0f5b695e4785ac07c19a58244092f3c85d57db6d8eb1a2b26d2aad6", size = 4329202 }, - { url = "https://files.pythonhosted.org/packages/6d/e0/51d1dc4f96f819a56db70f0b4039b4185055bbb8616135884c3c3acc4c6d/cryptography-45.0.2-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:59c0c8f043dd376bbd9d4f636223836aed50431af4c5a467ed9bf61520294627", size = 4570412 }, - { url = "https://files.pythonhosted.org/packages/dc/44/88efb40a3600d15277a77cdc69eeeab45a98532078d2a36cffd9325d3b3f/cryptography-45.0.2-cp311-abi3-win32.whl", hash = "sha256:80303ee6a02ef38c4253160446cbeb5c400c07e01d4ddbd4ff722a89b736d95a", size = 2933584 }, - { url = "https://files.pythonhosted.org/packages/d9/a1/bc9f82ba08760442cc8346d1b4e7b769b86d197193c45b42b3595d231e84/cryptography-45.0.2-cp311-abi3-win_amd64.whl", hash = "sha256:7429936146063bd1b2cfc54f0e04016b90ee9b1c908a7bed0800049cbace70eb", size = 3408537 }, - { url = "https://files.pythonhosted.org/packages/59/bc/1b6acb1dca366f9c0b3880888ecd7fcfb68023930d57df854847c6da1d10/cryptography-45.0.2-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:e86c8d54cd19a13e9081898b3c24351683fd39d726ecf8e774aaa9d8d96f5f3a", size = 7025581 }, - { url = "https://files.pythonhosted.org/packages/31/a3/a3e4a298d3db4a04085728f5ae6c8cda157e49c5bb784886d463b9fbff70/cryptography-45.0.2-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e328357b6bbf79928363dbf13f4635b7aac0306afb7e5ad24d21d0c5761c3253", size = 4189148 }, - { url = "https://files.pythonhosted.org/packages/53/90/100dfadd4663b389cb56972541ec1103490a19ebad0132af284114ba0868/cryptography-45.0.2-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49af56491473231159c98c2c26f1a8f3799a60e5cf0e872d00745b858ddac9d2", size = 4424113 }, - { url = "https://files.pythonhosted.org/packages/0d/40/e2b9177dbed6f3fcbbf1942e1acea2fd15b17007204b79d675540dd053af/cryptography-45.0.2-cp37-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:f169469d04a23282de9d0be349499cb6683b6ff1b68901210faacac9b0c24b7d", size = 4189696 }, - { url = "https://files.pythonhosted.org/packages/70/ae/ec29c79f481e1767c2ff916424ba36f3cf7774de93bbd60428a3c52d1357/cryptography-45.0.2-cp37-abi3-manylinux_2_28_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9cfd1399064b13043082c660ddd97a0358e41c8b0dc7b77c1243e013d305c344", size = 3881498 }, - { url = "https://files.pythonhosted.org/packages/5f/4a/72937090e5637a232b2f73801c9361cd08404a2d4e620ca4ec58c7ea4b70/cryptography-45.0.2-cp37-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:18f8084b7ca3ce1b8d38bdfe33c48116edf9a08b4d056ef4a96dceaa36d8d965", size = 4451678 }, - { url = "https://files.pythonhosted.org/packages/d3/fa/1377fced81fd67a4a27514248261bb0d45c3c1e02169411fe231583088c8/cryptography-45.0.2-cp37-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:2cb03a944a1a412724d15a7c051d50e63a868031f26b6a312f2016965b661942", size = 4192296 }, - { url = "https://files.pythonhosted.org/packages/d1/cf/b6fe837c83a08b9df81e63299d75fc5b3c6d82cf24b3e1e0e331050e9e5c/cryptography-45.0.2-cp37-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a9727a21957d3327cf6b7eb5ffc9e4b663909a25fea158e3fcbc49d4cdd7881b", size = 4451749 }, - { url = "https://files.pythonhosted.org/packages/af/d8/5a655675cc635c7190bfc8cffb84bcdc44fc62ce945ad1d844adaa884252/cryptography-45.0.2-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:ddb8d01aa900b741d6b7cc585a97aff787175f160ab975e21f880e89d810781a", size = 4317601 }, - { url = "https://files.pythonhosted.org/packages/b9/d4/75d2375a20d80aa262a8adee77bf56950e9292929e394b9fae2481803f11/cryptography-45.0.2-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:c0c000c1a09f069632d8a9eb3b610ac029fcc682f1d69b758e625d6ee713f4ed", size = 4560535 }, - { url = "https://files.pythonhosted.org/packages/aa/18/c3a94474987ebcfb88692036b2ec44880d243fefa73794bdcbf748679a6e/cryptography-45.0.2-cp37-abi3-win32.whl", hash = "sha256:08281de408e7eb71ba3cd5098709a356bfdf65eebd7ee7633c3610f0aa80d79b", size = 2922045 }, - { url = "https://files.pythonhosted.org/packages/63/63/fb28b30c144182fd44ce93d13ab859791adbf923e43bdfb610024bfecda1/cryptography-45.0.2-cp37-abi3-win_amd64.whl", hash = "sha256:48caa55c528617fa6db1a9c3bf2e37ccb31b73e098ac2b71408d1f2db551dde4", size = 3393321 }, - { url = "https://files.pythonhosted.org/packages/d7/74/2a0fb642c4c34d8c46c12b6eac89b10769b378c7b6a901ff94a8d4ba1b52/cryptography-45.0.2-pp311-pypy311_pp73-macosx_10_9_x86_64.whl", hash = "sha256:1655d3a76e3dedb683c982a6c3a2cbfae2d08f47a48ec5a3d58db52b3d29ea6f", size = 3587805 }, - { url = "https://files.pythonhosted.org/packages/8a/18/57bc98fa5d93e74c2c2b16a3c5383f7ec218f957aa44559c0008a46c3629/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:dc7693573f16535428183de8fd27f0ca1ca37a51baa0b41dc5ed7b3d68fe80e2", size = 4143347 }, - { url = "https://files.pythonhosted.org/packages/84/6f/d015e7e7bd7f3a6c538973005de5a780d93b68138c2d88c804422cf46b1c/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:614bca7c6ed0d8ad1dce683a6289afae1f880675b4090878a0136c3da16bc693", size = 4387414 }, - { url = "https://files.pythonhosted.org/packages/de/9e/fa5ec89cce7e4b86e430438da4d66b79113bdf321d0a00167d34b61daf19/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:4142e20c29224cec63e9e32eb1e6014fb285fe39b7be66b3564ca978a3a8afe9", size = 4145849 }, - { url = "https://files.pythonhosted.org/packages/7c/09/5887d4fcc6f9c6fb19920789d094c4e25c2f604cc1b10b7e69d6f56187fe/cryptography-45.0.2-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:9a900036b42f7324df7c7ad9569eb92ba0b613cf699160dd9c2154b24fd02f8e", size = 4387449 }, - { url = "https://files.pythonhosted.org/packages/a5/4a/e27ab71dc3e517becc3f2ae358454bb4b78c0cb5af52f8e11b8943525ea6/cryptography-45.0.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:057723b79752a142efbc609e90b0dff27b0361ccbee3bd48312d70f5cdf53b78", size = 3335090 }, -] - -[[package]] -name = "cssselect2" -version = "0.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "tinycss2" }, - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9f/86/fd7f58fc498b3166f3a7e8e0cddb6e620fe1da35b02248b1bd59e95dbaaa/cssselect2-0.8.0.tar.gz", hash = "sha256:7674ffb954a3b46162392aee2a3a0aedb2e14ecf99fcc28644900f4e6e3e9d3a", size = 35716 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/e7/aa315e6a749d9b96c2504a1ba0ba031ba2d0517e972ce22682e3fccecb09/cssselect2-0.8.0-py3-none-any.whl", hash = "sha256:46fc70ebc41ced7a32cd42d58b1884d72ade23d21e5a4eaaf022401c13f0e76e", size = 15454 }, +sdist = { url = "https://files.pythonhosted.org/packages/7f/4c/4e40cc26347ac8254d3f25b9f94710b8e8df24ee4dddc1ba41907a88a94d/crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c", size = 45712, upload-time = "2024-09-24T06:20:17.553Z" } +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, upload-time = "2024-09-24T06:18:18.032Z" }, + { 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, upload-time = "2024-09-24T06:18:19.373Z" }, + { 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, upload-time = "2024-09-24T06:18:20.983Z" }, + { 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, upload-time = "2024-09-24T06:18:23.085Z" }, + { 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, upload-time = "2024-09-24T06:18:24.463Z" }, + { 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, upload-time = "2024-09-24T06:18:25.624Z" }, + { 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, upload-time = "2024-09-24T06:18:26.578Z" }, + { 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, upload-time = "2024-09-24T06:18:28.174Z" }, + { 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, upload-time = "2024-09-24T06:18:29.104Z" }, + { url = "https://files.pythonhosted.org/packages/56/3e/6f39127f7027c75d130c0ba348d86a6150dff23761fbc6a5f71659f4521e/crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1", size = 38370, upload-time = "2024-09-24T06:18:30.013Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fb/1587c2705a3a47a3d0067eecf9a6fec510761c96dec45c7b038fb5c8ff46/crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d", size = 39795, upload-time = "2024-09-24T06:18:31.324Z" }, + { 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, upload-time = "2024-09-24T06:18:32.425Z" }, + { 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, upload-time = "2024-09-24T06:18:34.097Z" }, + { 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, upload-time = "2024-09-24T06:18:35.02Z" }, + { 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, upload-time = "2024-09-24T06:18:35.954Z" }, + { 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, upload-time = "2024-09-24T06:18:36.896Z" }, + { 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, upload-time = "2024-09-24T06:18:38.099Z" }, + { 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, upload-time = "2024-09-24T06:18:39.051Z" }, + { 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, upload-time = "2024-09-24T06:18:40.021Z" }, + { 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, upload-time = "2024-09-24T06:18:40.925Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371, upload-time = "2024-09-24T06:18:42.711Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805, upload-time = "2024-09-24T06:18:43.6Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] [[package]] @@ -680,65 +600,62 @@ dependencies = [ { name = "pyyaml" }, { name = "toolz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324, upload-time = "2025-05-20T19:54:30.688Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, + { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226, upload-time = "2025-05-20T19:54:20.309Z" }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] [[package]] -name = "deprecated" -version = "1.2.18" +name = "distlib" +version = "0.3.9" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/97/06afe62762c9a8a86af0cfb7bfdab22a43ad17138b07af5b1a58442690a2/deprecated-1.2.18.tar.gz", hash = "sha256:422b6f6d859da6f2ef57857761bfb392480502a64c3028ca9bbe86085d72115d", size = 2928744 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6e/c6/ac0b6c1e2d138f1002bcf799d330bd6d85084fece321e662a14223794041/Deprecated-1.2.18-py2.py3-none-any.whl", hash = "sha256:bd5011788200372a32418f888e326a09ff80d0214bd961147cfed01b5c018eec", size = 9998 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, ] [[package]] -name = "distlib" -version = "0.3.9" +name = "dnspython" +version = "2.7.0" 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 } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, ] [[package]] @@ -748,9 +665,22 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506, upload-time = "2024-05-23T14:14:31.513Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592, upload-time = "2024-05-23T14:13:55.283Z" }, +] + +[[package]] +name = "email-validator" +version = "2.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "dnspython" }, + { name = "idna" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, ] [[package]] @@ -760,145 +690,165 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload-time = "2019-12-30T22:47:36.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload-time = "2019-12-30T22:47:35.265Z" }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] [[package]] -name = "fastjsonschema" -version = "2.21.1" +name = "fastapi" +version = "0.115.12" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +dependencies = [ + { name = "pydantic" }, + { name = "starlette" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236, upload-time = "2025-03-23T22:55:43.822Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164, upload-time = "2025-03-23T22:55:42.101Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "email-validator" }, + { name = "fastapi-cli", extra = ["standard"] }, + { name = "httpx" }, + { name = "jinja2" }, + { name = "python-multipart" }, + { name = "uvicorn", extra = ["standard"] }, ] [[package]] -name = "filelock" -version = "3.18.0" +name = "fastapi-cli" +version = "0.0.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +dependencies = [ + { name = "rich-toolkit" }, + { name = "typer" }, + { name = "uvicorn", extra = ["standard"] }, +] +sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload-time = "2024-12-15T14:28:10.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload-time = "2024-12-15T14:28:06.18Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "uvicorn", extra = ["standard"] }, ] [[package]] -name = "fiona" -version = "1.10.1" +name = "fastjsonschema" +version = "2.21.1" source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "certifi" }, - { name = "click" }, - { name = "click-plugins" }, - { name = "cligj" }, +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/e0/71b63839cc609e1d62cea2fc9774aa605ece7ea78af823ff7a8f1c560e72/fiona-1.10.1.tar.gz", hash = "sha256:b00ae357669460c6491caba29c2022ff0acfcbde86a95361ea8ff5cd14a86b68", size = 444606 } + +[[package]] +name = "filelock" +version = "3.18.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/b9/7a8356cfaff8ef162bad44283554d3171e13032635b4f8e10e694a9596ee/fiona-1.10.1-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:98fe556058b370da07a84f6537c286f87eb4af2343d155fbd3fba5d38ac17ed7", size = 16144293 }, - { url = "https://files.pythonhosted.org/packages/65/0c/e8070b15c8303f60bd4444a120842597ccd6ed550548948e2e36cffbaa93/fiona-1.10.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:be29044d4aeebae92944b738160dc5f9afc4cdf04f551d59e803c5b910e17520", size = 14752213 }, - { url = "https://files.pythonhosted.org/packages/7b/2e/3f80ba2fda9b8686681f0a1b18c8e95ad152ada1d6fb1d3f25281d9229fd/fiona-1.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:94bd3d448f09f85439e4b77c38b9de1aebe3eef24acc72bd631f75171cdfde51", size = 17272183 }, - { url = "https://files.pythonhosted.org/packages/95/32/c1d53b4d77926414ffdf5bd38344e900e378ae9ccb2a65754cdb6d5344c2/fiona-1.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:30594c0cd8682c43fd01e7cdbe000f94540f8fa3b7cb5901e805c88c4ff2058b", size = 24489398 }, - { url = "https://files.pythonhosted.org/packages/73/ab/036c418d531afb74abe4ca9a8be487b863901fe7b42ddba1ba2fb0681d77/fiona-1.10.1-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:7338b8c68beb7934bde4ec9f49eb5044e5e484b92d940bc3ec27defdb2b06c67", size = 16114589 }, - { url = "https://files.pythonhosted.org/packages/ba/45/693c1cca53023aaf6e3adc11422080f5fa427484e7b85e48f19c40d6357f/fiona-1.10.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8c77fcfd3cdb0d3c97237965f8c60d1696a64923deeeb2d0b9810286cbe25911", size = 14754603 }, - { url = "https://files.pythonhosted.org/packages/dc/78/be204fb409b59876ef4658710a022794f16f779a3e9e7df654acc38b2104/fiona-1.10.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:537872cbc9bda7fcdf73851c91bc5338fca2b502c4c17049ccecaa13cde1f18f", size = 17223639 }, - { url = "https://files.pythonhosted.org/packages/7e/0d/914fd3c4c32043c2c512fa5021e83b2348e1b7a79365d75a0a37cb545362/fiona-1.10.1-cp312-cp312-win_amd64.whl", hash = "sha256:41cde2c52c614457e9094ea44b0d30483540789e62fe0fa758c2a2963e980817", size = 24464921 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, ] [[package]] name = "fonttools" version = "4.58.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522, upload-time = "2025-05-10T17:36:35.886Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, - { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, - { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, - { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, - { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, - { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, - { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, - { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, - { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, - { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, - { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, - { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, - { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, - { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, - { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, + { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920, upload-time = "2025-05-10T17:35:16.487Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957, upload-time = "2025-05-10T17:35:18.906Z" }, + { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808, upload-time = "2025-05-10T17:35:21.394Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876, upload-time = "2025-05-10T17:35:23.849Z" }, + { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798, upload-time = "2025-05-10T17:35:26.189Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560, upload-time = "2025-05-10T17:35:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330, upload-time = "2025-05-10T17:35:31.733Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687, upload-time = "2025-05-10T17:35:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502, upload-time = "2025-05-10T17:35:36.436Z" }, + { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214, upload-time = "2025-05-10T17:35:38.939Z" }, + { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136, upload-time = "2025-05-10T17:35:41.491Z" }, + { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598, upload-time = "2025-05-10T17:35:43.986Z" }, + { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256, upload-time = "2025-05-10T17:35:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710, upload-time = "2025-05-10T17:35:49.227Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593, upload-time = "2025-05-10T17:35:51.226Z" }, + { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230, upload-time = "2025-05-10T17:35:53.653Z" }, + { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440, upload-time = "2025-05-10T17:36:33.607Z" }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload-time = "2025-04-17T22:38:53.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload-time = "2025-04-17T22:36:17.235Z" }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload-time = "2025-04-17T22:36:18.735Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload-time = "2025-04-17T22:36:20.6Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload-time = "2025-04-17T22:36:22.088Z" }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload-time = "2025-04-17T22:36:24.247Z" }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload-time = "2025-04-17T22:36:26.291Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload-time = "2025-04-17T22:36:27.909Z" }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload-time = "2025-04-17T22:36:29.448Z" }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload-time = "2025-04-17T22:36:31.55Z" }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload-time = "2025-04-17T22:36:33.078Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload-time = "2025-04-17T22:36:34.688Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload-time = "2025-04-17T22:36:36.363Z" }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload-time = "2025-04-17T22:36:38.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload-time = "2025-04-17T22:36:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload-time = "2025-04-17T22:36:42.045Z" }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload-time = "2025-04-17T22:36:44.067Z" }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload-time = "2025-04-17T22:36:45.465Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload-time = "2025-04-17T22:36:47.382Z" }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload-time = "2025-04-17T22:36:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload-time = "2025-04-17T22:36:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload-time = "2025-04-17T22:36:53.402Z" }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload-time = "2025-04-17T22:36:55.016Z" }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload-time = "2025-04-17T22:36:57.12Z" }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload-time = "2025-04-17T22:36:58.735Z" }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload-time = "2025-04-17T22:37:00.512Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload-time = "2025-04-17T22:37:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload-time = "2025-04-17T22:37:03.578Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload-time = "2025-04-17T22:37:05.213Z" }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload-time = "2025-04-17T22:37:06.985Z" }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload-time = "2025-04-17T22:37:08.618Z" }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload-time = "2025-04-17T22:37:10.196Z" }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload-time = "2025-04-17T22:37:12.284Z" }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload-time = "2025-04-17T22:37:13.902Z" }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload-time = "2025-04-17T22:37:15.326Z" }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload-time = "2025-04-17T22:38:51.668Z" }, ] [[package]] name = "fsspec" version = "2025.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989, upload-time = "2025-05-20T15:46:22.484Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164 }, + { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164, upload-time = "2025-05-20T15:46:20.89Z" }, ] [[package]] @@ -913,9 +863,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload-time = "2024-07-02T12:26:52.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload-time = "2024-07-02T12:26:50.876Z" }, ] [[package]] @@ -925,68 +875,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, -] - -[[package]] -name = "gitdb" -version = "4.0.12" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "smmap" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/72/94/63b0fc47eb32792c7ba1fe1b694daec9a63620db1e313033d18140c2320a/gitdb-4.0.12.tar.gz", hash = "sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571", size = 394684 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/61/5c78b91c3143ed5c14207f463aecfc8f9dbb5092fb2869baf37c273b2705/gitdb-4.0.12-py3-none-any.whl", hash = "sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf", size = 62794 }, -] - -[[package]] -name = "gitpython" -version = "3.1.44" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "gitdb" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c0/89/37df0b71473153574a5cdef8f242de422a0f5d26d7a9e231e6f169b4ad14/gitpython-3.1.44.tar.gz", hash = "sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269", size = 214196 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1d/9a/4114a9057db2f1462d5c8f8390ab7383925fe1ac012eaa42402ad65c2963/GitPython-3.1.44-py3-none-any.whl", hash = "sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110", size = 207599 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, ] [[package]] name = "greenlet" version = "3.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635 }, - { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786 }, - { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866 }, - { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752 }, - { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028 }, - { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869 }, - { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886 }, - { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355 }, - { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437 }, - { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413 }, - { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242 }, - { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067 }, - { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153 }, - { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865 }, - { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575 }, - { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460 }, - { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239 }, +sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797, upload-time = "2025-05-09T19:47:35.066Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635, upload-time = "2025-05-09T14:50:39.007Z" }, + { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786, upload-time = "2025-05-09T15:24:00.692Z" }, + { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866, upload-time = "2025-05-09T15:24:48.153Z" }, + { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752, upload-time = "2025-05-09T15:29:23.182Z" }, + { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028, upload-time = "2025-05-09T14:53:32.854Z" }, + { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869, upload-time = "2025-05-09T14:53:43.614Z" }, + { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886, upload-time = "2025-05-09T15:27:01.304Z" }, + { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355, upload-time = "2025-05-09T14:53:58.011Z" }, + { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437, upload-time = "2025-05-09T15:00:57.733Z" }, + { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413, upload-time = "2025-05-09T14:51:32.455Z" }, + { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242, upload-time = "2025-05-09T15:24:02.63Z" }, + { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444, upload-time = "2025-05-09T15:24:49.856Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067, upload-time = "2025-05-09T15:29:24.989Z" }, + { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153, upload-time = "2025-05-09T14:53:34.716Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865, upload-time = "2025-05-09T14:53:45.738Z" }, + { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575, upload-time = "2025-05-09T15:27:04.248Z" }, + { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460, upload-time = "2025-05-09T14:54:00.315Z" }, + { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239, upload-time = "2025-05-09T14:57:17.633Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -997,9 +923,9 @@ dependencies = [ { name = "h5py" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } +sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456, upload-time = "2025-03-07T14:51:24.322Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, + { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561, upload-time = "2025-03-07T14:51:22.863Z" }, ] [[package]] @@ -1009,18 +935,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } +sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876, upload-time = "2025-02-18T16:04:01.824Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, - { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, - { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, - { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, - { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, - { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, - { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, - { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, - { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, - { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, + { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922, upload-time = "2025-02-18T16:02:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619, upload-time = "2025-02-18T16:02:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366, upload-time = "2025-02-18T16:02:44.544Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058, upload-time = "2025-02-18T16:02:49.035Z" }, + { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428, upload-time = "2025-02-18T16:02:52.061Z" }, + { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442, upload-time = "2025-02-18T16:02:56.545Z" }, + { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567, upload-time = "2025-02-18T16:03:00.079Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544, upload-time = "2025-02-18T16:03:05.675Z" }, + { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139, upload-time = "2025-02-18T16:03:10.129Z" }, + { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179, upload-time = "2025-02-18T16:03:13.716Z" }, ] [[package]] @@ -1031,9 +957,31 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, +] + +[[package]] +name = "httptools" +version = "0.6.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, ] [[package]] @@ -1046,9 +994,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] [[package]] @@ -1058,37 +1006,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, - { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, - { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, - { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, - { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, - { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, - { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, - { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, - { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, - { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, - { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, - { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, - { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, - { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, - { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, - { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, - { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, - { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, - { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, - { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, - { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, - { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, - { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, - { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, - { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, - { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, - { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, - { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, +sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131, upload-time = "2025-04-16T18:10:36.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673, upload-time = "2025-04-16T18:09:43.971Z" }, + { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240, upload-time = "2025-04-16T18:09:37.035Z" }, + { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672, upload-time = "2025-04-16T18:09:26.089Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034, upload-time = "2025-04-16T18:09:02.686Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792, upload-time = "2025-04-16T18:09:15.5Z" }, + { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356, upload-time = "2025-04-16T18:09:51.136Z" }, + { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442, upload-time = "2025-04-16T18:10:02.792Z" }, + { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160, upload-time = "2025-04-16T18:10:14.601Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124, upload-time = "2025-04-16T18:10:25.808Z" }, + { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858, upload-time = "2025-04-16T18:10:43.776Z" }, + { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459, upload-time = "2025-04-16T18:10:37.921Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831, upload-time = "2025-04-16T18:09:46.168Z" }, + { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016, upload-time = "2025-04-16T18:09:38.98Z" }, + { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090, upload-time = "2025-04-16T18:09:28.202Z" }, + { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912, upload-time = "2025-04-16T18:09:05.87Z" }, + { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623, upload-time = "2025-04-16T18:09:17.868Z" }, + { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655, upload-time = "2025-04-16T18:09:53.417Z" }, + { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287, upload-time = "2025-04-16T18:10:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009, upload-time = "2025-04-16T18:10:16.678Z" }, + { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396, upload-time = "2025-04-16T18:10:28.392Z" }, + { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850, upload-time = "2025-04-16T18:10:46.224Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293, upload-time = "2025-04-16T18:10:39.897Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636, upload-time = "2025-04-16T18:09:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882, upload-time = "2025-04-16T18:09:12.974Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805, upload-time = "2025-04-16T18:09:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170, upload-time = "2025-04-16T18:10:00.013Z" }, + { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703, upload-time = "2025-04-16T18:10:11.788Z" }, + { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569, upload-time = "2025-04-16T18:10:23.599Z" }, + { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490, upload-time = "2025-04-16T18:10:34.914Z" }, ] [[package]] @@ -1098,13 +1046,7 @@ source = { virtual = "." } [package.optional-dependencies] docs = [ - { name = "cairosvg" }, - { name = "mkdocs-git-authors-plugin" }, - { name = "mkdocs-git-committers-plugin" }, - { name = "mkdocs-git-revision-date-localized-plugin" }, { name = "mkdocs-material" }, - { name = "mkdocs-material-extensions" }, - { name = "pillow" }, ] [package.dev-dependencies] @@ -1112,6 +1054,7 @@ dev = [ { name = "black" }, { name = "boto3" }, { name = "examples" }, + { name = "icefabric-api" }, { name = "icefabric-manage" }, { name = "icefabric-tools" }, { name = "ipykernel" }, @@ -1123,21 +1066,15 @@ dev = [ ] [package.metadata] -requires-dist = [ - { name = "cairosvg", marker = "extra == 'docs'" }, - { name = "mkdocs-git-authors-plugin", marker = "extra == 'docs'" }, - { name = "mkdocs-git-committers-plugin", marker = "extra == 'docs'" }, - { name = "mkdocs-git-revision-date-localized-plugin", marker = "extra == 'docs'" }, - { name = "mkdocs-material", marker = "extra == 'docs'" }, - { name = "mkdocs-material-extensions", marker = "extra == 'docs'" }, - { name = "pillow", marker = "extra == 'docs'" }, -] +requires-dist = [{ name = "mkdocs-material", marker = "extra == 'docs'" }] +provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ { name = "black", specifier = "==25.1.0" }, { name = "boto3" }, { name = "examples" }, + { name = "icefabric-api", virtual = "src/icefabric_api" }, { name = "icefabric-manage", editable = "src/icefabric_manage" }, { name = "icefabric-tools", editable = "src/icefabric_tools" }, { name = "ipykernel", specifier = ">=6.29.5" }, @@ -1148,28 +1085,45 @@ dev = [ { name = "ruff", specifier = "==0.11.0" }, ] +[[package]] +name = "icefabric-api" +version = "2025.5.0" +source = { virtual = "src/icefabric_api" } +dependencies = [ + { name = "fastapi", extra = ["standard"] }, + { name = "pydantic" }, + { name = "pydantic-settings" }, +] + +[package.metadata] +requires-dist = [ + { name = "fastapi", extras = ["standard"], specifier = ">=0.115.12" }, + { name = "pydantic", specifier = "==2.11.5" }, + { name = "pydantic-settings", specifier = "==2.9.1" }, +] + [[package]] name = "icefabric-manage" version = "2025.5" source = { editable = "src/icefabric_manage" } dependencies = [ - { name = "fiona" }, { name = "geopandas" }, { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "python-dotenv" }, { name = "s3fs" }, ] [package.metadata] requires-dist = [ - { name = "fiona", specifier = "==1.10.1" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "numpy", specifier = "==2.2.6" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, + { name = "python-dotenv" }, { name = "s3fs", specifier = "==2025.5.0" }, ] @@ -1179,7 +1133,6 @@ version = "2025.5" source = { editable = "src/icefabric_tools" } dependencies = [ { name = "dask" }, - { name = "fiona" }, { name = "fsspec" }, { name = "geopandas" }, { name = "h5netcdf" }, @@ -1205,7 +1158,6 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "dask", specifier = "==2025.5.1" }, - { name = "fiona", specifier = "==1.10.1" }, { name = "fsspec", specifier = "==2025.5.0" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "h5netcdf", specifier = "==1.6.1" }, @@ -1232,18 +1184,18 @@ requires-dist = [ name = "identify" version = "2.6.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234, upload-time = "2025-05-23T18:19:53.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, + { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112, upload-time = "2025-05-23T18:19:51.88Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] [[package]] @@ -1253,18 +1205,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -1286,9 +1238,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, ] [[package]] @@ -1308,9 +1260,9 @@ dependencies = [ { name = "traitlets" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload-time = "2025-04-25T17:55:40.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload-time = "2025-04-25T17:55:37.625Z" }, ] [[package]] @@ -1320,9 +1272,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] [[package]] @@ -1332,9 +1284,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, ] [[package]] @@ -1344,9 +1296,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -1356,36 +1308,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, ] [[package]] name = "json5" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, ] [[package]] @@ -1398,9 +1350,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, ] [package.optional-dependencies] @@ -1422,9 +1374,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, ] [[package]] @@ -1438,9 +1390,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, ] [[package]] @@ -1452,9 +1404,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629, upload-time = "2024-03-12T12:37:35.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965, upload-time = "2024-03-12T12:37:32.36Z" }, ] [[package]] @@ -1471,9 +1423,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, ] [[package]] @@ -1483,9 +1435,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, ] [[package]] @@ -1513,9 +1465,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, ] [[package]] @@ -1526,9 +1478,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, ] [[package]] @@ -1550,18 +1502,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818, upload-time = "2025-05-06T12:29:40.992Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, + { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799, upload-time = "2025-05-06T12:29:35.824Z" }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, ] [[package]] @@ -1577,9 +1529,9 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, ] [[package]] @@ -1593,65 +1545,65 @@ dependencies = [ { name = "ujson" }, { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488, upload-time = "2025-02-01T18:46:33.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, + { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510, upload-time = "2025-02-01T18:46:18.904Z" }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350, upload-time = "2022-04-20T22:04:44.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, ] [[package]] name = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload-time = "2025-04-11T14:42:50.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload-time = "2025-04-11T14:42:49.178Z" }, ] [[package]] @@ -1661,37 +1613,37 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "markupsafe" version = "3.0.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 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +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, upload-time = "2024-10-18T15:21:02.187Z" }, + { 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, upload-time = "2024-10-18T15:21:02.941Z" }, + { 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, upload-time = "2024-10-18T15:21:03.953Z" }, + { 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, upload-time = "2024-10-18T15:21:06.495Z" }, + { 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, upload-time = "2024-10-18T15:21:07.295Z" }, + { 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, upload-time = "2024-10-18T15:21:08.073Z" }, + { 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, upload-time = "2024-10-18T15:21:09.318Z" }, + { 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, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { 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, upload-time = "2024-10-18T15:21:13.777Z" }, + { 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, upload-time = "2024-10-18T15:21:14.822Z" }, + { 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, upload-time = "2024-10-18T15:21:15.642Z" }, + { 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, upload-time = "2024-10-18T15:21:17.133Z" }, + { 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, upload-time = "2024-10-18T15:21:18.064Z" }, + { 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, upload-time = "2024-10-18T15:21:18.859Z" }, + { 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, upload-time = "2024-10-18T15:21:19.671Z" }, + { 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, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, ] [[package]] @@ -1709,20 +1661,20 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, ] [[package]] @@ -1732,36 +1684,36 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, ] [[package]] name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, ] [[package]] @@ -1783,9 +1735,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -1797,49 +1749,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, -] - -[[package]] -name = "mkdocs-git-authors-plugin" -version = "0.9.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9a/2a/708b4d59c27cb4fe94810521a0cb0ab70a209a52ee89c8e545b121bde61d/mkdocs_git_authors_plugin-0.9.5.tar.gz", hash = "sha256:e19f0252ead3d626fd73e15bb56d6675704c3b62aa569ebc363f791291b8f60e", size = 22538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/d3/cae67388e9ddbce5320bbf95d648742dbad7420bf494d387a37b719c4157/mkdocs_git_authors_plugin-0.9.5-py3-none-any.whl", hash = "sha256:acdacc8452db90a94d9c395a230b16965a9f2f51e0a6eef182ac7d3e02e394fb", size = 20906 }, -] - -[[package]] -name = "mkdocs-git-committers-plugin" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mkdocs" }, - { name = "pygithub" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c6/88/e724563e9ff1b119869ef0704157caa8d7b9b9b4a8a8faf8120aa01620e2/mkdocs-git-committers-plugin-0.2.3.tar.gz", hash = "sha256:77188d8aacc11d5233d6949435670e3d6545ffb7a0e274d56f32ed3984353c61", size = 5379 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/56/15fdbb6afa718a6c9de626bd11672040832ba547c03daf205e295be4e0d4/mkdocs_git_committers_plugin-0.2.3-py3-none-any.whl", hash = "sha256:4ca79efb7e61a72652d3512d61af5c40a4572e36667e1a00032aad524250780d", size = 4340 }, -] - -[[package]] -name = "mkdocs-git-revision-date-localized-plugin" -version = "1.4.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "gitpython" }, - { name = "mkdocs" }, - { name = "pytz" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3c/93/3987505121a9b596b05c8a38054b587cfe0d78a1a3e92144204f2c45722b/mkdocs_git_revision_date_localized_plugin-1.4.5.tar.gz", hash = "sha256:9e37f1343d314c9cd8f9cbbf117c4bdc1d2d24a0653c5bbd7059d072f2cd0972", size = 450263 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/c0/b63cb3008564242a3d1ba7a6dd6dc29d7fb297e65bda93cef655780757af/mkdocs_git_revision_date_localized_plugin-1.4.5-py3-none-any.whl", hash = "sha256:395ae0b9eec565c78a76fffc938b70f52774bf2971245482d31aba47018c5fa9", size = 25284 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -1859,101 +1771,101 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707, upload-time = "2025-05-13T13:27:57.173Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767, upload-time = "2025-05-13T13:27:54.089Z" }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload-time = "2025-01-25T08:39:43.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload-time = "2025-01-25T08:38:22.917Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload-time = "2025-01-25T08:38:25.079Z" }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload-time = "2025-01-25T08:38:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload-time = "2025-01-25T08:38:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload-time = "2025-01-25T08:38:29.159Z" }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload-time = "2025-01-25T08:38:33.04Z" }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload-time = "2025-01-25T08:38:34.987Z" }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload-time = "2025-01-25T08:38:35.983Z" }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload-time = "2025-01-25T08:38:38.198Z" }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload-time = "2025-01-25T08:38:39.257Z" }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload-time = "2025-01-25T08:38:40.395Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload-time = "2025-01-25T08:38:42.141Z" }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload-time = "2025-01-25T08:38:43.402Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload-time = "2025-01-25T08:38:45.143Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload-time = "2025-01-25T08:38:46.029Z" }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload-time = "2025-01-25T08:38:47.035Z" }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload-time = "2025-01-25T08:38:47.902Z" }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload-time = "2025-01-25T08:38:48.839Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload-time = "2025-01-25T08:38:49.773Z" }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload-time = "2025-01-25T08:38:51.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload-time = "2025-01-25T08:38:52.542Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload-time = "2025-01-25T08:38:54.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload-time = "2025-01-25T08:38:55.576Z" }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload-time = "2025-01-25T08:38:56.654Z" }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload-time = "2025-01-25T08:38:57.662Z" }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload-time = "2025-01-25T08:38:59.505Z" }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload-time = "2025-01-25T08:39:00.483Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload-time = "2025-01-25T08:39:01.484Z" }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload-time = "2025-01-25T08:39:02.444Z" }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload-time = "2025-01-25T08:39:03.369Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload-time = "2025-01-25T08:39:04.284Z" }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload-time = "2025-01-25T08:39:05.174Z" }, ] [[package]] name = "multidict" version = "6.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, - { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, - { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, - { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, - { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, - { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, - { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, - { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, - { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, - { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, - { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, - { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, - { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, - { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, - { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, - { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, - { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, - { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, - { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, - { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, - { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, - { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, - { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, - { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, - { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, - { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, - { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, - { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, - { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, - { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, - { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, - { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, - { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, - { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, - { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515, upload-time = "2025-05-19T14:14:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609, upload-time = "2025-05-19T14:14:21.538Z" }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871, upload-time = "2025-05-19T14:14:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661, upload-time = "2025-05-19T14:14:24.124Z" }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422, upload-time = "2025-05-19T14:14:25.437Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447, upload-time = "2025-05-19T14:14:26.793Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455, upload-time = "2025-05-19T14:14:28.149Z" }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666, upload-time = "2025-05-19T14:14:29.584Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392, upload-time = "2025-05-19T14:14:30.961Z" }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969, upload-time = "2025-05-19T14:14:32.672Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433, upload-time = "2025-05-19T14:14:34.016Z" }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418, upload-time = "2025-05-19T14:14:35.376Z" }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042, upload-time = "2025-05-19T14:14:36.723Z" }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280, upload-time = "2025-05-19T14:14:38.194Z" }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322, upload-time = "2025-05-19T14:14:40.015Z" }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070, upload-time = "2025-05-19T14:14:41.904Z" }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667, upload-time = "2025-05-19T14:14:43.534Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, ] [[package]] @@ -1964,30 +1876,30 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] [[package]] @@ -2000,9 +1912,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, ] [[package]] @@ -2025,9 +1937,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, ] [[package]] @@ -2040,18 +1952,18 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, ] [[package]] @@ -2063,27 +1975,27 @@ dependencies = [ { name = "cftime" }, { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } +sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064, upload-time = "2024-10-22T19:01:25.521Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, - { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, - { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, - { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, - { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, - { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, - { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, - { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, - { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, - { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, + { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078, upload-time = "2024-10-22T19:00:39.93Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104, upload-time = "2024-10-22T19:00:41.683Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498, upload-time = "2024-10-22T19:00:43.822Z" }, + { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073, upload-time = "2024-10-22T19:00:45.925Z" }, + { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215, upload-time = "2024-10-22T19:00:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127, upload-time = "2024-10-22T19:00:50.613Z" }, + { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781, upload-time = "2024-10-22T19:00:52.383Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415, upload-time = "2024-10-22T19:00:54.412Z" }, + { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579, upload-time = "2024-10-22T19:00:56.594Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523, upload-time = "2024-10-22T19:00:58.97Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] @@ -2093,9 +2005,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, ] [[package]] @@ -2106,18 +2018,18 @@ dependencies = [ { name = "numpy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134, upload-time = "2025-05-22T13:33:04.098Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, - { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, - { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, - { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, - { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, - { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, - { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, - { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, - { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, - { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, + { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980, upload-time = "2025-05-22T13:32:37.718Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826, upload-time = "2025-05-22T13:32:39.737Z" }, + { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684, upload-time = "2025-05-22T13:32:41.252Z" }, + { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927, upload-time = "2025-05-22T13:32:42.905Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259, upload-time = "2025-05-22T13:32:45.398Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434, upload-time = "2025-05-22T13:32:47.26Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402, upload-time = "2025-05-22T13:32:48.574Z" }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455, upload-time = "2025-05-22T13:32:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711, upload-time = "2025-05-22T13:32:52.198Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701, upload-time = "2025-05-22T13:32:54.28Z" }, ] [package.optional-dependencies] @@ -2129,55 +2041,55 @@ crc32c = [ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, ] [[package]] @@ -2190,40 +2102,40 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213, upload-time = "2024-09-20T13:10:04.827Z" } 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/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222, upload-time = "2024-09-20T13:08:56.254Z" }, + { 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, upload-time = "2024-09-20T13:08:58.645Z" }, + { 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, upload-time = "2024-09-20T19:01:57.571Z" }, + { 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, upload-time = "2024-09-20T13:09:01.501Z" }, + { 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, upload-time = "2024-09-20T19:02:00.678Z" }, + { 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, upload-time = "2024-09-20T13:09:04.105Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166, upload-time = "2024-09-20T13:09:06.917Z" }, + { 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, upload-time = "2024-09-20T13:09:09.655Z" }, + { 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, upload-time = "2024-09-20T13:09:14.718Z" }, + { 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, upload-time = "2024-09-20T19:02:03.88Z" }, + { 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, upload-time = "2024-09-20T13:09:17.621Z" }, + { 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, upload-time = "2024-09-20T19:02:07.094Z" }, + { 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, upload-time = "2024-09-20T13:09:20.474Z" }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248, upload-time = "2024-09-20T13:09:23.137Z" }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, ] [[package]] name = "parso" version = "0.8.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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, ] [[package]] @@ -2234,18 +2146,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029, upload-time = "2024-05-06T19:51:41.945Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905, upload-time = "2024-05-06T19:51:39.271Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, ] [[package]] @@ -2255,64 +2167,64 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" version = "11.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] @@ -2326,18 +2238,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, ] [[package]] name = "prometheus-client" version = "0.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443, upload-time = "2025-05-16T20:50:18.333Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, + { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658, upload-time = "2025-05-16T20:50:16.978Z" }, ] [[package]] @@ -2347,118 +2259,118 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload-time = "2025-03-26T03:06:12.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload-time = "2025-03-26T03:04:01.912Z" }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload-time = "2025-03-26T03:04:03.704Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload-time = "2025-03-26T03:04:05.257Z" }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload-time = "2025-03-26T03:04:07.044Z" }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload-time = "2025-03-26T03:04:08.676Z" }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload-time = "2025-03-26T03:04:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload-time = "2025-03-26T03:04:11.616Z" }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload-time = "2025-03-26T03:04:13.102Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload-time = "2025-03-26T03:04:14.658Z" }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload-time = "2025-03-26T03:04:16.207Z" }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload-time = "2025-03-26T03:04:18.11Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload-time = "2025-03-26T03:04:19.562Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload-time = "2025-03-26T03:04:21.065Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload-time = "2025-03-26T03:04:22.718Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload-time = "2025-03-26T03:04:24.039Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload-time = "2025-03-26T03:04:25.211Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload-time = "2025-03-26T03:04:26.436Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload-time = "2025-03-26T03:04:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload-time = "2025-03-26T03:04:30.659Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload-time = "2025-03-26T03:04:31.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload-time = "2025-03-26T03:04:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload-time = "2025-03-26T03:04:35.542Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload-time = "2025-03-26T03:04:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload-time = "2025-03-26T03:04:39.532Z" }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload-time = "2025-03-26T03:04:41.109Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload-time = "2025-03-26T03:04:42.544Z" }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload-time = "2025-03-26T03:04:44.06Z" }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload-time = "2025-03-26T03:04:45.983Z" }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload-time = "2025-03-26T03:04:47.699Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload-time = "2025-03-26T03:04:49.195Z" }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload-time = "2025-03-26T03:04:50.595Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload-time = "2025-03-26T03:04:51.791Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload-time = "2025-03-26T03:06:10.5Z" }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -2471,9 +2383,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, ] [[package]] @@ -2483,71 +2395,68 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, -] - -[[package]] -name = "pygithub" -version = "2.6.1" +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, +] + +[[package]] +name = "pydantic-settings" +version = "2.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "deprecated" }, - { name = "pyjwt", extra = ["crypto"] }, - { name = "pynacl" }, - { name = "requests" }, - { name = "typing-extensions" }, - { name = "urllib3" }, + { name = "pydantic" }, + { name = "python-dotenv" }, + { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/c0/88/e08ab18dc74b2916f48703ed1a797d57cb64eca0e23b0a9254e13cfe3911/pygithub-2.6.1.tar.gz", hash = "sha256:b5c035392991cca63959e9453286b41b54d83bf2de2daa7d7ff7e4312cebf3bf", size = 3659473 } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ac/fc/a444cd19ccc8c4946a512f3827ed0b3565c88488719d800d54a75d541c0b/PyGithub-2.6.1-py3-none-any.whl", hash = "sha256:6f2fa6d076ccae475f9fc392cc6cdbd54db985d4f69b8833a28397de75ed6ca3", size = 410451 }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, ] [[package]] @@ -2567,18 +2476,18 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994, upload-time = "2025-03-04T15:17:40.692Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652, upload-time = "2025-03-04T15:16:54.37Z" }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538, upload-time = "2025-03-04T15:16:57.415Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661, upload-time = "2025-03-04T15:16:59.762Z" }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874, upload-time = "2025-03-04T15:17:02.224Z" }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840, upload-time = "2025-03-04T15:17:04.482Z" }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132, upload-time = "2025-03-04T15:17:06.049Z" }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703, upload-time = "2025-03-04T15:17:07.45Z" }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772, upload-time = "2025-03-04T15:17:10.419Z" }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452, upload-time = "2025-03-04T15:17:12.681Z" }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838, upload-time = "2025-03-04T15:17:14.962Z" }, ] [package.optional-dependencies] @@ -2586,20 +2495,6 @@ sql-sqlite = [ { name = "sqlalchemy" }, ] -[[package]] -name = "pyjwt" -version = "2.10.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e7/46/bd74733ff231675599650d3e47f361794b22ef3e3770998dda30d3b63726/pyjwt-2.10.1.tar.gz", hash = "sha256:3cc5772eb20009233caf06e9d8a0577824723b44e6648ee0a2aedb6cf9381953", size = 87785 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/61/ad/689f02752eeec26aed679477e80e632ef1b682313be70793d798c1d5fc8f/PyJWT-2.10.1-py3-none-any.whl", hash = "sha256:dcdd193e30abefd5debf142f9adfcdd2b58004e644f25406ffaebd50bd98dacb", size = 22997 }, -] - -[package.optional-dependencies] -crypto = [ - { name = "cryptography" }, -] - [[package]] name = "pymdown-extensions" version = "10.15" @@ -2608,29 +2503,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, -] - -[[package]] -name = "pynacl" -version = "1.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a7/22/27582568be639dfe22ddb3902225f91f2f17ceff88ce80e4db396c8986da/PyNaCl-1.5.0.tar.gz", hash = "sha256:8ac7448f09ab85811607bdd21ec2464495ac8b7c66d146bf545b0f08fb9220ba", size = 3392854 } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/75/0b8ede18506041c0bf23ac4d8e2971b4161cd6ce630b177d0a08eb0d8857/PyNaCl-1.5.0-cp36-abi3-macosx_10_10_universal2.whl", hash = "sha256:401002a4aaa07c9414132aaed7f6836ff98f59277a234704ff66878c2ee4a0d1", size = 349920 }, - { url = "https://files.pythonhosted.org/packages/59/bb/fddf10acd09637327a97ef89d2a9d621328850a72f1fdc8c08bdf72e385f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_24_aarch64.whl", hash = "sha256:52cb72a79269189d4e0dc537556f4740f7f0a9ec41c1322598799b0bdad4ef92", size = 601722 }, - { url = "https://files.pythonhosted.org/packages/5d/70/87a065c37cca41a75f2ce113a5a2c2aa7533be648b184ade58971b5f7ccc/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a36d4a9dda1f19ce6e03c9a784a2921a4b726b02e1c736600ca9c22029474394", size = 680087 }, - { url = "https://files.pythonhosted.org/packages/ee/87/f1bb6a595f14a327e8285b9eb54d41fef76c585a0edef0a45f6fc95de125/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_24_x86_64.whl", hash = "sha256:0c84947a22519e013607c9be43706dd42513f9e6ae5d39d3613ca1e142fba44d", size = 856678 }, - { url = "https://files.pythonhosted.org/packages/66/28/ca86676b69bf9f90e710571b67450508484388bfce09acf8a46f0b8c785f/PyNaCl-1.5.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:06b8f6fa7f5de8d5d2f7573fe8c863c051225a27b61e6860fd047b1775807858", size = 1133660 }, - { url = "https://files.pythonhosted.org/packages/3d/85/c262db650e86812585e2bc59e497a8f59948a005325a11bbbc9ecd3fe26b/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:a422368fc821589c228f4c49438a368831cb5bbc0eab5ebe1d7fac9dded6567b", size = 663824 }, - { url = "https://files.pythonhosted.org/packages/fd/1a/cc308a884bd299b651f1633acb978e8596c71c33ca85e9dc9fa33a5399b9/PyNaCl-1.5.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:61f642bf2378713e2c2e1de73444a3778e5f0a38be6fee0fe532fe30060282ff", size = 1117912 }, - { url = "https://files.pythonhosted.org/packages/25/2d/b7df6ddb0c2a33afdb358f8af6ea3b8c4d1196ca45497dd37a56f0c122be/PyNaCl-1.5.0-cp36-abi3-win32.whl", hash = "sha256:e46dae94e34b085175f8abb3b0aaa7da40767865ac82c928eeb9e57e1ea8a543", size = 204624 }, - { url = "https://files.pythonhosted.org/packages/5e/22/d3db169895faaf3e2eda892f005f433a62db2decbcfbc2f61e6517adfa87/PyNaCl-1.5.0-cp36-abi3-win_amd64.whl", hash = "sha256:20f42270d27e1b6a29f54032090b972d97f0a1b0948cc52392041ef7831fee93", size = 212141 }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload-time = "2025-04-27T23:48:27.359Z" }, ] [[package]] @@ -2642,29 +2517,29 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, ] [[package]] @@ -2674,24 +2549,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload-time = "2025-02-16T04:27:44.539Z" }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload-time = "2025-02-16T04:27:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload-time = "2025-02-16T04:27:49.239Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload-time = "2025-02-16T04:27:52.65Z" }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload-time = "2025-02-16T04:27:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload-time = "2025-02-16T04:27:58.343Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload-time = "2025-02-16T04:28:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload-time = "2025-02-16T04:28:04.988Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload-time = "2025-02-16T04:28:09.036Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload-time = "2025-02-16T04:28:10.944Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload-time = "2025-02-16T04:28:13.342Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload-time = "2025-02-16T04:28:15.818Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload-time = "2025-02-16T04:28:18.338Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload-time = "2025-02-16T04:28:20.822Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload-time = "2025-02-16T04:28:23.303Z" }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload-time = "2025-02-16T04:28:25.227Z" }, ] [[package]] @@ -2704,9 +2579,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -2716,27 +2591,45 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, +] + +[[package]] +name = "python-dotenv" +version = "1.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } 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 }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, ] [[package]] name = "python-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, +] + +[[package]] +name = "python-multipart" +version = "0.0.20" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] [[package]] @@ -2744,48 +2637,48 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, ] [[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 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +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, upload-time = "2024-08-06T20:32:03.408Z" }, + { 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, upload-time = "2024-08-06T20:32:04.926Z" }, + { 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, upload-time = "2024-08-06T20:32:06.459Z" }, + { 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, upload-time = "2024-08-06T20:32:08.338Z" }, + { 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, upload-time = "2024-08-06T20:32:14.124Z" }, + { 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, upload-time = "2024-08-06T20:32:16.17Z" }, + { 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, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { 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, upload-time = "2024-08-06T20:32:25.131Z" }, + { 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, upload-time = "2024-08-06T20:32:26.511Z" }, + { 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, upload-time = "2024-08-06T20:32:28.363Z" }, + { 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, upload-time = "2024-08-06T20:32:30.058Z" }, + { 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, upload-time = "2024-08-06T20:32:31.881Z" }, + { 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, upload-time = "2024-08-06T20:32:37.083Z" }, + { 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, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, ] [[package]] @@ -2795,9 +2688,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, ] [[package]] @@ -2807,35 +2700,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, ] [[package]] @@ -2852,16 +2745,16 @@ dependencies = [ { name = "numpy" }, { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } +sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990, upload-time = "2024-12-02T14:49:25.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, - { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, - { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, - { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, - { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, - { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, - { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, - { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, + { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767, upload-time = "2024-12-02T14:48:38.794Z" }, + { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975, upload-time = "2024-12-02T14:48:41.895Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391, upload-time = "2024-12-02T14:48:44.447Z" }, + { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478, upload-time = "2024-12-02T14:48:46.893Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543, upload-time = "2024-12-02T14:48:49.757Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924, upload-time = "2024-12-02T14:48:53.263Z" }, + { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721, upload-time = "2024-12-02T14:48:56.533Z" }, + { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154, upload-time = "2024-12-02T14:48:59.261Z" }, ] [[package]] @@ -2873,9 +2766,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, ] [[package]] @@ -2888,9 +2781,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -2900,18 +2793,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, ] [[package]] @@ -2922,9 +2815,23 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload-time = "2024-11-01T16:43:57.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload-time = "2024-11-01T16:43:55.817Z" }, +] + +[[package]] +name = "rich-toolkit" +version = "0.14.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805, upload-time = "2025-05-12T19:19:15.284Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, + { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815, upload-time = "2025-05-12T19:19:13.713Z" }, ] [[package]] @@ -2938,81 +2845,81 @@ dependencies = [ { name = "rasterio" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600, upload-time = "2025-04-21T17:46:54.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, + { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151, upload-time = "2025-04-21T17:46:52.801Z" }, ] [[package]] name = "rpds-py" version = "0.25.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, ] [[package]] name = "ruff" version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407, upload-time = "2025-03-14T13:52:36.539Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, - { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, - { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, - { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, - { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, - { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, - { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, - { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, - { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, - { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, - { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, - { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, - { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, - { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, - { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, - { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, - { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158, upload-time = "2025-03-14T13:51:55.69Z" }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071, upload-time = "2025-03-14T13:51:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944, upload-time = "2025-03-14T13:52:02.318Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725, upload-time = "2025-03-14T13:52:04.303Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435, upload-time = "2025-03-14T13:52:06.602Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664, upload-time = "2025-03-14T13:52:08.613Z" }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856, upload-time = "2025-03-14T13:52:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156, upload-time = "2025-03-14T13:52:13.383Z" }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167, upload-time = "2025-03-14T13:52:15.528Z" }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311, upload-time = "2025-03-14T13:52:18.088Z" }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039, upload-time = "2025-03-14T13:52:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939, upload-time = "2025-03-14T13:52:22.798Z" }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259, upload-time = "2025-03-14T13:52:24.89Z" }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212, upload-time = "2025-03-14T13:52:27.493Z" }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905, upload-time = "2025-03-14T13:52:30.46Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730, upload-time = "2025-03-14T13:52:32.508Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956, upload-time = "2025-03-14T13:52:34.491Z" }, ] [[package]] @@ -3024,9 +2931,9 @@ dependencies = [ { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305 } +sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305, upload-time = "2025-05-20T15:54:56.076Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481 }, + { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481, upload-time = "2025-05-20T15:54:54.492Z" }, ] [[package]] @@ -3036,9 +2943,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload-time = "2025-02-26T20:44:57.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload-time = "2025-02-26T20:44:55.509Z" }, ] [[package]] @@ -3048,44 +2955,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, ] [[package]] name = "setuptools" version = "80.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720, upload-time = "2025-05-20T14:02:53.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470, upload-time = "2025-05-20T14:02:51.348Z" }, ] [[package]] @@ -3095,69 +3002,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, ] [[package]] -name = "six" -version = "1.17.0" +name = "shellingham" +version = "1.5.4" 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 } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] [[package]] -name = "smmap" -version = "5.0.2" +name = "six" +version = "1.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/44/cd/a040c4b3119bbe532e5b0732286f805445375489fceaec1f48306068ee3b/smmap-5.0.2.tar.gz", hash = "sha256:26ea65a03958fa0c8a1c7e8c7a58fdc77221b8910f6be2131affade476898ad5", size = 22329 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/be/d09147ad1ec7934636ad912901c5fd7667e1c858e19d355237db0d0cd5e4/smmap-5.0.2-py3-none-any.whl", hash = "sha256:b30115f0def7d7531d22a0fb6502488d879e75b260a9db4d0819cfb25403af5e", size = 24303 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] [[package]] @@ -3168,25 +3075,25 @@ dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424, upload-time = "2025-05-14T17:10:32.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, - { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, - { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, - { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, - { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, - { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, - { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, - { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, - { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, - { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, - { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, - { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, - { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, - { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, - { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, - { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, - { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232, upload-time = "2025-05-14T17:48:20.444Z" }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897, upload-time = "2025-05-14T17:48:21.634Z" }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313, upload-time = "2025-05-14T17:51:56.205Z" }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807, upload-time = "2025-05-14T17:55:26.928Z" }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632, upload-time = "2025-05-14T17:51:59.384Z" }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642, upload-time = "2025-05-14T17:55:29.901Z" }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475, upload-time = "2025-05-14T17:56:02.095Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903, upload-time = "2025-05-14T17:56:03.499Z" }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645, upload-time = "2025-05-14T17:55:24.854Z" }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399, upload-time = "2025-05-14T17:55:28.097Z" }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269, upload-time = "2025-05-14T17:50:38.227Z" }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364, upload-time = "2025-05-14T17:51:49.829Z" }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072, upload-time = "2025-05-14T17:50:39.774Z" }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074, upload-time = "2025-05-14T17:51:51.736Z" }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514, upload-time = "2025-05-14T17:55:49.915Z" }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557, upload-time = "2025-05-14T17:55:51.349Z" }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224, upload-time = "2025-05-14T17:39:42.154Z" }, ] [[package]] @@ -3198,9 +3105,21 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, +] + +[[package]] +name = "starlette" +version = "0.46.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, ] [[package]] @@ -3210,18 +3129,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload-time = "2023-03-10T12:50:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload-time = "2023-03-10T12:50:17.242Z" }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, ] [[package]] @@ -3233,9 +3152,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, ] [[package]] @@ -3245,9 +3164,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } +sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347, upload-time = "2025-05-22T03:19:13.699Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, + { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593, upload-time = "2025-05-22T03:19:11.614Z" }, ] [[package]] @@ -3257,37 +3176,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790, upload-time = "2024-10-04T16:17:04.001Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383 }, + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383, upload-time = "2024-10-04T16:17:01.533Z" }, ] [[package]] name = "tornado" version = "6.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, ] [[package]] @@ -3297,36 +3216,51 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, +] + +[[package]] +name = "typer" +version = "0.15.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "rich" }, + { name = "shellingham" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641, upload-time = "2025-04-28T21:40:59.204Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, + { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253, upload-time = "2025-04-28T21:40:56.269Z" }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, ] [[package]] @@ -3336,46 +3270,46 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] [[package]] name = "ujson" version = "5.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, - { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, - { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, - { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, - { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, - { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, - { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, - { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, - { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, - { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, - { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, - { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, - { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, - { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, - { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, - { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, - { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, - { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, - { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885, upload-time = "2024-05-14T02:02:34.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353, upload-time = "2024-05-14T02:00:48.04Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813, upload-time = "2024-05-14T02:00:49.28Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988, upload-time = "2024-05-14T02:00:50.484Z" }, + { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561, upload-time = "2024-05-14T02:00:52.146Z" }, + { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497, upload-time = "2024-05-14T02:00:53.366Z" }, + { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877, upload-time = "2024-05-14T02:00:55.095Z" }, + { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632, upload-time = "2024-05-14T02:00:57.099Z" }, + { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513, upload-time = "2024-05-14T02:00:58.488Z" }, + { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616, upload-time = "2024-05-14T02:01:00.463Z" }, + { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071, upload-time = "2024-05-14T02:01:02.211Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642, upload-time = "2024-05-14T02:01:04.055Z" }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807, upload-time = "2024-05-14T02:01:05.25Z" }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972, upload-time = "2024-05-14T02:01:06.458Z" }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686, upload-time = "2024-05-14T02:01:07.618Z" }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591, upload-time = "2024-05-14T02:01:08.901Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853, upload-time = "2024-05-14T02:01:10.772Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689, upload-time = "2024-05-14T02:01:12.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576, upload-time = "2024-05-14T02:01:14.39Z" }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764, upload-time = "2024-05-14T02:01:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211, upload-time = "2024-05-14T02:01:17.567Z" }, ] [[package]] @@ -3385,27 +3319,71 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427, upload-time = "2024-12-13T00:58:27.514Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087, upload-time = "2024-12-13T00:58:24.582Z" }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, +] + +[[package]] +name = "uvicorn" +version = "0.34.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "click" }, + { name = "h11" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815, upload-time = "2025-04-19T06:02:50.101Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483, upload-time = "2025-04-19T06:02:48.42Z" }, +] + +[package.optional-dependencies] +standard = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "httptools" }, + { name = "python-dotenv" }, + { name = "pyyaml" }, + { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, + { name = "watchfiles" }, + { name = "websockets" }, +] + +[[package]] +name = "uvloop" +version = "0.21.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, ] [[package]] @@ -3417,9 +3395,9 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, ] [[package]] @@ -3434,100 +3412,168 @@ dependencies = [ { name = "universal-pathlib" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } +sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650, upload-time = "2025-03-03T16:52:05.169Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, + { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890, upload-time = "2025-03-03T16:52:03.25Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, +] + +[[package]] +name = "watchfiles" +version = "1.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537, upload-time = "2025-04-08T10:36:26.722Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336, upload-time = "2025-04-08T10:34:59.359Z" }, + { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977, upload-time = "2025-04-08T10:35:00.522Z" }, + { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232, upload-time = "2025-04-08T10:35:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151, upload-time = "2025-04-08T10:35:03.358Z" }, + { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054, upload-time = "2025-04-08T10:35:04.561Z" }, + { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955, upload-time = "2025-04-08T10:35:05.786Z" }, + { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234, upload-time = "2025-04-08T10:35:07.187Z" }, + { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750, upload-time = "2025-04-08T10:35:08.859Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591, upload-time = "2025-04-08T10:35:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370, upload-time = "2025-04-08T10:35:12.412Z" }, + { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791, upload-time = "2025-04-08T10:35:13.719Z" }, + { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622, upload-time = "2025-04-08T10:35:15.071Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699, upload-time = "2025-04-08T10:35:16.732Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511, upload-time = "2025-04-08T10:35:17.956Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715, upload-time = "2025-04-08T10:35:19.202Z" }, + { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138, upload-time = "2025-04-08T10:35:20.586Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592, upload-time = "2025-04-08T10:35:21.87Z" }, + { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532, upload-time = "2025-04-08T10:35:23.143Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865, upload-time = "2025-04-08T10:35:24.702Z" }, + { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887, upload-time = "2025-04-08T10:35:25.969Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498, upload-time = "2025-04-08T10:35:27.353Z" }, + { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663, upload-time = "2025-04-08T10:35:28.685Z" }, + { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410, upload-time = "2025-04-08T10:35:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965, upload-time = "2025-04-08T10:35:32.023Z" }, + { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693, upload-time = "2025-04-08T10:35:33.225Z" }, + { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287, upload-time = "2025-04-08T10:35:34.568Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, ] [[package]] name = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, +] + +[[package]] +name = "websockets" +version = "15.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, ] [[package]] @@ -3539,9 +3585,9 @@ dependencies = [ { name = "packaging" }, { name = "pandas" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, ] [[package]] @@ -3553,43 +3599,43 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload-time = "2025-04-17T00:45:14.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload-time = "2025-04-17T00:42:04.511Z" }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload-time = "2025-04-17T00:42:06.43Z" }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload-time = "2025-04-17T00:42:07.976Z" }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload-time = "2025-04-17T00:42:09.902Z" }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload-time = "2025-04-17T00:42:11.768Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload-time = "2025-04-17T00:42:13.983Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload-time = "2025-04-17T00:42:16.386Z" }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload-time = "2025-04-17T00:42:18.622Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload-time = "2025-04-17T00:42:20.9Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload-time = "2025-04-17T00:42:22.926Z" }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload-time = "2025-04-17T00:42:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload-time = "2025-04-17T00:42:27.475Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload-time = "2025-04-17T00:42:29.333Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload-time = "2025-04-17T00:42:31.668Z" }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload-time = "2025-04-17T00:42:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload-time = "2025-04-17T00:42:35.873Z" }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload-time = "2025-04-17T00:42:37.586Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload-time = "2025-04-17T00:42:39.602Z" }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload-time = "2025-04-17T00:42:41.469Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload-time = "2025-04-17T00:42:43.666Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload-time = "2025-04-17T00:42:45.391Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload-time = "2025-04-17T00:42:47.552Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload-time = "2025-04-17T00:42:49.406Z" }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload-time = "2025-04-17T00:42:51.588Z" }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload-time = "2025-04-17T00:42:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload-time = "2025-04-17T00:42:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload-time = "2025-04-17T00:42:57.895Z" }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload-time = "2025-04-17T00:43:00.094Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload-time = "2025-04-17T00:43:02.242Z" }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload-time = "2025-04-17T00:43:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload-time = "2025-04-17T00:43:06.609Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload-time = "2025-04-17T00:43:09.01Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload-time = "2025-04-17T00:43:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload-time = "2025-04-17T00:43:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload-time = "2025-04-17T00:45:12.199Z" }, ] [[package]] @@ -3603,16 +3649,16 @@ dependencies = [ { name = "packaging" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } +sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825, upload-time = "2025-05-19T14:19:00.123Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, + { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364, upload-time = "2025-05-19T14:18:58.789Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545, upload-time = "2024-11-10T15:05:20.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630, upload-time = "2024-11-10T15:05:19.275Z" }, ] From 4a82c4d7da9b91e4dceee837525c67c4acc1d6b0 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Wed, 28 May 2025 09:36:46 -0400 Subject: [PATCH 45/97] JIRA-6388: EDFS QA: Create an icefabric tool for exporting icechunk stores to tiff Add a tool and example to convert icechunk rasters to tif --- .gitignore | 5 + examples/icechunk_to_tiff.ipynb | 686 ++++ src/icefabric_tools/pyproject.toml | 1 + .../src/icefabric_tools/iceberg/__init__.py | 0 .../icechunk/icechunk_s3_module.py | 112 +- uv.lock | 2788 ++++++++--------- 6 files changed, 2194 insertions(+), 1398 deletions(-) create mode 100644 examples/icechunk_to_tiff.ipynb create mode 100644 src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py diff --git a/.gitignore b/.gitignore index 663065c..db19110 100644 --- a/.gitignore +++ b/.gitignore @@ -179,3 +179,8 @@ Pipfile .qodo _version.py data/ +*.db +*.zarr +.zarr +*.tiff +*.tif diff --git a/examples/icechunk_to_tiff.ipynb b/examples/icechunk_to_tiff.ipynb new file mode 100644 index 0000000..1e07c9e --- /dev/null +++ b/examples/icechunk_to_tiff.ipynb @@ -0,0 +1,686 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "42d13343", + "metadata": {}, + "source": [ + "# Demo: Export icechunk raster data to geotiff\n", + "\n", + "Raster topobathymetry data made into icechunk stores is not inherently visibile with traditional GIS methods. Use this method to retrieve a dataset and export to geotiff. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "7cba65ef", + "metadata": {}, + "outputs": [], + "source": [ + "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations" + ] + }, + { + "cell_type": "markdown", + "id": "bcebeab5", + "metadata": {}, + "source": [ + "Open the dataset to check information and variable name." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7df8b014", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    <xarray.Dataset> Size: 3GB\n",
    +       "Dimensions:                        (band: 1, y: 14819, x: 22226)\n",
    +       "Coordinates:\n",
    +       "    spatial_ref                    int64 8B 0\n",
    +       "  * band                           (band) int64 8B 1\n",
    +       "  * x                              (x) float64 178kB -160.5 -160.5 ... -154.5\n",
    +       "  * y                              (y) float64 119kB 22.5 22.5 ... 18.5 18.5\n",
    +       "Data variables:\n",
    +       "    __xarray_dataarray_variable__  (band, y, x) float64 3GB dask.array<chunksize=(1, 464, 1390), meta=np.ndarray>
    " + ], + "text/plain": [ + " Size: 3GB\n", + "Dimensions: (band: 1, y: 14819, x: 22226)\n", + "Coordinates:\n", + " spatial_ref int64 8B 0\n", + " * band (band) int64 8B 1\n", + " * x (x) float64 178kB -160.5 -160.5 ... -154.5\n", + " * y (y) float64 119kB 22.5 22.5 ... 18.5 18.5\n", + "Data variables:\n", + " __xarray_dataarray_variable__ (band, y, x) float64 3GB dask.array" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", + "ds = repo.retrieve_dataset()\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "id": "9e3dceab", + "metadata": {}, + "source": [ + "Save the full dataset to tiff." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9e2935a8", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved dataset to ./hawaii_topo_30.tiff\n" + ] + } + ], + "source": [ + "var_name = \"__xarray_dataarray_variable__\"\n", + "dest = \"./hawaii_topo_30.tif\"\n", + "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name)" + ] + }, + { + "cell_type": "markdown", + "id": "3ea00144", + "metadata": {}, + "source": [ + "Save a clipped bounding box of dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5493c79b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved clipped window to ./hawaii_clipped_topo_30.tiff\n" + ] + } + ], + "source": [ + "var_name = \"__xarray_dataarray_variable__\"\n", + "dest = \"./hawaii_clipped_topo_30.tif\"\n", + "minx, miny, maxx, maxy = -159, 21, -158, 22\n", + "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name, minx=minx, miny=miny, maxx=maxx, maxy=maxy)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 4760db3..9c8a277 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -39,6 +39,7 @@ dependencies = [ "fsspec==2025.5.0", "dask==2025.5.1", "netCDF4==1.7.2", + "python-dotenv==1.1.0", ] [build-system] diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py b/src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py index 53a5d66..b294750 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py @@ -6,7 +6,10 @@ """ import subprocess +import warnings from enum import Enum +from pathlib import Path +from typing import Any import icechunk as ic import xarray as xr @@ -218,6 +221,11 @@ def retrieve_dataset(self, read_only: bool | None = True, branch: str | None = " """ session = self.create_session(read_only, branch) ds = xr.open_zarr(session.store, consolidated=False, chunks={}) + + # geotiff rasters saved in zarr need to be convereted to spatial-aware xarray with rioxarray + if "spatial_ref" in ds.data_vars: + ds.rio.write_crs(ds.spatial_ref.spatial_ref, inplace=True) + return ds def write_dataset( @@ -274,6 +282,104 @@ def append_virt_data_to_store( snapshot = session.commit(commit) print(f"Dataset has been appended on the {append_dim} dimension. Commit: {snapshot}") + def retrieve_and_convert_to_tif( + self, + dest: str | Path, + var_name: str = None, + branch: str | None = "main", + compress: str = "lzw", + tiled: bool = True, + minx: float | None = None, + miny: float | None = None, + maxx: float | None = None, + maxy: float | None = None, + profile_kwargs: dict[Any, Any] = None, + ) -> None: + """A function to retrieve a raster icechunk dataset and download as a tif. + + Parameters + ---------- + dest : str | Path + Destination file path for tiff + var_name : str, optional + Name of xarray variable to be used for raster data, by default None + branch : str | None, optional + Icechunk repo branch to be opened, by default "main" + compress : str, optional + Specify a compression type for raster, by default "lzw" + tiled : bool, optional + Specify if raster should be tiled or not. Cloud-Optimized Geotiffs (COG) must be tiled, by default True + minx : float | None, optional + Specify a bounding box minimum x. Must have all [minx, miny, maxx, maxy] specified, by default None + miny : float | None, optional + Specify a bounding box minimum y. Must have all [minx, miny, maxx, maxy] specified, by default None + maxx : float | None, optional + Specify a bounding box maximum x. Must have all [minx, miny, maxx, maxy] specified, by default None + maxy : float | None, optional + Specify a bounding box maximum x. Must have all [minx, miny, maxx, maxy] specified, by default None + profile_kwargs : dict[Any, Any], optional + Any additional profile keywords accepted by GDAL geotiff driver + (https://gdal.org/en/stable/drivers/raster/gtiff.html#creation-options), by default None + + + Raises + ------ + AttributeError + If an xarray dataset does not have a "band" attribute in coordinates, the file is not deemed a raster + and will raise error. + """ + ds = self.retrieve_dataset(read_only=True, branch=branch) + + if "band" not in ds.coords.dims: + raise AttributeError("Dataset needs a 'band' coordinate to export geotiff") + + # infer variable name if none provided - MAY HAVE UNEXPECTED RESULTS + if not var_name: + var_name = self._infer_var_name_for_geotiff(list(ds.data_vars.variables)) + + # initialize keywords dict if none + profile_kwargs = {} if not profile_kwargs else profile_kwargs + + # clip to window + if minx and miny and maxx and maxy: + subset = ds.rio.clip_box(minx=minx, miny=miny, maxx=maxx, maxy=maxy) + subset[var_name].rio.to_raster(dest, compress=compress, tiled=tiled, **profile_kwargs) + del subset + print(f"Saved clipped window to {dest}") + + else: + ds[var_name].rio.to_raster(dest, compress=compress, tiled=tiled, **profile_kwargs) + del ds + print(f"Saved dataset to {dest}") + + def _infer_var_name_for_geotiff(self, variable_list: list) -> str: + """Infer a variable name for saving a geotiff from xarray variables + + Picks the first variable that isn't 'spatial_ref'. In zarr, 'spatial_ref' from CRS is moved + from coordinates to variables. We want a variable that is not it. + This arbitarily picks the first variable. + + Parameters + ---------- + variable_list : list + Output of list(ds.data_vars.variables) + + Returns + ------- + str + Variable name to use for geotif generation + """ + if "spatial_ref" in variable_list: + variable_list.remove("spatial_ref") + var_name = variable_list[0] + warnings.warn( + UserWarning, + f"Inferring xarray variable name {var_name} for raster data. This may have unintended consequences." + "Open dataset separately to check variable names to insure correct output.", + stacklevel=2, + ) + return var_name + @staticmethod def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkContainer: @@ -301,8 +407,6 @@ def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkC ) -@staticmethod def get_icechunk_data(repo: NGWPCLocations) -> xr.Dataset: - """Return data from a designated NGWPCLocations Icechunk repo""" - ic_repo = IcechunkS3Repo(location=repo.path) - return ic_repo.retrieve_dataset() + """Convenience wrapper to return data from a designated NGWPCLocations Icechunk repo""" + return IcechunkS3Repo(location=repo.path).retrieve_dataset() diff --git a/uv.lock b/uv.lock index 731449a..aca5b2d 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,4 @@ version = 1 -revision = 2 requires-python = ">=3.11, <3.13" resolution-markers = [ "python_full_version >= '3.12'", @@ -18,9 +17,9 @@ members = [ name = "affine" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132, upload-time = "2023-01-19T23:44:30.696Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662, upload-time = "2023-01-19T23:44:28.833Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, ] [[package]] @@ -36,18 +35,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322, upload-time = "2025-05-01T16:45:45.484Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930, upload-time = "2025-05-01T16:45:43.508Z" }, + { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, ] [[package]] @@ -63,49 +62,49 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload-time = "2025-04-21T09:43:09.191Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload-time = "2025-04-21T09:40:55.776Z" }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload-time = "2025-04-21T09:40:57.301Z" }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload-time = "2025-04-21T09:40:59.322Z" }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload-time = "2025-04-21T09:41:00.795Z" }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload-time = "2025-04-21T09:41:02.89Z" }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload-time = "2025-04-21T09:41:04.461Z" }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload-time = "2025-04-21T09:41:06.728Z" }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload-time = "2025-04-21T09:41:08.293Z" }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload-time = "2025-04-21T09:41:11.054Z" }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload-time = "2025-04-21T09:41:13.213Z" }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload-time = "2025-04-21T09:41:14.827Z" }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload-time = "2025-04-21T09:41:17.168Z" }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload-time = "2025-04-21T09:41:19.353Z" }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload-time = "2025-04-21T09:41:21.868Z" }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload-time = "2025-04-21T09:41:24.78Z" }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload-time = "2025-04-21T09:41:26.48Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload-time = "2025-04-21T09:41:28.021Z" }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload-time = "2025-04-21T09:41:29.783Z" }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload-time = "2025-04-21T09:41:31.327Z" }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload-time = "2025-04-21T09:41:33.541Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload-time = "2025-04-21T09:41:35.634Z" }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload-time = "2025-04-21T09:41:37.456Z" }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload-time = "2025-04-21T09:41:39.756Z" }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload-time = "2025-04-21T09:41:41.972Z" }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload-time = "2025-04-21T09:41:44.192Z" }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload-time = "2025-04-21T09:41:46.049Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload-time = "2025-04-21T09:41:47.973Z" }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload-time = "2025-04-21T09:41:50.323Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload-time = "2025-04-21T09:41:52.111Z" }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload-time = "2025-04-21T09:41:53.94Z" }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload-time = "2025-04-21T09:41:55.689Z" }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload-time = "2025-04-21T09:41:57.977Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload-time = "2024-09-02T03:33:40.349Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload-time = "2024-09-02T03:34:59.454Z" }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, ] [[package]] @@ -115,18 +114,18 @@ 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, upload-time = "2024-12-13T17:10:40.86Z" } +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, upload-time = "2024-12-13T17:10:38.469Z" }, + { 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 = "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, upload-time = "2024-05-20T21:33:25.928Z" } +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, upload-time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] @@ -138,18 +137,18 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +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, upload-time = "2024-02-06T09:43:09.663Z" }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] [[package]] @@ -159,9 +158,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload-time = "2023-08-15T14:13:12.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload-time = "2023-08-15T14:13:10.752Z" }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, ] [[package]] @@ -171,18 +170,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, ] [[package]] @@ -193,57 +192,57 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, ] [[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, upload-time = "2024-11-30T04:30:14.439Z" } +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, upload-time = "2024-11-30T04:30:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload-time = "2025-02-25T18:15:32.003Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload-time = "2025-02-25T16:53:14.607Z" }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload-time = "2025-02-25T16:53:17.266Z" }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload-time = "2025-02-25T16:53:26.378Z" }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload-time = "2025-02-25T16:53:29.858Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, ] [[package]] @@ -254,9 +253,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, ] [[package]] @@ -270,17 +269,17 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload-time = "2025-01-29T05:37:11.71Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload-time = "2025-01-29T05:37:14.309Z" }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload-time = "2025-01-29T04:18:17.688Z" }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload-time = "2025-01-29T04:18:51.711Z" }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, ] [[package]] @@ -290,9 +289,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, ] [package.optional-dependencies] @@ -309,9 +308,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160, upload-time = "2025-02-27T20:28:15.588Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344, upload-time = "2025-02-27T20:28:13.085Z" }, + { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, ] [[package]] @@ -323,27 +322,27 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648, upload-time = "2025-02-27T20:27:59.559Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066, upload-time = "2025-02-27T20:27:53.137Z" }, + { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, ] [[package]] @@ -353,40 +352,40 @@ 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, upload-time = "2024-09-04T20:45:21.852Z" } -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, upload-time = "2024-09-04T20:43:51.124Z" }, - { 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, upload-time = "2024-09-04T20:43:52.872Z" }, - { 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, upload-time = "2024-09-04T20:43:56.123Z" }, - { 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, upload-time = "2024-09-04T20:43:57.891Z" }, - { 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, upload-time = "2024-09-04T20:44:00.18Z" }, - { 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, upload-time = "2024-09-04T20:44:01.585Z" }, - { 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, upload-time = "2024-09-04T20:44:03.467Z" }, - { 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, upload-time = "2024-09-04T20:44:05.023Z" }, - { 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, upload-time = "2024-09-04T20:44:06.444Z" }, - { 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, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, - { 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, upload-time = "2024-09-04T20:44:12.232Z" }, - { 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, upload-time = "2024-09-04T20:44:13.739Z" }, - { 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, upload-time = "2024-09-04T20:44:15.231Z" }, - { 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, upload-time = "2024-09-04T20:44:17.188Z" }, - { 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, upload-time = "2024-09-04T20:44:18.688Z" }, - { 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, upload-time = "2024-09-04T20:44:20.248Z" }, - { 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, upload-time = "2024-09-04T20:44:21.673Z" }, - { 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, upload-time = "2024-09-04T20:44:23.245Z" }, - { 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, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, +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 }, ] [[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, upload-time = "2023-08-12T20:38:17.776Z" } +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, upload-time = "2023-08-12T20:38:16.269Z" }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, ] [[package]] @@ -396,55 +395,55 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631, upload-time = "2024-10-22T18:48:34.194Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445, upload-time = "2024-10-22T18:47:51.09Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458, upload-time = "2024-10-22T18:47:52.245Z" }, - { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075, upload-time = "2024-10-22T18:47:53.338Z" }, - { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218, upload-time = "2024-10-22T18:47:54.763Z" }, - { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704, upload-time = "2024-10-22T18:47:56.035Z" }, - { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200, upload-time = "2024-10-22T18:47:58.036Z" }, - { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615, upload-time = "2024-10-22T18:47:59.575Z" }, - { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193, upload-time = "2024-10-22T18:48:00.767Z" }, - { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215, upload-time = "2024-10-22T18:48:02.275Z" }, - { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426, upload-time = "2024-10-22T18:48:03.57Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593, upload-time = "2024-10-22T18:48:04.918Z" }, - { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918, upload-time = "2024-10-22T18:48:06.195Z" }, + { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, + { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, + { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, + { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, + { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, + { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, + { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, + { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, + { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, + { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, + { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] @@ -454,9 +453,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] @@ -466,9 +465,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload-time = "2019-04-04T04:27:04.82Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload-time = "2019-04-04T04:27:03.36Z" }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, ] [[package]] @@ -478,27 +477,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload-time = "2021-05-28T21:23:27.935Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload-time = "2021-05-28T21:23:26.877Z" }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +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, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -508,9 +507,9 @@ 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, upload-time = "2024-03-12T16:53:41.133Z" } +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, upload-time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, ] [[package]] @@ -520,70 +519,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, ] [[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, upload-time = "2024-09-24T06:20:17.553Z" } -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, upload-time = "2024-09-24T06:18:18.032Z" }, - { 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, upload-time = "2024-09-24T06:18:19.373Z" }, - { 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, upload-time = "2024-09-24T06:18:20.983Z" }, - { 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, upload-time = "2024-09-24T06:18:23.085Z" }, - { 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, upload-time = "2024-09-24T06:18:24.463Z" }, - { 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, upload-time = "2024-09-24T06:18:25.624Z" }, - { 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, upload-time = "2024-09-24T06:18:26.578Z" }, - { 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, upload-time = "2024-09-24T06:18:28.174Z" }, - { 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, upload-time = "2024-09-24T06:18:29.104Z" }, - { url = "https://files.pythonhosted.org/packages/56/3e/6f39127f7027c75d130c0ba348d86a6150dff23761fbc6a5f71659f4521e/crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1", size = 38370, upload-time = "2024-09-24T06:18:30.013Z" }, - { url = "https://files.pythonhosted.org/packages/c9/fb/1587c2705a3a47a3d0067eecf9a6fec510761c96dec45c7b038fb5c8ff46/crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d", size = 39795, upload-time = "2024-09-24T06:18:31.324Z" }, - { 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, upload-time = "2024-09-24T06:18:32.425Z" }, - { 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, upload-time = "2024-09-24T06:18:34.097Z" }, - { 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, upload-time = "2024-09-24T06:18:35.02Z" }, - { 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, upload-time = "2024-09-24T06:18:35.954Z" }, - { 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, upload-time = "2024-09-24T06:18:36.896Z" }, - { 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, upload-time = "2024-09-24T06:18:38.099Z" }, - { 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, upload-time = "2024-09-24T06:18:39.051Z" }, - { 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, upload-time = "2024-09-24T06:18:40.021Z" }, - { 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, upload-time = "2024-09-24T06:18:40.925Z" }, - { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371, upload-time = "2024-09-24T06:18:42.711Z" }, - { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805, upload-time = "2024-09-24T06:18:43.6Z" }, +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 }, ] [[package]] name = "cycler" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +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, upload-time = "2023-10-07T05:32:16.783Z" }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] [[package]] @@ -600,62 +599,62 @@ dependencies = [ { name = "pyyaml" }, { name = "toolz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324, upload-time = "2025-05-20T19:54:30.688Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226, upload-time = "2025-05-20T19:54:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, ] [[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, upload-time = "2024-10-09T18:35:47.551Z" } +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, upload-time = "2024-10-09T18:35:44.272Z" }, + { 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 = "dnspython" version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, ] [[package]] @@ -665,9 +664,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506, upload-time = "2024-05-23T14:14:31.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592, upload-time = "2024-05-23T14:13:55.283Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, ] [[package]] @@ -678,9 +677,9 @@ dependencies = [ { name = "dnspython" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, ] [[package]] @@ -690,18 +689,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload-time = "2019-12-30T22:47:36.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload-time = "2019-12-30T22:47:35.265Z" }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, ] [[package]] @@ -713,9 +712,9 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236, upload-time = "2025-03-23T22:55:43.822Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164, upload-time = "2025-03-23T22:55:42.101Z" }, + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, ] [package.optional-dependencies] @@ -737,9 +736,9 @@ dependencies = [ { name = "typer" }, { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload-time = "2024-12-15T14:28:10.028Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload-time = "2024-12-15T14:28:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705 }, ] [package.optional-dependencies] @@ -751,104 +750,104 @@ standard = [ name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, ] [[package]] name = "fonttools" version = "4.58.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522, upload-time = "2025-05-10T17:36:35.886Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920, upload-time = "2025-05-10T17:35:16.487Z" }, - { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957, upload-time = "2025-05-10T17:35:18.906Z" }, - { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808, upload-time = "2025-05-10T17:35:21.394Z" }, - { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876, upload-time = "2025-05-10T17:35:23.849Z" }, - { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798, upload-time = "2025-05-10T17:35:26.189Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560, upload-time = "2025-05-10T17:35:28.577Z" }, - { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330, upload-time = "2025-05-10T17:35:31.733Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687, upload-time = "2025-05-10T17:35:34.015Z" }, - { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502, upload-time = "2025-05-10T17:35:36.436Z" }, - { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214, upload-time = "2025-05-10T17:35:38.939Z" }, - { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136, upload-time = "2025-05-10T17:35:41.491Z" }, - { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598, upload-time = "2025-05-10T17:35:43.986Z" }, - { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256, upload-time = "2025-05-10T17:35:46.617Z" }, - { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710, upload-time = "2025-05-10T17:35:49.227Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593, upload-time = "2025-05-10T17:35:51.226Z" }, - { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230, upload-time = "2025-05-10T17:35:53.653Z" }, - { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440, upload-time = "2025-05-10T17:36:33.607Z" }, + { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, + { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, + { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, + { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, + { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, + { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, + { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, + { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, + { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, + { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, + { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, + { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, + { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, + { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, + { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload-time = "2025-04-17T22:38:53.099Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload-time = "2025-04-17T22:36:17.235Z" }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload-time = "2025-04-17T22:36:18.735Z" }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload-time = "2025-04-17T22:36:20.6Z" }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload-time = "2025-04-17T22:36:22.088Z" }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload-time = "2025-04-17T22:36:24.247Z" }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload-time = "2025-04-17T22:36:26.291Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload-time = "2025-04-17T22:36:27.909Z" }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload-time = "2025-04-17T22:36:29.448Z" }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload-time = "2025-04-17T22:36:31.55Z" }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload-time = "2025-04-17T22:36:33.078Z" }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload-time = "2025-04-17T22:36:34.688Z" }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload-time = "2025-04-17T22:36:36.363Z" }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload-time = "2025-04-17T22:36:38.16Z" }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload-time = "2025-04-17T22:36:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload-time = "2025-04-17T22:36:42.045Z" }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload-time = "2025-04-17T22:36:44.067Z" }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload-time = "2025-04-17T22:36:45.465Z" }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload-time = "2025-04-17T22:36:47.382Z" }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload-time = "2025-04-17T22:36:49.401Z" }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload-time = "2025-04-17T22:36:51.899Z" }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload-time = "2025-04-17T22:36:53.402Z" }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload-time = "2025-04-17T22:36:55.016Z" }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload-time = "2025-04-17T22:36:57.12Z" }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload-time = "2025-04-17T22:36:58.735Z" }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload-time = "2025-04-17T22:37:00.512Z" }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload-time = "2025-04-17T22:37:02.102Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload-time = "2025-04-17T22:37:03.578Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload-time = "2025-04-17T22:37:05.213Z" }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload-time = "2025-04-17T22:37:06.985Z" }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload-time = "2025-04-17T22:37:08.618Z" }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload-time = "2025-04-17T22:37:10.196Z" }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload-time = "2025-04-17T22:37:12.284Z" }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload-time = "2025-04-17T22:37:13.902Z" }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload-time = "2025-04-17T22:37:15.326Z" }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload-time = "2025-04-17T22:38:51.668Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, ] [[package]] name = "fsspec" version = "2025.5.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989, upload-time = "2025-05-20T15:46:22.484Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164, upload-time = "2025-05-20T15:46:20.89Z" }, + { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164 }, ] [[package]] @@ -863,9 +862,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload-time = "2024-07-02T12:26:52.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload-time = "2024-07-02T12:26:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, ] [[package]] @@ -875,44 +874,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, ] [[package]] name = "greenlet" version = "3.2.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797, upload-time = "2025-05-09T19:47:35.066Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635, upload-time = "2025-05-09T14:50:39.007Z" }, - { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786, upload-time = "2025-05-09T15:24:00.692Z" }, - { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866, upload-time = "2025-05-09T15:24:48.153Z" }, - { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752, upload-time = "2025-05-09T15:29:23.182Z" }, - { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028, upload-time = "2025-05-09T14:53:32.854Z" }, - { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869, upload-time = "2025-05-09T14:53:43.614Z" }, - { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886, upload-time = "2025-05-09T15:27:01.304Z" }, - { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355, upload-time = "2025-05-09T14:53:58.011Z" }, - { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437, upload-time = "2025-05-09T15:00:57.733Z" }, - { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413, upload-time = "2025-05-09T14:51:32.455Z" }, - { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242, upload-time = "2025-05-09T15:24:02.63Z" }, - { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444, upload-time = "2025-05-09T15:24:49.856Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067, upload-time = "2025-05-09T15:29:24.989Z" }, - { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153, upload-time = "2025-05-09T14:53:34.716Z" }, - { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865, upload-time = "2025-05-09T14:53:45.738Z" }, - { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575, upload-time = "2025-05-09T15:27:04.248Z" }, - { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460, upload-time = "2025-05-09T14:54:00.315Z" }, - { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239, upload-time = "2025-05-09T14:57:17.633Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635 }, + { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786 }, + { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866 }, + { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752 }, + { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028 }, + { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869 }, + { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886 }, + { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355 }, + { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437 }, + { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413 }, + { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242 }, + { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067 }, + { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153 }, + { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865 }, + { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575 }, + { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460 }, + { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239 }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, ] [[package]] @@ -923,9 +922,9 @@ dependencies = [ { name = "h5py" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456, upload-time = "2025-03-07T14:51:24.322Z" } +sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561, upload-time = "2025-03-07T14:51:22.863Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, ] [[package]] @@ -935,18 +934,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876, upload-time = "2025-02-18T16:04:01.824Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922, upload-time = "2025-02-18T16:02:36.376Z" }, - { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619, upload-time = "2025-02-18T16:02:40.722Z" }, - { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366, upload-time = "2025-02-18T16:02:44.544Z" }, - { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058, upload-time = "2025-02-18T16:02:49.035Z" }, - { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428, upload-time = "2025-02-18T16:02:52.061Z" }, - { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442, upload-time = "2025-02-18T16:02:56.545Z" }, - { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567, upload-time = "2025-02-18T16:03:00.079Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544, upload-time = "2025-02-18T16:03:05.675Z" }, - { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139, upload-time = "2025-02-18T16:03:10.129Z" }, - { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179, upload-time = "2025-02-18T16:03:13.716Z" }, + { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, + { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, + { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, + { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, + { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, + { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, + { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, + { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, + { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, + { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, ] [[package]] @@ -957,31 +956,31 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, ] [[package]] name = "httptools" version = "0.6.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, - { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, - { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, - { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, - { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, - { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, - { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, - { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, - { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, - { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, - { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, - { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029 }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492 }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891 }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788 }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214 }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120 }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565 }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683 }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337 }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796 }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837 }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289 }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779 }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634 }, ] [[package]] @@ -994,9 +993,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, ] [[package]] @@ -1006,37 +1005,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131, upload-time = "2025-04-16T18:10:36.75Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673, upload-time = "2025-04-16T18:09:43.971Z" }, - { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240, upload-time = "2025-04-16T18:09:37.035Z" }, - { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672, upload-time = "2025-04-16T18:09:26.089Z" }, - { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034, upload-time = "2025-04-16T18:09:02.686Z" }, - { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792, upload-time = "2025-04-16T18:09:15.5Z" }, - { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356, upload-time = "2025-04-16T18:09:51.136Z" }, - { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442, upload-time = "2025-04-16T18:10:02.792Z" }, - { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160, upload-time = "2025-04-16T18:10:14.601Z" }, - { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124, upload-time = "2025-04-16T18:10:25.808Z" }, - { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858, upload-time = "2025-04-16T18:10:43.776Z" }, - { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459, upload-time = "2025-04-16T18:10:37.921Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831, upload-time = "2025-04-16T18:09:46.168Z" }, - { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016, upload-time = "2025-04-16T18:09:38.98Z" }, - { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090, upload-time = "2025-04-16T18:09:28.202Z" }, - { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912, upload-time = "2025-04-16T18:09:05.87Z" }, - { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623, upload-time = "2025-04-16T18:09:17.868Z" }, - { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655, upload-time = "2025-04-16T18:09:53.417Z" }, - { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287, upload-time = "2025-04-16T18:10:05.042Z" }, - { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009, upload-time = "2025-04-16T18:10:16.678Z" }, - { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396, upload-time = "2025-04-16T18:10:28.392Z" }, - { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850, upload-time = "2025-04-16T18:10:46.224Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293, upload-time = "2025-04-16T18:10:39.897Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636, upload-time = "2025-04-16T18:09:34.591Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882, upload-time = "2025-04-16T18:09:12.974Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805, upload-time = "2025-04-16T18:09:24.072Z" }, - { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170, upload-time = "2025-04-16T18:10:00.013Z" }, - { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703, upload-time = "2025-04-16T18:10:11.788Z" }, - { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569, upload-time = "2025-04-16T18:10:23.599Z" }, - { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490, upload-time = "2025-04-16T18:10:34.914Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, + { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, + { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, + { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, + { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, + { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, + { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, + { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, + { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, + { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, + { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, + { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, + { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, + { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, + { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, + { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, + { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, + { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, + { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, + { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, + { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, + { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, + { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, + { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, + { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, + { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, + { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, + { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, ] [[package]] @@ -1067,7 +1066,6 @@ dev = [ [package.metadata] requires-dist = [{ name = "mkdocs-material", marker = "extra == 'docs'" }] -provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ @@ -1123,7 +1121,7 @@ requires-dist = [ { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, - { name = "python-dotenv" }, + { name = "python-dotenv", specifier = "==1.1.0" }, { name = "s3fs", specifier = "==2025.5.0" }, ] @@ -1145,6 +1143,7 @@ dependencies = [ { name = "pandas" }, { name = "pyarrow" }, { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "python-dotenv" }, { name = "rioxarray" }, { name = "s3fs" }, { name = "scipy" }, @@ -1170,6 +1169,7 @@ requires-dist = [ { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, + { name = "python-dotenv", specifier = "==1.1.0" }, { name = "rioxarray", specifier = "==0.19.0" }, { name = "s3fs", specifier = "==2025.5.0" }, { name = "scipy", specifier = "==1.15.3" }, @@ -1184,18 +1184,18 @@ requires-dist = [ name = "identify" version = "2.6.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234, upload-time = "2025-05-23T18:19:53.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112, upload-time = "2025-05-23T18:19:51.88Z" }, + { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, ] [[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, upload-time = "2024-09-15T18:07:39.745Z" } +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, upload-time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] @@ -1205,18 +1205,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -1238,9 +1238,9 @@ dependencies = [ { 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, upload-time = "2024-07-01T14:07:22.543Z" } +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, upload-time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, ] [[package]] @@ -1260,9 +1260,9 @@ dependencies = [ { name = "traitlets" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload-time = "2025-04-25T17:55:40.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload-time = "2025-04-25T17:55:37.625Z" }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, ] [[package]] @@ -1272,9 +1272,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, ] [[package]] @@ -1284,9 +1284,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, ] [[package]] @@ -1296,9 +1296,9 @@ 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, upload-time = "2024-11-11T01:41:42.873Z" } +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, upload-time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, ] [[package]] @@ -1308,36 +1308,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[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, upload-time = "2022-06-17T18:00:12.224Z" } +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, upload-time = "2022-06-17T18:00:10.251Z" }, + { 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.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, ] [[package]] @@ -1350,9 +1350,9 @@ dependencies = [ { 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, upload-time = "2024-07-08T18:40:05.546Z" } +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, upload-time = "2024-07-08T18:40:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, ] [package.optional-dependencies] @@ -1374,9 +1374,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, ] [[package]] @@ -1390,9 +1390,9 @@ dependencies = [ { 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, upload-time = "2024-09-17T10:44:17.613Z" } +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, upload-time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, ] [[package]] @@ -1404,9 +1404,9 @@ dependencies = [ { 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, upload-time = "2024-03-12T12:37:35.652Z" } +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, upload-time = "2024-03-12T12:37:32.36Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, ] [[package]] @@ -1423,9 +1423,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, ] [[package]] @@ -1435,9 +1435,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, ] [[package]] @@ -1465,9 +1465,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, ] [[package]] @@ -1478,9 +1478,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, ] [[package]] @@ -1502,18 +1502,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818, upload-time = "2025-05-06T12:29:40.992Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799, upload-time = "2025-05-06T12:29:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, ] [[package]] @@ -1529,9 +1529,9 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, ] [[package]] @@ -1545,65 +1545,65 @@ dependencies = [ { name = "ujson" }, { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488, upload-time = "2025-02-01T18:46:33.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510, upload-time = "2025-02-01T18:46:18.904Z" }, + { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, ] [[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, upload-time = "2022-04-20T22:04:44.312Z" } +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, upload-time = "2022-04-20T22:04:42.23Z" }, + { 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 = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload-time = "2025-04-11T14:42:50.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload-time = "2025-04-11T14:42:49.178Z" }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, ] [[package]] @@ -1613,37 +1613,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +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, upload-time = "2023-06-03T06:41:11.019Z" }, + { 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, upload-time = "2024-10-18T15:21:54.129Z" } -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, upload-time = "2024-10-18T15:21:02.187Z" }, - { 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, upload-time = "2024-10-18T15:21:02.941Z" }, - { 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, upload-time = "2024-10-18T15:21:03.953Z" }, - { 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, upload-time = "2024-10-18T15:21:06.495Z" }, - { 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, upload-time = "2024-10-18T15:21:07.295Z" }, - { 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, upload-time = "2024-10-18T15:21:08.073Z" }, - { 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, upload-time = "2024-10-18T15:21:09.318Z" }, - { 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, upload-time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, - { 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, upload-time = "2024-10-18T15:21:13.777Z" }, - { 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, upload-time = "2024-10-18T15:21:14.822Z" }, - { 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, upload-time = "2024-10-18T15:21:15.642Z" }, - { 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, upload-time = "2024-10-18T15:21:17.133Z" }, - { 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, upload-time = "2024-10-18T15:21:18.064Z" }, - { 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, upload-time = "2024-10-18T15:21:18.859Z" }, - { 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, upload-time = "2024-10-18T15:21:19.671Z" }, - { 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, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, +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 }, ] [[package]] @@ -1661,20 +1661,20 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, ] [[package]] @@ -1684,36 +1684,36 @@ 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, upload-time = "2024-04-15T13:44:44.803Z" } +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, upload-time = "2024-04-15T13:44:43.265Z" }, + { 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, upload-time = "2022-08-14T12:40:10.846Z" } +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, upload-time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, ] [[package]] name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, ] [[package]] @@ -1735,9 +1735,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, ] [[package]] @@ -1749,9 +1749,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] [[package]] @@ -1771,101 +1771,101 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707, upload-time = "2025-05-13T13:27:57.173Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767, upload-time = "2025-05-13T13:27:54.089Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload-time = "2025-01-25T08:39:43.386Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload-time = "2025-01-25T08:38:22.917Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload-time = "2025-01-25T08:38:25.079Z" }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload-time = "2025-01-25T08:38:25.947Z" }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload-time = "2025-01-25T08:38:26.939Z" }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload-time = "2025-01-25T08:38:29.159Z" }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload-time = "2025-01-25T08:38:33.04Z" }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload-time = "2025-01-25T08:38:34.987Z" }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload-time = "2025-01-25T08:38:35.983Z" }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload-time = "2025-01-25T08:38:38.198Z" }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload-time = "2025-01-25T08:38:39.257Z" }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload-time = "2025-01-25T08:38:40.395Z" }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload-time = "2025-01-25T08:38:42.141Z" }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload-time = "2025-01-25T08:38:43.402Z" }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload-time = "2025-01-25T08:38:45.143Z" }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload-time = "2025-01-25T08:38:46.029Z" }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload-time = "2025-01-25T08:38:47.035Z" }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload-time = "2025-01-25T08:38:47.902Z" }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload-time = "2025-01-25T08:38:48.839Z" }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload-time = "2025-01-25T08:38:49.773Z" }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload-time = "2025-01-25T08:38:51.5Z" }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload-time = "2025-01-25T08:38:52.542Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload-time = "2025-01-25T08:38:54.286Z" }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload-time = "2025-01-25T08:38:55.576Z" }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload-time = "2025-01-25T08:38:56.654Z" }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload-time = "2025-01-25T08:38:57.662Z" }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload-time = "2025-01-25T08:38:59.505Z" }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload-time = "2025-01-25T08:39:00.483Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload-time = "2025-01-25T08:39:01.484Z" }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload-time = "2025-01-25T08:39:02.444Z" }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload-time = "2025-01-25T08:39:03.369Z" }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload-time = "2025-01-25T08:39:04.284Z" }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload-time = "2025-01-25T08:39:05.174Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, ] [[package]] name = "multidict" version = "6.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515, upload-time = "2025-05-19T14:14:19.767Z" }, - { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609, upload-time = "2025-05-19T14:14:21.538Z" }, - { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871, upload-time = "2025-05-19T14:14:22.666Z" }, - { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661, upload-time = "2025-05-19T14:14:24.124Z" }, - { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422, upload-time = "2025-05-19T14:14:25.437Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447, upload-time = "2025-05-19T14:14:26.793Z" }, - { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455, upload-time = "2025-05-19T14:14:28.149Z" }, - { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666, upload-time = "2025-05-19T14:14:29.584Z" }, - { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392, upload-time = "2025-05-19T14:14:30.961Z" }, - { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969, upload-time = "2025-05-19T14:14:32.672Z" }, - { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433, upload-time = "2025-05-19T14:14:34.016Z" }, - { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418, upload-time = "2025-05-19T14:14:35.376Z" }, - { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042, upload-time = "2025-05-19T14:14:36.723Z" }, - { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280, upload-time = "2025-05-19T14:14:38.194Z" }, - { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322, upload-time = "2025-05-19T14:14:40.015Z" }, - { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070, upload-time = "2025-05-19T14:14:41.904Z" }, - { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667, upload-time = "2025-05-19T14:14:43.534Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, - { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, - { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, - { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, - { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, - { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, - { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, - { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, - { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, - { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, - { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, - { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, - { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, - { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, - { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, - { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, ] [[package]] @@ -1876,30 +1876,30 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, ] [[package]] @@ -1912,9 +1912,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, ] [[package]] @@ -1937,9 +1937,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, ] [[package]] @@ -1952,18 +1952,18 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +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, upload-time = "2024-01-21T14:25:17.223Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] [[package]] @@ -1975,27 +1975,27 @@ dependencies = [ { name = "cftime" }, { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064, upload-time = "2024-10-22T19:01:25.521Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078, upload-time = "2024-10-22T19:00:39.93Z" }, - { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104, upload-time = "2024-10-22T19:00:41.683Z" }, - { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498, upload-time = "2024-10-22T19:00:43.822Z" }, - { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073, upload-time = "2024-10-22T19:00:45.925Z" }, - { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215, upload-time = "2024-10-22T19:00:48.101Z" }, - { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127, upload-time = "2024-10-22T19:00:50.613Z" }, - { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781, upload-time = "2024-10-22T19:00:52.383Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415, upload-time = "2024-10-22T19:00:54.412Z" }, - { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579, upload-time = "2024-10-22T19:00:56.594Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523, upload-time = "2024-10-22T19:00:58.97Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, + { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, + { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, + { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, + { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, + { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, + { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, + { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, + { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, + { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, ] [[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, upload-time = "2024-06-04T18:44:11.171Z" } +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, upload-time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] [[package]] @@ -2005,9 +2005,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, ] [[package]] @@ -2018,18 +2018,18 @@ dependencies = [ { name = "numpy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134, upload-time = "2025-05-22T13:33:04.098Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980, upload-time = "2025-05-22T13:32:37.718Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826, upload-time = "2025-05-22T13:32:39.737Z" }, - { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684, upload-time = "2025-05-22T13:32:41.252Z" }, - { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927, upload-time = "2025-05-22T13:32:42.905Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259, upload-time = "2025-05-22T13:32:45.398Z" }, - { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434, upload-time = "2025-05-22T13:32:47.26Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402, upload-time = "2025-05-22T13:32:48.574Z" }, - { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455, upload-time = "2025-05-22T13:32:50.052Z" }, - { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711, upload-time = "2025-05-22T13:32:52.198Z" }, - { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701, upload-time = "2025-05-22T13:32:54.28Z" }, + { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, + { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, + { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, + { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, + { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, ] [package.optional-dependencies] @@ -2041,55 +2041,55 @@ crc32c = [ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] [[package]] @@ -2102,40 +2102,40 @@ dependencies = [ { 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, upload-time = "2024-09-20T13:10:04.827Z" } +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, upload-time = "2024-09-20T13:08:56.254Z" }, - { 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, upload-time = "2024-09-20T13:08:58.645Z" }, - { 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, upload-time = "2024-09-20T19:01:57.571Z" }, - { 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, upload-time = "2024-09-20T13:09:01.501Z" }, - { 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, upload-time = "2024-09-20T19:02:00.678Z" }, - { 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, upload-time = "2024-09-20T13:09:04.105Z" }, - { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166, upload-time = "2024-09-20T13:09:06.917Z" }, - { 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, upload-time = "2024-09-20T13:09:09.655Z" }, - { 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, upload-time = "2024-09-20T13:09:14.718Z" }, - { 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, upload-time = "2024-09-20T19:02:03.88Z" }, - { 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, upload-time = "2024-09-20T13:09:17.621Z" }, - { 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, upload-time = "2024-09-20T19:02:07.094Z" }, - { 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, upload-time = "2024-09-20T13:09:20.474Z" }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248, upload-time = "2024-09-20T13:09:23.137Z" }, + { 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 }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, ] [[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, upload-time = "2024-04-05T09:43:55.897Z" } +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, upload-time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, ] [[package]] @@ -2146,18 +2146,18 @@ 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, upload-time = "2024-05-06T19:51:41.945Z" } +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, upload-time = "2024-05-06T19:51:39.271Z" }, + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] @@ -2167,64 +2167,64 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +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, upload-time = "2023-11-25T06:56:14.81Z" }, + { 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.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, ] [[package]] @@ -2238,18 +2238,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, ] [[package]] name = "prometheus-client" version = "0.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443, upload-time = "2025-05-16T20:50:18.333Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658, upload-time = "2025-05-16T20:50:16.978Z" }, + { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, ] [[package]] @@ -2259,118 +2259,118 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload-time = "2025-03-26T03:06:12.05Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload-time = "2025-03-26T03:04:01.912Z" }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload-time = "2025-03-26T03:04:03.704Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload-time = "2025-03-26T03:04:05.257Z" }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload-time = "2025-03-26T03:04:07.044Z" }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload-time = "2025-03-26T03:04:08.676Z" }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload-time = "2025-03-26T03:04:10.172Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload-time = "2025-03-26T03:04:11.616Z" }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload-time = "2025-03-26T03:04:13.102Z" }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload-time = "2025-03-26T03:04:14.658Z" }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload-time = "2025-03-26T03:04:16.207Z" }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload-time = "2025-03-26T03:04:18.11Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload-time = "2025-03-26T03:04:19.562Z" }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload-time = "2025-03-26T03:04:21.065Z" }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload-time = "2025-03-26T03:04:22.718Z" }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload-time = "2025-03-26T03:04:24.039Z" }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload-time = "2025-03-26T03:04:25.211Z" }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload-time = "2025-03-26T03:04:26.436Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload-time = "2025-03-26T03:04:27.932Z" }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload-time = "2025-03-26T03:04:30.659Z" }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload-time = "2025-03-26T03:04:31.977Z" }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload-time = "2025-03-26T03:04:33.45Z" }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload-time = "2025-03-26T03:04:35.542Z" }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload-time = "2025-03-26T03:04:37.501Z" }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload-time = "2025-03-26T03:04:39.532Z" }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload-time = "2025-03-26T03:04:41.109Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload-time = "2025-03-26T03:04:42.544Z" }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload-time = "2025-03-26T03:04:44.06Z" }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload-time = "2025-03-26T03:04:45.983Z" }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload-time = "2025-03-26T03:04:47.699Z" }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload-time = "2025-03-26T03:04:49.195Z" }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload-time = "2025-03-26T03:04:50.595Z" }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload-time = "2025-03-26T03:04:51.791Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload-time = "2025-03-26T03:06:10.5Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +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, upload-time = "2020-12-28T15:15:28.35Z" }, + { 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, upload-time = "2024-07-21T12:58:21.801Z" } +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, upload-time = "2024-07-21T12:58:20.04Z" }, + { 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 = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, ] [[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, upload-time = "2024-03-30T13:22:22.564Z" } +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, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -2383,9 +2383,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] @@ -2395,45 +2395,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, ] [[package]] @@ -2445,18 +2445,18 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, ] [[package]] @@ -2476,18 +2476,18 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994, upload-time = "2025-03-04T15:17:40.692Z" } +sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652, upload-time = "2025-03-04T15:16:54.37Z" }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538, upload-time = "2025-03-04T15:16:57.415Z" }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661, upload-time = "2025-03-04T15:16:59.762Z" }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874, upload-time = "2025-03-04T15:17:02.224Z" }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840, upload-time = "2025-03-04T15:17:04.482Z" }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132, upload-time = "2025-03-04T15:17:06.049Z" }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703, upload-time = "2025-03-04T15:17:07.45Z" }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772, upload-time = "2025-03-04T15:17:10.419Z" }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452, upload-time = "2025-03-04T15:17:12.681Z" }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838, upload-time = "2025-03-04T15:17:14.962Z" }, + { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, + { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, + { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, + { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, + { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, + { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, + { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, + { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, + { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, + { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, ] [package.optional-dependencies] @@ -2503,9 +2503,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload-time = "2025-04-27T23:48:27.359Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, ] [[package]] @@ -2517,29 +2517,29 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, ] [[package]] @@ -2549,24 +2549,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload-time = "2025-02-16T04:27:44.539Z" }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload-time = "2025-02-16T04:27:47.019Z" }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload-time = "2025-02-16T04:27:49.239Z" }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload-time = "2025-02-16T04:27:52.65Z" }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload-time = "2025-02-16T04:27:55.239Z" }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload-time = "2025-02-16T04:27:58.343Z" }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload-time = "2025-02-16T04:28:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload-time = "2025-02-16T04:28:04.988Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload-time = "2025-02-16T04:28:09.036Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload-time = "2025-02-16T04:28:10.944Z" }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload-time = "2025-02-16T04:28:13.342Z" }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload-time = "2025-02-16T04:28:15.818Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload-time = "2025-02-16T04:28:18.338Z" }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload-time = "2025-02-16T04:28:20.822Z" }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload-time = "2025-02-16T04:28:23.303Z" }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload-time = "2025-02-16T04:28:25.227Z" }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, ] [[package]] @@ -2579,9 +2579,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -2591,45 +2591,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +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, upload-time = "2024-03-01T18:36:18.57Z" }, + { 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-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, ] [[package]] name = "python-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, ] [[package]] name = "python-multipart" version = "0.0.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, ] [[package]] @@ -2637,48 +2637,48 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, ] [[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, upload-time = "2024-08-06T20:33:50.674Z" } -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, upload-time = "2024-08-06T20:32:03.408Z" }, - { 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, upload-time = "2024-08-06T20:32:04.926Z" }, - { 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, upload-time = "2024-08-06T20:32:06.459Z" }, - { 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, upload-time = "2024-08-06T20:32:08.338Z" }, - { 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, upload-time = "2024-08-06T20:32:14.124Z" }, - { 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, upload-time = "2024-08-06T20:32:16.17Z" }, - { 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, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, - { 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, upload-time = "2024-08-06T20:32:25.131Z" }, - { 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, upload-time = "2024-08-06T20:32:26.511Z" }, - { 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, upload-time = "2024-08-06T20:32:28.363Z" }, - { 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, upload-time = "2024-08-06T20:32:30.058Z" }, - { 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, upload-time = "2024-08-06T20:32:31.881Z" }, - { 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, upload-time = "2024-08-06T20:32:37.083Z" }, - { 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, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, +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 }, ] [[package]] @@ -2688,9 +2688,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] @@ -2700,35 +2700,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, ] [[package]] @@ -2745,16 +2745,16 @@ dependencies = [ { name = "numpy" }, { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990, upload-time = "2024-12-02T14:49:25.571Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767, upload-time = "2024-12-02T14:48:38.794Z" }, - { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975, upload-time = "2024-12-02T14:48:41.895Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391, upload-time = "2024-12-02T14:48:44.447Z" }, - { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478, upload-time = "2024-12-02T14:48:46.893Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543, upload-time = "2024-12-02T14:48:49.757Z" }, - { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924, upload-time = "2024-12-02T14:48:53.263Z" }, - { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721, upload-time = "2024-12-02T14:48:56.533Z" }, - { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154, upload-time = "2024-12-02T14:48:59.261Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, + { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, + { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, + { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, + { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, + { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, + { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, + { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, ] [[package]] @@ -2766,9 +2766,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, ] [[package]] @@ -2781,9 +2781,9 @@ dependencies = [ { 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, upload-time = "2024-05-29T15:37:49.536Z" } +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, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] [[package]] @@ -2793,18 +2793,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, ] [[package]] @@ -2815,9 +2815,9 @@ 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, upload-time = "2024-11-01T16:43:57.873Z" } +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, upload-time = "2024-11-01T16:43:55.817Z" }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, ] [[package]] @@ -2829,9 +2829,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805, upload-time = "2025-05-12T19:19:15.284Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815, upload-time = "2025-05-12T19:19:13.713Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815 }, ] [[package]] @@ -2845,81 +2845,81 @@ dependencies = [ { name = "rasterio" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600, upload-time = "2025-04-21T17:46:54.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151, upload-time = "2025-04-21T17:46:52.801Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, ] [[package]] name = "rpds-py" version = "0.25.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, ] [[package]] name = "ruff" version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407, upload-time = "2025-03-14T13:52:36.539Z" } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158, upload-time = "2025-03-14T13:51:55.69Z" }, - { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071, upload-time = "2025-03-14T13:51:58.989Z" }, - { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944, upload-time = "2025-03-14T13:52:02.318Z" }, - { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725, upload-time = "2025-03-14T13:52:04.303Z" }, - { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435, upload-time = "2025-03-14T13:52:06.602Z" }, - { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664, upload-time = "2025-03-14T13:52:08.613Z" }, - { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856, upload-time = "2025-03-14T13:52:11.019Z" }, - { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156, upload-time = "2025-03-14T13:52:13.383Z" }, - { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167, upload-time = "2025-03-14T13:52:15.528Z" }, - { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311, upload-time = "2025-03-14T13:52:18.088Z" }, - { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039, upload-time = "2025-03-14T13:52:20.476Z" }, - { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939, upload-time = "2025-03-14T13:52:22.798Z" }, - { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259, upload-time = "2025-03-14T13:52:24.89Z" }, - { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212, upload-time = "2025-03-14T13:52:27.493Z" }, - { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905, upload-time = "2025-03-14T13:52:30.46Z" }, - { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730, upload-time = "2025-03-14T13:52:32.508Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956, upload-time = "2025-03-14T13:52:34.491Z" }, + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, ] [[package]] @@ -2931,9 +2931,9 @@ dependencies = [ { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305, upload-time = "2025-05-20T15:54:56.076Z" } +sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305 } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481, upload-time = "2025-05-20T15:54:54.492Z" }, + { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481 }, ] [[package]] @@ -2943,9 +2943,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload-time = "2025-02-26T20:44:57.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload-time = "2025-02-26T20:44:55.509Z" }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, ] [[package]] @@ -2955,44 +2955,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, ] [[package]] name = "setuptools" version = "80.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720, upload-time = "2025-05-20T14:02:53.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470, upload-time = "2025-05-20T14:02:51.348Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, ] [[package]] @@ -3002,69 +3002,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, ] [[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, upload-time = "2023-10-24T04:13:40.426Z" } +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, upload-time = "2023-10-24T04:13:38.866Z" }, + { 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, upload-time = "2024-12-04T17:35:28.174Z" } +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, upload-time = "2024-12-04T17:35:26.475Z" }, + { 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 = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, ] [[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, upload-time = "2021-05-16T22:03:42.897Z" } +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, upload-time = "2021-05-16T22:03:41.177Z" }, + { 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.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, ] [[package]] @@ -3075,25 +3075,25 @@ dependencies = [ { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424, upload-time = "2025-05-14T17:10:32.339Z" } +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232, upload-time = "2025-05-14T17:48:20.444Z" }, - { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897, upload-time = "2025-05-14T17:48:21.634Z" }, - { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313, upload-time = "2025-05-14T17:51:56.205Z" }, - { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807, upload-time = "2025-05-14T17:55:26.928Z" }, - { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632, upload-time = "2025-05-14T17:51:59.384Z" }, - { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642, upload-time = "2025-05-14T17:55:29.901Z" }, - { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475, upload-time = "2025-05-14T17:56:02.095Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903, upload-time = "2025-05-14T17:56:03.499Z" }, - { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645, upload-time = "2025-05-14T17:55:24.854Z" }, - { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399, upload-time = "2025-05-14T17:55:28.097Z" }, - { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269, upload-time = "2025-05-14T17:50:38.227Z" }, - { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364, upload-time = "2025-05-14T17:51:49.829Z" }, - { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072, upload-time = "2025-05-14T17:50:39.774Z" }, - { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074, upload-time = "2025-05-14T17:51:51.736Z" }, - { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514, upload-time = "2025-05-14T17:55:49.915Z" }, - { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557, upload-time = "2025-05-14T17:55:51.349Z" }, - { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224, upload-time = "2025-05-14T17:39:42.154Z" }, + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, ] [[package]] @@ -3105,9 +3105,9 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +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, upload-time = "2023-09-30T13:58:03.53Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, ] [[package]] @@ -3117,9 +3117,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 }, ] [[package]] @@ -3129,18 +3129,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload-time = "2023-03-10T12:50:27.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload-time = "2023-03-10T12:50:17.242Z" }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] [[package]] @@ -3152,9 +3152,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, ] [[package]] @@ -3164,9 +3164,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347, upload-time = "2025-05-22T03:19:13.699Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593, upload-time = "2025-05-22T03:19:11.614Z" }, + { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, ] [[package]] @@ -3176,37 +3176,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] [[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, upload-time = "2024-10-04T16:17:04.001Z" } +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, upload-time = "2024-10-04T16:17:01.533Z" }, + { 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.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, ] [[package]] @@ -3216,18 +3216,18 @@ 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, upload-time = "2024-11-24T20:12:22.481Z" } +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, upload-time = "2024-11-24T20:12:19.698Z" }, + { 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, upload-time = "2024-04-19T11:11:49.746Z" } +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, upload-time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] [[package]] @@ -3240,27 +3240,27 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641, upload-time = "2025-04-28T21:40:59.204Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253, upload-time = "2025-04-28T21:40:56.269Z" }, + { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253 }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] [[package]] @@ -3270,46 +3270,46 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, ] [[package]] name = "ujson" version = "5.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885, upload-time = "2024-05-14T02:02:34.233Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353, upload-time = "2024-05-14T02:00:48.04Z" }, - { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813, upload-time = "2024-05-14T02:00:49.28Z" }, - { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988, upload-time = "2024-05-14T02:00:50.484Z" }, - { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561, upload-time = "2024-05-14T02:00:52.146Z" }, - { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497, upload-time = "2024-05-14T02:00:53.366Z" }, - { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877, upload-time = "2024-05-14T02:00:55.095Z" }, - { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632, upload-time = "2024-05-14T02:00:57.099Z" }, - { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513, upload-time = "2024-05-14T02:00:58.488Z" }, - { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616, upload-time = "2024-05-14T02:01:00.463Z" }, - { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071, upload-time = "2024-05-14T02:01:02.211Z" }, - { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642, upload-time = "2024-05-14T02:01:04.055Z" }, - { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807, upload-time = "2024-05-14T02:01:05.25Z" }, - { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972, upload-time = "2024-05-14T02:01:06.458Z" }, - { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686, upload-time = "2024-05-14T02:01:07.618Z" }, - { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591, upload-time = "2024-05-14T02:01:08.901Z" }, - { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853, upload-time = "2024-05-14T02:01:10.772Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689, upload-time = "2024-05-14T02:01:12.214Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576, upload-time = "2024-05-14T02:01:14.39Z" }, - { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764, upload-time = "2024-05-14T02:01:15.83Z" }, - { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211, upload-time = "2024-05-14T02:01:17.567Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, + { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, + { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, + { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, + { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, + { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, + { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, + { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, + { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, + { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, ] [[package]] @@ -3319,27 +3319,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427, upload-time = "2024-12-13T00:58:27.514Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087, upload-time = "2024-12-13T00:58:24.582Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, ] [[package]] @@ -3350,9 +3350,9 @@ dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815, upload-time = "2025-04-19T06:02:50.101Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483, upload-time = "2025-04-19T06:02:48.42Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483 }, ] [package.optional-dependencies] @@ -3370,20 +3370,20 @@ standard = [ name = "uvloop" version = "0.21.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410 }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476 }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855 }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185 }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256 }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323 }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, ] [[package]] @@ -3395,9 +3395,9 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, ] [[package]] @@ -3412,33 +3412,33 @@ dependencies = [ { name = "universal-pathlib" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650, upload-time = "2025-03-03T16:52:05.169Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890, upload-time = "2025-03-03T16:52:03.25Z" }, + { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] [[package]] @@ -3448,132 +3448,132 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537, upload-time = "2025-04-08T10:36:26.722Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336, upload-time = "2025-04-08T10:34:59.359Z" }, - { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977, upload-time = "2025-04-08T10:35:00.522Z" }, - { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232, upload-time = "2025-04-08T10:35:01.698Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151, upload-time = "2025-04-08T10:35:03.358Z" }, - { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054, upload-time = "2025-04-08T10:35:04.561Z" }, - { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955, upload-time = "2025-04-08T10:35:05.786Z" }, - { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234, upload-time = "2025-04-08T10:35:07.187Z" }, - { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750, upload-time = "2025-04-08T10:35:08.859Z" }, - { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591, upload-time = "2025-04-08T10:35:10.64Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370, upload-time = "2025-04-08T10:35:12.412Z" }, - { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791, upload-time = "2025-04-08T10:35:13.719Z" }, - { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622, upload-time = "2025-04-08T10:35:15.071Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699, upload-time = "2025-04-08T10:35:16.732Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511, upload-time = "2025-04-08T10:35:17.956Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715, upload-time = "2025-04-08T10:35:19.202Z" }, - { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138, upload-time = "2025-04-08T10:35:20.586Z" }, - { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592, upload-time = "2025-04-08T10:35:21.87Z" }, - { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532, upload-time = "2025-04-08T10:35:23.143Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865, upload-time = "2025-04-08T10:35:24.702Z" }, - { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887, upload-time = "2025-04-08T10:35:25.969Z" }, - { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498, upload-time = "2025-04-08T10:35:27.353Z" }, - { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663, upload-time = "2025-04-08T10:35:28.685Z" }, - { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410, upload-time = "2025-04-08T10:35:30.42Z" }, - { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965, upload-time = "2025-04-08T10:35:32.023Z" }, - { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693, upload-time = "2025-04-08T10:35:33.225Z" }, - { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287, upload-time = "2025-04-08T10:35:34.568Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336 }, + { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977 }, + { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232 }, + { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151 }, + { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054 }, + { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955 }, + { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234 }, + { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750 }, + { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591 }, + { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370 }, + { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791 }, + { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622 }, + { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699 }, + { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511 }, + { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715 }, + { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138 }, + { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592 }, + { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865 }, + { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887 }, + { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498 }, + { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663 }, + { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410 }, + { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965 }, + { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693 }, + { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287 }, ] [[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, upload-time = "2024-01-06T02:10:57.829Z" } +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, upload-time = "2024-01-06T02:10:55.763Z" }, + { 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 = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, ] [[package]] name = "websockets" version = "15.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, - { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, - { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, - { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, - { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, - { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, - { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, - { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, - { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, - { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423 }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082 }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330 }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878 }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883 }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252 }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521 }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958 }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918 }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388 }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828 }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437 }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096 }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332 }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152 }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096 }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523 }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790 }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165 }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160 }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395 }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841 }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] [[package]] @@ -3585,9 +3585,9 @@ dependencies = [ { name = "packaging" }, { name = "pandas" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, ] [[package]] @@ -3599,43 +3599,43 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload-time = "2025-04-17T00:45:14.661Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload-time = "2025-04-17T00:42:04.511Z" }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload-time = "2025-04-17T00:42:06.43Z" }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload-time = "2025-04-17T00:42:07.976Z" }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload-time = "2025-04-17T00:42:09.902Z" }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload-time = "2025-04-17T00:42:11.768Z" }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload-time = "2025-04-17T00:42:13.983Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload-time = "2025-04-17T00:42:16.386Z" }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload-time = "2025-04-17T00:42:18.622Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload-time = "2025-04-17T00:42:20.9Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload-time = "2025-04-17T00:42:22.926Z" }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload-time = "2025-04-17T00:42:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload-time = "2025-04-17T00:42:27.475Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload-time = "2025-04-17T00:42:29.333Z" }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload-time = "2025-04-17T00:42:31.668Z" }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload-time = "2025-04-17T00:42:33.523Z" }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload-time = "2025-04-17T00:42:35.873Z" }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload-time = "2025-04-17T00:42:37.586Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload-time = "2025-04-17T00:42:39.602Z" }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload-time = "2025-04-17T00:42:41.469Z" }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload-time = "2025-04-17T00:42:43.666Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload-time = "2025-04-17T00:42:45.391Z" }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload-time = "2025-04-17T00:42:47.552Z" }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload-time = "2025-04-17T00:42:49.406Z" }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload-time = "2025-04-17T00:42:51.588Z" }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload-time = "2025-04-17T00:42:53.674Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload-time = "2025-04-17T00:42:55.49Z" }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload-time = "2025-04-17T00:42:57.895Z" }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload-time = "2025-04-17T00:43:00.094Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload-time = "2025-04-17T00:43:02.242Z" }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload-time = "2025-04-17T00:43:04.189Z" }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload-time = "2025-04-17T00:43:06.609Z" }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload-time = "2025-04-17T00:43:09.01Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload-time = "2025-04-17T00:43:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload-time = "2025-04-17T00:43:13.087Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload-time = "2025-04-17T00:45:12.199Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] [[package]] @@ -3649,16 +3649,16 @@ dependencies = [ { name = "packaging" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825, upload-time = "2025-05-19T14:19:00.123Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364, upload-time = "2025-05-19T14:18:58.789Z" }, + { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, ] [[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, upload-time = "2024-11-10T15:05:20.202Z" } +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, upload-time = "2024-11-10T15:05:19.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, ] From d773b1b018ee90d4648fb9f412a4d995c99a70d6 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Thu, 29 May 2025 11:31:17 -0400 Subject: [PATCH 46/97] JIRA 6395: Creation of a python version of hfsubsetR (#17) * initial commit of python subsetting tool * added subsetter logic for poi_ids and additional testing * updated testing docs * patch: updated docs * removed redundant code --- .gitignore | 1 + docs/user_guide/icefabric_tools.md | 82 ++++ .../src/icefabric_tools/__init__.py | 7 +- .../icefabric_tools/iceberg/hydrofabric.py | 396 ++++++++++++++++++ .../src/icefabric_tools/iceberg/rnr.py | 4 +- .../{_api.py => iceberg/utils.py} | 19 +- src/icefabric_tools/tests/conftest.py | 60 +++ src/icefabric_tools/tests/test_subset.py | 33 ++ src/icefabric_tools/tests/test_utils.py | 24 ++ 9 files changed, 603 insertions(+), 23 deletions(-) create mode 100644 src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py rename src/icefabric_tools/src/icefabric_tools/{_api.py => iceberg/utils.py} (90%) create mode 100644 src/icefabric_tools/tests/conftest.py create mode 100644 src/icefabric_tools/tests/test_subset.py create mode 100644 src/icefabric_tools/tests/test_utils.py diff --git a/.gitignore b/.gitignore index db19110..9af092f 100644 --- a/.gitignore +++ b/.gitignore @@ -167,6 +167,7 @@ cython_debug/ # and can be added to the global gitignore or merged into this file. For a more nuclear # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +.vscode/ # Ruff stuff: .ruff_cache/ diff --git a/docs/user_guide/icefabric_tools.md b/docs/user_guide/icefabric_tools.md index e69de29..a6c9a2e 100644 --- a/docs/user_guide/icefabric_tools.md +++ b/docs/user_guide/icefabric_tools.md @@ -0,0 +1,82 @@ +# Icefabric Tools + +A series of compute services built on top of version controlled EDFS data + +## Hydrofabric Geospatial Tools + +### Overview + +The Hydrofabric Geospatial Tools module provides Python functions for subsetting and analyzing hydrofabric data stored in Apache Iceberg format + +### Functionality + +- **Data Subsetting** - the `subset()` function provides all upstream catchments related to a given gauge + +### Usage Examples + +#### Basic Subsetting + +```python +from pathlib import Path +from pyiceberg.catalog import load_catalog +from icefabric_tools import subset, IdType + +# Load the catalog using default settings +catalog_settings: dict = { + "type": "sql", + "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", + "warehouse": "file:///tmp/warehouse", +} +catalog = load_catalog("hydrofabric", **catalog_settings) + +# Basic subset using a hydrofabric ID +result = subset( + catalog=catalog, + identifier="wb-10026", + id_type=IdType.ID, + layers=["divides", "flowpaths", "network", "nexus"] +) + +# Access the filtered data +flowpaths = result["flowpaths"] +divides = result["divides"] +network = result["network"] +nexus = result["nexus"] +``` + +#### Export to GeoPackage + +```python +# Export subset directly to GeoPackage +output_path = Path("subset_output.gpkg") + +subset( + catalog=catalog, + identifier="01031500", + id_type=IdType.POI_ID, + layers=["divides", "flowpaths", "network", "nexus", "pois"], + output_file=output_path +) +``` + +#### Getting all layers + +```python +# Include all available layers +all_layers = [ + "divides", "flowpaths", "network", "nexus", + "divide-attributes", "flowpath-attributes", + "flowpath-attributes-ml", "pois", "hydrolocations" +] + +result = subset( + catalog=catalog, + identifier="HUC12-010100100101", + id_type=IdType.HL_URI, + layers=all_layers +) + +# Process specific layers +pois_data = result["pois"] +attributes = result["flowpath-attributes"] +``` diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index 27fadc5..68c7c48 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -1,4 +1,5 @@ -from icefabric_tools._api import find_origin, load_hydrofabric, table_to_geopandas, to_geopandas -from icefabric_tools.iceberg import rnr +from icefabric_tools.iceberg.hydrofabric import IdType, subset +from icefabric_tools.iceberg.rnr import get_rnr_segment +from icefabric_tools.iceberg.utils import find_origin, table_to_geopandas, to_geopandas -__all__ = ["find_origin", "load_hydrofabric", "rnr", "to_geopandas", "table_to_geopandas"] +__all__ = ["IdType", "subset", "get_rnr_segment", "find_origin", "to_geopandas", "table_to_geopandas"] diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py b/src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py new file mode 100644 index 0000000..99db880 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py @@ -0,0 +1,396 @@ +"""A file to hold all hydrofabric geospatial tools""" + +from enum import Enum +from pathlib import Path + +import geopandas as gpd +import pandas as pd +from pyiceberg.catalog import Catalog +from pyiceberg.expressions import And, EqualTo, In +from pyiceberg.table import Table + +from icefabric_tools.iceberg.utils import find_origin, table_to_geopandas, to_geopandas + + +class IdType(str, Enum): + """All queriable HF fields. + + Attributes + ---------- + HL_URI : str + Hydrolocation URI identifier + HF_ID : str + Hydrofabric ID identifier + ID : str + Generic ID identifier + POI_ID : str + Point of Interest ID identifier + """ + + HL_URI = "hl_uri" + HF_ID = "hf_id" + ID = "id" + POI_ID = "poi_id" + + +# For catchments that may extend in many VPUs +UPSTREAM_VPUS: dict[str, list[str]] = {"08": ["11", "10U", "10L", "08", "07", "05"]} + + +def get_sorted_network(network_df: pd.DataFrame, outlets: list[str] | str) -> pd.DataFrame: + """Python implementation similar to R's nhdplusTools::get_sorted(). + + This function traces upstream from outlet points through a network topology + to find all connected upstream segments and their relationships. + + Parameters + ---------- + network_df : pd.DataFrame + Network data with 'id' and 'toid' columns representing the topology. + Each row represents a network segment with its downstream connection. + outlets : list of str or str + Outlet IDs to start tracing from. If a single string is provided, + it will be converted to a list. + + Returns + ------- + pd.DataFrame + Sorted network topology with 'id' and 'toid' columns representing + the upstream connections found during the trace. Each row shows + a segment and what it flows into. + + Notes + ----- + The function performs a recursive upstream trace from the specified outlets, + building a network of all connected upstream segments. It also handles + special cases like nexus points and ensures all relevant connections + are captured. + """ + if isinstance(outlets, str): + outlets = [outlets] + + # Create a mapping of toid -> list of ids that flow into it + downstream_map: dict[str, list[str]] = {} + all_segments: set = set() + + # Build the network mapping + for _, row in network_df.iterrows(): + segment_id = row["id"] + toid = row["toid"] + all_segments.add(segment_id) + if pd.notna(toid): + if toid not in downstream_map: + downstream_map[toid] = [] + downstream_map[toid].append(segment_id) + + visited: set = set() + sorted_pairs: list[dict[str, str]] = [] + upstream_segments: set = set() + + def trace_upstream_recursive(current_id: str) -> None: + """Recursively trace upstream from current_id. + + Parameters + ---------- + current_id : str + The current segment ID to trace upstream from + """ + if current_id in visited: + return + visited.add(current_id) + upstream_segments.add(current_id) + + # Find all segments that flow into current_id + if current_id in downstream_map: + for upstream_id in downstream_map[current_id]: + if upstream_id not in visited: + sorted_pairs.append({"id": upstream_id, "toid": current_id}) + trace_upstream_recursive(upstream_id) + + # Start tracing from each outlet + for outlet in outlets: + if outlet in all_segments or outlet in downstream_map: + trace_upstream_recursive(outlet) + + # Additional pass: find any headwater segments that might have been missed + # These are segments that don't appear as 'toid' for any other segment + # but are connected to our upstream network + connected_segments: set = set(upstream_segments) + + # Look for segments that flow into our connected network but weren't found + for _, row in network_df.iterrows(): + segment_id = row["id"] + toid = row["toid"] + + # If this segment flows into something we've already found, + # but we haven't included this segment yet, add it + if ( + pd.notna(toid) + and toid in connected_segments + and segment_id not in connected_segments + and segment_id not in visited + ): + sorted_pairs.append({"id": segment_id, "toid": toid}) + connected_segments.add(segment_id) + + # Specific fix for nexus points: Include nexus points that are targets of our upstream segments + # but weren't included in the original trace + all_toids_in_pairs = {pair["toid"] for pair in sorted_pairs} + for _, row in network_df.iterrows(): + segment_id = row["id"] + toid = row["toid"] + + # If this segment flows to a nexus point that should be included + if ( + segment_id in connected_segments + and pd.notna(toid) + and toid.startswith("nex-") + and toid not in all_toids_in_pairs + and toid not in connected_segments + ): + # Add the nexus point as a target + sorted_pairs.append({"id": segment_id, "toid": toid}) + connected_segments.add(toid) + print(f"Added missing nexus point: {toid}") + + return pd.DataFrame(sorted_pairs) + + +def get_all_upstream_ids(network: Table, origin_data: pd.DataFrame) -> list[str]: + """Get all upstream segment IDs using topology sorting approach. + + This function identifies all upstream segments from a given origin point + by filtering the network data and performing topology sorting to trace + upstream connections. + + Parameters + ---------- + network : pyiceberg.table.Table + The network table from iceberg catalog containing network topology data + origin_data : pd.DataFrame + Single row DataFrame representing the origin point with columns including + 'vpuid', 'toid', and 'id' + + Returns + ------- + list of str + All upstream segment IDs found by tracing upstream from the origin point. + Includes the origin ID itself if not already present. + + Raises + ------ + AssertionError + If no upstream topology is found for the given ID + + Notes + ----- + The function applies VPU (Vector Processing Unit) filtering when available + to reduce data size. It supports special upstream VPU mappings defined + in UPSTREAM_VPUS for catchments that may extend across multiple VPUs. + """ + # Filter network by VPU if available to reduce data size + network_filters = [] + + if "vpuid" in origin_data.columns and pd.notna(origin_data["vpuid"].iloc[0]): + if origin_data["vpuid"].iloc[0] in UPSTREAM_VPUS.keys(): + vpuid_filter = In("vpuid", UPSTREAM_VPUS[origin_data["vpuid"].iloc[0]]) + else: + vpuid_filter = EqualTo("vpuid", origin_data["vpuid"].iloc[0]) + network_filters.append(vpuid_filter) + + # Apply filters to get network subset + if network_filters: + combined_filter = network_filters[0] + for filter_expr in network_filters[1:]: + combined_filter = And(combined_filter, filter_expr) + network_data = network.scan(row_filter=combined_filter).to_pandas() + else: + # Get all network data - might be large, consider adding other filters + network_data = network.scan().to_pandas() + + # Select only needed columns for topology sorting + network_subset = network_data[["id", "toid"]].dropna(subset=["id"]).drop_duplicates() + + # Get the outlet (toid of the origin) + outlets = origin_data["toid"].dropna().tolist() + if not outlets: + print("Warning: No outlets found for origin") + return [] + + print(f"Tracing upstream from outlet(s): {list(set(outlets))}") + # Use topology sorting to find all upstream segments + topology = get_sorted_network(network_subset, outlets) + + assert len(topology) != 0, "No upstream topology found for ID" + + print(f"Found {len(topology)} topology connections") + + # Don't remove the last row initially - include more segments like R version + topology = topology.drop_duplicates() + + # Get all unique IDs from topology (include both directions) + all_ids = pd.concat([topology["id"], topology["toid"]]).dropna().unique().tolist() + + # Also include the origin ID itself + origin_id = origin_data["id"].iloc[0] + if origin_id not in all_ids: + all_ids.append(origin_id) + return all_ids + + +def subset( + catalog: Catalog, + identifier: str, + id_type: IdType, + layers: list[str] | None = None, + output_file: Path | None = None, +) -> dict[str, pd.DataFrame | gpd.GeoDataFrame] | None: + """Returns a geopackage subset from the hydrofabric. + + Based on logic from HfsubsetR, this function creates a subset of the + hydrofabric data by tracing upstream from a given identifier and collecting + all related geospatial layers. + + Parameters + ---------- + catalog : Catalog + The iceberg catalog of the hydrofabric containing all data tables + identifier : str + The identifier to start tracing from (e.g., catchment ID, POI ID) + id_type : IdType + The type of identifier being used (HL_URI, HF_ID, ID, or POI_ID) + layers : list of str, optional + List of layer names to include in the subset. Default layers are + ["divides", "flowpaths", "network", "nexus"]. Optional layers include + "divide-attributes", "flowpath-attributes", "flowpath-attributes-ml", + "pois", and "hydrolocations" + output_file : Path, optional + The output file path where the geopackage will be saved. If None, + returns the data as a dictionary instead of saving to file + + Returns + ------- + dict of str to DataFrame/GeoDataFrame, optional + Dictionary containing the filtered layers with layer names as keys + and the corresponding data as values. Only returned if output_file + is None. + + Raises + ------ + AssertionError + If no valid divide_ids, flowpaths, or divide IDs are found during + the subsetting process + + Notes + ----- + The function performs the following steps: + 1. Finds the origin point using the provided identifier + 2. Traces upstream to find all connected segments + 3. Filters each requested layer to include only relevant features + 4. Converts POI IDs to string format for consistency + 5. Either saves to geopackage or returns the filtered data + + The function handles special data type conversions for poi_id fields + and filters out None/NaN values appropriately for each layer type. + """ + # Ensuring there are always divides, flowpaths, network, and nexus layers + if layers is None: + layers = [] + layers.extend(["divides", "flowpaths", "network", "nexus"]) + layers = list(set(layers)) + + network = catalog.load_table("hydrofabric.network") + divides = catalog.load_table("hydrofabric.divides") + flowpaths = catalog.load_table("hydrofabric.flowpaths") + nexus = catalog.load_table("hydrofabric.nexus") + + # Find the origin point + origin_row = find_origin(network_table=network, identifier=identifier, id_type=id_type.value) + origin_filter = EqualTo("id", origin_row["id"].iloc[0]) + origin_data = network.scan(row_filter=origin_filter).to_pandas() + + # Get all upstream segment IDs using topology sorting approach (like R version) + all_upstream_ids = get_all_upstream_ids(network, origin_data) + + if len(all_upstream_ids) == 0: + print("No upstream segments found") + return None + + print(f"Found {len(all_upstream_ids)} upstream segments") + + id_filter = In("id", all_upstream_ids) + filtered_network = network.scan(row_filter=id_filter).to_pandas() + filtered_network["poi_id"] = filtered_network["poi_id"].apply( + lambda x: str(int(x)) if pd.notna(x) else None + ) + + # Get flowpaths for all upstream segments (filter out None values) + valid_divide_ids = filtered_network["divide_id"].dropna().drop_duplicates().values.tolist() + assert valid_divide_ids is not None, "No valid divide_ids found" + filtered_flowpaths = flowpaths.scan(row_filter=In("divide_id", valid_divide_ids)).to_pandas() + + assert len(filtered_flowpaths) > 0, "No flowpaths found" + valid_toids = filtered_flowpaths["toid"].dropna().values.tolist() # Filter to remove None values + assert valid_toids, "No flowpaths found" + filtered_nexus_points = table_to_geopandas(table=nexus, row_filter=In("id", valid_toids)) + filtered_flowpaths = to_geopandas(filtered_flowpaths) + filtered_nexus_points["poi_id"] = filtered_nexus_points["poi_id"].apply( + lambda x: str(int(x)) if pd.notna(x) else None + ) + + valid_divide_ids_for_divides = filtered_flowpaths["divide_id"].dropna().values.tolist() + assert valid_divide_ids_for_divides is not None, "No divide IDS found" + filtered_divides = table_to_geopandas( + table=divides, row_filter=In("divide_id", valid_divide_ids_for_divides) + ) + + output_layers = { + "flowpaths": filtered_flowpaths, + "nexus": filtered_nexus_points, + "divides": filtered_divides, + "network": filtered_network, + } + + # Getting any optional fields: + if "divide-attributes" in layers: + divides_attr = catalog.load_table("hydrofabric.divide-attributes") + filtered_divide_attr = divides_attr.scan( + row_filter=In("divide_id", valid_divide_ids_for_divides) + ).to_pandas() + output_layers["divide-attributes"] = filtered_divide_attr + + if "flowpath-attributes" in layers: + flowpath_attr = catalog.load_table("hydrofabric.flowpath-attributes") + valid_flowpath_ids = filtered_flowpaths["id"].dropna().values.tolist() + filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", valid_flowpath_ids)).to_pandas() + output_layers["flowpath-attributes"] = filtered_flowpath_attr + + if "flowpath-attributes-ml" in layers: + flowpath_attr_ml = catalog.load_table("hydrofabric.flowpath-attributes-ml") + valid_flowpath_ids = filtered_flowpaths["id"].dropna().values.tolist() + filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", valid_flowpath_ids)).to_pandas() + output_layers["flowpath-attributes-ml"] = filtered_flowpath_attr_ml + + if "pois" in layers: + pois = catalog.load_table("hydrofabric.pois") + poi_values = filtered_flowpaths["poi_id"].dropna().values + filtered_poi_list = list({int(x) for x in poi_values if pd.notna(x)}) + filtered_pois = pois.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() + output_layers["pois"] = filtered_pois + + if "hydrolocations" in layers: + hydrolocations = catalog.load_table("hydrofabric.hydrolocations") + poi_values = filtered_flowpaths["poi_id"].dropna().values + filtered_poi_list = list({int(x) for x in poi_values if pd.notna(x)}) + filtered_hydrolocations = hydrolocations.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() + output_layers["hydrolocations"] = filtered_hydrolocations + + if output_file: + for table_name, _layer in output_layers.items(): + if len(_layer) > 0: # Only save non-empty layers + gpd.GeoDataFrame(_layer).to_file(output_file, layer=table_name, driver="GPKG") + else: + print(f"Warning: {table_name} layer is empty") + return None + else: + return output_layers diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py b/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py index e2546d7..07598b6 100644 --- a/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py +++ b/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py @@ -6,10 +6,10 @@ from pyiceberg.catalog import Catalog from pyiceberg.expressions import And, EqualTo, In, LessThanOrEqual -from icefabric_tools import table_to_geopandas, to_geopandas +from icefabric_tools.iceberg.utils import table_to_geopandas, to_geopandas -def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.GeoDataFrame: +def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.GeoDataFrame | None: """Returns a geopackage subset from the hydrofabric based on RnR rules Parameters diff --git a/src/icefabric_tools/src/icefabric_tools/_api.py b/src/icefabric_tools/src/icefabric_tools/iceberg/utils.py similarity index 90% rename from src/icefabric_tools/src/icefabric_tools/_api.py rename to src/icefabric_tools/src/icefabric_tools/iceberg/utils.py index 1b7310a..82dc46a 100644 --- a/src/icefabric_tools/src/icefabric_tools/_api.py +++ b/src/icefabric_tools/src/icefabric_tools/iceberg/utils.py @@ -2,28 +2,11 @@ import geopandas as gpd import pandas as pd -from pyiceberg.catalog import Catalog, load_catalog from pyiceberg.expressions import BooleanExpression from pyiceberg.table import ALWAYS_TRUE, Table from shapely import wkb -def load_hydrofabric(catalog_settings: dict[str, str]) -> Catalog: - """A function to read in the hydrofabric catalog - - Parameters - ---------- - catalog_settings : dict[str, str] - The settings to read the hydrofabric catalog - - Returns - ------- - Catalog - The Iceberg catalog - """ - return load_catalog("hydrofabric", **catalog_settings) - - def table_to_geopandas( table: Table, row_filter: str | BooleanExpression = ALWAYS_TRUE, @@ -151,7 +134,7 @@ def find_origin(network_table: Table, identifier: str, id_type: str = "hl_uri") # Sort by hydroseq and take the minimum origin = origin.sort_values("hydroseq").iloc[0:1] - # If we still have multiple records, it's a problem + # Throwing an error for multiple origin points if len(origin) > 1: raise ValueError(f"Multiple origins found: {origin['id'].tolist()}") diff --git a/src/icefabric_tools/tests/conftest.py b/src/icefabric_tools/tests/conftest.py new file mode 100644 index 0000000..2de8824 --- /dev/null +++ b/src/icefabric_tools/tests/conftest.py @@ -0,0 +1,60 @@ +from pathlib import Path + +import pytest +from pyiceberg.catalog import Catalog, load_catalog +from sqlalchemy.exc import OperationalError + +sample_gauges = [ + "gages-01010000", + "gages-02450825", + "gages-03173000", + "gages-04100500", + "gages-05473450", + "gages-06823500", + "gages-07060710", + "gages-08070000", + "gages-09253000", + "gages-10316500", + "gages-11456000", + "gages-12411000", + "gages-13337000", + "gages-14020000", +] + + +@pytest.fixture +def hydrofabric_catalog() -> Catalog: + """Returns an iceberg catalog object for the hydrofabric""" + warehouse_path = ( + "/tmp/warehouse" # Requires the HF to be built via: src/icefabric_manage/builds/build_hydrofabric.py + ) + try: + catalog_settings = { + "type": "sql", + "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", + "warehouse": f"file://{warehouse_path}", + } + return load_catalog("hydrofabric", **catalog_settings) + except OperationalError as e: + raise type(e)( # noqa: B904 + f"Cannot find warehouse @ {warehouse_path}. Please build HF warehouse by running src/icefabric_manage/builds/build_hydrofabric.py" + ) # type: ignore + + +@pytest.fixture(params=sample_gauges) +def gauge_hf_uri(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture +def testing_dir() -> Path: + """Returns the testing data dir""" + return Path(__file__).parent / "data/" + + +def pytest_configure(config): + """Configure pytest markers.""" + config.addinivalue_line("markers", "performance: marks tests as performance tests") + config.addinivalue_line("markers", "integration: marks tests as integration tests") + config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/src/icefabric_tools/tests/test_subset.py b/src/icefabric_tools/tests/test_subset.py new file mode 100644 index 0000000..dc76c47 --- /dev/null +++ b/src/icefabric_tools/tests/test_subset.py @@ -0,0 +1,33 @@ +from pathlib import Path + +import geopandas as gpd +import pytest +from pyiceberg.catalog import Catalog + +from icefabric_tools import IdType, subset + + +@pytest.mark.integration +def test_subset_hl_uri(hydrofabric_catalog: Catalog, gauge_hf_uri: str, testing_dir: Path, tmp_path: Path): + """Tests all subset gauges in the sample data using hl_uri""" + subset( + catalog=hydrofabric_catalog, + identifier=gauge_hf_uri, + id_type=IdType.HL_URI, + output_file=tmp_path / "subset.gpkg", + ) + output_gdf = gpd.read_file(tmp_path / "subset.gpkg", layer="network") + correct_gdf = gpd.read_file(testing_dir / f"{gauge_hf_uri}.gpkg", layer="network") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(tmp_path / "subset.gpkg", layer="divides") + correct_gdf = gpd.read_file(testing_dir / f"{gauge_hf_uri}.gpkg", layer="divides") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(tmp_path / "subset.gpkg", layer="flowpaths") + correct_gdf = gpd.read_file(testing_dir / f"{gauge_hf_uri}.gpkg", layer="flowpaths") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(tmp_path / "subset.gpkg", layer="nexus") + correct_gdf = gpd.read_file(testing_dir / f"{gauge_hf_uri}.gpkg", layer="nexus") + assert output_gdf.equals(correct_gdf) diff --git a/src/icefabric_tools/tests/test_utils.py b/src/icefabric_tools/tests/test_utils.py new file mode 100644 index 0000000..60f5398 --- /dev/null +++ b/src/icefabric_tools/tests/test_utils.py @@ -0,0 +1,24 @@ +import pytest +from pyiceberg.catalog import Catalog + +from icefabric_tools import IdType, find_origin + + +@pytest.mark.unit +def test_find_origin(hydrofabric_catalog: Catalog): + """Testing the find origin function""" + network = hydrofabric_catalog.load_table("hydrofabric.network") + with pytest.raises(ValueError, match="No origin found"): + find_origin( + network_table=network, + identifier="non-existent-id-12345", + id_type=IdType.HL_URI.value, + ) + + network = hydrofabric_catalog.load_table("hydrofabric.network") + with pytest.raises(ValueError, match="No origin found"): + find_origin( + network_table=network, + identifier="non-existent-id-12345", + id_type=IdType.HL_URI.value, + ) From e9aa7800def30ab629b43271cb9ec9780d939fdf Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Mon, 2 Jun 2025 11:04:42 -0400 Subject: [PATCH 47/97] added api endpoint for the subset geopackage work (#18) --- README.md | 1 - docs/user_guide/icefabric_api.md | 88 +++++++++++---- src/icefabric_api/README.md | 105 +++++++++++++++++- src/icefabric_api/app/main.py | 2 + .../app/routers/hydrofabric/__init__.py | 0 .../app/routers/hydrofabric/conftest.py | 32 ++++++ .../app/routers/hydrofabric/router.py | 76 +++++++++++++ .../app/routers/hydrofabric/test_router.py | 34 ++++++ 8 files changed, 312 insertions(+), 26 deletions(-) create mode 100644 src/icefabric_api/app/routers/hydrofabric/__init__.py create mode 100644 src/icefabric_api/app/routers/hydrofabric/conftest.py create mode 100644 src/icefabric_api/app/routers/hydrofabric/router.py create mode 100644 src/icefabric_api/app/routers/hydrofabric/test_router.py diff --git a/README.md b/README.md index 3c37794..776b525 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ docker compose -f docker/compose.yaml build --no-cache docker compose -f docker/compose.yaml up ``` This should spin up the API services -``` ### Development diff --git a/docs/user_guide/icefabric_api.md b/docs/user_guide/icefabric_api.md index ed94598..ca26d09 100644 --- a/docs/user_guide/icefabric_api.md +++ b/docs/user_guide/icefabric_api.md @@ -2,7 +2,7 @@ ## Overview -The Icefabric API is a FastAPI-based service that provides access to EDFS data stored in Apache Iceberg format. The API offers multiple data export formats and comprehensive metadata endpoints for hydrology and water resources applications. +The Icefabric API is a FastAPI-based service that provides access to EDFS data stored in Apache Iceberg format. The API offers multiple data export formats and metadata endpoints for the hydrofabric and streamflow observations. ## Architecture @@ -44,38 +44,47 @@ This should spin up the API services Currently supports: - **USGS** - United States Geological Survey hourly streamflow data +#### Hydrofabric +Provides geospatial watershed data: +- **Subset Generation** - Creates upstream watershed subsets from identifiers + !!! note "Data Storage" All data is stored as Apache Iceberg tables in a SQLite-backed catalog locally built at `/tmp/warehouse/pyiceberg_catalog.db` ## Usage Examples -### Python Client +### Streamflow Observations ```python import requests import pandas as pd from io import StringIO, BytesIO -# Base URL base_url = "http://localhost:8000/v1/streamflow_observations" +# Get available data sources +sources = requests.get(f"{base_url}/sources").json() + +# Get available identifiers for USGS +identifiers = requests.get(f"{base_url}/usgs/available", params={"limit": 10}).json() + # Get station information -response = requests.get(f"{base_url}/usgs/info", params={"identifier": "01031500"}) -info = response.json() -print(f"Station has {info['total_records']} records") +station_info = requests.get(f"{base_url}/usgs/01031500/info").json() +print(f"Station has {station_info['total_records']} records") -# Download CSV data +# Download CSV data with date filtering csv_response = requests.get( f"{base_url}/usgs/csv", params={ "identifier": "01031500", "start_date": "2023-01-01T00:00:00", - "end_date": "2023-01-31T23:59:59" + "end_date": "2023-01-31T00:00:00", + "include_headers": True } ) df_csv = pd.read_csv(StringIO(csv_response.text)) -# Download Parquet data (more efficient for large datasets) +# Download Parquet data (recommended for large datasets) parquet_response = requests.get( f"{base_url}/usgs/parquet", params={ @@ -86,6 +95,22 @@ parquet_response = requests.get( df_parquet = pd.read_parquet(BytesIO(parquet_response.content)) ``` +### Hydrofabric Subset + +```python +import requests + +# Download hydrofabric subset as geopackage +response = requests.get("http://localhost:8000/v1/hydrofabric/01010000/gpkg") + +if response.status_code == 200: + with open("hydrofabric_subset_01010000.gpkg", "wb") as f: + f.write(response.content) + print(f"Downloaded {len(response.content)} bytes") +else: + print(f"Error: {response.status_code}") +``` + ## Performance Considerations ### Data Format Recommendations @@ -122,7 +147,7 @@ uv sync python src/icefabric_api/app/main.py ``` -### Adding New Data Sources +### Adding New Data Observation Sources To add a new data source, update the configuration in your router: @@ -158,25 +183,46 @@ The API provides interactive documentation at: Access the OpenAPI schema at: `http://localhost:8000/openapi.json` +## Verification -### Verification - -Test your API setup: +### Observations ```bash - -# List available sources +# List available data sources curl http://localhost:8000/v1/streamflow_observations/sources -# Test with a known identifier -curl "http://localhost:8000/v1/streamflow_observations/usgs/available?limit=1" +# Get available identifiers (limit results) +curl "http://localhost:8000/v1/streamflow_observations/usgs/available?limit=5" -# Get a CSV reponse +# Get data source information +curl http://localhost:8000/v1/streamflow_observations/usgs/info + +# Get specific station information +curl http://localhost:8000/v1/streamflow_observations/usgs/01010000/info + +# Download CSV with headers curl "http://localhost:8000/v1/streamflow_observations/usgs/csv?identifier=01010000&include_headers=true" -# Fitler based on timestamps +# Download CSV with date filtering curl "http://localhost:8000/v1/streamflow_observations/usgs/csv?identifier=01010000&start_date=2021-12-31T14%3A00%3A00&end_date=2022-01-01T14%3A00%3A00&include_headers=true" -# Get a Parquet Response -curl "http://localhost:8000/v1/streamflow_observations/usgs/parquet\?identifier\=01010000\&start_date\=2021-12-31T14%3A00%3A00\&end_date\=2022-01-01T14%3A00%3A00" -o "output.parquet" +# Download Parquet file +curl "http://localhost:8000/v1/streamflow_observations/usgs/parquet?identifier=01010000&start_date=2021-12-31T14%3A00%3A00&end_date=2022-01-01T14%3A00%3A00" -o "output.parquet" +``` + +### Hydrofabric + +```bash +# Download hydrofabric subset +curl "http://localhost:8000/v1/hydrofabric/01010000/gpkg" -o "subset.gpkg" + +# Download with different identifier +curl "http://localhost:8000/v1/hydrofabric/01031500/gpkg" -o "subset.gpkg" +``` + +### Health Check + +```bash +# Check API health +curl http://localhost:8000/health ``` diff --git a/src/icefabric_api/README.md b/src/icefabric_api/README.md index f4f70be..5a8601a 100644 --- a/src/icefabric_api/README.md +++ b/src/icefabric_api/README.md @@ -1,5 +1,102 @@ -CSV files for catchment specific values are too big to be checked in. They are stored here: s3://ngwpc-dev/DanielCumpton/divide_csv.tgz -Download and untar in the icefabric/src/icefabric_api/data directory. -For now, you can run modules by listing them in the module list defined on line 108 in run_modules.py. Text files showing all parameters as key/value -pairs will be written to a files per catchment. A JSON is output to the terminal. SFT, SMP, and LASAM csv files still need work to define the parameters properly. +# Icefabric API + +FastAPI service providing access to hydrology and water resources data stored in Apache Iceberg format. + +## Features + +- **Streamflow Observations** - USGS hourly streamflow data in CSV/Parquet formats +- **Hydrofabric Subsets** - Upstream watershed data as downloadable geopackages +- **Interactive Documentation** - Built-in Swagger UI and ReDoc + +## Quick Start + +### Prerequisites + +- [uv](https://docs.astral.sh/uv/) package manager + +### Installation + +```bash +# Clone repository +git clone +cd icefabric + +# Install package in development mode +uv pip install src/icefabric_api -e . +``` + +### Running the API + +```bash +# Start development server +cd src/icefabric_api +python -m app.main +``` + +The API will be available at `http://localhost:8000` + +### Docker Alternative + +```bash +# Build and run with Docker +docker compose -f docker/compose.yaml build --no-cache +docker compose -f docker/compose.yaml up +``` + +## API Endpoints + +### Streamflow Observations + +- `GET /v1/streamflow_observations/sources` - List available data sources +- `GET /v1/streamflow_observations/usgs/available` - Get available station IDs +- `GET /v1/streamflow_observations/usgs/{identifier}/info` - Station metadata +- `GET /v1/streamflow_observations/usgs/csv` - Download CSV data +- `GET /v1/streamflow_observations/usgs/parquet` - Download Parquet data + +### Hydrofabric + +- `GET /v1/hydrofabric/{identifier}/gpkg` - Download watershed subset as geopackage + +### Health Check + +- `HEAD /health` - API health status + +## Usage Examples + +### Download Streamflow Data + +```python +import requests +import pandas as pd + +# Get station information +response = requests.get( + "http://localhost:8000/v1/streamflow_observations/usgs/01031500/info" +) +station_info = response.json() + +# Download CSV data +csv_response = requests.get( + "http://localhost:8000/v1/streamflow_observations/usgs/csv", + params={ + "identifier": "01031500", + "start_date": "2023-01-01T00:00:00", + "end_date": "2023-01-31T23:59:59" + } +) +df = pd.read_csv(csv_response.text) +``` + +## Documentation + +- **Interactive API Docs**: http://localhost:8000/docs +- **Alternative Docs**: http://localhost:8000/redoc +- **OpenAPI Schema**: http://localhost:8000/openapi.json + +## Initial Parameters + +CSV files for catchment specific values are too big to be checked in. They are stored here: s3://ngwpc-dev/DanielCumpton/divide_csv.tgz +Download and untar in the icefabric/src/icefabric_api/data directory. +For now, you can run modules by listing them in the module list defined on line 108 in run_modules.py. Text files showing all parameters as key/value +pairs will be written to a files per catchment. A JSON is output to the terminal. SFT, SMP, and LASAM csv files still need work to define the parameters properly. See icefabric/src/icefabric_api/data/modules.csv for module name strings. diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py index 216412f..d97e1b8 100644 --- a/src/icefabric_api/app/main.py +++ b/src/icefabric_api/app/main.py @@ -2,6 +2,7 @@ from fastapi import FastAPI, status from pydantic import BaseModel +from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router app = FastAPI( @@ -20,6 +21,7 @@ class HealthCheck(BaseModel): # Include routers +app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") diff --git a/src/icefabric_api/app/routers/hydrofabric/__init__.py b/src/icefabric_api/app/routers/hydrofabric/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/app/routers/hydrofabric/conftest.py b/src/icefabric_api/app/routers/hydrofabric/conftest.py new file mode 100644 index 0000000..19850f9 --- /dev/null +++ b/src/icefabric_api/app/routers/hydrofabric/conftest.py @@ -0,0 +1,32 @@ +from pathlib import Path + +import pytest + +sample_gauges = [ + "01010000", + "02450825", + "03173000", + "04100500", + "05473450", + "06823500", + "07060710", + "08070000", + "09253000", + "10316500", + "11456000", + "12411000", + "13337000", + "14020000", +] + + +@pytest.fixture(params=sample_gauges) +def gauge_hf_uri(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture +def testing_dir() -> Path: + """Returns the testing data dir""" + return Path(__file__).parents[4] / "icefabric_tools/tests/data/" diff --git a/src/icefabric_api/app/routers/hydrofabric/router.py b/src/icefabric_api/app/routers/hydrofabric/router.py new file mode 100644 index 0000000..ac864e5 --- /dev/null +++ b/src/icefabric_api/app/routers/hydrofabric/router.py @@ -0,0 +1,76 @@ +import pathlib +import tempfile +import uuid + +from fastapi import APIRouter, HTTPException, Path +from fastapi.responses import FileResponse +from pyiceberg.catalog import load_catalog +from starlette.background import BackgroundTask + +from icefabric_tools import IdType, subset + +api_router = APIRouter(prefix="/hydrofabric") + +catalog_settings: dict = { + "type": "sql", + "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", + "warehouse": "file:///tmp/warehouse", +} + + +@api_router.get("/{identifier}/gpkg") +async def get_hydrofabric_subset_gpkg( + identifier: str = Path( + ..., + description="Identifier to start tracing from (e.g., catchment ID, POI ID)", + examples=["01010000"], + openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, + ), +): + """ + Get hydrofabric subset as a geopackage file (.gpkg) + + This endpoint creates a subset of the hydrofabric data by tracing upstream + from a given identifier and returns all related geospatial layers as a + downloadable geopackage file. + """ + catalog = load_catalog("hydrofabric", **catalog_settings) + unique_id = str(uuid.uuid4())[:8] + temp_dir = pathlib.Path(tempfile.gettempdir()) + tmp_path = temp_dir / f"hydrofabric_subset_{identifier}_{unique_id}.gpkg" + try: + # Create the subset + subset(catalog=catalog, identifier=f"gages-{identifier}", id_type=IdType.HL_URI, output_file=tmp_path) + + if not tmp_path.exists(): + raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}") + if tmp_path.stat().st_size == 0: + tmp_path.unlink(missing_ok=True) # Clean up empty file + raise HTTPException(status_code=404, detail=f"No data found for identifier '{identifier}'") + + # Verify it's actually a file, not a directory + if not tmp_path.is_file(): + raise HTTPException(status_code=500, detail=f"Expected file but got directory at {tmp_path}") + + print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") + + download_filename = f"hydrofabric_subset_{identifier}.gpkg" + + return FileResponse( + path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={ + "Content-Description": "Hydrofabric Subset Geopackage", + "X-Identifier": identifier, + }, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True)), + ) + + except HTTPException: + raise + except Exception: + # Clean up temp file if it exists + if "tmp_path" in locals() and tmp_path.exists(): + tmp_path.unlink(missing_ok=True) + raise diff --git a/src/icefabric_api/app/routers/hydrofabric/test_router.py b/src/icefabric_api/app/routers/hydrofabric/test_router.py new file mode 100644 index 0000000..697b645 --- /dev/null +++ b/src/icefabric_api/app/routers/hydrofabric/test_router.py @@ -0,0 +1,34 @@ +from pathlib import Path + +import geopandas as gpd +import pytest + + +@pytest.mark.integration +def test_subset_hl_uri(client, gauge_hf_uri: str, testing_dir: Path, tmp_path: Path): + """Test: GET /streamflow_observations/usgs/csv""" + response = client.get( + f"/v1/hydrofabric/{gauge_hf_uri}/gpkg", + ) + + assert response.status_code == 200, "Incorrect response" + + if response.status_code == 200: + temp_gpkg = tmp_path / "structure_test.gpkg" + temp_gpkg.write_bytes(response.content) + + output_gdf = gpd.read_file(temp_gpkg, layer="network") + correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="network") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(temp_gpkg, layer="divides") + correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="divides") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(temp_gpkg, layer="flowpaths") + correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="flowpaths") + assert output_gdf.equals(correct_gdf) + + output_gdf = gpd.read_file(temp_gpkg, layer="nexus") + correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="nexus") + assert output_gdf.equals(correct_gdf) From 544c7cc3d5188b76e36dd353330d9af8b92d9df4 Mon Sep 17 00:00:00 2001 From: Brock Hinkson Date: Mon, 2 Jun 2025 13:15:41 -0500 Subject: [PATCH 48/97] NGWPC-6394 - Create LASAM IPE Endpoint (#19) * NGWPC-6394 - Create LASAM IPE Endpoint * added api endpoint for the subset geopackage work (#18) --------- Co-authored-by: Tadd Bindas --- src/icefabric_api/app/main.py | 2 + .../app/routers/module_params/__init__.py | 0 .../app/routers/module_params/router.py | 48 ++++++++++ src/icefabric_api/data/lasam_out.csv | 16 ++++ src/icefabric_api/data/modules.csv | 20 ++-- src/icefabric_api/src/__init__.py | 0 src/icefabric_api/src/hf_attributes.py | 96 +++++++++++++++++++ src/icefabric_api/src/run_modules.py | 60 ++++++------ .../src/icefabric_manage/map_fim_data.py | 4 +- 9 files changed, 204 insertions(+), 42 deletions(-) create mode 100644 src/icefabric_api/app/routers/module_params/__init__.py create mode 100644 src/icefabric_api/app/routers/module_params/router.py create mode 100644 src/icefabric_api/data/lasam_out.csv create mode 100644 src/icefabric_api/src/__init__.py create mode 100644 src/icefabric_api/src/hf_attributes.py diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py index d97e1b8..9a579ee 100644 --- a/src/icefabric_api/app/main.py +++ b/src/icefabric_api/app/main.py @@ -4,6 +4,7 @@ from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router +from app.routers.module_params.router import api_router as module_params_router app = FastAPI( title="Icefabric API", @@ -23,6 +24,7 @@ class HealthCheck(BaseModel): # Include routers app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") +app.include_router(module_params_router, prefix="/v1") @app.head( diff --git a/src/icefabric_api/app/routers/module_params/__init__.py b/src/icefabric_api/app/routers/module_params/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/app/routers/module_params/router.py b/src/icefabric_api/app/routers/module_params/router.py new file mode 100644 index 0000000..bb28cbc --- /dev/null +++ b/src/icefabric_api/app/routers/module_params/router.py @@ -0,0 +1,48 @@ +import json +import re +import os + +from fastapi import APIRouter, HTTPException, Path, Query +from fastapi.responses import Response +from pydantic import BaseModel + +from src.hf_attributes import get_hydrofabric_attributes +from src.run_modules import module_ipe + +api_router = APIRouter(prefix="/modules") +ROOT_DIR = os.path.abspath(os.curdir) + + +class Parameters(BaseModel): + gage_id: str + version: str + source: str + domain: str + modules: list[str] + + +@api_router.post("/parameters") +async def get_ipes( + query: Parameters +): + if query.version != '2.1' and query.version != '2.2': + raise HTTPException(status_code=422, detail="Icefabric version must be 2.2 or 2.1") + elif query.version == '2.1' and query.domain != 'CONUS': + raise HTTPException(status_code=422, detail="oCONUS domains not availiable in Icefabric version 2.1") + + gpkg_file = f"{ROOT_DIR}/data/gauge_{query.gage_id}.gpkg" + if not os.path.exists(gpkg_file): + raise HTTPException(status_code=422, detail="Gage ID/geopackage not found") + + # Get divide attributes from the geopackage + attr = get_hydrofabric_attributes(gpkg_file, query.version, query.domain) + + all_modules = [] + for mod in query.modules: + mod_json = module_ipe(mod, attr, query.domain, query.version) + all_modules.append(mod_json) + + final_json = json.dumps({"modules": all_modules}) + final_json = re.sub("NaN", "null", final_json) + + return final_json diff --git a/src/icefabric_api/data/lasam_out.csv b/src/icefabric_api/data/lasam_out.csv new file mode 100644 index 0000000..285b009 --- /dev/null +++ b/src/icefabric_api/data/lasam_out.csv @@ -0,0 +1,16 @@ +variable,description +actual_evapotranspiration,volume of AET +giuh_runoff,volume of giuh runoff +groundwater_to_stream_recharge,outgoing water from ground reservoir to stream channel +infiltration,volume of infiltrated water +mass_balance,mass balance error +percolation,volume of water leaving soil through the bottom of the domain (ground water recharge) +potential_evapotranspiration,volume of PET +precipitation,total precipitation +soil_depth_layers,Soil depth layers +soil_depth_wetting_fronts,Soil depth wetting fronts +soil_moisture_wetting_fronts,Soil moisture wetting front +soil_num_wetting_fronts,Number of soil wetting fronts +soil_storage,volume of water left +surface_runoff,volume of water surface runoff +total_discharge,total outgoing water \ No newline at end of file diff --git a/src/icefabric_api/data/modules.csv b/src/icefabric_api/data/modules.csv index 4c085b5..d291784 100644 --- a/src/icefabric_api/data/modules.csv +++ b/src/icefabric_api/data/modules.csv @@ -1,10 +1,10 @@ -module,file -CFE-X,cfe_params.csv -Noah-OWP-Modular,noah_owp_modular_params.csv -Snow17,snow17_params.csv -Sac-SMA,sac_sma_params.csv -TopModel,topmodel_params.csv -UEB,ueb_params.csv -SFT,sft_params.csv -SMP,smp_params.csv -LASAM,lasam_params.csv +module,file,outputs +CFE-X,cfe_params.csv, +Noah-OWP-Modular,noah_owp_modular_params.csv, +Snow17,snow17_params.csv, +Sac-SMA,sac_sma_params.csv, +TopModel,topmodel_params.csv, +UEB,ueb_params.csv, +SFT,sft_params.csv, +SMP,smp_params.csv, +LASAM,lasam_params.csv,lasam_out.csv diff --git a/src/icefabric_api/src/__init__.py b/src/icefabric_api/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_api/src/hf_attributes.py b/src/icefabric_api/src/hf_attributes.py new file mode 100644 index 0000000..22dc490 --- /dev/null +++ b/src/icefabric_api/src/hf_attributes.py @@ -0,0 +1,96 @@ +import logging + +import geopandas as gpd +from pyproj import Transformer + +logger = logging.getLogger(__name__) + + +def get_hydrofabric_attributes(gpkg_file, version, domain): + + attr_layer = 'divide-attributes' + if version == '2.1': + attr_layer = 'model-attributes' + + # Map oCONUS lat/lon attribute names to CONUS names. + column_names_xy = {'X': 'centroid_x', 'Y': 'centroid_y'} + # Puerto Rico has a number of attribute names that don't match the other domains in HF v2.2 + column_names_pr = {'dksat_Time._soil_layers_stag.1': 'geom_mean.dksat_soil_layers_stag.1', + 'dksat_Time._soil_layers_stag.2': 'geom_mean.dksat_soil_layers_stag.2', + 'dksat_Time._soil_layers_stag.3': 'geom_mean.dksat_soil_layers_stag.3', + 'dksat_Time._soil_layers_stag.4': 'geom_mean.dksat_soil_layers_stag.4', + 'mean.cwpvt_Time.': 'mean.cwpvt', + 'mean.mfsno_Time.': 'mean.mfsno', + 'mean.mp_Time.': 'mean.mp', + 'mean.refkdt_Time.': 'mean.refkdt', + 'mean.slope_Time.': 'mean.slope_1km', + 'mean.smcmax_Time._soil_layers_stag.1': 'mean.smcmax_soil_layers_stag.1', + 'mean.smcmax_Time._soil_layers_stag.2': 'mean.smcmax_soil_layers_stag.2', + 'mean.smcmax_Time._soil_layers_stag.3': 'mean.smcmax_soil_layers_stag.3', + 'mean.smcmax_Time._soil_layers_stag.4': 'mean.smcmax_soil_layers_stag.4', + 'mean.smcwlt_Time._soil_layers_stag.1': 'mean.smcwlt_soil_layers_stag.1', + 'mean.smcwlt_Time._soil_layers_stag.2': 'mean.smcwlt_soil_layers_stag.2', + 'mean.smcwlt_Time._soil_layers_stag.3': 'mean.smcwlt_soil_layers_stag.3', + 'mean.smcwlt_Time._soil_layers_stag.4': 'mean.smcwlt_soil_layers_stag.4', + 'mean.vcmx25_Time.': 'mean.vcmx25', + 'mode.bexp_Time._soil_layers_stag.1': 'mode.bexp_soil_layers_stag.1', + 'mode.bexp_Time._soil_layers_stag.2': 'mode.bexp_soil_layers_stag.2', + 'mode.bexp_Time._soil_layers_stag.3': 'mode.bexp_soil_layers_stag.3', + 'mode.bexp_Time._soil_layers_stag.4': 'mode.bexp_soil_layers_stag.4', + 'psisat_Time._soil_layers_stag.1': 'geom_mean.psisat_soil_layers_stag.1', + 'psisat_Time._soil_layers_stag.2': 'geom_mean.psisat_soil_layers_stag.2', + 'psisat_Time._soil_layers_stag.3': 'geom_mean.psisat_soil_layers_stag.3', + 'psisat_Time._soil_layers_stag.4': 'geom_mean.psisat_soil_layers_stag.4'} + + # Get list of catchments from gpkg divides layer using geopandas + try: + divide_attr = gpd.read_file(gpkg_file, layer=attr_layer) + divide_layer = gpd.read_file(gpkg_file, layer='divides') + except: # TODO: Replace 'except' with proper catch + error_str = 'Error opening ' + gpkg_file + error = dict(error=error_str) + logger.error(error_str) + return error + + # Get catchement area from divides layer and append to attributes data frame + area = divide_layer[['divide_id', 'areasqkm']] + divide_attr = divide_attr.join(area.set_index('divide_id'), on='divide_id') + + # Account for differences in column names between CONUS and oCONUS + if version == '2.2' and domain != 'CONUS': + divide_attr.rename(columns=column_names_xy, inplace=True) + if version == '2.2' and domain == 'Puerto_Rico': + divide_attr.rename(columns=column_names_pr, inplace=True) + + # Soil and vegetation types are read from the gpkg as floats, but need to be ints + if version == '2.1': + divide_attr = divide_attr.astype({'ISLTYP': 'int'}) + divide_attr = divide_attr.astype({'IVGTYP': 'int'}) + elif version == '2.2': + divide_attr = divide_attr.astype({'mode.ISLTYP': 'int'}) + divide_attr = divide_attr.astype({'mode.IVGTYP': 'int'}) + + # Zmax/max_gw_storage units are mm in the hydrofabric but CFE expects m. + if version == '2.1': + divide_attr['gw_Zmax'] = divide_attr['gw_Zmax'].apply(lambda x: x/1000) + + elif version == '2.2': + divide_attr['mean.Zmax'] = divide_attr['mean.Zmax'].apply(lambda x: x/1000) + + # Elevation in 2.2 is in cm, convert to m. Except for AK, which is still in m. + if version == '2.2' and domain != 'Alaska': + divide_attr['mean.elevation'] = divide_attr['mean.elevation'].apply(lambda x: x/100) + + # Convert centroid_x and centroid_y (lat/lon) from the domain's CRS to WGS84 + # for decimal degrees for 2.2. + if version == '2.2': + crs = divide_layer.crs + transformer = Transformer.from_crs(crs, 4326) + for index, row in divide_attr.iterrows(): + y = row['centroid_y'] + x = row['centroid_x'] + wgs84_latlon = transformer.transform(x, y) + divide_attr.loc[index, 'centroid_y'] = wgs84_latlon[0] # latitude + divide_attr.loc[index, 'centroid_x'] = wgs84_latlon[1] # longitude + + return divide_attr diff --git a/src/icefabric_api/src/run_modules.py b/src/icefabric_api/src/run_modules.py index eeb79d8..3153eb5 100644 --- a/src/icefabric_api/src/run_modules.py +++ b/src/icefabric_api/src/run_modules.py @@ -1,16 +1,13 @@ import pandas as pd -from hf_attributes import * +from hf_attributes import get_hydrofabric_attributes +import json +import re +import os -gpkg_file = "../data/gauge_06710385.gpkg" -version = "2.2" -domain = "CONUS" +ROOT_DIR = os.path.abspath(os.curdir) -# Get divide attributes from the geopackage -attr = get_hydrofabric_attributes(gpkg_file, version, domain) -# Get list of divide IDs - -def module_ipe(module, attr, domain, version): +def module_ipe(module, attr, domain, version, cfg_write=None): # Create empty dataframe for csv parameters csv_params = pd.DataFrame() @@ -18,8 +15,12 @@ def module_ipe(module, attr, domain, version): divides = attr["divide_id"].to_list() # Look up parameter csv file for module - module_df = pd.read_csv("../data/modules.csv") + has_output_vars = True + module_df = pd.read_csv(f"{ROOT_DIR}/data/modules.csv") param_file = module_df.loc[module_df["module"] == module]["file"].to_string(index=False) + out_file = module_df.loc[module_df["module"] == module]["outputs"].to_string(index=False) + if out_file == "NaN": + has_output_vars = False # Get module parameters datatypes = { @@ -35,7 +36,16 @@ def module_ipe(module, attr, domain, version): "divide_attr_name": "object", "source_file": "object", } - module_params = pd.read_csv(f"../data/{param_file}", dtype=datatypes) + # Get output vars + out_datatypes = { + "variable": "object", + "description": "object" + } + + module_params = pd.read_csv(f"{ROOT_DIR}/data/{param_file}", dtype=datatypes) + output_vars = pd.DataFrame() + if has_output_vars: + output_vars = pd.read_csv(f"{ROOT_DIR}/data/{out_file}", dtype=out_datatypes) # Filter data frame for parameter names and default values. Create dictionary to collect # parameters for cfg files. @@ -64,7 +74,7 @@ def module_ipe(module, attr, domain, version): csv_file = module_params.loc[module_params["source"] == "csv"]["source_file"].to_list() csv_file = csv_file[0] csv_file = f"{csv_file}_{domain}_{version}.csv" - csv_params = pd.read_csv(f"../data/{csv_file}") + csv_params = pd.read_csv(f"{ROOT_DIR}/data/{csv_file}") for divide in divides: attr_div = attr.loc[attr["divide_id"] == divide] @@ -76,9 +86,10 @@ def module_ipe(module, attr, domain, version): all_cats[divide].update(csv_params_div) # print(all_cats[divide]) - write_cfg(all_cats) + if cfg_write: + write_cfg(all_cats) s3_uri = "s3://" - module_json = write_json(all_cats[divides[1]], module_params, module, s3_uri) + module_json = write_json(all_cats[divides[1]], module_params, output_vars, module, s3_uri) return module_json @@ -86,7 +97,7 @@ def write_cfg(params): divides = params.keys() for divide in divides: cfg_file = f"{divide}_bmi_config_cfe.txt" - f = open(cfg_file, "x") + f = open(cfg_file, "w") for key, value in params[divide].items(): f.write(f"{key}={value}\n") @@ -94,7 +105,7 @@ def write_cfg(params): f.close() -def write_json(params, all_params, module, s3_uri): +def write_json(params, all_params, output_vars, module, s3_uri): json_columns = ["name", "description", "default_value", "min", "max", "data_type", "units"] all_params = all_params.loc[all_params["calibratable"] == True, json_columns] all_params = all_params.to_dict(orient="records") @@ -109,19 +120,8 @@ def write_json(params, all_params, module, s3_uri): "parameter_file": {"uri": s3_uri}, "calibrate_parameters": all_params, } + if not output_vars.empty: + output_vars = output_vars.to_dict(orient="records") + module_dict.update({"output_variables": output_vars}) return module_dict - - -all_modules = [] - -# modules = ['CFE-X', 'Noah-OWP-Modular'] -modules = ["UEB"] - -for module in modules: - module_json = module_ipe(module, attr, domain, version) - all_modules.append(module_json) - -final_json = {"modules": all_modules} - -print(final_json) diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index 03e170e..d1c7b00 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -524,9 +524,9 @@ def save_crs_map(self): filterbyriver = grouped_xslayers.get_group(river_name) self.crs_dict[(huc_num, model_id)].update( { - river_name: f"ESPG: { + river_name: f"""ESPG: { str(filterbyriver.crs.to_epsg()) if filterbyriver.crs.to_epsg() else None - }, {filterbyriver.crs.name}," + }, {filterbyriver.crs.name},""" } ) From f6c891583a3316bb46e293e2bc71041f29cba012 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Mon, 2 Jun 2025 17:19:56 -0400 Subject: [PATCH 49/97] Delete src/icefabric_manage/scripts directory (#22) Deleting duplicate `scripts` which should were added due to a rebasing mistake --- .../scripts/build_hydrofabric.py | 41 ------------------- .../build_usgs_streamflow_observations.py | 27 ------------ 2 files changed, 68 deletions(-) delete mode 100644 src/icefabric_manage/scripts/build_hydrofabric.py delete mode 100644 src/icefabric_manage/scripts/build_usgs_streamflow_observations.py diff --git a/src/icefabric_manage/scripts/build_hydrofabric.py b/src/icefabric_manage/scripts/build_hydrofabric.py deleted file mode 100644 index c669f7c..0000000 --- a/src/icefabric_manage/scripts/build_hydrofabric.py +++ /dev/null @@ -1,41 +0,0 @@ -from pathlib import Path - -from dotenv import load_dotenv -from pyiceberg.catalog import load_catalog - -from icefabric_manage import build - -load_dotenv() - -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } - - namespace = "hydrofabric" - catalog = load_catalog(namespace, **catalog_settings) - layers = [ - "divide-attributes", - "divides", - "flowpath-attributes-ml", - "flowpath-attributes", - "flowpaths", - "hydrolocations", - "lakes", - "network", - "nexus", - "pois", - ] - for layer in layers: - print(f"building layer: {layer}") - build( - catalog=catalog, - parquet_file=f"s3://hydrofabric-data/icefabric/hydrofabric/{layer}.parquet", - namespace=namespace, - table_name=layer, - ) - print("Build successful") diff --git a/src/icefabric_manage/scripts/build_usgs_streamflow_observations.py b/src/icefabric_manage/scripts/build_usgs_streamflow_observations.py deleted file mode 100644 index 1d5a894..0000000 --- a/src/icefabric_manage/scripts/build_usgs_streamflow_observations.py +++ /dev/null @@ -1,27 +0,0 @@ -from pathlib import Path - -from dotenv import load_dotenv -from pyiceberg.catalog import load_catalog - -from icefabric_manage import build - -load_dotenv() - -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } - - namespace = "observations" - catalog = load_catalog(namespace, **catalog_settings) - build( - catalog=catalog, - parquet_file="s3://hydrofabric-data/icefabric/observations/usgs_hourly.parquet", - namespace=namespace, - table_name="usgs_hourly", - ) - print("Build successful") From 56b980772268c2c595c470a9942c242ef410bef3 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Tue, 3 Jun 2025 15:26:15 -0400 Subject: [PATCH 50/97] JIRA-6381: EDFS QA: Clean up icefabric_manage repo and examples to clean up duplicate code and abide by code style (#24) --- .gitignore | 1 + .pre-commit-config.yaml | 2 +- examples/Demo_Iceberg.ipynb | 1441 +---------------- pyproject.toml | 14 +- src/icefabric_manage/builds/__init__.py | 0 .../build_iceberg_bathymetry_ml_auxiliary.py | 40 + src/icefabric_manage/pyproject.toml | 2 +- .../src/icefabric_manage/iceberg_table.py | 132 +- .../src/icefabric_manage/map_fim_data.py | 98 +- 9 files changed, 235 insertions(+), 1495 deletions(-) create mode 100644 src/icefabric_manage/builds/__init__.py create mode 100644 src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py diff --git a/.gitignore b/.gitignore index 9af092f..aff49d6 100644 --- a/.gitignore +++ b/.gitignore @@ -185,3 +185,4 @@ data/ .zarr *.tiff *.tif +examples/iceberg_catalog/metadata/ diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a258935..88b32b5 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,4 +22,4 @@ repos: - repo: https://github.com/astral-sh/uv-pre-commit rev: 0.5.7 hooks: - - id: uv-lock + - id: uv-lock \ No newline at end of file diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index 48a7660..e9242cb 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -6,270 +6,36 @@ "metadata": {}, "source": [ "# Introduction:\n", - "## Generation of Iceberg Catalog for Parquet files" + "## Generation of Iceberg Catalog for Parquet files\n", + "\n", + "Note:\n", + "\n", + "For building from S3, requires `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_SESSION_TOKEN` in your environmental variables. The recommended method to set is to store in this directory's `.env` file.\n", + "\n", + "For building locally, store `ml_auxiliary_data.parquet` files in `./data/bathymetry/ml_axuiliary_data/vpuid==XX/ml_auxiliary_data.parquet`" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "7e3f71a8-a823-4df9-90df-8d6e62969faa", "metadata": {}, "outputs": [], "source": [ "import os\n", - "import re\n", "import warnings\n", "\n", - "import boto3\n", - "import pyarrow as pa\n", "import pyarrow.parquet as pq\n", - "import s3fs\n", + "from dotenv import load_dotenv\n", "from pyiceberg.catalog import load_catalog\n", + "from pyiceberg.exceptions import NamespaceAlreadyExistsError\n", "from pyiceberg.expressions import And, GreaterThan, GreaterThanOrEqual, LessThan\n", - "from pyiceberg.schema import Schema\n", - "from pyiceberg.types import (\n", - " BinaryType,\n", - " BooleanType,\n", - " DoubleType,\n", - " LongType,\n", - " NestedField,\n", - " StringType,\n", - ")\n", - "\n", - "warnings.filterwarnings(\"ignore\")\n", - "\n", - "\n", - "class IcebergTable:\n", - " \"\"\"\n", - " Create a Iceberg table per parquet file w/ its inherited schema set.\n", - "\n", - " Note: Allows for user to have the option to read parquets from S3 or locally. It is okay to expect\n", - " following warning statements throughout process: \"Iceberg does not have a dictionary type. will be inferred as string on read.\"\n", - "\n", - " \"\"\"\n", - "\n", - " def __init__(self):\n", - " # Generate folder for iceberg catalog\n", - " if not os.path.exists(f\"{os.getcwd()}/iceberg_catalog\"):\n", - " os.makedirs(f\"{os.getcwd()}/iceberg_catalog\")\n", - "\n", - " # Set location of where the iceberg catalog will reside\n", - " os.environ[\"PYICEBERG_HOME\"] = os.getcwd()\n", - "\n", - " # Initialize namespace to be set for Iceberg catalog\n", - " self.namespace = \"\"\n", - "\n", - " def read_data_dirs(self, data_dir):\n", - " \"\"\"\n", - " Extract the list of parquet directories.\n", - "\n", - " Args:\n", - " data_dir (str): Parent directory of the parquet files.\n", - " Note: All the ml_auxiliary_data parquet\n", - " files are save under same filenames,\n", - " but categorized by 'vpuid' conditions.\n", - "\n", - " Return (list): List of directories associated with each parquet file.\n", - "\n", - " \"\"\"\n", - " parquet_list = []\n", - " for folder, subfolders, files in os.walk(data_dir):\n", - " if folder != data_dir:\n", - " for file in files:\n", - " parquet_list.append(f\"{folder}/{file}\")\n", - "\n", - " return parquet_list\n", - "\n", - " def read_data(self, parquet_file_path):\n", - " \"\"\"\n", - " Load a single parquet as a Pyarrow table.\n", - "\n", - " Args:\n", - " parquet_file_path (str): Directory of a single parquet.\n", - "\n", - "\n", - " Return: A Pyarrow table.\n", - "\n", - " \"\"\"\n", - " data = pq.read_table(parquet_file_path)\n", - "\n", - " return data\n", - "\n", - " def establish_catalog(self, catalog_name, namespace):\n", - " \"\"\"\n", - " Creates a new Iceberg catalog.\n", - "\n", - " Args:\n", - " catalog_name (str): Name of the catalog to be created.\n", - " Default: 'dev' for development catalog\n", - " namespace (str): Name of namespace.\n", - "\n", - " Return: None\n", - "\n", - " \"\"\"\n", - " # Establish a new Iceberg catalog & its configuration\n", - " self.catalog = load_catalog(\n", - " name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"}\n", - " )\n", - "\n", - " # Establish namespace to be create w/in catalog\n", - " self.namespace = namespace\n", - " if self.namespace not in self.catalog.list_namespaces():\n", - " self.catalog.create_namespace(self.namespace)\n", - "\n", - " return\n", - "\n", - " def convert_pyarrow_to_iceberg_schema(self, arrow_schema):\n", - " \"\"\"\n", - " Translate a given Pyarrow schema into a schema acceptable by Iceberg.\n", - "\n", - " Args:\n", - " arrow_schema (object): Pyarrow schema read from the loaded\n", - " parquet of interest.\n", - "\n", - " Return (object): Iceberg schema\n", - "\n", - " \"\"\"\n", - " fields = []\n", - " for idx in range(len(arrow_schema)):\n", - " # Extraction of the datatype & name of each schema row\n", - " field_name = arrow_schema.field(idx).name\n", - " arrow_type = arrow_schema.field(idx).type\n", - "\n", - " # Iceberg datatypes to pyarrow datatypes\n", - " if pa.types.is_int32(arrow_type):\n", - " iceberg_type = LongType()\n", - " elif pa.types.is_string(arrow_type):\n", - " iceberg_type = StringType()\n", - " elif pa.types.is_float64(arrow_type):\n", - " iceberg_type = DoubleType()\n", - " elif pa.types.is_int64(arrow_type):\n", - " iceberg_type = LongType()\n", - " elif pa.types.is_boolean(arrow_type):\n", - " iceberg_type = BooleanType()\n", - " elif pa.types.is_binary(arrow_type):\n", - " iceberg_type = BinaryType()\n", - " elif pa.types.is_dictionary(arrow_type):\n", - " if pa.types.is_string(arrow_type.value_type):\n", - " iceberg_type = StringType()\n", - " elif pa.types.is_int32(arrow_type.value_type):\n", - " iceberg_type = LongType()\n", - " else:\n", - " raise ValueError(f\"Unsupported PyArrow type: {arrow_type}\")\n", - "\n", - " # Establish the new schema acceptable to Iceberg\n", - " fields.append(\n", - " NestedField(field_id=idx + 1, required=False, name=field_name, field_type=iceberg_type)\n", - " )\n", - " # Iceberg schema\n", - " schema = Schema(*fields)\n", - "\n", - " return schema\n", - "\n", - " def create_table_for_parquet(self, iceberg_tablename, data_table, schema):\n", - " \"\"\"\n", - " Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory.\n", - "\n", - " Args:\n", - " iceberg_tablename (str): Name of the Iceberg table to be created.\n", - "\n", - " data_table (object): Pyarrow table\n", - "\n", - " schema (object): Unique Iceberg schema to be set for the Iceberg table.\n", - "\n", - " namespace (str): Namespace for which the Iceberg table will reside within\n", - " the Iceberg catalog.\n", - "\n", - " Return: None\n", - "\n", - " \"\"\"\n", - " # Create an Iceberg table\n", - " iceberg_table = self.catalog.create_table(\n", - " identifier=f\"{self.namespace}.{iceberg_tablename}\",\n", - " schema=schema,\n", - " location=f\"{os.environ['PYICEBERG_HOME']}/iceberg_catalog\",\n", - " )\n", - "\n", - " # Updates the Iceberg table with data of interest.\n", - " iceberg_table.append(data_table)\n", - "\n", - " return\n", - "\n", - " def create_table_for_all_parquets(self, parquet_files, app_name=\"mip-xs\"):\n", - " \"\"\"\n", - " Convert parquets to Iceberg tables - each w/ their inherited schema.\n", - "\n", - " Args:\n", - " parquet_files (list): List of directories of the parquet files.\n", "\n", - " app_name (str): Application to create Iceberg tables.\n", - " Options: 'mip-xs' & 'bathymetry_ml_auxiliary'\n", + "from icefabric_manage.iceberg_table import IcebergTable\n", "\n", - " Return: None\n", + "load_dotenv()\n", "\n", - " Note: The sourced data structures for the data in 'mip-xs' &\n", - " 'bathymetry_ml_auxiliary' S3 buckets differ.\n", - "\n", - " \"\"\"\n", - " for idx, parquet_file in enumerate(parquet_files):\n", - " if app_name == \"mip_xs\":\n", - " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}\"\n", - "\n", - " elif app_name == \"bathymetry_ml_auxiliary\":\n", - " iceberg_tablename = f\"{os.path.split(os.path.split(parquet_file)[0])[1]}\"\n", - "\n", - " data_table = self.read_data(parquet_file)\n", - " data_pyarrow_schema = data_table.schema\n", - " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(iceberg_tablename, data_table, schema)\n", - " return\n", - "\n", - " def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name=\"default\"):\n", - " \"\"\"\n", - " Convert parquets from S3 to Iceberg tables - each w/ their inherited schema.\n", - "\n", - " Args:\n", - " bucket_name (list): S3 bucket name.\n", - "\n", - " app_name (str): Application to create Iceberg tables.\n", - " Options: 'mip_xs' & 'bathymetry_ml_auxiliary'\n", - "\n", - " namespace (str): Namespace for which the Iceberg table will reside within\n", - " the Iceberg catalog.\n", - "\n", - " profile_name (str: Profile name declared in the AWS configuration file.\n", - " Default: 'default'\n", - "\n", - " Return: None\n", - "\n", - " \"\"\"\n", - " # Instantiate bucket of interest.\n", - " session = boto3.Session(profile_name=profile_name)\n", - " s3 = session.resource(\"s3\")\n", - " bucket_ob = s3.Bucket(bucket_name)\n", - " pyarrow_table = {}\n", - " for s3obj in bucket_ob.objects.all():\n", - " # For sourcing the preprocessed XS parquets from S3\n", - " if app_name == \"mip_xs\" and re.match(r\"^xs_data/.*\\.parquet$\", s3obj.key):\n", - " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}\"\n", - " pyarrow_table[iceberg_tablename] = pq.read_table(\n", - " f\"s3://{bucket_name}/{s3obj.key}\", filesystem=s3fs.S3FileSystem()\n", - " )\n", - "\n", - " # For sourcing the bathymetry_ml_auxiliary parquets from S3\n", - " elif app_name == \"bathymetry_ml_auxiliary\":\n", - " iceberg_tablename = f\"{os.path.split(os.path.split(s3obj.key)[0])[1]}\"\n", - " pyarrow_table[iceberg_tablename] = pq.read_table(\n", - " f\"s3://{bucket_name}/{s3obj.key}\", filesystem=s3fs.S3FileSystem()\n", - " )\n", - "\n", - " # Xforming each unique parquet to an iceberg table\n", - " for key, data_table in pyarrow_table.items():\n", - " data_pyarrow_schema = data_table.schema\n", - " schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema)\n", - " self.create_table_for_parquet(key, data_table, schema)\n", - " return" + "warnings.filterwarnings(\"ignore\")" ] }, { @@ -284,103 +50,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "c74f8432-f07f-430d-830f-d0910a699ea8", "metadata": { "scrolled": true }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n" - ] - } - ], + "outputs": [], "source": [ "# Scenario I\n", "# Instantiate class\n", @@ -389,11 +64,13 @@ "# Extract list of parquets\n", "parquet_list = obj.read_data_dirs(data_dir=f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/\")\n", "\n", - "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev\", namespace=\"bathymetry_ml_auxiliary\")\n", + "try:\n", + " obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev\", namespace=\"bathymetry_ml_auxiliary\")\n", "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected\n", - "obj.create_table_for_all_parquets(parquet_list, app_name=\"bathymetry_ml_auxiliary\")" + " # Generate tables w/in the new Iceberg catalog for all parquets detected\n", + " obj.create_table_for_all_parquets(parquet_list, app_name=\"bathymetry_ml_auxiliary\")\n", + "except NamespaceAlreadyExistsError:\n", + " print(\"Table already exists! Exiting\")" ] }, { @@ -407,118 +84,28 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "ad60621b-fc16-44c7-85b9-8a66a2b1835b", "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as string on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n", - "Iceberg does not have a dictionary type. will be inferred as int32 on read.\n" - ] - } - ], + "outputs": [], "source": [ "# Scenario II\n", "# Instantiate class\n", "obj = IcebergTable()\n", "\n", - "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev2\", namespace=\"bathymetry_ml_auxiliary\")\n", + "try:\n", + " # Establish new Iceberg catalog\n", + " obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev2\", namespace=\"bathymetry_ml_auxiliary\")\n", "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "obj.create_table_for_all_s3parquets(\n", - " app_name=\"bathymetry_ml_auxiliary\", bucket_name=\"ngwpc-bathymetry\", profile_name=\"default\"\n", - ")" + " # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", + " obj.create_table_for_all_s3parquets(app_name=\"bathymetry_ml_auxiliary\", bucket_name=\"ngwpc-bathymetry\")\n", + "except NamespaceAlreadyExistsError:\n", + " print(\"Table already exists! Exiting\")" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": null, "id": "a1c58d4f-59e5-41d8-be31-536f3f790216", "metadata": {}, "outputs": [], @@ -528,10 +115,14 @@ "obj = IcebergTable()\n", "\n", "# Establish new Iceberg catalog\n", - "obj.establish_catalog(catalog_name=\"xs\", namespace=\"mip\")\n", - "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "obj.create_table_for_all_s3parquets(app_name=\"mip_xs\", bucket_name=\"ngwpc-xs\", profile_name=\"default\")" + "try:\n", + " obj.establish_catalog(catalog_name=\"fema_xs\", namespace=\"mip\")\n", + " obj.establish_catalog(catalog_name=\"fema_xs\", namespace=\"ble\")\n", + " # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", + " obj.create_table_for_all_s3parquets(app_name=\"mip_xs\", bucket_name=\"ngwpc-xs\")\n", + " obj.create_table_for_all_s3parquets(app_name=\"ble_xs\", bucket_name=\"ngwpc-xs\")\n", + "except NamespaceAlreadyExistsError:\n", + " print(\"Table already exists! Exiting\")" ] }, { @@ -545,71 +136,12 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": null, "id": "f449ec30-027e-45c8-91f2-9ad5402b6d17", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "hf_source: large_string\n", - "owp_ahg_c: double\n", - "owp_ahg_f: double\n", - "owp_ahg_a: double\n", - "owp_ahg_b: double\n", - "owp_ahg_k: double\n", - "owp_ahg_m: double\n", - "owp_dingman_r: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "owp_bf_channel_area: double\n", - "owp_inchan_channel_area: double\n", - "owp_bf_channel_perimeter: double\n", - "owp_inchan_channel_perimeter: double\n", - "owp_bf_channel_volume: double\n", - "owp_inchan_channel_volume: double\n", - "owp_bf_channel_bed_area: double\n", - "owp_inchan_channel_bed_area: double\n", - "owp_y_bf: double\n", - "owp_y_inchan: double\n", - "owp_tw_bf: double\n", - "owp_tw_inchan: double\n", - "owp_roughness_bathy: double\n", - "owp_roughness_bathy_lower_bound: double\n", - "owp_roughness_bathy_upper_bound: double\n", - "hf_id: int64\n", - "owp_roughness_no_bathy: double\n", - "hand_source: large_string\n", - "vpuid: int64\n", - "----\n", - "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", - "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", - "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", - "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", - "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", - "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", - "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", - "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", - "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", - "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", - "owp_bf_channel_area: [[80.46187884864187,90.44316537020227,89.3267744543078,89.62238381994659,89.90283819898646,...,33.88476675445253,48.125833094134954,45.14128117526434,41.78322001139718,56.363562127191784]]\n", - "owp_inchan_channel_area: [[56.33064405881224,47.85337776245516,45.59987281142967,48.37917782823691,50.59816670544206,...,25.20392164626514,32.69610800625728,32.75638185253578,31.798663807897064,41.19407020582869]]\n", - "owp_bf_channel_perimeter: [[59.02193299271193,56.93125233080745,56.69193540611867,56.50078213602541,55.71884696596583,...,23.818806528270343,30.790736238597308,31.668208182122697,30.244473860557726,30.83026535966577]]\n", - "owp_inchan_channel_perimeter: [[45.902837801519674,42.88972958711348,42.781428840029896,42.25541060346861,42.74371656180321,...,21.110362040213978,26.22321774860116,29.594636105720035,28.74937461636522,29.077815788520574]]\n", - "owp_bf_channel_volume: [[238808.31641383746,122992.17939660752,186691.7464348059,47767.11633624437,114784.993280073,...,374132.76248264225,106938.35095912036,103918.0174765935,308434.4112290948,614433.0593072133]]\n", - "owp_inchan_channel_volume: [[167187.57332894605,65075.024723013536,95303.11538032124,25785.23039753066,64602.07866200221,...,278284.72007038887,72652.62018698554,75407.21426593073,234730.64418647942,449066.69533706637]]\n", - "owp_bf_channel_bed_area: [[2892.2022978763703,2606.358246231509,2120.7761872525807,986.0789590461588,2397.4053647652536,...,25676.071091443406,5707.898767447053,5221.871474208872,16154.579945017962,35426.56632826127]]\n", - "owp_inchan_channel_bed_area: [[2882.6693726661933,1727.420220530991,1302.426453449232,684.7218800959778,1690.876524247671,...,20277.60153281499,4218.877531759497,3638.538549084465,11664.69130783148,24593.30687386722]]\n", - "owp_y_bf: [[1.4270710945129395,1.6684650778770447,1.6728723049163818,1.6662447452545166,1.6976696848869324,...,1.6160700917243958,1.7370615005493164,1.5624184012413025,1.5164253115653992,2.082498550415039]]\n", - "owp_y_inchan: [[1.2915553450584412,1.1687858998775482,1.128367155790329,1.2016823887825012,1.2436135411262512,...,1.3436493873596191,1.3731055855751038,1.1905770599842072,1.1925222873687744,1.5661699175834656]]\n", - "...\n" - ] - } - ], + "outputs": [], "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [local]\n", "catalog_name = \"bathymetry_ml_auxiliary_dev\"\n", "namespace = \"bathymetry_ml_auxiliary\"\n", "tablename = \"vpuid=01\"\n", @@ -620,12 +152,12 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "6c69cdf0-90ae-4e32-8100-5aecc746edc9", "metadata": {}, "outputs": [], "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [s3]\n", "catalog_name = \"bathymetry_ml_auxiliary_dev2\"\n", "namespace = \"bathymetry_ml_auxiliary\"\n", "tablename = \"vpuid=01\"\n", @@ -636,626 +168,13 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "id": "57d3a536-70dc-4b1d-a162-73e376bca0dc", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "river: large_string\n", - "reach: large_string\n", - "river_reach: large_string\n", - "river_station: double\n", - "river_reach_rs: large_string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: large_string\n", - "station_elevation_points: large_string\n", - "bank_stations: large_string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: large_string\n", - "profile_names: large_string\n", - "geometry: large_binary\n", - "huc: large_string\n", - "model_id: large_string\n", - "us_reach_id: large_string\n", - "us_network_to_id: large_string\n", - "ds_reach_id: large_string\n", - "ds_network_to_id: large_string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", - "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", - "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", - "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", - "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", - "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", - "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", - "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "ras_data: [[\"Type RM Length L Ch R = 1,7300,467,467,467\n", - "BEGIN DESCRIPTION:\n", - "Stream0528 16.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 801174.98 421275.01 800775.00 421575.00\n", - " 800324.98 422375.04\n", - "#Sta/Elev=88\n", - " 4499.1 241.30 4502.6 241.08 4508.1 240.72 4525.5 239.49 4538.6 238.45\n", - " 4541.0 238.23 4556.0 236.88 4574.5 235.11 4604.0 232.37 4610.5 231.73\n", - " 4646.5 228.57 4648.8 228.37 4652.0 228.13 4669.4 226.75 4682.5 225.74\n", - " 4689.9 225.13 4699.9 224.39 4718.4 223.19 4747.9 221.12 4754.4 220.79\n", - " 4772.2 220.03 4790.4 218.68 4795.9 218.36 4826.4 218.50 4843.8 220.20\n", - " 4854.4 222.24 4862.3 223.75 4874.9 226.81 4891.8 230.20 4895.9 230.70\n", - " 4898.3 230.99 4917.8 231.53 4934.3 232.10 4939.7 231.87 4970.2 228.16\n", - " 4987.7 225.95 4998.0 218.36 4998.2 217.86 5001.8 217.86 5002.1 218.36\n", - " 5010.7 223.52 5024.3 222.97 5041.7 222.97 5056.7 223.02 5057.3 223.02\n", - " 5061.7 223.03 5188.4 223.05 5198.0 223.04 5245.5 223.01 5255.4 223.01\n", - " 5304.2 222.95 5321.4 223.06 5336.4 223.19 5362.9 223.22 5387.5 223.49\n", - " 5420.5 223.97 5453.5 225.03 5463.2 225.49 5480.3 226.15 5494.5 226.65\n", - " 5519.6 227.58 5539.0 230.01 5552.6 231.77 5568.8 234.40 5578.4 236.10\n", - " 5585.6 237.38 5597.7 238.56 5611.1 239.63 5618.6 240.34 5645.5 241.06\n", - " 5651.6 241.22 5684.7 241.94 5715.1 242.40 5716.8 242.42 5717.7 242.44\n", - " 5721.0 242.51 5750.7 243.15 5759.0 243.35 5773.8 243.81 5783.7 244.06\n", - " 5816.7 244.98 5832.5 245.51 5849.7 246.10 5871.9 247.04 5882.8 247.48\n", - " 5906.9 248.45 5915.8 248.77 5917.0 248.82\n", - "#Mann=8,-1,0\n", - " 4499.1 0.07 0 4541.0 0.03 0 4895.9 0.05 0\n", - " 4998.0 0.05 0 5002.1 0.05 0 5056.7 0.03 0\n", - " 5198.0 0.07 0 5578.4 0.03 0\n", - "Bank Sta=4998,5002.1\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,6833,487,487,487\n", - "BEGIN DESCRIPTION:\n", - "Stream0528 15.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 801125.01 421175.00 800725.00 421125.00\n", - " 800524.99 421425.02\n", - "#Sta/Elev=56\n", - " 4596.9 238.12 4607.4 237.30 4614.9 236.74 4665.4 232.76 4694.4 230.63\n", - " 4718.0 228.96 4723.4 228.56 4743.8 226.84 4752.4 226.14 4769.6 224.66\n", - " 4781.4 223.73 4810.4 221.66 4829.7 220.47 4846.9 219.48 4868.4 218.38\n", - " 4872.7 218.13 4897.4 216.99 4898.5 216.96 4926.4 216.05 4955.4 215.76\n", - " 4984.4 215.76 4998.0 215.76 4998.2 215.26 5001.8 215.26 5002.1 215.76\n", - " 5013.8 216.26 5023.9 216.41 5038.6 216.88 5048.4 217.27 5075.8 218.08\n", - " 5080.1 218.22 5083.0 218.36 5097.4 219.05 5117.6 219.94 5127.7 220.60\n", - " 5142.4 221.45 5152.2 222.35 5163.1 223.12 5168.7 223.66 5179.6 224.70\n", - " 5183.9 224.98 5186.8 225.21 5201.2 226.23 5221.4 227.59 5231.5 228.34\n", - " 5256.0 229.80 5283.3 231.49 5287.7 231.68 5290.5 231.86 5308.4 232.70\n", - " 5325.1 233.87 5329.2 234.17 5335.2 234.67 5339.5 234.93 5359.7 236.16\n", - " 5360.6 236.21\n", - "#Mann=5,-1,0\n", - " 4596.9 0.07 0 4998.0 0.07 0 5002.1 0.07 0\n", - " 5168.7 0.03 0 5339.5 0.05 0\n", - "Bank Sta=4998,5002.1\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,6346,433,433,433\n", - "BEGIN DESCRIPTION:\n", - "Stream0528 14.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 800875.02 420424.98 800475.00 420825.00\n", - " 800475.00 421474.99\n", - "#Sta/Elev=82\n", - " 4433.8 246.73 4461.2 244.11 4463.3 243.94 4482.6 241.76 4501.9 240.40\n", - " 4502.9 240.29 4504.0 240.22 4523.3 237.89 4542.6 236.45 4544.7 236.25\n", - " 4583.3 232.69 4585.4 232.51 4624.0 229.18 4625.0 229.09 4626.1 229.00\n", - " 4664.7 225.22 4665.7 225.11 4666.8 225.02 4686.1 223.11 4705.4 221.69\n", - " 4707.5 221.53 4746.1 219.33 4748.2 219.25 4767.5 218.53 4786.8 217.91\n", - " 4788.8 217.86 4827.5 216.55 4829.5 216.50 4848.9 216.01 4868.2 215.56\n", - " 4869.2 215.53 4870.3 215.52 4909.9 214.99 4911.0 214.98 4930.3 214.96\n", - " 4951.7 214.68 4971.0 214.53 4992.4 214.44 4998.0 214.44 4998.2 213.94\n", - " 5001.8 213.94 5002.1 214.44 5023.2 214.64 5052.0 215.06 5058.5 215.17\n", - " 5080.8 215.64 5103.0 216.19 5109.6 216.34 5116.1 216.56 5138.3 217.12\n", - " 5160.6 217.92 5167.1 218.12 5195.9 218.62 5224.7 218.95 5246.9 219.31\n", - " 5253.4 219.38 5275.7 219.92 5282.2 220.02 5288.7 220.20 5311.0 220.94\n", - " 5317.5 221.22 5331.7 221.80 5339.8 222.13 5368.6 223.29 5397.3 224.58\n", - " 5448.4 227.28 5454.9 227.61 5461.4 227.90 5483.7 229.06 5490.2 229.36\n", - " 5512.5 230.56 5534.7 231.71 5541.2 232.03 5547.7 232.52 5561.6 233.45\n", - " 5570.0 234.02 5592.3 235.86 5598.8 236.59 5605.3 237.14 5627.6 238.74\n", - " 5634.1 238.95 5649.5 239.52\n", - "#Mann=5,-1,0\n", - " 4433.8 0.07 0 4998.0 0.07 0 5002.1 0.07 0\n", - " 5331.7 0.03 0 5561.6 0.05 0\n", - "Bank Sta=4998,5002.1\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,5913,408,408,408\n", - "BEGIN DESCRIPTION:\n", - "Stream0528 13.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 800825.01 420024.99 800125.00 420825.00\n", - " 800424.99 421474.99\n", - "#Sta/Elev=104\n", - " 3931.6 241.95 3955.4 241.31 3972.5 240.61 3993.7 239.63 4004.2 239.07\n", - " 4016.2 238.50 4031.9 237.63 4059.9 235.96 4070.1 235.27 4085.8 234.13\n", - " 4103.6 233.09 4106.2 232.93 4108.4 232.83 4146.6 230.97 4147.3 230.93\n", - " 4184.9 228.66 4187.7 228.47 4191.0 228.29 4208.1 227.09 4223.1 226.17\n", - " 4234.7 225.37 4261.3 223.64 4278.4 222.50 4289.7 221.89 4299.6 221.32\n", - " 4322.1 219.94 4365.8 218.50 4371.3 218.38 4376.1 218.35 4409.5 217.87\n", - " 4414.3 217.75 4452.9 216.59 4453.2 216.58 4490.8 215.82 4493.7 215.76\n", - " 4496.9 215.71 4529.0 215.47 4534.4 215.44 4540.6 215.38 4584.3 215.05\n", - " 4605.5 215.00 4656.8 215.03 4671.8 215.01 4682.0 215.02 4715.5 214.92\n", - " 4718.0 214.91 4720.2 214.90 4738.4 214.71 4758.8 214.38 4759.2 214.38\n", - " 4796.7 213.94 4802.9 213.91 4834.9 213.87 4860.8 213.88 4873.2 213.85\n", - " 4977.7 213.83 4994.6 213.85 4997.6 213.83 4998.0 213.33 5002.1 213.33\n", - " 5002.4 213.83 5020.7 213.84 5107.7 213.88 5115.8 213.95 5129.3 214.01\n", - " 5147.5 214.24 5158.6 214.48 5179.2 215.06 5194.4 215.61 5210.9 216.17\n", - " 5227.3 216.51 5237.8 216.65 5242.6 216.68 5274.3 216.91 5281.1 216.95\n", - " 5324.5 217.51 5337.7 217.72 5339.6 217.74 5346.2 217.79 5369.4 218.11\n", - " 5389.6 218.45 5401.1 218.63 5432.4 219.23 5432.8 219.23 5433.3 219.25\n", - " 5464.5 220.54 5491.2 222.01 5496.2 222.27 5519.7 223.59 5527.9 224.04\n", - " 5541.4 224.83 5559.6 225.63 5563.1 225.81 5570.7 226.08 5588.7 226.88\n", - " 5591.3 227.00 5606.4 228.14 5623.0 229.29 5639.3 231.80 5654.7 234.26\n", - " 5671.5 236.98 5686.4 238.60 5708.0 239.45 5710.5 239.55\n", - "#Mann=5,-1,0\n", - " 3931.6 0.07 0 4997.6 0.07 0 5002.4 0.07 0\n", - " 5339.6 0.03 0 5588.7 0.05 0\n", - "Bank Sta=4997.6,5002.4\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,5505,419,419,419\n", - "BEGIN DESCRIPTION:\n", - "Stream0528 12.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 800325.02 419674.95 799925.00 420875.00\n", - " 800325.02 421475.02\n", - "#Sta/Elev=138\n", - " 3724.5 242.87 3734.7 242.14 3748.3 241.26 3753.8 240.92 3775.7 239.57\n", - " 3778.7 239.38 3800.7 238.14 3809.0 237.76 3823.4 237.04 3837.6 236.50\n", - " 3839.4 236.43 3846.2 236.06 3869.7 234.89 3900.0 233.51 3916.7 232.93\n", - " 3930.4 232.39 3937.2 232.15 3957.7 231.53 3959.9 231.46 3991.0 230.58\n", - " 4007.7 230.16 4021.4 229.79 4028.2 229.48 4048.7 228.93 4051.7 228.83\n", - " 4053.2 228.77 4082.0 227.41 4096.4 226.85 4112.4 226.27 4128.2 225.76\n", - " 4128.3 225.76 4164.7 224.58 4173.0 224.34 4189.7 223.93 4230.7 222.87\n", - " 4233.7 222.78 4255.7 222.23 4264.0 222.03 4280.7 221.92 4294.4 221.80\n", - " 4301.2 221.72 4324.0 221.37 4324.7 221.35 4355.1 220.90 4412.7 220.21\n", - " 4415.0 220.18 4415.7 220.18 4417.2 220.16 4446.1 219.96 4460.5 219.92\n", - " 4463.3 219.89 4503.7 219.44 4506.7 219.40 4508.2 219.38 4537.1 219.19\n", - " 4567.4 219.07 4597.7 218.89 4599.2 218.87 4628.1 218.50 4642.5 218.25\n", - " 4658.4 218.05 4719.1 217.17 4735.8 216.87 4749.4 216.65 4752.3 216.60\n", - " 4756.2 216.54 4776.7 216.18 4779.7 216.13 4781.2 216.11 4810.1 215.65\n", - " 4824.5 215.44 4840.4 215.26 4867.7 215.24 4870.7 215.23 4872.3 215.20\n", - " 4901.1 214.74 4931.4 214.36 4961.8 214.04 4989.5 213.89 4992.5 213.87\n", - " 4997.5 213.84 4997.9 213.34 5002.2 213.34 5002.6 213.84 5007.0 213.87\n", - " 5019.0 213.88 5027.0 213.88 5039.8 213.94 5058.8 213.96 5060.5 213.96\n", - " 5061.6 213.96 5081.3 214.03 5102.0 214.02 5130.8 214.08 5143.5 214.04\n", - " 5162.6 213.90 5164.3 213.89 5200.0 213.84 5234.6 213.85 5266.4 213.94\n", - " 5268.0 213.95 5269.2 213.97 5274.7 214.05 5281.1 214.14 5303.7 214.47\n", - " 5318.3 214.63 5330.3 214.82 5338.3 214.84 5351.1 215.12 5370.1 215.66\n", - " 5372.9 215.73 5392.6 216.12 5407.5 216.36 5422.0 216.72 5434.1 217.06\n", - " 5442.1 217.26 5476.7 218.25 5496.3 219.18 5511.3 219.81 5517.1 220.32\n", - " 5525.8 221.00 5537.8 222.14 5545.9 222.85 5558.6 224.54 5576.4 226.21\n", - " 5577.7 226.33 5580.4 226.58 5600.1 227.92 5615.0 229.16 5620.8 229.65\n", - " 5629.6 231.15 5641.6 232.77 5649.6 234.30 5681.4 238.68 5683.1 238.85\n", - " 5684.2 238.99 5703.8 239.24 5710.6 239.51\n", - "#Mann=10,-1,0\n", - " 3724.5 0.03 0 3753.8 0.07 0 3837.6 0.035 0\n", - " 4128.2 0.07 0 4128.3 0.035 0 4463.3 0.07 0\n", - " 4997.5 0.07 0 5002.6 0.07 0 5281.1 0.03 0\n", - " 5576.4 0.05 0\n", - "Bank Sta=4997.5,5002.6\n", - "Exp/Cntr=0.3,0.1\n", - "\",...,\"Type RM Length L Ch R = 1,1842,442,442,442\n", - "BEGIN DESCRIPTION:\n", - "Stream0512 4.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 808374.98 370125.01 808125.00 370325.00\n", - " 807724.98 371125.04\n", - "#Sta/Elev=373\n", - " 4675.5 403.33 4680.2 403.38 4680.6 403.38 4681.2 403.40 4685.3 403.62\n", - " 4688.6 403.99 4691.8 404.23 4697.1 404.57 4702.3 404.79 4705.5 404.70\n", - " 4708.8 404.51 4712.9 404.12 4714.0 403.95 4718.4 402.69 4722.4 401.55\n", - " 4723.5 401.17 4730.9 398.26 4734.0 397.03 4739.4 394.77 4741.7 393.63\n", - " 4744.6 392.18 4746.4 391.30 4747.8 390.68 4755.2 387.31 4756.3 386.83\n", - " 4764.7 383.43 4765.7 383.06 4769.9 381.47 4773.2 380.39 4779.3 378.44\n", - " 4781.7 377.87 4786.9 376.70 4790.1 376.14 4797.5 374.97 4798.6 374.81\n", - " 4802.8 374.14 4807.0 373.34 4808.0 373.12 4815.5 371.38 4816.9 371.06\n", - " 4818.6 370.75 4823.9 369.88 4826.3 369.67 4829.2 369.62 4832.4 369.53\n", - " 4835.7 369.45 4839.7 369.42 4840.9 369.42 4849.3 369.35 4849.8 369.34\n", - " 4850.3 369.33 4857.8 369.31 4860.9 369.39 4866.2 369.51 4871.5 369.51\n", - " 4874.7 369.48 4882.0 369.47 4883.1 369.47 4892.6 369.58 4896.7 369.66\n", - " 4900.0 369.70 4901.4 369.72 4903.2 369.72 4906.1 369.74 4908.5 369.71\n", - " 4913.8 369.67 4917.0 369.65 4924.3 369.64 4925.4 369.63 4929.6 369.63\n", - " 4933.9 369.62 4934.3 369.61 4934.9 369.61 4942.3 369.51 4943.7 369.48\n", - " 4945.5 369.48 4948.4 369.49 4950.8 369.52 4953.1 369.57 4956.0 369.60\n", - " 4959.3 369.59 4962.5 369.52 4966.6 369.39 4967.2 369.37 4967.7 369.37\n", - " 4972.1 369.49 4976.2 369.57 4976.6 369.58 4977.2 369.60 4984.6 369.75\n", - " 4987.8 369.71 4990.7 369.62 4993.1 369.57 4995.6 369.51 4997.2 368.51\n", - " 4997.7 368.01 5002.4 368.01 5002.8 368.51 5003.9 369.54 5004.9 369.54\n", - " 5005.9 369.55 5012.3 369.54 5018.6 369.43 5019.7 369.40 5020.7 369.39\n", - " 5024.9 369.37 5033.4 369.48 5034.4 369.50 5041.8 369.47 5048.2 369.39\n", - " 5050.2 369.37 5054.5 369.33 5056.6 369.30 5064.0 369.28 5065.0 369.29\n", - " 5069.2 369.32 5071.3 369.36 5077.7 369.44 5078.7 369.45 5079.8 369.46\n", - " 5086.1 369.48 5093.5 369.40 5094.6 369.39 5100.9 369.39 5108.3 369.41\n", - " 5108.6 369.41 5109.3 369.40 5113.5 369.36 5115.7 369.35 5118.5 369.36\n", - " 5123.0 369.33 5124.1 369.33 5128.3 369.32 5130.4 369.32 5136.8 369.34\n", - " 5137.8 369.34 5138.2 369.34 5138.9 369.34 5143.1 369.27 5148.0 369.22\n", - " 5153.6 369.21 5160.0 369.21 5166.3 369.24 5167.3 369.24 5168.4 369.24\n", - " 5172.6 369.20 5174.7 369.14 5177.5 369.11 5182.1 369.05 5183.1 369.05\n", - " 5187.4 369.04 5189.5 369.01 5196.9 368.83 5197.9 368.80 5204.2 368.79\n", - " 5211.6 368.83 5212.0 368.85 5212.7 368.83 5216.9 368.77 5219.0 368.65\n", - " 5225.4 368.52 5226.4 368.51 5227.4 368.56 5233.8 368.96 5236.6 369.09\n", - " 5241.2 369.20 5241.5 369.19 5242.2 369.18 5248.6 369.16 5254.9 369.27\n", - " 5255.9 369.28 5257.0 369.32 5261.2 369.48 5263.3 369.50 5270.7 369.62\n", - " 5271.7 369.64 5276.0 369.64 5278.1 369.60 5284.4 369.73 5285.5 369.74\n", - " 5286.5 369.77 5290.7 370.01 5292.9 370.18 5295.7 370.45 5300.2 370.70\n", - " 5300.6 370.73 5301.3 370.73 5305.5 370.75 5307.6 370.74 5313.9 370.64\n", - " 5315.0 370.62 5315.4 370.63 5316.1 370.66 5322.4 371.00 5328.7 371.58\n", - " 5329.8 371.69 5330.1 371.71 5330.8 371.75 5337.2 372.08 5343.5 372.16\n", - " 5344.5 372.16 5345.6 372.17 5349.8 372.19 5351.9 372.33 5358.3 372.71\n", - " 5359.3 372.77 5359.7 372.80 5360.4 372.84 5366.7 373.10 5369.5 373.24\n", - " 5374.1 373.32 5375.1 373.37 5379.3 373.58 5381.5 373.67 5384.3 373.72\n", - " 5388.8 373.95 5389.9 373.97 5394.1 374.06 5396.2 374.14 5402.6 374.35\n", - " 5403.6 374.38 5404.7 374.43 5408.9 374.63 5411.0 374.71 5417.3 374.87\n", - " 5418.4 374.90 5419.4 374.90 5425.8 374.87 5428.6 374.93 5433.1 375.08\n", - " 5433.5 375.10 5440.5 375.56 5447.9 375.83 5449.0 375.86 5453.2 376.01\n", - " 5455.3 376.08 5458.1 376.24 5462.7 376.33 5463.0 376.35 5463.7 376.37\n", - " 5467.9 376.46 5470.1 376.48 5476.4 376.60 5477.4 376.61 5477.8 376.61\n", - " 5478.5 376.64 5484.8 376.90 5491.2 377.07 5492.2 377.11 5493.2 377.16\n", - " 5497.5 377.34 5499.6 377.38 5507.0 377.76 5508.0 377.83 5514.4 378.29\n", - " 5517.2 378.43 5521.7 378.66 5522.8 378.70 5529.1 378.96 5535.4 379.18\n", - " 5536.5 379.22 5536.9 379.24 5543.9 379.31 5550.2 379.65 5551.3 379.69\n", - " 5552.3 379.73 5558.7 380.03 5566.0 380.26 5567.1 380.33 5571.3 380.58\n", - " 5573.4 380.71 5579.8 380.87 5580.8 380.91 5581.2 380.90 5581.9 380.90\n", - " 5588.2 380.91 5591.0 381.03 5595.6 381.36 5596.6 381.45 5600.8 381.84\n", - " 5603.0 381.99 5605.8 382.17 5610.3 382.37 5610.7 382.39 5611.4 382.40\n", - " 5617.7 382.54 5624.1 382.67 5625.1 382.68 5626.2 382.70 5630.4 382.74\n", - " 5632.5 382.79 5638.8 383.08 5639.9 383.13 5640.9 383.21 5647.3 383.61\n", - " 5650.1 383.73 5654.6 383.94 5655.0 383.95 5655.7 383.98 5662.0 384.22\n", - " 5669.4 384.48 5674.7 384.69 5676.8 384.78 5683.1 385.19 5684.2 385.25\n", - " 5685.2 385.32 5691.6 385.81 5697.9 386.41 5698.9 386.49 5699.3 386.52\n", - " 5700.0 386.60 5704.2 386.93 5706.3 387.12 5713.7 387.55 5714.1 387.56\n", - " 5714.8 387.59 5721.1 387.82 5727.4 388.04 5728.5 388.07 5728.8 388.08\n", - " 5729.5 388.13 5735.9 388.58 5742.2 389.05 5743.3 389.14 5744.3 389.21\n", - " 5748.5 389.43 5750.6 389.52 5753.4 389.64 5758.0 389.78 5759.1 389.82\n", - " 5763.3 389.95 5765.4 390.03 5771.7 390.28 5772.8 390.32 5773.8 390.41\n", - " 5780.2 390.92 5786.5 391.27 5787.5 391.33 5787.9 391.33 5788.6 391.36\n", - " 5792.8 391.59 5794.9 391.72 5801.3 392.00 5802.3 392.05 5802.7 392.07\n", - " 5803.4 392.09 5807.6 392.20 5809.7 392.31 5812.5 392.43 5817.1 392.58\n", - " 5817.4 392.61 5818.1 392.61 5822.4 392.76 5824.5 392.86 5827.3 393.07\n", - " 5831.8 393.28 5832.9 393.33 5839.2 393.58 5845.6 393.77 5846.6 393.80\n", - " 5847.7 393.85 5851.9 394.04 5854.0 394.18 5856.8 394.31 5861.4 394.63\n", - " 5862.4 394.69 5868.8 395.06 5875.1 395.39 5876.2 395.45 5876.5 395.47\n", - " 5883.5 395.80 5889.9 396.08 5890.1 396.09\n", - "#Mann=3,-1,0\n", - " 4675.5 0.07 0 4997.2 0.07 0 5002.8 0.07 0\n", - "Bank Sta=4997.2,5002.8\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,1400,430,430,430\n", - "BEGIN DESCRIPTION:\n", - "Stream0512 3.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 808225.02 369924.99 807825.00 370075.00\n", - " 807074.99 370675.01\n", - "#Sta/Elev=411\n", - " 4568.4 398.04 4568.6 398.04 4574.3 398.03 4577.0 398.04 4581.4 397.95\n", - " 4583.9 397.76 4588.5 397.36 4592.3 397.06 4595.5 396.81 4602.5 396.17\n", - " 4602.6 396.16 4607.7 395.49 4609.6 395.20 4613.7 394.25 4616.7 393.63\n", - " 4621.5 391.55 4623.7 390.62 4625.0 390.08 4630.8 387.19 4633.4 386.42\n", - " 4637.8 384.82 4640.3 384.16 4644.9 382.96 4648.8 382.49 4651.9 381.81\n", - " 4653.9 381.58 4659.0 380.83 4659.2 380.81 4670.2 379.55 4673.1 379.29\n", - " 4678.0 378.40 4679.5 378.09 4680.1 377.96 4681.5 377.80 4687.2 377.04\n", - " 4692.7 376.71 4694.2 376.62 4696.8 376.31 4701.3 375.62 4704.0 375.10\n", - " 4708.4 374.22 4715.3 373.07 4715.4 373.05 4715.6 373.02 4722.5 372.07\n", - " 4729.5 371.18 4734.4 370.41 4736.0 370.17 4736.6 370.10 4741.1 369.66\n", - " 4743.6 369.51 4749.2 369.50 4750.7 369.48 4751.4 369.49 4756.5 369.48\n", - " 4757.7 369.48 4760.5 369.53 4764.8 369.56 4771.9 369.65 4772.0 369.65\n", - " 4777.0 369.62 4778.9 369.63 4783.0 369.69 4785.9 369.70 4790.8 369.76\n", - " 4792.4 369.75 4793.0 369.73 4794.3 369.70 4800.0 369.53 4805.6 369.34\n", - " 4807.1 369.28 4807.8 369.25 4809.6 369.21 4816.9 369.12 4821.2 369.14\n", - " 4823.2 369.17 4828.3 369.08 4828.4 369.08 4835.3 369.36 4839.4 369.58\n", - " 4842.4 369.74 4847.2 369.97 4849.4 370.11 4850.7 370.18 4856.5 370.45\n", - " 4859.1 370.57 4863.5 370.75 4866.0 370.90 4870.6 371.08 4874.5 371.14\n", - " 4877.6 371.27 4884.6 371.27 4884.7 371.27 4884.9 371.27 4891.7 371.31\n", - " 4895.9 371.44 4903.7 371.72 4905.2 371.76 4905.8 371.78 4910.4 372.13\n", - " 4912.9 372.41 4918.4 373.15 4919.9 373.32 4922.5 373.63 4927.0 374.14\n", - " 4929.7 374.21 4934.1 374.34 4936.0 374.33 4941.1 374.43 4941.3 374.42\n", - " 4948.2 374.13 4951.4 373.80 4955.2 373.03 4960.1 371.76 4961.7 371.30\n", - " 4962.3 371.12 4963.6 370.77 4969.3 369.08 4971.9 368.40 4976.4 367.67\n", - " 4977.1 367.59 4978.9 367.44 4983.4 367.15 4987.3 367.08 4990.5 367.00\n", - " 4995.6 366.90 4996.8 366.87 4997.1 366.11 4997.6 365.61 5002.5 365.61\n", - " 5002.9 366.11 5006.4 366.77 5006.8 366.76 5007.4 366.76 5011.5 366.86\n", - " 5014.8 366.84 5016.2 366.86 5017.9 366.75 5020.9 366.66 5023.3 366.45\n", - " 5025.6 366.38 5028.5 366.46 5031.7 366.66 5039.1 367.18 5040.2 367.23\n", - " 5044.4 367.28 5048.7 367.30 5049.6 367.32 5057.1 367.46 5058.5 367.47\n", - " 5060.2 367.45 5065.6 367.32 5070.8 367.12 5074.0 367.06 5082.0 367.00\n", - " 5082.5 367.00 5086.7 367.01 5090.9 367.14 5091.4 367.16 5091.9 367.17\n", - " 5099.4 367.40 5102.5 367.41 5107.9 367.41 5110.2 367.38 5113.1 367.31\n", - " 5114.9 367.27 5116.3 367.25 5119.6 367.30 5123.6 367.33 5124.8 367.33\n", - " 5129.0 367.32 5133.2 367.25 5134.2 367.24 5141.7 367.21 5143.1 367.21\n", - " 5144.8 367.23 5147.8 367.17 5150.1 367.12 5155.4 367.08 5158.6 367.04\n", - " 5165.9 366.81 5166.6 366.82 5167.1 366.81 5171.3 366.72 5175.5 366.51\n", - " 5176.0 366.50 5176.5 366.50 5184.0 366.61 5192.4 366.68 5197.7 366.82\n", - " 5199.4 366.84 5200.9 366.87 5208.2 366.95 5209.3 366.96 5213.5 367.03\n", - " 5217.8 367.05 5218.8 367.07 5226.3 367.14 5227.6 367.14 5229.4 367.16\n", - " 5234.7 367.18 5237.0 367.19 5239.9 367.13 5243.2 367.12 5246.4 367.16\n", - " 5250.5 367.15 5251.1 367.14 5251.6 367.13 5260.1 367.11 5261.1 367.11\n", - " 5268.5 367.15 5271.6 367.13 5274.6 367.14 5277.0 367.10 5279.3 367.11\n", - " 5282.2 367.11 5285.5 367.15 5292.8 367.15 5293.9 367.14 5298.4 367.24\n", - " 5302.4 367.32 5302.8 367.33 5303.4 367.33 5307.5 367.33 5310.8 367.32\n", - " 5313.9 367.16 5319.3 366.94 5324.5 367.05 5327.7 367.04 5335.1 366.73\n", - " 5336.2 366.70 5340.4 366.64 5344.7 366.64 5345.6 366.66 5349.8 366.66\n", - " 5353.1 366.64 5354.5 366.64 5356.2 366.71 5361.6 366.88 5363.9 366.90\n", - " 5366.8 366.89 5368.6 366.88 5370.0 366.85 5377.4 366.76 5378.0 366.77\n", - " 5378.5 366.77 5383.0 366.80 5387.0 366.84 5387.4 366.84 5387.9 366.83\n", - " 5395.4 366.68 5398.5 366.61 5401.5 366.51 5403.9 366.45 5406.2 366.39\n", - " 5409.1 366.36 5412.3 366.36 5419.6 366.29 5420.8 366.27 5429.2 366.11\n", - " 5430.2 366.11 5434.4 366.18 5437.7 366.24 5440.8 366.28 5446.1 366.34\n", - " 5453.2 366.28 5454.6 366.28 5461.9 366.32 5463.1 366.32 5467.3 366.36\n", - " 5472.5 366.33 5480.0 366.35 5481.4 366.38 5483.1 366.39 5486.0 366.44\n", - " 5488.4 366.48 5493.7 366.55 5496.9 366.57 5504.2 366.60 5505.3 366.60\n", - " 5509.5 366.63 5513.8 366.61 5514.8 366.62 5522.3 366.73 5525.4 366.76\n", - " 5530.7 366.75 5535.9 366.63 5537.7 366.58 5539.2 366.55 5546.5 366.50\n", - " 5547.6 366.48 5551.8 366.42 5556.1 366.37 5557.1 366.37 5564.5 366.52\n", - " 5565.9 366.55 5567.7 366.60 5573.0 366.73 5578.2 366.79 5581.5 366.74\n", - " 5588.8 366.71 5589.4 366.71 5589.9 366.71 5598.4 366.91 5599.4 366.93\n", - " 5609.9 367.12 5612.9 367.22 5615.3 367.26 5620.5 367.51 5622.3 367.59\n", - " 5623.8 367.61 5631.1 367.44 5632.2 367.41 5640.7 367.22 5641.6 367.23\n", - " 5649.1 367.46 5652.2 367.55 5655.2 367.67 5657.6 367.77 5659.9 367.88\n", - " 5666.0 368.16 5669.3 368.34 5673.4 368.73 5674.0 368.78 5674.5 368.82\n", - " 5678.7 369.14 5683.0 369.47 5683.4 369.50 5683.9 369.53 5691.4 369.85\n", - " 5694.5 370.08 5699.9 370.63 5705.1 371.45 5708.3 371.95 5711.6 372.48\n", - " 5715.6 373.37 5716.3 373.48 5716.8 373.59 5721.3 374.28 5725.2 374.88\n", - " 5725.7 374.92 5726.2 374.98 5733.7 375.39 5736.8 375.48 5742.1 375.64\n", - " 5744.5 375.64 5747.4 375.77 5750.6 375.96 5753.9 376.10 5757.9 376.40\n", - " 5767.5 376.97 5768.5 377.02 5776.0 377.28 5784.4 377.64 5789.7 377.95\n", - " 5791.5 378.07 5792.9 378.16 5796.1 378.27 5800.2 378.38 5801.3 378.41\n", - " 5809.8 378.50 5810.3 378.52 5810.8 378.55 5814.9 378.81 5818.3 378.91\n", - " 5821.4 379.05 5824.3 379.25 5826.7 379.30 5829.0 379.40 5831.9 379.56\n", - " 5833.7 379.68 5835.2 379.77 5842.5 380.22 5843.1 380.27 5843.6 380.30\n", - " 5852.1 381.03 5853.1 381.07 5860.6 381.36 5861.9 381.45 5863.7 381.55\n", - " 5869.0 381.82 5871.3 382.00 5874.2 382.19 5876.0 382.31 5877.5 382.39\n", - " 5884.8 382.57 5885.9 382.60 5890.4 382.64 5894.4 382.67 5894.8 382.68\n", - " 5895.4 382.69 5902.8 382.80 5905.9 382.81 5908.9 382.80 5911.3 382.82\n", - " 5916.5 382.90 5918.3 382.93 5919.8 382.98 5923.0 383.06 5927.1 383.29\n", - " 5927.7 383.32 5928.2 383.34 5932.7 383.54 5936.7 383.71 5937.1 383.72\n", - " 5937.7 383.72 5945.1 383.77 5948.2 383.77 5953.6 383.79 5955.9 383.83\n", - " 5956.1 383.83\n", - "#Mann=3,-1,0\n", - " 4568.4 0.07 0 4997.1 0.07 0 5002.9 0.07 0\n", - "Bank Sta=4997.1,5002.9\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,970,454,454,454\n", - "BEGIN DESCRIPTION:\n", - "Stream0512 2.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 807775.02 369774.99 807425.00 370075.00\n", - " 807025.00 370425.00\n", - "#Sta/Elev=273\n", - " 4538.2 385.23 4543.7 385.03 4544.0 385.01 4544.3 385.00 4548.7 384.83\n", - " 4553.0 384.62 4553.4 384.60 4553.8 384.58 4561.7 384.18 4564.0 384.06\n", - " 4570.4 383.50 4572.1 383.33 4574.1 383.09 4579.1 382.57 4581.5 382.28\n", - " 4584.3 381.90 4586.2 381.66 4587.8 381.45 4596.5 380.50 4600.2 380.20\n", - " 4604.6 379.86 4605.2 379.82 4613.9 379.37 4614.7 379.32 4622.6 378.62\n", - " 4624.9 378.38 4631.3 377.51 4635.0 376.90 4640.0 375.89 4642.4 375.38\n", - " 4645.2 374.83 4647.1 374.42 4648.7 374.10 4655.3 372.84 4656.4 372.66\n", - " 4657.4 372.52 4665.5 371.54 4665.8 371.51 4666.1 371.49 4670.5 371.25\n", - " 4675.6 370.87 4683.5 370.40 4684.5 370.32 4685.7 370.24 4692.2 369.77\n", - " 4693.9 369.62 4695.9 369.47 4700.9 369.10 4703.3 368.97 4706.0 368.81\n", - " 4709.6 368.65 4716.2 368.48 4718.3 368.41 4722.0 368.18 4726.3 367.95\n", - " 4727.0 367.90 4731.4 367.46 4735.7 367.30 4736.5 367.27 4740.7 367.07\n", - " 4744.4 366.91 4746.6 366.78 4750.1 366.55 4753.1 366.46 4754.8 366.40\n", - " 4756.8 366.36 4759.5 366.30 4761.8 366.29 4768.8 366.20 4770.5 366.20\n", - " 4777.1 366.11 4779.2 366.04 4787.2 365.86 4787.6 365.86 4787.9 365.85\n", - " 4796.6 365.71 4806.3 365.69 4807.5 365.70 4814.0 365.74 4817.7 365.69\n", - " 4822.6 365.66 4827.8 365.67 4831.3 365.65 4834.4 365.63 4838.0 365.65\n", - " 4840.0 365.68 4848.1 365.87 4848.7 365.89 4857.4 365.99 4858.2 365.99\n", - " 4866.1 365.88 4867.2 365.87 4868.4 365.87 4871.9 365.79 4874.8 365.89\n", - " 4878.5 365.89 4883.5 365.85 4888.7 365.84 4892.2 365.76 4895.3 365.70\n", - " 4898.8 365.69 4900.9 365.71 4904.6 365.70 4909.0 365.78 4909.6 365.79\n", - " 4913.5 365.84 4918.3 365.90 4919.1 365.92 4923.4 365.99 4927.0 366.01\n", - " 4935.7 366.03 4937.4 366.07 4939.4 366.08 4944.4 366.14 4949.6 366.23\n", - " 4951.5 366.23 4953.1 366.21 4959.7 365.83 4961.8 365.72 4965.5 365.58\n", - " 4969.9 365.46 4970.2 365.45 4970.5 365.45 4979.2 365.66 4979.6 365.66\n", - " 4980.0 365.66 4987.9 365.69 4989.0 365.71 4990.2 365.72 4996.6 365.74\n", - " 4996.8 364.54 4997.3 364.04 5002.7 364.04 5003.2 364.54 5005.4 365.35\n", - " 5010.3 364.97 5012.4 364.79 5014.1 364.72 5017.0 364.54 5020.4 364.98\n", - " 5022.9 365.24 5030.4 365.65 5031.7 365.66 5040.4 365.58 5045.1 365.45\n", - " 5049.2 365.30 5050.5 365.25 5058.0 365.04 5060.5 364.97 5063.8 364.93\n", - " 5066.8 364.92 5070.5 364.93 5073.2 364.90 5075.6 364.96 5080.5 365.18\n", - " 5082.6 365.25 5084.3 365.28 5090.6 365.26 5091.9 365.27 5093.1 365.29\n", - " 5100.6 365.23 5101.9 365.21 5110.6 364.94 5110.9 364.93 5119.4 364.93\n", - " 5120.0 364.94 5120.7 364.95 5128.2 365.10 5130.7 365.17 5137.0 365.29\n", - " 5140.7 365.37 5145.8 365.47 5148.1 365.49 5150.7 365.53 5154.5 365.54\n", - " 5160.8 365.63 5163.3 365.68 5166.8 365.72 5170.8 365.79 5172.1 365.83\n", - " 5176.2 365.93 5180.8 366.07 5189.6 366.19 5190.9 366.19 5194.9 366.20\n", - " 5198.4 366.19 5200.9 366.20 5204.2 366.24 5207.2 366.33 5210.9 366.50\n", - " 5216.0 366.71 5218.3 366.79 5220.9 366.84 5223.0 366.83 5224.7 366.84\n", - " 5231.0 366.80 5232.3 366.80 5233.5 366.81 5241.0 367.06 5242.3 367.10\n", - " 5251.0 367.43 5259.8 367.71 5260.4 367.72 5261.0 367.72 5268.6 367.69\n", - " 5269.8 367.68 5271.1 367.67 5277.4 367.81 5281.1 368.05 5288.5 368.62\n", - " 5291.1 368.84 5293.2 368.99 5294.9 369.13 5301.2 369.68 5303.7 369.94\n", - " 5311.2 370.53 5312.5 370.58 5321.2 370.40 5330.0 370.73 5330.6 370.75\n", - " 5331.3 370.78 5338.8 370.91 5341.3 370.93 5344.6 370.93 5347.6 371.10\n", - " 5351.3 371.44 5354.0 371.72 5356.4 371.90 5361.3 372.29 5363.4 372.46\n", - " 5365.1 372.68 5371.4 373.40 5373.9 373.67 5377.4 374.03 5381.4 374.30\n", - " 5382.7 374.37 5386.8 374.69 5391.4 375.14 5391.7 375.17 5400.2 376.03\n", - " 5401.5 376.11 5409.0 376.54 5411.5 376.64 5414.8 376.80 5417.8 377.04\n", - " 5421.5 377.26 5426.6 377.50 5431.5 377.75 5435.3 377.88 5438.3 378.04\n", - " 5441.6 378.27 5442.9 378.37 5444.1 378.45 5451.6 378.97 5452.9 379.02\n", - " 5461.6 379.17 5471.0 379.47 5479.2 380.05 5480.4 380.12 5485.1 380.37\n", - " 5488.0 380.55 5489.7 380.64 5491.7 380.72 5496.8 380.94 5501.7 381.18\n", - " 5503.8 381.29 5505.5 381.40 5511.8 381.61 5514.3 381.63 5517.8 381.64\n", - " 5521.8 381.68 5523.1 381.71 5530.7 381.88\n", - "#Mann=3,-1,0\n", - " 4538.2 0.07 0 4996.8 0.07 0 5003.2 0.07 0\n", - "Bank Sta=4996.8,5003.2\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,516,405,405,405\n", - "BEGIN DESCRIPTION:\n", - "Stream0512 1.0\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 807324.99 369375.03 807175.00 369775.00\n", - " 806824.99 370175.02\n", - "#Sta/Elev=275\n", - " 4573.3 404.53 4574.0 404.50 4579.4 403.89 4581.1 403.75 4583.8 403.37\n", - " 4588.1 402.73 4590.7 402.30 4595.2 401.56 4602.0 400.11 4602.2 400.06\n", - " 4602.6 399.98 4607.5 398.79 4609.3 398.41 4613.3 397.70 4616.3 397.13\n", - " 4617.7 396.88 4621.4 396.42 4623.4 396.17 4628.0 395.50 4630.5 395.15\n", - " 4635.9 394.18 4637.5 393.90 4643.4 392.95 4644.6 392.78 4648.5 392.29\n", - " 4651.6 391.89 4658.5 391.14 4658.7 391.11 4659.0 391.08 4663.9 390.60\n", - " 4665.7 390.44 4669.0 390.11 4672.8 389.65 4677.8 389.15 4679.8 388.97\n", - " 4686.9 388.37 4689.5 388.19 4693.9 387.74 4694.7 387.67 4696.6 387.45\n", - " 4701.0 386.99 4703.6 386.78 4708.0 386.39 4710.1 386.21 4715.1 385.79\n", - " 4715.4 385.74 4722.1 384.88 4726.2 384.34 4729.2 383.98 4734.3 383.49\n", - " 4736.2 383.29 4737.4 383.19 4743.3 382.66 4748.7 382.25 4750.4 382.11\n", - " 4753.1 381.84 4756.2 381.51 4757.4 381.40 4761.4 381.10 4764.5 380.83\n", - " 4766.5 380.67 4771.5 380.07 4771.6 380.06 4771.9 380.03 4778.6 379.38\n", - " 4782.6 379.16 4785.6 379.02 4790.7 378.57 4792.7 378.36 4797.3 377.70\n", - " 4799.7 377.40 4802.4 376.92 4806.8 376.01 4809.5 375.34 4812.6 374.52\n", - " 4813.8 374.24 4820.9 372.49 4827.7 370.73 4827.9 370.67 4828.3 370.59\n", - " 4835.0 369.19 4839.0 368.62 4842.0 368.19 4847.1 367.67 4849.1 367.50\n", - " 4853.7 367.04 4856.2 366.91 4858.8 366.72 4863.2 366.60 4865.9 366.49\n", - " 4870.3 366.31 4872.9 366.22 4877.3 366.09 4884.1 366.22 4884.4 366.23\n", - " 4884.5 366.23 4884.7 366.23 4891.4 366.37 4895.4 366.19 4898.5 366.02\n", - " 4899.8 365.92 4903.5 365.61 4905.5 365.42 4910.1 365.10 4912.6 365.02\n", - " 4915.2 364.97 4919.6 364.88 4920.4 364.86 4925.5 364.64 4926.7 364.62\n", - " 4929.3 364.59 4933.7 364.52 4940.6 364.48 4940.8 364.48 4941.1 364.48\n", - " 4946.0 364.43 4947.8 364.38 4951.8 364.21 4954.9 364.12 4960.0 363.99\n", - " 4961.4 363.97 4961.9 363.95 4963.1 363.94 4969.0 363.79 4971.7 363.73\n", - " 4976.1 363.66 4978.8 363.60 4983.1 363.49 4987.0 363.37 4990.2 363.29\n", - " 4992.2 363.24 4996.7 361.14 4997.2 360.64 5002.9 360.64 5003.4 361.14\n", - " 5005.2 362.65 5009.0 361.89 5011.6 361.36 5014.0 361.14 5019.0 361.55\n", - " 5022.7 362.05 5025.7 362.54 5029.0 362.89 5031.5 363.01 5035.0 362.93\n", - " 5039.0 362.66 5039.7 362.65 5040.3 362.68 5044.4 362.73 5049.1 363.15\n", - " 5057.8 363.43 5059.1 363.45 5066.6 363.45 5067.8 363.50 5069.1 363.54\n", - " 5072.5 363.73 5075.4 363.79 5079.2 363.92 5081.8 364.00 5084.2 364.03\n", - " 5089.2 364.10 5092.9 364.12 5095.9 364.08 5101.7 364.19 5109.2 364.29\n", - " 5109.9 364.29 5110.5 364.29 5119.2 364.27 5128.0 364.22 5128.6 364.22\n", - " 5129.3 364.23 5136.8 364.29 5138.0 364.28 5139.3 364.31 5145.6 364.29\n", - " 5147.4 364.26 5149.4 364.23 5152.0 364.18 5154.4 364.13 5156.7 364.04\n", - " 5159.4 364.01 5163.1 364.02 5166.1 364.02 5169.4 364.02 5171.9 364.02\n", - " 5175.4 364.04 5179.5 364.09 5180.1 364.09 5180.7 364.08 5184.8 364.11\n", - " 5189.5 364.17 5194.2 364.14 5198.2 364.14 5199.5 364.15 5203.5 364.26\n", - " 5209.5 364.40 5212.9 364.44 5215.8 364.45 5219.6 364.45 5224.6 364.50\n", - " 5226.9 364.50 5233.3 364.64 5239.6 364.66 5242.1 364.65 5249.6 364.61\n", - " 5250.9 364.59 5259.6 364.69 5268.4 365.28 5269.7 365.33 5277.2 365.64\n", - " 5279.7 365.69 5286.0 365.78 5289.8 365.83 5294.8 366.04 5299.8 366.17\n", - " 5303.5 366.32 5306.5 366.47 5309.8 366.55 5312.3 366.65 5319.8 367.15\n", - " 5321.1 367.24 5329.8 367.80 5338.6 368.04 5339.2 368.04 5339.9 368.06\n", - " 5343.9 368.12 5347.4 368.34 5349.9 368.43 5356.2 368.72 5360.0 369.07\n", - " 5365.0 369.36 5367.3 369.45 5370.0 369.51 5373.7 369.71 5376.7 369.80\n", - " 5380.0 370.00 5382.5 370.20 5390.1 370.91 5390.7 370.94 5391.3 371.00\n", - " 5400.1 371.76 5408.8 372.27 5410.1 372.35 5414.1 372.59 5417.6 372.73\n", - " 5420.1 372.85 5426.4 373.30 5435.2 374.01 5440.2 374.27 5443.9 374.57\n", - " 5446.9 374.86 5450.2 375.16 5451.6 375.26 5452.7 375.39 5460.3 376.15\n", - " 5460.9 376.19 5461.5 376.22 5470.2 376.90 5479.1 377.54 5480.3 377.56\n", - " 5484.3 377.56 5487.8 377.70 5490.3 377.84 5496.6 378.07 5500.4 378.24\n", - " 5505.4 378.50 5510.4 378.85 5514.1 379.03 5517.1 379.11 5520.4 379.19\n", - " 5522.9 379.16 5530.5 379.16 5531.1 379.18 5531.7 379.18 5532.0 379.18\n", - "#Mann=3,-1,0\n", - " 4573.3 0.07 0 4996.7 0.07 0 5003.4 0.07 0\n", - "Bank Sta=4996.7,5003.4\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1,111,0,0,0\n", - "BEGIN DESCRIPTION:\n", - "Stream0511 0.5\n", - "END DESCRIPTION:\n", - "XS GIS Cut Line=3\n", - " 807148.05 369310.04 806728.26 369906.93\n", - " 806800.42 370208.69\n", - "#Sta/Elev=322\n", - " 4369.8 391.25 4374.7 390.62 4377.4 390.29 4378.6 390.13 4382.6 389.58\n", - " 4385.5 389.14 4387.4 388.81 4390.1 388.35 4393.6 387.77 4401.5 386.59\n", - " 4401.9 386.55 4409.7 385.54 4411.1 385.36 4413.0 385.06 4417.8 384.34\n", - " 4424.5 383.41 4425.9 383.23 4430.0 382.68 4433.9 382.19 4439.5 381.71\n", - " 4442.0 381.49 4447.5 381.07 4450.1 380.80 4453.7 380.31 4458.2 379.64\n", - " 4458.5 379.57 4458.9 379.49 4466.2 378.32 4470.4 377.74 4472.7 377.45\n", - " 4474.3 377.31 4481.9 376.70 4482.4 376.66 4483.5 376.57 4490.5 376.04\n", - " 4491.7 375.95 4493.4 375.80 4496.4 375.54 4498.5 375.33 4504.9 374.69\n", - " 4505.9 374.60 4506.6 374.54 4510.7 374.22 4514.7 373.93 4516.3 373.81\n", - " 4522.7 373.48 4527.8 373.11 4529.6 372.97 4530.8 372.86 4534.3 372.40\n", - " 4538.9 371.93 4539.3 371.88 4547.0 371.07 4550.8 370.78 4553.3 370.57\n", - " 4555.0 370.51 4562.3 370.07 4563.1 370.01 4565.1 369.81 4571.2 369.17\n", - " 4572.2 369.08 4573.7 368.96 4577.0 368.81 4579.3 368.64 4585.2 368.25\n", - " 4586.5 368.15 4587.3 368.05 4592.4 367.64 4595.4 367.41 4596.7 367.34\n", - " 4603.5 367.06 4605.4 367.02 4608.2 367.02 4611.6 367.05 4614.9 367.05\n", - " 4619.6 367.16 4629.1 367.17 4631.1 367.16 4633.9 367.11 4635.8 367.10\n", - " 4642.6 366.98 4643.9 366.96 4651.9 366.95 4654.1 366.93 4660.0 366.91\n", - " 4665.6 366.67 4668.1 366.48 4671.8 366.26 4676.2 366.17 4676.5 366.15\n", - " 4677.1 366.14 4684.2 365.97 4686.0 365.90 4688.5 365.85 4690.7 365.76\n", - " 4692.3 365.65 4695.5 365.47 4700.0 365.18 4700.4 365.17 4701.2 365.16\n", - " 4708.5 365.12 4711.5 365.08 4716.5 364.93 4723.0 364.55 4723.9 364.49\n", - " 4724.6 364.44 4728.7 364.17 4732.7 364.01 4734.5 364.01 4740.7 364.11\n", - " 4745.9 364.12 4748.8 364.08 4752.4 364.04 4756.9 364.12 4757.4 364.12\n", - " 4765.0 364.14 4766.6 364.17 4768.9 364.12 4773.0 364.08 4780.4 364.06\n", - " 4780.8 364.06 4781.1 364.06 4785.5 363.99 4789.2 363.92 4790.3 363.90\n", - " 4791.9 363.89 4797.3 363.88 4803.3 363.84 4804.5 363.82 4805.3 363.80\n", - " 4810.0 363.72 4813.4 363.66 4814.0 363.63 4814.8 363.65 4821.5 363.68\n", - " 4823.5 363.68 4826.3 363.73 4828.2 363.74 4829.6 363.74 4837.3 363.89\n", - " 4837.6 363.89 4837.8 363.90 4842.4 363.99 4845.7 364.05 4847.2 364.07\n", - " 4849.3 364.09 4851.9 364.10 4853.8 364.12 4860.7 364.07 4861.4 364.06\n", - " 4861.8 364.07 4864.5 363.98 4869.9 363.77 4872.2 363.65 4878.0 363.32\n", - " 4883.7 363.29 4885.1 363.27 4886.1 363.26 4891.7 363.32 4894.1 363.35\n", - " 4895.2 363.35 4902.2 363.29 4904.1 363.18 4906.7 363.09 4908.8 363.02\n", - " 4910.3 362.97 4918.1 362.76 4918.3 362.75 4923.0 362.75 4926.4 362.69\n", - " 4929.6 362.68 4932.5 362.69 4934.5 362.69 4941.1 362.66 4942.0 362.67\n", - " 4946.7 362.55 4950.7 362.41 4952.6 362.37 4958.7 362.24 4960.9 362.17\n", - " 4964.1 362.00 4965.7 361.95 4966.8 361.86 4970.4 361.53 4974.9 361.23\n", - " 4975.5 361.25 4983.0 361.56 4987.0 361.92 4989.4 362.00 4991.0 362.12\n", - " 4996.7 361.23 4997.2 360.73 5002.9 360.73 5003.4 361.23 5003.6 362.55\n", - " 5007.2 362.60 5008.3 362.50 5010.0 362.40 5015.3 362.03 5021.5 361.64\n", - " 5023.3 361.56 5027.3 361.49 5031.4 361.68 5032.9 361.72 5036.8 361.77\n", - " 5039.5 361.85 5041.5 361.91 5044.4 362.02 5046.3 362.05 5047.5 362.10\n", - " 5051.0 362.36 5055.6 362.80 5055.9 362.82 5063.7 363.40 5067.4 363.49\n", - " 5071.8 363.57 5078.9 363.67 5079.8 363.69 5082.2 363.74 5087.9 363.88\n", - " 5090.3 363.88 5096.0 363.88 5099.5 363.93 5101.5 364.04 5103.3 364.12\n", - " 5107.0 364.41 5110.1 364.55 5115.2 364.81 5116.9 364.92 5123.4 365.14\n", - " 5123.7 365.14 5124.2 365.15 5134.4 365.11 5137.3 365.13 5139.9 365.22\n", - " 5144.1 365.33 5150.7 365.65 5150.8 365.66 5150.9 365.66 5157.7 365.92\n", - " 5161.8 366.14 5164.5 366.15 5167.3 366.30 5171.2 366.51 5172.7 366.54\n", - " 5178.0 366.80 5178.2 366.81 5179.1 366.83 5184.8 366.98 5189.2 367.06\n", - " 5191.6 367.15 5195.2 367.28 5196.0 367.28 5198.4 367.38 5200.2 367.51\n", - " 5205.2 367.98 5205.6 368.01 5207.5 368.16 5212.0 368.47 5216.6 368.55\n", - " 5218.8 368.65 5222.3 368.82 5225.6 368.95 5231.3 369.29 5232.4 369.36\n", - " 5233.0 369.42 5235.8 369.70 5238.5 369.97 5244.0 370.48 5245.9 370.62\n", - " 5249.5 370.77 5252.7 370.91 5254.9 370.97 5259.5 371.11 5260.4 371.14\n", - " 5264.3 371.31 5265.9 371.37 5266.3 371.40 5271.4 371.79 5273.1 371.92\n", - " 5276.9 372.15 5279.9 372.42 5282.3 372.69 5286.7 373.19 5292.6 373.60\n", - " 5293.5 373.66 5298.8 374.12 5300.3 374.33 5302.6 374.74 5307.0 375.42\n", - " 5313.8 376.50 5315.2 376.66 5320.6 377.11 5321.1 377.15 5327.4 377.59\n", - " 5329.4 377.80 5334.2 378.20 5337.1 378.52 5341.0 378.97 5347.3 379.36\n", - " 5347.8 379.42 5349.4 379.46 5354.6 379.50 5359.1 379.68 5361.4 379.73\n", - " 5365.1 379.87 5368.2 379.97 5374.0 380.34 5374.9 380.38 5377.8 380.52\n", - " 5381.0 380.66 5381.7 380.70 5386.5 380.85 5388.5 380.96 5391.9 381.21\n", - " 5395.3 381.41 5397.4 381.56 5402.1 381.97 5406.2 382.16 5408.4 382.22\n", - " 5408.9 382.22 5409.8 382.22\n", - "#Mann=3,-1,0\n", - " 4369.8 0.07 0 4996.7 0.07 0 5003.4 0.07 0\n", - "Bank Sta=4996.7,5003.4\n", - "Exp/Cntr=0.3,0.1\n", - "\n", - "Chan Stop Cuts=-1\"]]\n", - "station_elevation_points: [[\"[(4499.1, 241.3), (4502.6, 241.08), (4508.1, 240.72), (4525.5, 239.49), (4538.6, 238.45), (4541.0, 238.23), (4556.0, 236.88), (4574.5, 235.11), (4604.0, 232.37), (4610.5, 231.73), (4646.5, 228.57), (4648.8, 228.37), (4652.0, 228.13), (4669.4, 226.75), (4682.5, 225.74), (4689.9, 225.13), (4699.9, 224.39), (4718.4, 223.19), (4747.9, 221.12), (4754.4, 220.79), (4772.2, 220.03), (4790.4, 218.68), (4795.9, 218.36), (4826.4, 218.5), (4843.8, 220.2), (4854.4, 222.24), (4862.3, 223.75), (4874.9, 226.81), (4891.8, 230.2), (4895.9, 230.7), (4898.3, 230.99), (4917.8, 231.53), (4934.3, 232.1), (4939.7, 231.87), (4970.2, 228.16), (4987.7, 225.95), (4998.0, 218.36), (4998.2, 217.86), (5001.8, 217.86), (5002.1, 218.36), (5010.7, 223.52), (5024.3, 222.97), (5041.7, 222.97), (5056.7, 223.02), (5057.3, 223.02), (5061.7, 223.03), (5188.4, 223.05), (5198.0, 223.04), (5245.5, 223.01), (5255.4, 223.01), (5304.2, 222.95), (5321.4, 223.06), (5336.4, 223.19), (5362.9, 223.22), (5387.5, 223.49), (5420.5, 223.97), (5453.5, 225.03), (5463.2, 225.49), (5480.3, 226.15), (5494.5, 226.65), (5519.6, 227.58), (5539.0, 230.01), (5552.6, 231.77), (5568.8, 234.4), (5578.4, 236.1), (5585.6, 237.38), (5597.7, 238.56), (5611.1, 239.63), (5618.6, 240.34), (5645.5, 241.06), (5651.6, 241.22), (5684.7, 241.94), (5715.1, 242.4), (5716.8, 242.42), (5717.7, 242.44), (5721.0, 242.51), (5750.7, 243.15), (5759.0, 243.35), (5773.8, 243.81), (5783.7, 244.06), (5816.7, 244.98), (5832.5, 245.51), (5849.7, 246.1), (5871.9, 247.04), (5882.8, 247.48), (5906.9, 248.45), (5915.8, 248.77), (5917.0, 248.82)]\",\"[(4596.9, 238.12), (4607.4, 237.3), (4614.9, 236.74), (4665.4, 232.76), (4694.4, 230.63), (4718.0, 228.96), (4723.4, 228.56), (4743.8, 226.84), (4752.4, 226.14), (4769.6, 224.66), (4781.4, 223.73), (4810.4, 221.66), (4829.7, 220.47), (4846.9, 219.48), (4868.4, 218.38), (4872.7, 218.13), (4897.4, 216.99), (4898.5, 216.96), (4926.4, 216.05), (4955.4, 215.76), (4984.4, 215.76), (4998.0, 215.76), (4998.2, 215.26), (5001.8, 215.26), (5002.1, 215.76), (5013.8, 216.26), (5023.9, 216.41), (5038.6, 216.88), (5048.4, 217.27), (5075.8, 218.08), (5080.1, 218.22), (5083.0, 218.36), (5097.4, 219.05), (5117.6, 219.94), (5127.7, 220.6), (5142.4, 221.45), (5152.2, 222.35), (5163.1, 223.12), (5168.7, 223.66), (5179.6, 224.7), (5183.9, 224.98), (5186.8, 225.21), (5201.2, 226.23), (5221.4, 227.59), (5231.5, 228.34), (5256.0, 229.8), (5283.3, 231.49), (5287.7, 231.68), (5290.5, 231.86), (5308.4, 232.7), (5325.1, 233.87), (5329.2, 234.17), (5335.2, 234.67), (5339.5, 234.93), (5359.7, 236.16), (5360.6, 236.21)]\",\"[(4433.8, 246.73), (4461.2, 244.11), (4463.3, 243.94), (4482.6, 241.76), (4501.9, 240.4), (4502.9, 240.29), (4504.0, 240.22), (4523.3, 237.89), (4542.6, 236.45), (4544.7, 236.25), (4583.3, 232.69), (4585.4, 232.51), (4624.0, 229.18), (4625.0, 229.09), (4626.1, 229.0), (4664.7, 225.22), (4665.7, 225.11), (4666.8, 225.02), (4686.1, 223.11), (4705.4, 221.69), (4707.5, 221.53), (4746.1, 219.33), (4748.2, 219.25), (4767.5, 218.53), (4786.8, 217.91), (4788.8, 217.86), (4827.5, 216.55), (4829.5, 216.5), (4848.9, 216.01), (4868.2, 215.56), (4869.2, 215.53), (4870.3, 215.52), (4909.9, 214.99), (4911.0, 214.98), (4930.3, 214.96), (4951.7, 214.68), (4971.0, 214.53), (4992.4, 214.44), (4998.0, 214.44), (4998.2, 213.94), (5001.8, 213.94), (5002.1, 214.44), (5023.2, 214.64), (5052.0, 215.06), (5058.5, 215.17), (5080.8, 215.64), (5103.0, 216.19), (5109.6, 216.34), (5116.1, 216.56), (5138.3, 217.12), (5160.6, 217.92), (5167.1, 218.12), (5195.9, 218.62), (5224.7, 218.95), (5246.9, 219.31), (5253.4, 219.38), (5275.7, 219.92), (5282.2, 220.02), (5288.7, 220.2), (5311.0, 220.94), (5317.5, 221.22), (5331.7, 221.8), (5339.8, 222.13), (5368.6, 223.29), (5397.3, 224.58), (5448.4, 227.28), (5454.9, 227.61), (5461.4, 227.9), (5483.7, 229.06), (5490.2, 229.36), (5512.5, 230.56), (5534.7, 231.71), (5541.2, 232.03), (5547.7, 232.52), (5561.6, 233.45), (5570.0, 234.02), (5592.3, 235.86), (5598.8, 236.59), (5605.3, 237.14), (5627.6, 238.74), (5634.1, 238.95), (5649.5, 239.52)]\",\"[(3931.6, 241.95), (3955.4, 241.31), (3972.5, 240.61), (3993.7, 239.63), (4004.2, 239.07), (4016.2, 238.5), (4031.9, 237.63), (4059.9, 235.96), (4070.1, 235.27), (4085.8, 234.13), (4103.6, 233.09), (4106.2, 232.93), (4108.4, 232.83), (4146.6, 230.97), (4147.3, 230.93), (4184.9, 228.66), (4187.7, 228.47), (4191.0, 228.29), (4208.1, 227.09), (4223.1, 226.17), (4234.7, 225.37), (4261.3, 223.64), (4278.4, 222.5), (4289.7, 221.89), (4299.6, 221.32), (4322.1, 219.94), (4365.8, 218.5), (4371.3, 218.38), (4376.1, 218.35), (4409.5, 217.87), (4414.3, 217.75), (4452.9, 216.59), (4453.2, 216.58), (4490.8, 215.82), (4493.7, 215.76), (4496.9, 215.71), (4529.0, 215.47), (4534.4, 215.44), (4540.6, 215.38), (4584.3, 215.05), (4605.5, 215.0), (4656.8, 215.03), (4671.8, 215.01), (4682.0, 215.02), (4715.5, 214.92), (4718.0, 214.91), (4720.2, 214.9), (4738.4, 214.71), (4758.8, 214.38), (4759.2, 214.38), (4796.7, 213.94), (4802.9, 213.91), (4834.9, 213.87), (4860.8, 213.88), (4873.2, 213.85), (4977.7, 213.83), (4994.6, 213.85), (4997.6, 213.83), (4998.0, 213.33), (5002.1, 213.33), (5002.4, 213.83), (5020.7, 213.84), (5107.7, 213.88), (5115.8, 213.95), (5129.3, 214.01), (5147.5, 214.24), (5158.6, 214.48), (5179.2, 215.06), (5194.4, 215.61), (5210.9, 216.17), (5227.3, 216.51), (5237.8, 216.65), (5242.6, 216.68), (5274.3, 216.91), (5281.1, 216.95), (5324.5, 217.51), (5337.7, 217.72), (5339.6, 217.74), (5346.2, 217.79), (5369.4, 218.11), (5389.6, 218.45), (5401.1, 218.63), (5432.4, 219.23), (5432.8, 219.23), (5433.3, 219.25), (5464.5, 220.54), (5491.2, 222.01), (5496.2, 222.27), (5519.7, 223.59), (5527.9, 224.04), (5541.4, 224.83), (5559.6, 225.63), (5563.1, 225.81), (5570.7, 226.08), (5588.7, 226.88), (5591.3, 227.0), (5606.4, 228.14), (5623.0, 229.29), (5639.3, 231.8), (5654.7, 234.26), (5671.5, 236.98), (5686.4, 238.6), (5708.0, 239.45), (5710.5, 239.55)]\",\"[(3724.5, 242.87), (3734.7, 242.14), (3748.3, 241.26), (3753.8, 240.92), (3775.7, 239.57), (3778.7, 239.38), (3800.7, 238.14), (3809.0, 237.76), (3823.4, 237.04), (3837.6, 236.5), (3839.4, 236.43), (3846.2, 236.06), (3869.7, 234.89), (3900.0, 233.51), (3916.7, 232.93), (3930.4, 232.39), (3937.2, 232.15), (3957.7, 231.53), (3959.9, 231.46), (3991.0, 230.58), (4007.7, 230.16), (4021.4, 229.79), (4028.2, 229.48), (4048.7, 228.93), (4051.7, 228.83), (4053.2, 228.77), (4082.0, 227.41), (4096.4, 226.85), (4112.4, 226.27), (4128.2, 225.76), (4128.3, 225.76), (4164.7, 224.58), (4173.0, 224.34), (4189.7, 223.93), (4230.7, 222.87), (4233.7, 222.78), (4255.7, 222.23), (4264.0, 222.03), (4280.7, 221.92), (4294.4, 221.8), (4301.2, 221.72), (4324.0, 221.37), (4324.7, 221.35), (4355.1, 220.9), (4412.7, 220.21), (4415.0, 220.18), (4415.7, 220.18), (4417.2, 220.16), (4446.1, 219.96), (4460.5, 219.92), (4463.3, 219.89), (4503.7, 219.44), (4506.7, 219.4), (4508.2, 219.38), (4537.1, 219.19), (4567.4, 219.07), (4597.7, 218.89), (4599.2, 218.87), (4628.1, 218.5), (4642.5, 218.25), (4658.4, 218.05), (4719.1, 217.17), (4735.8, 216.87), (4749.4, 216.65), (4752.3, 216.6), (4756.2, 216.54), (4776.7, 216.18), (4779.7, 216.13), (4781.2, 216.11), (4810.1, 215.65), (4824.5, 215.44), (4840.4, 215.26), (4867.7, 215.24), (4870.7, 215.23), (4872.3, 215.2), (4901.1, 214.74), (4931.4, 214.36), (4961.8, 214.04), (4989.5, 213.89), (4992.5, 213.87), (4997.5, 213.84), (4997.9, 213.34), (5002.2, 213.34), (5002.6, 213.84), (5007.0, 213.87), (5019.0, 213.88), (5027.0, 213.88), (5039.8, 213.94), (5058.8, 213.96), (5060.5, 213.96), (5061.6, 213.96), (5081.3, 214.03), (5102.0, 214.02), (5130.8, 214.08), (5143.5, 214.04), (5162.6, 213.9), (5164.3, 213.89), (5200.0, 213.84), (5234.6, 213.85), (5266.4, 213.94), (5268.0, 213.95), (5269.2, 213.97), (5274.7, 214.05), (5281.1, 214.14), (5303.7, 214.47), (5318.3, 214.63), (5330.3, 214.82), (5338.3, 214.84), (5351.1, 215.12), (5370.1, 215.66), (5372.9, 215.73), (5392.6, 216.12), (5407.5, 216.36), (5422.0, 216.72), (5434.1, 217.06), (5442.1, 217.26), (5476.7, 218.25), (5496.3, 219.18), (5511.3, 219.81), (5517.1, 220.32), (5525.8, 221.0), (5537.8, 222.14), (5545.9, 222.85), (5558.6, 224.54), (5576.4, 226.21), (5577.7, 226.33), (5580.4, 226.58), (5600.1, 227.92), (5615.0, 229.16), (5620.8, 229.65), (5629.6, 231.15), (5641.6, 232.77), (5649.6, 234.3), (5681.4, 238.68), (5683.1, 238.85), (5684.2, 238.99), (5703.8, 239.24), (5710.6, 239.51)]\",...,\"[(4675.5, 403.33), (4680.2, 403.38), (4680.6, 403.38), (4681.2, 403.4), (4685.3, 403.62), (4688.6, 403.99), (4691.8, 404.23), (4697.1, 404.57), (4702.3, 404.79), (4705.5, 404.7), (4708.8, 404.51), (4712.9, 404.12), (4714.0, 403.95), (4718.4, 402.69), (4722.4, 401.55), (4723.5, 401.17), (4730.9, 398.26), (4734.0, 397.03), (4739.4, 394.77), (4741.7, 393.63), (4744.6, 392.18), (4746.4, 391.3), (4747.8, 390.68), (4755.2, 387.31), (4756.3, 386.83), (4764.7, 383.43), (4765.7, 383.06), (4769.9, 381.47), (4773.2, 380.39), (4779.3, 378.44), (4781.7, 377.87), (4786.9, 376.7), (4790.1, 376.14), (4797.5, 374.97), (4798.6, 374.81), (4802.8, 374.14), (4807.0, 373.34), (4808.0, 373.12), (4815.5, 371.38), (4816.9, 371.06), (4818.6, 370.75), (4823.9, 369.88), (4826.3, 369.67), (4829.2, 369.62), (4832.4, 369.53), (4835.7, 369.45), (4839.7, 369.42), (4840.9, 369.42), (4849.3, 369.35), (4849.8, 369.34), (4850.3, 369.33), (4857.8, 369.31), (4860.9, 369.39), (4866.2, 369.51), (4871.5, 369.51), (4874.7, 369.48), (4882.0, 369.47), (4883.1, 369.47), (4892.6, 369.58), (4896.7, 369.66), (4900.0, 369.7), (4901.4, 369.72), (4903.2, 369.72), (4906.1, 369.74), (4908.5, 369.71), (4913.8, 369.67), (4917.0, 369.65), (4924.3, 369.64), (4925.4, 369.63), (4929.6, 369.63), (4933.9, 369.62), (4934.3, 369.61), (4934.9, 369.61), (4942.3, 369.51), (4943.7, 369.48), (4945.5, 369.48), (4948.4, 369.49), (4950.8, 369.52), (4953.1, 369.57), (4956.0, 369.6), (4959.3, 369.59), (4962.5, 369.52), (4966.6, 369.39), (4967.2, 369.37), (4967.7, 369.37), (4972.1, 369.49), (4976.2, 369.57), (4976.6, 369.58), (4977.2, 369.6), (4984.6, 369.75), (4987.8, 369.71), (4990.7, 369.62), (4993.1, 369.57), (4995.6, 369.51), (4997.2, 368.51), (4997.7, 368.01), (5002.4, 368.01), (5002.8, 368.51), (5003.9, 369.54), (5004.9, 369.54), (5005.9, 369.55), (5012.3, 369.54), (5018.6, 369.43), (5019.7, 369.4), (5020.7, 369.39), (5024.9, 369.37), (5033.4, 369.48), (5034.4, 369.5), (5041.8, 369.47), (5048.2, 369.39), (5050.2, 369.37), (5054.5, 369.33), (5056.6, 369.3), (5064.0, 369.28), (5065.0, 369.29), (5069.2, 369.32), (5071.3, 369.36), (5077.7, 369.44), (5078.7, 369.45), (5079.8, 369.46), (5086.1, 369.48), (5093.5, 369.4), (5094.6, 369.39), (5100.9, 369.39), (5108.3, 369.41), (5108.6, 369.41), (5109.3, 369.4), (5113.5, 369.36), (5115.7, 369.35), (5118.5, 369.36), (5123.0, 369.33), (5124.1, 369.33), (5128.3, 369.32), (5130.4, 369.32), (5136.8, 369.34), (5137.8, 369.34), (5138.2, 369.34), (5138.9, 369.34), (5143.1, 369.27), (5148.0, 369.22), (5153.6, 369.21), (5160.0, 369.21), (5166.3, 369.24), (5167.3, 369.24), (5168.4, 369.24), (5172.6, 369.2), (5174.7, 369.14), (5177.5, 369.11), (5182.1, 369.05), (5183.1, 369.05), (5187.4, 369.04), (5189.5, 369.01), (5196.9, 368.83), (5197.9, 368.8), (5204.2, 368.79), (5211.6, 368.83), (5212.0, 368.85), (5212.7, 368.83), (5216.9, 368.77), (5219.0, 368.65), (5225.4, 368.52), (5226.4, 368.51), (5227.4, 368.56), (5233.8, 368.96), (5236.6, 369.09), (5241.2, 369.2), (5241.5, 369.19), (5242.2, 369.18), (5248.6, 369.16), (5254.9, 369.27), (5255.9, 369.28), (5257.0, 369.32), (5261.2, 369.48), (5263.3, 369.5), (5270.7, 369.62), (5271.7, 369.64), (5276.0, 369.64), (5278.1, 369.6), (5284.4, 369.73), (5285.5, 369.74), (5286.5, 369.77), (5290.7, 370.01), (5292.9, 370.18), (5295.7, 370.45), (5300.2, 370.7), (5300.6, 370.73), (5301.3, 370.73), (5305.5, 370.75), (5307.6, 370.74), (5313.9, 370.64), (5315.0, 370.62), (5315.4, 370.63), (5316.1, 370.66), (5322.4, 371.0), (5328.7, 371.58), (5329.8, 371.69), (5330.1, 371.71), (5330.8, 371.75), (5337.2, 372.08), (5343.5, 372.16), (5344.5, 372.16), (5345.6, 372.17), (5349.8, 372.19), (5351.9, 372.33), (5358.3, 372.71), (5359.3, 372.77), (5359.7, 372.8), (5360.4, 372.84), (5366.7, 373.1), (5369.5, 373.24), (5374.1, 373.32), (5375.1, 373.37), (5379.3, 373.58), (5381.5, 373.67), (5384.3, 373.72), (5388.8, 373.95), (5389.9, 373.97), (5394.1, 374.06), (5396.2, 374.14), (5402.6, 374.35), (5403.6, 374.38), (5404.7, 374.43), (5408.9, 374.63), (5411.0, 374.71), (5417.3, 374.87), (5418.4, 374.9), (5419.4, 374.9), (5425.8, 374.87), (5428.6, 374.93), (5433.1, 375.08), (5433.5, 375.1), (5440.5, 375.56), (5447.9, 375.83), (5449.0, 375.86), (5453.2, 376.01), (5455.3, 376.08), (5458.1, 376.24), (5462.7, 376.33), (5463.0, 376.35), (5463.7, 376.37), (5467.9, 376.46), (5470.1, 376.48), (5476.4, 376.6), (5477.4, 376.61), (5477.8, 376.61), (5478.5, 376.64), (5484.8, 376.9), (5491.2, 377.07), (5492.2, 377.11), (5493.2, 377.16), (5497.5, 377.34), (5499.6, 377.38), (5507.0, 377.76), (5508.0, 377.83), (5514.4, 378.29), (5517.2, 378.43), (5521.7, 378.66), (5522.8, 378.7), (5529.1, 378.96), (5535.4, 379.18), (5536.5, 379.22), (5536.9, 379.24), (5543.9, 379.31), (5550.2, 379.65), (5551.3, 379.69), (5552.3, 379.73), (5558.7, 380.03), (5566.0, 380.26), (5567.1, 380.33), (5571.3, 380.58), (5573.4, 380.71), (5579.8, 380.87), (5580.8, 380.91), (5581.2, 380.9), (5581.9, 380.9), (5588.2, 380.91), (5591.0, 381.03), (5595.6, 381.36), (5596.6, 381.45), (5600.8, 381.84), (5603.0, 381.99), (5605.8, 382.17), (5610.3, 382.37), (5610.7, 382.39), (5611.4, 382.4), (5617.7, 382.54), (5624.1, 382.67), (5625.1, 382.68), (5626.2, 382.7), (5630.4, 382.74), (5632.5, 382.79), (5638.8, 383.08), (5639.9, 383.13), (5640.9, 383.21), (5647.3, 383.61), (5650.1, 383.73), (5654.6, 383.94), (5655.0, 383.95), (5655.7, 383.98), (5662.0, 384.22), (5669.4, 384.48), (5674.7, 384.69), (5676.8, 384.78), (5683.1, 385.19), (5684.2, 385.25), (5685.2, 385.32), (5691.6, 385.81), (5697.9, 386.41), (5698.9, 386.49), (5699.3, 386.52), (5700.0, 386.6), (5704.2, 386.93), (5706.3, 387.12), (5713.7, 387.55), (5714.1, 387.56), (5714.8, 387.59), (5721.1, 387.82), (5727.4, 388.04), (5728.5, 388.07), (5728.8, 388.08), (5729.5, 388.13), (5735.9, 388.58), (5742.2, 389.05), (5743.3, 389.14), (5744.3, 389.21), (5748.5, 389.43), (5750.6, 389.52), (5753.4, 389.64), (5758.0, 389.78), (5759.1, 389.82), (5763.3, 389.95), (5765.4, 390.03), (5771.7, 390.28), (5772.8, 390.32), (5773.8, 390.41), (5780.2, 390.92), (5786.5, 391.27), (5787.5, 391.33), (5787.9, 391.33), (5788.6, 391.36), (5792.8, 391.59), (5794.9, 391.72), (5801.3, 392.0), (5802.3, 392.05), (5802.7, 392.07), (5803.4, 392.09), (5807.6, 392.2), (5809.7, 392.31), (5812.5, 392.43), (5817.1, 392.58), (5817.4, 392.61), (5818.1, 392.61), (5822.4, 392.76), (5824.5, 392.86), (5827.3, 393.07), (5831.8, 393.28), (5832.9, 393.33), (5839.2, 393.58), (5845.6, 393.77), (5846.6, 393.8), (5847.7, 393.85), (5851.9, 394.04), (5854.0, 394.18), (5856.8, 394.31), (5861.4, 394.63), (5862.4, 394.69), (5868.8, 395.06), (5875.1, 395.39), (5876.2, 395.45), (5876.5, 395.47), (5883.5, 395.8), (5889.9, 396.08), (5890.1, 396.09)]\",\"[(4568.4, 398.04), (4568.6, 398.04), (4574.3, 398.03), (4577.0, 398.04), (4581.4, 397.95), (4583.9, 397.76), (4588.5, 397.36), (4592.3, 397.06), (4595.5, 396.81), (4602.5, 396.17), (4602.6, 396.16), (4607.7, 395.49), (4609.6, 395.2), (4613.7, 394.25), (4616.7, 393.63), (4621.5, 391.55), (4623.7, 390.62), (4625.0, 390.08), (4630.8, 387.19), (4633.4, 386.42), (4637.8, 384.82), (4640.3, 384.16), (4644.9, 382.96), (4648.8, 382.49), (4651.9, 381.81), (4653.9, 381.58), (4659.0, 380.83), (4659.2, 380.81), (4670.2, 379.55), (4673.1, 379.29), (4678.0, 378.4), (4679.5, 378.09), (4680.1, 377.96), (4681.5, 377.8), (4687.2, 377.04), (4692.7, 376.71), (4694.2, 376.62), (4696.8, 376.31), (4701.3, 375.62), (4704.0, 375.1), (4708.4, 374.22), (4715.3, 373.07), (4715.4, 373.05), (4715.6, 373.02), (4722.5, 372.07), (4729.5, 371.18), (4734.4, 370.41), (4736.0, 370.17), (4736.6, 370.1), (4741.1, 369.66), (4743.6, 369.51), (4749.2, 369.5), (4750.7, 369.48), (4751.4, 369.49), (4756.5, 369.48), (4757.7, 369.48), (4760.5, 369.53), (4764.8, 369.56), (4771.9, 369.65), (4772.0, 369.65), (4777.0, 369.62), (4778.9, 369.63), (4783.0, 369.69), (4785.9, 369.7), (4790.8, 369.76), (4792.4, 369.75), (4793.0, 369.73), (4794.3, 369.7), (4800.0, 369.53), (4805.6, 369.34), (4807.1, 369.28), (4807.8, 369.25), (4809.6, 369.21), (4816.9, 369.12), (4821.2, 369.14), (4823.2, 369.17), (4828.3, 369.08), (4828.4, 369.08), (4835.3, 369.36), (4839.4, 369.58), (4842.4, 369.74), (4847.2, 369.97), (4849.4, 370.11), (4850.7, 370.18), (4856.5, 370.45), (4859.1, 370.57), (4863.5, 370.75), (4866.0, 370.9), (4870.6, 371.08), (4874.5, 371.14), (4877.6, 371.27), (4884.6, 371.27), (4884.7, 371.27), (4884.9, 371.27), (4891.7, 371.31), (4895.9, 371.44), (4903.7, 371.72), (4905.2, 371.76), (4905.8, 371.78), (4910.4, 372.13), (4912.9, 372.41), (4918.4, 373.15), (4919.9, 373.32), (4922.5, 373.63), (4927.0, 374.14), (4929.7, 374.21), (4934.1, 374.34), (4936.0, 374.33), (4941.1, 374.43), (4941.3, 374.42), (4948.2, 374.13), (4951.4, 373.8), (4955.2, 373.03), (4960.1, 371.76), (4961.7, 371.3), (4962.3, 371.12), (4963.6, 370.77), (4969.3, 369.08), (4971.9, 368.4), (4976.4, 367.67), (4977.1, 367.59), (4978.9, 367.44), (4983.4, 367.15), (4987.3, 367.08), (4990.5, 367.0), (4995.6, 366.9), (4996.8, 366.87), (4997.1, 366.11), (4997.6, 365.61), (5002.5, 365.61), (5002.9, 366.11), (5006.4, 366.77), (5006.8, 366.76), (5007.4, 366.76), (5011.5, 366.86), (5014.8, 366.84), (5016.2, 366.86), (5017.9, 366.75), (5020.9, 366.66), (5023.3, 366.45), (5025.6, 366.38), (5028.5, 366.46), (5031.7, 366.66), (5039.1, 367.18), (5040.2, 367.23), (5044.4, 367.28), (5048.7, 367.3), (5049.6, 367.32), (5057.1, 367.46), (5058.5, 367.47), (5060.2, 367.45), (5065.6, 367.32), (5070.8, 367.12), (5074.0, 367.06), (5082.0, 367.0), (5082.5, 367.0), (5086.7, 367.01), (5090.9, 367.14), (5091.4, 367.16), (5091.9, 367.17), (5099.4, 367.4), (5102.5, 367.41), (5107.9, 367.41), (5110.2, 367.38), (5113.1, 367.31), (5114.9, 367.27), (5116.3, 367.25), (5119.6, 367.3), (5123.6, 367.33), (5124.8, 367.33), (5129.0, 367.32), (5133.2, 367.25), (5134.2, 367.24), (5141.7, 367.21), (5143.1, 367.21), (5144.8, 367.23), (5147.8, 367.17), (5150.1, 367.12), (5155.4, 367.08), (5158.6, 367.04), (5165.9, 366.81), (5166.6, 366.82), (5167.1, 366.81), (5171.3, 366.72), (5175.5, 366.51), (5176.0, 366.5), (5176.5, 366.5), (5184.0, 366.61), (5192.4, 366.68), (5197.7, 366.82), (5199.4, 366.84), (5200.9, 366.87), (5208.2, 366.95), (5209.3, 366.96), (5213.5, 367.03), (5217.8, 367.05), (5218.8, 367.07), (5226.3, 367.14), (5227.6, 367.14), (5229.4, 367.16), (5234.7, 367.18), (5237.0, 367.19), (5239.9, 367.13), (5243.2, 367.12), (5246.4, 367.16), (5250.5, 367.15), (5251.1, 367.14), (5251.6, 367.13), (5260.1, 367.11), (5261.1, 367.11), (5268.5, 367.15), (5271.6, 367.13), (5274.6, 367.14), (5277.0, 367.1), (5279.3, 367.11), (5282.2, 367.11), (5285.5, 367.15), (5292.8, 367.15), (5293.9, 367.14), (5298.4, 367.24), (5302.4, 367.32), (5302.8, 367.33), (5303.4, 367.33), (5307.5, 367.33), (5310.8, 367.32), (5313.9, 367.16), (5319.3, 366.94), (5324.5, 367.05), (5327.7, 367.04), (5335.1, 366.73), (5336.2, 366.7), (5340.4, 366.64), (5344.7, 366.64), (5345.6, 366.66), (5349.8, 366.66), (5353.1, 366.64), (5354.5, 366.64), (5356.2, 366.71), (5361.6, 366.88), (5363.9, 366.9), (5366.8, 366.89), (5368.6, 366.88), (5370.0, 366.85), (5377.4, 366.76), (5378.0, 366.77), (5378.5, 366.77), (5383.0, 366.8), (5387.0, 366.84), (5387.4, 366.84), (5387.9, 366.83), (5395.4, 366.68), (5398.5, 366.61), (5401.5, 366.51), (5403.9, 366.45), (5406.2, 366.39), (5409.1, 366.36), (5412.3, 366.36), (5419.6, 366.29), (5420.8, 366.27), (5429.2, 366.11), (5430.2, 366.11), (5434.4, 366.18), (5437.7, 366.24), (5440.8, 366.28), (5446.1, 366.34), (5453.2, 366.28), (5454.6, 366.28), (5461.9, 366.32), (5463.1, 366.32), (5467.3, 366.36), (5472.5, 366.33), (5480.0, 366.35), (5481.4, 366.38), (5483.1, 366.39), (5486.0, 366.44), (5488.4, 366.48), (5493.7, 366.55), (5496.9, 366.57), (5504.2, 366.6), (5505.3, 366.6), (5509.5, 366.63), (5513.8, 366.61), (5514.8, 366.62), (5522.3, 366.73), (5525.4, 366.76), (5530.7, 366.75), (5535.9, 366.63), (5537.7, 366.58), (5539.2, 366.55), (5546.5, 366.5), (5547.6, 366.48), (5551.8, 366.42), (5556.1, 366.37), (5557.1, 366.37), (5564.5, 366.52), (5565.9, 366.55), (5567.7, 366.6), (5573.0, 366.73), (5578.2, 366.79), (5581.5, 366.74), (5588.8, 366.71), (5589.4, 366.71), (5589.9, 366.71), (5598.4, 366.91), (5599.4, 366.93), (5609.9, 367.12), (5612.9, 367.22), (5615.3, 367.26), (5620.5, 367.51), (5622.3, 367.59), (5623.8, 367.61), (5631.1, 367.44), (5632.2, 367.41), (5640.7, 367.22), (5641.6, 367.23), (5649.1, 367.46), (5652.2, 367.55), (5655.2, 367.67), (5657.6, 367.77), (5659.9, 367.88), (5666.0, 368.16), (5669.3, 368.34), (5673.4, 368.73), (5674.0, 368.78), (5674.5, 368.82), (5678.7, 369.14), (5683.0, 369.47), (5683.4, 369.5), (5683.9, 369.53), (5691.4, 369.85), (5694.5, 370.08), (5699.9, 370.63), (5705.1, 371.45), (5708.3, 371.95), (5711.6, 372.48), (5715.6, 373.37), (5716.3, 373.48), (5716.8, 373.59), (5721.3, 374.28), (5725.2, 374.88), (5725.7, 374.92), (5726.2, 374.98), (5733.7, 375.39), (5736.8, 375.48), (5742.1, 375.64), (5744.5, 375.64), (5747.4, 375.77), (5750.6, 375.96), (5753.9, 376.1), (5757.9, 376.4), (5767.5, 376.97), (5768.5, 377.02), (5776.0, 377.28), (5784.4, 377.64), (5789.7, 377.95), (5791.5, 378.07), (5792.9, 378.16), (5796.1, 378.27), (5800.2, 378.38), (5801.3, 378.41), (5809.8, 378.5), (5810.3, 378.52), (5810.8, 378.55), (5814.9, 378.81), (5818.3, 378.91), (5821.4, 379.05), (5824.3, 379.25), (5826.7, 379.3), (5829.0, 379.4), (5831.9, 379.56), (5833.7, 379.68), (5835.2, 379.77), (5842.5, 380.22), (5843.1, 380.27), (5843.6, 380.3), (5852.1, 381.03), (5853.1, 381.07), (5860.6, 381.36), (5861.9, 381.45), (5863.7, 381.55), (5869.0, 381.82), (5871.3, 382.0), (5874.2, 382.19), (5876.0, 382.31), (5877.5, 382.39), (5884.8, 382.57), (5885.9, 382.6), (5890.4, 382.64), (5894.4, 382.67), (5894.8, 382.68), (5895.4, 382.69), (5902.8, 382.8), (5905.9, 382.81), (5908.9, 382.8), (5911.3, 382.82), (5916.5, 382.9), (5918.3, 382.93), (5919.8, 382.98), (5923.0, 383.06), (5927.1, 383.29), (5927.7, 383.32), (5928.2, 383.34), (5932.7, 383.54), (5936.7, 383.71), (5937.1, 383.72), (5937.7, 383.72), (5945.1, 383.77), (5948.2, 383.77), (5953.6, 383.79), (5955.9, 383.83), (5956.1, 383.83)]\",\"[(4538.2, 385.23), (4543.7, 385.03), (4544.0, 385.01), (4544.3, 385.0), (4548.7, 384.83), (4553.0, 384.62), (4553.4, 384.6), (4553.8, 384.58), (4561.7, 384.18), (4564.0, 384.06), (4570.4, 383.5), (4572.1, 383.33), (4574.1, 383.09), (4579.1, 382.57), (4581.5, 382.28), (4584.3, 381.9), (4586.2, 381.66), (4587.8, 381.45), (4596.5, 380.5), (4600.2, 380.2), (4604.6, 379.86), (4605.2, 379.82), (4613.9, 379.37), (4614.7, 379.32), (4622.6, 378.62), (4624.9, 378.38), (4631.3, 377.51), (4635.0, 376.9), (4640.0, 375.89), (4642.4, 375.38), (4645.2, 374.83), (4647.1, 374.42), (4648.7, 374.1), (4655.3, 372.84), (4656.4, 372.66), (4657.4, 372.52), (4665.5, 371.54), (4665.8, 371.51), (4666.1, 371.49), (4670.5, 371.25), (4675.6, 370.87), (4683.5, 370.4), (4684.5, 370.32), (4685.7, 370.24), (4692.2, 369.77), (4693.9, 369.62), (4695.9, 369.47), (4700.9, 369.1), (4703.3, 368.97), (4706.0, 368.81), (4709.6, 368.65), (4716.2, 368.48), (4718.3, 368.41), (4722.0, 368.18), (4726.3, 367.95), (4727.0, 367.9), (4731.4, 367.46), (4735.7, 367.3), (4736.5, 367.27), (4740.7, 367.07), (4744.4, 366.91), (4746.6, 366.78), (4750.1, 366.55), (4753.1, 366.46), (4754.8, 366.4), (4756.8, 366.36), (4759.5, 366.3), (4761.8, 366.29), (4768.8, 366.2), (4770.5, 366.2), (4777.1, 366.11), (4779.2, 366.04), (4787.2, 365.86), (4787.6, 365.86), (4787.9, 365.85), (4796.6, 365.71), (4806.3, 365.69), (4807.5, 365.7), (4814.0, 365.74), (4817.7, 365.69), (4822.6, 365.66), (4827.8, 365.67), (4831.3, 365.65), (4834.4, 365.63), (4838.0, 365.65), (4840.0, 365.68), (4848.1, 365.87), (4848.7, 365.89), (4857.4, 365.99), (4858.2, 365.99), (4866.1, 365.88), (4867.2, 365.87), (4868.4, 365.87), (4871.9, 365.79), (4874.8, 365.89), (4878.5, 365.89), (4883.5, 365.85), (4888.7, 365.84), (4892.2, 365.76), (4895.3, 365.7), (4898.8, 365.69), (4900.9, 365.71), (4904.6, 365.7), (4909.0, 365.78), (4909.6, 365.79), (4913.5, 365.84), (4918.3, 365.9), (4919.1, 365.92), (4923.4, 365.99), (4927.0, 366.01), (4935.7, 366.03), (4937.4, 366.07), (4939.4, 366.08), (4944.4, 366.14), (4949.6, 366.23), (4951.5, 366.23), (4953.1, 366.21), (4959.7, 365.83), (4961.8, 365.72), (4965.5, 365.58), (4969.9, 365.46), (4970.2, 365.45), (4970.5, 365.45), (4979.2, 365.66), (4979.6, 365.66), (4980.0, 365.66), (4987.9, 365.69), (4989.0, 365.71), (4990.2, 365.72), (4996.6, 365.74), (4996.8, 364.54), (4997.3, 364.04), (5002.7, 364.04), (5003.2, 364.54), (5005.4, 365.35), (5010.3, 364.97), (5012.4, 364.79), (5014.1, 364.72), (5017.0, 364.54), (5020.4, 364.98), (5022.9, 365.24), (5030.4, 365.65), (5031.7, 365.66), (5040.4, 365.58), (5045.1, 365.45), (5049.2, 365.3), (5050.5, 365.25), (5058.0, 365.04), (5060.5, 364.97), (5063.8, 364.93), (5066.8, 364.92), (5070.5, 364.93), (5073.2, 364.9), (5075.6, 364.96), (5080.5, 365.18), (5082.6, 365.25), (5084.3, 365.28), (5090.6, 365.26), (5091.9, 365.27), (5093.1, 365.29), (5100.6, 365.23), (5101.9, 365.21), (5110.6, 364.94), (5110.9, 364.93), (5119.4, 364.93), (5120.0, 364.94), (5120.7, 364.95), (5128.2, 365.1), (5130.7, 365.17), (5137.0, 365.29), (5140.7, 365.37), (5145.8, 365.47), (5148.1, 365.49), (5150.7, 365.53), (5154.5, 365.54), (5160.8, 365.63), (5163.3, 365.68), (5166.8, 365.72), (5170.8, 365.79), (5172.1, 365.83), (5176.2, 365.93), (5180.8, 366.07), (5189.6, 366.19), (5190.9, 366.19), (5194.9, 366.2), (5198.4, 366.19), (5200.9, 366.2), (5204.2, 366.24), (5207.2, 366.33), (5210.9, 366.5), (5216.0, 366.71), (5218.3, 366.79), (5220.9, 366.84), (5223.0, 366.83), (5224.7, 366.84), (5231.0, 366.8), (5232.3, 366.8), (5233.5, 366.81), (5241.0, 367.06), (5242.3, 367.1), (5251.0, 367.43), (5259.8, 367.71), (5260.4, 367.72), (5261.0, 367.72), (5268.6, 367.69), (5269.8, 367.68), (5271.1, 367.67), (5277.4, 367.81), (5281.1, 368.05), (5288.5, 368.62), (5291.1, 368.84), (5293.2, 368.99), (5294.9, 369.13), (5301.2, 369.68), (5303.7, 369.94), (5311.2, 370.53), (5312.5, 370.58), (5321.2, 370.4), (5330.0, 370.73), (5330.6, 370.75), (5331.3, 370.78), (5338.8, 370.91), (5341.3, 370.93), (5344.6, 370.93), (5347.6, 371.1), (5351.3, 371.44), (5354.0, 371.72), (5356.4, 371.9), (5361.3, 372.29), (5363.4, 372.46), (5365.1, 372.68), (5371.4, 373.4), (5373.9, 373.67), (5377.4, 374.03), (5381.4, 374.3), (5382.7, 374.37), (5386.8, 374.69), (5391.4, 375.14), (5391.7, 375.17), (5400.2, 376.03), (5401.5, 376.11), (5409.0, 376.54), (5411.5, 376.64), (5414.8, 376.8), (5417.8, 377.04), (5421.5, 377.26), (5426.6, 377.5), (5431.5, 377.75), (5435.3, 377.88), (5438.3, 378.04), (5441.6, 378.27), (5442.9, 378.37), (5444.1, 378.45), (5451.6, 378.97), (5452.9, 379.02), (5461.6, 379.17), (5471.0, 379.47), (5479.2, 380.05), (5480.4, 380.12), (5485.1, 380.37), (5488.0, 380.55), (5489.7, 380.64), (5491.7, 380.72), (5496.8, 380.94), (5501.7, 381.18), (5503.8, 381.29), (5505.5, 381.4), (5511.8, 381.61), (5514.3, 381.63), (5517.8, 381.64), (5521.8, 381.68), (5523.1, 381.71), (5530.7, 381.88)]\",\"[(4573.3, 404.53), (4574.0, 404.5), (4579.4, 403.89), (4581.1, 403.75), (4583.8, 403.37), (4588.1, 402.73), (4590.7, 402.3), (4595.2, 401.56), (4602.0, 400.11), (4602.2, 400.06), (4602.6, 399.98), (4607.5, 398.79), (4609.3, 398.41), (4613.3, 397.7), (4616.3, 397.13), (4617.7, 396.88), (4621.4, 396.42), (4623.4, 396.17), (4628.0, 395.5), (4630.5, 395.15), (4635.9, 394.18), (4637.5, 393.9), (4643.4, 392.95), (4644.6, 392.78), (4648.5, 392.29), (4651.6, 391.89), (4658.5, 391.14), (4658.7, 391.11), (4659.0, 391.08), (4663.9, 390.6), (4665.7, 390.44), (4669.0, 390.11), (4672.8, 389.65), (4677.8, 389.15), (4679.8, 388.97), (4686.9, 388.37), (4689.5, 388.19), (4693.9, 387.74), (4694.7, 387.67), (4696.6, 387.45), (4701.0, 386.99), (4703.6, 386.78), (4708.0, 386.39), (4710.1, 386.21), (4715.1, 385.79), (4715.4, 385.74), (4722.1, 384.88), (4726.2, 384.34), (4729.2, 383.98), (4734.3, 383.49), (4736.2, 383.29), (4737.4, 383.19), (4743.3, 382.66), (4748.7, 382.25), (4750.4, 382.11), (4753.1, 381.84), (4756.2, 381.51), (4757.4, 381.4), (4761.4, 381.1), (4764.5, 380.83), (4766.5, 380.67), (4771.5, 380.07), (4771.6, 380.06), (4771.9, 380.03), (4778.6, 379.38), (4782.6, 379.16), (4785.6, 379.02), (4790.7, 378.57), (4792.7, 378.36), (4797.3, 377.7), (4799.7, 377.4), (4802.4, 376.92), (4806.8, 376.01), (4809.5, 375.34), (4812.6, 374.52), (4813.8, 374.24), (4820.9, 372.49), (4827.7, 370.73), (4827.9, 370.67), (4828.3, 370.59), (4835.0, 369.19), (4839.0, 368.62), (4842.0, 368.19), (4847.1, 367.67), (4849.1, 367.5), (4853.7, 367.04), (4856.2, 366.91), (4858.8, 366.72), (4863.2, 366.6), (4865.9, 366.49), (4870.3, 366.31), (4872.9, 366.22), (4877.3, 366.09), (4884.1, 366.22), (4884.4, 366.23), (4884.5, 366.23), (4884.7, 366.23), (4891.4, 366.37), (4895.4, 366.19), (4898.5, 366.02), (4899.8, 365.92), (4903.5, 365.61), (4905.5, 365.42), (4910.1, 365.1), (4912.6, 365.02), (4915.2, 364.97), (4919.6, 364.88), (4920.4, 364.86), (4925.5, 364.64), (4926.7, 364.62), (4929.3, 364.59), (4933.7, 364.52), (4940.6, 364.48), (4940.8, 364.48), (4941.1, 364.48), (4946.0, 364.43), (4947.8, 364.38), (4951.8, 364.21), (4954.9, 364.12), (4960.0, 363.99), (4961.4, 363.97), (4961.9, 363.95), (4963.1, 363.94), (4969.0, 363.79), (4971.7, 363.73), (4976.1, 363.66), (4978.8, 363.6), (4983.1, 363.49), (4987.0, 363.37), (4990.2, 363.29), (4992.2, 363.24), (4996.7, 361.14), (4997.2, 360.64), (5002.9, 360.64), (5003.4, 361.14), (5005.2, 362.65), (5009.0, 361.89), (5011.6, 361.36), (5014.0, 361.14), (5019.0, 361.55), (5022.7, 362.05), (5025.7, 362.54), (5029.0, 362.89), (5031.5, 363.01), (5035.0, 362.93), (5039.0, 362.66), (5039.7, 362.65), (5040.3, 362.68), (5044.4, 362.73), (5049.1, 363.15), (5057.8, 363.43), (5059.1, 363.45), (5066.6, 363.45), (5067.8, 363.5), (5069.1, 363.54), (5072.5, 363.73), (5075.4, 363.79), (5079.2, 363.92), (5081.8, 364.0), (5084.2, 364.03), (5089.2, 364.1), (5092.9, 364.12), (5095.9, 364.08), (5101.7, 364.19), (5109.2, 364.29), (5109.9, 364.29), (5110.5, 364.29), (5119.2, 364.27), (5128.0, 364.22), (5128.6, 364.22), (5129.3, 364.23), (5136.8, 364.29), (5138.0, 364.28), (5139.3, 364.31), (5145.6, 364.29), (5147.4, 364.26), (5149.4, 364.23), (5152.0, 364.18), (5154.4, 364.13), (5156.7, 364.04), (5159.4, 364.01), (5163.1, 364.02), (5166.1, 364.02), (5169.4, 364.02), (5171.9, 364.02), (5175.4, 364.04), (5179.5, 364.09), (5180.1, 364.09), (5180.7, 364.08), (5184.8, 364.11), (5189.5, 364.17), (5194.2, 364.14), (5198.2, 364.14), (5199.5, 364.15), (5203.5, 364.26), (5209.5, 364.4), (5212.9, 364.44), (5215.8, 364.45), (5219.6, 364.45), (5224.6, 364.5), (5226.9, 364.5), (5233.3, 364.64), (5239.6, 364.66), (5242.1, 364.65), (5249.6, 364.61), (5250.9, 364.59), (5259.6, 364.69), (5268.4, 365.28), (5269.7, 365.33), (5277.2, 365.64), (5279.7, 365.69), (5286.0, 365.78), (5289.8, 365.83), (5294.8, 366.04), (5299.8, 366.17), (5303.5, 366.32), (5306.5, 366.47), (5309.8, 366.55), (5312.3, 366.65), (5319.8, 367.15), (5321.1, 367.24), (5329.8, 367.8), (5338.6, 368.04), (5339.2, 368.04), (5339.9, 368.06), (5343.9, 368.12), (5347.4, 368.34), (5349.9, 368.43), (5356.2, 368.72), (5360.0, 369.07), (5365.0, 369.36), (5367.3, 369.45), (5370.0, 369.51), (5373.7, 369.71), (5376.7, 369.8), (5380.0, 370.0), (5382.5, 370.2), (5390.1, 370.91), (5390.7, 370.94), (5391.3, 371.0), (5400.1, 371.76), (5408.8, 372.27), (5410.1, 372.35), (5414.1, 372.59), (5417.6, 372.73), (5420.1, 372.85), (5426.4, 373.3), (5435.2, 374.01), (5440.2, 374.27), (5443.9, 374.57), (5446.9, 374.86), (5450.2, 375.16), (5451.6, 375.26), (5452.7, 375.39), (5460.3, 376.15), (5460.9, 376.19), (5461.5, 376.22), (5470.2, 376.9), (5479.1, 377.54), (5480.3, 377.56), (5484.3, 377.56), (5487.8, 377.7), (5490.3, 377.84), (5496.6, 378.07), (5500.4, 378.24), (5505.4, 378.5), (5510.4, 378.85), (5514.1, 379.03), (5517.1, 379.11), (5520.4, 379.19), (5522.9, 379.16), (5530.5, 379.16), (5531.1, 379.18), (5531.7, 379.18), (5532.0, 379.18)]\",\"[(4369.8, 391.25), (4374.7, 390.62), (4377.4, 390.29), (4378.6, 390.13), (4382.6, 389.58), (4385.5, 389.14), (4387.4, 388.81), (4390.1, 388.35), (4393.6, 387.77), (4401.5, 386.59), (4401.9, 386.55), (4409.7, 385.54), (4411.1, 385.36), (4413.0, 385.06), (4417.8, 384.34), (4424.5, 383.41), (4425.9, 383.23), (4430.0, 382.68), (4433.9, 382.19), (4439.5, 381.71), (4442.0, 381.49), (4447.5, 381.07), (4450.1, 380.8), (4453.7, 380.31), (4458.2, 379.64), (4458.5, 379.57), (4458.9, 379.49), (4466.2, 378.32), (4470.4, 377.74), (4472.7, 377.45), (4474.3, 377.31), (4481.9, 376.7), (4482.4, 376.66), (4483.5, 376.57), (4490.5, 376.04), (4491.7, 375.95), (4493.4, 375.8), (4496.4, 375.54), (4498.5, 375.33), (4504.9, 374.69), (4505.9, 374.6), (4506.6, 374.54), (4510.7, 374.22), (4514.7, 373.93), (4516.3, 373.81), (4522.7, 373.48), (4527.8, 373.11), (4529.6, 372.97), (4530.8, 372.86), (4534.3, 372.4), (4538.9, 371.93), (4539.3, 371.88), (4547.0, 371.07), (4550.8, 370.78), (4553.3, 370.57), (4555.0, 370.51), (4562.3, 370.07), (4563.1, 370.01), (4565.1, 369.81), (4571.2, 369.17), (4572.2, 369.08), (4573.7, 368.96), (4577.0, 368.81), (4579.3, 368.64), (4585.2, 368.25), (4586.5, 368.15), (4587.3, 368.05), (4592.4, 367.64), (4595.4, 367.41), (4596.7, 367.34), (4603.5, 367.06), (4605.4, 367.02), (4608.2, 367.02), (4611.6, 367.05), (4614.9, 367.05), (4619.6, 367.16), (4629.1, 367.17), (4631.1, 367.16), (4633.9, 367.11), (4635.8, 367.1), (4642.6, 366.98), (4643.9, 366.96), (4651.9, 366.95), (4654.1, 366.93), (4660.0, 366.91), (4665.6, 366.67), (4668.1, 366.48), (4671.8, 366.26), (4676.2, 366.17), (4676.5, 366.15), (4677.1, 366.14), (4684.2, 365.97), (4686.0, 365.9), (4688.5, 365.85), (4690.7, 365.76), (4692.3, 365.65), (4695.5, 365.47), (4700.0, 365.18), (4700.4, 365.17), (4701.2, 365.16), (4708.5, 365.12), (4711.5, 365.08), (4716.5, 364.93), (4723.0, 364.55), (4723.9, 364.49), (4724.6, 364.44), (4728.7, 364.17), (4732.7, 364.01), (4734.5, 364.01), (4740.7, 364.11), (4745.9, 364.12), (4748.8, 364.08), (4752.4, 364.04), (4756.9, 364.12), (4757.4, 364.12), (4765.0, 364.14), (4766.6, 364.17), (4768.9, 364.12), (4773.0, 364.08), (4780.4, 364.06), (4780.8, 364.06), (4781.1, 364.06), (4785.5, 363.99), (4789.2, 363.92), (4790.3, 363.9), (4791.9, 363.89), (4797.3, 363.88), (4803.3, 363.84), (4804.5, 363.82), (4805.3, 363.8), (4810.0, 363.72), (4813.4, 363.66), (4814.0, 363.63), (4814.8, 363.65), (4821.5, 363.68), (4823.5, 363.68), (4826.3, 363.73), (4828.2, 363.74), (4829.6, 363.74), (4837.3, 363.89), (4837.6, 363.89), (4837.8, 363.9), (4842.4, 363.99), (4845.7, 364.05), (4847.2, 364.07), (4849.3, 364.09), (4851.9, 364.1), (4853.8, 364.12), (4860.7, 364.07), (4861.4, 364.06), (4861.8, 364.07), (4864.5, 363.98), (4869.9, 363.77), (4872.2, 363.65), (4878.0, 363.32), (4883.7, 363.29), (4885.1, 363.27), (4886.1, 363.26), (4891.7, 363.32), (4894.1, 363.35), (4895.2, 363.35), (4902.2, 363.29), (4904.1, 363.18), (4906.7, 363.09), (4908.8, 363.02), (4910.3, 362.97), (4918.1, 362.76), (4918.3, 362.75), (4923.0, 362.75), (4926.4, 362.69), (4929.6, 362.68), (4932.5, 362.69), (4934.5, 362.69), (4941.1, 362.66), (4942.0, 362.67), (4946.7, 362.55), (4950.7, 362.41), (4952.6, 362.37), (4958.7, 362.24), (4960.9, 362.17), (4964.1, 362.0), (4965.7, 361.95), (4966.8, 361.86), (4970.4, 361.53), (4974.9, 361.23), (4975.5, 361.25), (4983.0, 361.56), (4987.0, 361.92), (4989.4, 362.0), (4991.0, 362.12), (4996.7, 361.23), (4997.2, 360.73), (5002.9, 360.73), (5003.4, 361.23), (5003.6, 362.55), (5007.2, 362.6), (5008.3, 362.5), (5010.0, 362.4), (5015.3, 362.03), (5021.5, 361.64), (5023.3, 361.56), (5027.3, 361.49), (5031.4, 361.68), (5032.9, 361.72), (5036.8, 361.77), (5039.5, 361.85), (5041.5, 361.91), (5044.4, 362.02), (5046.3, 362.05), (5047.5, 362.1), (5051.0, 362.36), (5055.6, 362.8), (5055.9, 362.82), (5063.7, 363.4), (5067.4, 363.49), (5071.8, 363.57), (5078.9, 363.67), (5079.8, 363.69), (5082.2, 363.74), (5087.9, 363.88), (5090.3, 363.88), (5096.0, 363.88), (5099.5, 363.93), (5101.5, 364.04), (5103.3, 364.12), (5107.0, 364.41), (5110.1, 364.55), (5115.2, 364.81), (5116.9, 364.92), (5123.4, 365.14), (5123.7, 365.14), (5124.2, 365.15), (5134.4, 365.11), (5137.3, 365.13), (5139.9, 365.22), (5144.1, 365.33), (5150.7, 365.65), (5150.8, 365.66), (5150.9, 365.66), (5157.7, 365.92), (5161.8, 366.14), (5164.5, 366.15), (5167.3, 366.3), (5171.2, 366.51), (5172.7, 366.54), (5178.0, 366.8), (5178.2, 366.81), (5179.1, 366.83), (5184.8, 366.98), (5189.2, 367.06), (5191.6, 367.15), (5195.2, 367.28), (5196.0, 367.28), (5198.4, 367.38), (5200.2, 367.51), (5205.2, 367.98), (5205.6, 368.01), (5207.5, 368.16), (5212.0, 368.47), (5216.6, 368.55), (5218.8, 368.65), (5222.3, 368.82), (5225.6, 368.95), (5231.3, 369.29), (5232.4, 369.36), (5233.0, 369.42), (5235.8, 369.7), (5238.5, 369.97), (5244.0, 370.48), (5245.9, 370.62), (5249.5, 370.77), (5252.7, 370.91), (5254.9, 370.97), (5259.5, 371.11), (5260.4, 371.14), (5264.3, 371.31), (5265.9, 371.37), (5266.3, 371.4), (5271.4, 371.79), (5273.1, 371.92), (5276.9, 372.15), (5279.9, 372.42), (5282.3, 372.69), (5286.7, 373.19), (5292.6, 373.6), (5293.5, 373.66), (5298.8, 374.12), (5300.3, 374.33), (5302.6, 374.74), (5307.0, 375.42), (5313.8, 376.5), (5315.2, 376.66), (5320.6, 377.11), (5321.1, 377.15), (5327.4, 377.59), (5329.4, 377.8), (5334.2, 378.2), (5337.1, 378.52), (5341.0, 378.97), (5347.3, 379.36), (5347.8, 379.42), (5349.4, 379.46), (5354.6, 379.5), (5359.1, 379.68), (5361.4, 379.73), (5365.1, 379.87), (5368.2, 379.97), (5374.0, 380.34), (5374.9, 380.38), (5377.8, 380.52), (5381.0, 380.66), (5381.7, 380.7), (5386.5, 380.85), (5388.5, 380.96), (5391.9, 381.21), (5395.3, 381.41), (5397.4, 381.56), (5402.1, 381.97), (5406.2, 382.16), (5408.4, 382.22), (5408.9, 382.22), (5409.8, 382.22)]\"]]\n", - "bank_stations: [[\"['4998', '5002.1']\",\"['4998', '5002.1']\",\"['4998', '5002.1']\",\"['4997.6', '5002.4']\",\"['4997.5', '5002.6']\",...,\"['4997.2', '5002.8']\",\"['4997.1', '5002.9']\",\"['4996.8', '5003.2']\",\"['4996.7', '5003.4']\",\"['4996.7', '5003.4']\"]]\n", - "number_of_station_elevation_points: [[88,56,82,104,138,...,373,411,273,275,322]]\n", - "number_of_coords: [[3,3,3,3,3,...,3,3,3,3,3]]\n", - "flows: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "profile_names: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "geometry: [[01020000000300000051D82178BFE13F418B8DCDCF0A03464163A5A3B9F3DF3F41DEC07FA06C0346414848E85781DD3F4106877FA6BA044641,010200000003000000C908AB77A6E13F41BDB3B473D4024641B8223D432DE03F4131A40DC78C0246419B4CE3F923DF3F41A38D4E5506034641,010200000003000000A823A14D64E13F419F50E5944B014641191211EC80DF3F41C88DAED5DD01464114E39692E7DE3F416B4D989918034641,0102000000030000006EA7910A92E13F4189118FF1830046418D5FD38E2CDE3F413F15D84DB401464176F943F0B6DE3F417D1C7BAA12034641,0102000000030000004E06BF6BFEDF3F41317CDB199FFF454130D740445EDD3F417D14E8C8B401464182D23FB655DE3F415FD376D106034641,...,0102000000030000008D015B39241640415605BE8E8FA545412A6FC13093154041382078E3D2A5454101C89951721440410860DD5B27A74541,0102000000030000004D624513F3154041612340CD1CA545412160B21A1F1540415C18F81C36A5454141FDFDF46B134041A1E1B01B00A64541,010200000003000000BE699A542A154041447683BA9EA44541C8839BE35C144041A72757B106A54541FC6B7F4371134041845B4FF780A54541,01020000000300000067F8B4257F1440416EB87174A7A34541374AC1FF06144041A088659957A44541C15F15BA2D1340418FF5200DF0A44541,010200000003000000A02869ED301440418B117EF772A34541C802227B1E1340416A4E959962A4454150193BD01D134041BF158676FDA44541]]\n", - "huc: [[\"01020002\",\"01020002\",\"01020002\",\"01020002\",\"01020002\",...,\"01020002\",\"01020002\",\"01020002\",\"01020002\",\"01020002\"]]\n", - "model_id: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", - "...\n" - ] - } - ], + "outputs": [], "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "catalog_name = \"xs\"\n", + "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [xs]\n", + "catalog_name = \"fema_xs\"\n", "namespace = \"mip\"\n", "tablename = \"huc_01020002\"\n", "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", @@ -1273,20 +192,10 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "aec525f7-6753-4ca5-ba5e-916c8c6659ec", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "List of tables under mip within xs:\n", - "\n", - "[('mip', 'huc_01020002'), ('mip', 'huc_02060006'), ('mip', 'huc_03170004'), ('mip', 'huc_04030101'), ('mip', 'huc_05020006'), ('mip', 'huc_06040002'), ('mip', 'huc_07130010'), ('mip', 'huc_08060202'), ('mip', 'huc_09020301'), ('mip', 'huc_10120203'), ('mip', 'huc_11060002'), ('mip', 'huc_12030107'), ('mip', 'huc_13020102'), ('mip', 'huc_14050005'), ('mip', 'huc_15040007'), ('mip', 'huc_16020203'), ('mip', 'huc_17060305'), ('mip', 'huc_18070204')]\n" - ] - } - ], + "outputs": [], "source": [ "# All tables created within the namespace of interest.\n", "print(f\"List of tables under {namespace} within {catalog_name}:\\n\\n{catalog.list_tables(namespace)}\")" @@ -1302,62 +211,10 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": null, "id": "28153d1a-46de-43f0-962a-5b613bdbaa73", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "hf_source: large_string\n", - "owp_ahg_c: double\n", - "owp_ahg_f: double\n", - "owp_ahg_a: double\n", - "owp_ahg_b: double\n", - "owp_ahg_k: double\n", - "owp_ahg_m: double\n", - "owp_dingman_r: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "owp_bf_channel_area: double\n", - "owp_inchan_channel_area: double\n", - "owp_bf_channel_perimeter: double\n", - "owp_inchan_channel_perimeter: double\n", - "owp_bf_channel_volume: double\n", - "owp_inchan_channel_volume: double\n", - "owp_bf_channel_bed_area: double\n", - "owp_inchan_channel_bed_area: double\n", - "owp_y_bf: double\n", - "owp_y_inchan: double\n", - "owp_tw_bf: double\n", - "owp_tw_inchan: double\n", - "owp_roughness_bathy: double\n", - "owp_roughness_bathy_lower_bound: double\n", - "owp_roughness_bathy_upper_bound: double\n", - "hf_id: int64\n", - "owp_roughness_no_bathy: double\n", - "hand_source: large_string\n", - "vpuid: int64\n", - "----\n", - "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", - "owp_ahg_c: [[0.24283623695373535,0.24679405987262726,0.24796637892723083,0.24558784067630768,0.2416917383670807,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", - "owp_ahg_f: [[0.44655272364616394,0.45140621066093445,0.45361408591270447,0.4597383141517639,0.46237292885780334,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", - "owp_ahg_a: [[16.292556762695312,16.71356201171875,15.591700553894043,17.455158233642578,18.136899948120117,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", - "owp_ahg_b: [[0.1877126842737198,0.18782523274421692,0.19405822455883026,0.1825941652059555,0.17806944251060486,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", - "owp_ahg_k: [[0.2711319327354431,0.26460614800453186,0.28298744559288025,0.2645978033542633,0.25294309854507446,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", - "owp_ahg_m: [[0.4176878035068512,0.40634584426879883,0.3849862217903137,0.4011600911617279,0.39922311902046204,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", - "owp_dingman_r: [[163.10582763253834,121.4828569903629,109.42969777415078,131.98548478571865,144.5459281918684,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", - "LENGTHKM: [[1.1828318619868186,3.453164835389148,3.7720762279021254,2.444968856687704,2.735238005445334,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", - "slope: [[0.00489451,0.00399073,0.00354641,0.00291035,0.00222913,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", - "..." - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Filter Iceberg table based on threshold set for a given feature\n", "namespace = \"bathymetry_ml_auxiliary\"\n", @@ -1369,62 +226,10 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": null, "id": "6320114d-8115-4e1f-b8fd-3c80aeaa07de", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "hf_source: large_string\n", - "owp_ahg_c: double\n", - "owp_ahg_f: double\n", - "owp_ahg_a: double\n", - "owp_ahg_b: double\n", - "owp_ahg_k: double\n", - "owp_ahg_m: double\n", - "owp_dingman_r: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "owp_bf_channel_area: double\n", - "owp_inchan_channel_area: double\n", - "owp_bf_channel_perimeter: double\n", - "owp_inchan_channel_perimeter: double\n", - "owp_bf_channel_volume: double\n", - "owp_inchan_channel_volume: double\n", - "owp_bf_channel_bed_area: double\n", - "owp_inchan_channel_bed_area: double\n", - "owp_y_bf: double\n", - "owp_y_inchan: double\n", - "owp_tw_bf: double\n", - "owp_tw_inchan: double\n", - "owp_roughness_bathy: double\n", - "owp_roughness_bathy_lower_bound: double\n", - "owp_roughness_bathy_upper_bound: double\n", - "hf_id: int64\n", - "owp_roughness_no_bathy: double\n", - "hand_source: large_string\n", - "vpuid: int64\n", - "----\n", - "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", - "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.26968732476234436,0.262911856174469,0.2565535306930542,0.27186259627342224,0.2509637176990509]]\n", - "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4091697037220001,0.4002934396266937,0.3982747495174408,0.41463810205459595,0.4620860517024994]]\n", - "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,13.57089614868164,15.591622352600098,17.110021591186523,15.198208808898926,16.834657669067383]]\n", - "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22416476905345917,0.20449289679527283,0.20677334070205688,0.2223099172115326,0.20692850649356842]]\n", - "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.29988086223602295,0.27692529559135437,0.2727428376674652,0.28107815980911255,0.2823072373867035]]\n", - "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3715367913246155,0.4299010634422302,0.4299301207065582,0.40392443537712097,0.3803613483905792]]\n", - "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,66.4125603175732,47.97490105010014,49.70555612325059,44.49719316488429,221.7325794960283]]\n", - "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,1.3556982962034625,1.7761013055059551,3.1182578724544983,5.662275879263775,0.760075523461262]]\n", - "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.0154941,0.02633596,0.01911396,0.04333816,0.00001]]\n", - "..." - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "namespace = \"bathymetry_ml_auxiliary\"\n", "tablename = \"vpuid=01\"\n", @@ -1437,30 +242,10 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "3acdfde0-d34d-442e-87eb-724dbcef5d1b", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "owp_ahg_f: double\n", - "owp_ahg_m: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "----\n", - "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.4067888855934143,0.3982747495174408,0.4000049829483032,0.41463810205459595,0.4620860517024994]]\n", - "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.3738446533679962,0.4299301207065582,0.4191203713417053,0.40392443537712097,0.3803613483905792]]\n", - "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,2.891987367172746,3.1182578724544983,3.6554421303734443,5.662275879263775,0.760075523461262]]\n", - "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.02001729,0.01911396,0.02483032,0.04333816,0.00001]]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "namespace = \"bathymetry_ml_auxiliary\"\n", "tablename = \"vpuid=01\"\n", @@ -1483,58 +268,10 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "5117aae1-40fb-4392-b424-b488245ace52", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "river: string\n", - "reach: string\n", - "river_reach: string\n", - "river_station: double\n", - "river_reach_rs: string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: string\n", - "station_elevation_points: string\n", - "bank_stations: string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: string\n", - "profile_names: string\n", - "geometry: binary\n", - "huc: string\n", - "model_id: string\n", - "us_reach_id: string\n", - "us_network_to_id: string\n", - "ds_reach_id: string\n", - "ds_network_to_id: string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", - "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", - "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", - "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", - "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", - "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", - "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", - "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "..." - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Load a XS parquet file into a DataFrame\n", "parquet_file_path = f\"{os.getcwd()}//xs_data/mip_01020002/huc_01020002.parquet\"\n", @@ -1544,62 +281,10 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": null, "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "hf_source: string\n", - "owp_ahg_c: double\n", - "owp_ahg_f: double\n", - "owp_ahg_a: double\n", - "owp_ahg_b: double\n", - "owp_ahg_k: double\n", - "owp_ahg_m: double\n", - "owp_dingman_r: double\n", - "LENGTHKM: double\n", - "slope: double\n", - "owp_bf_channel_area: double\n", - "owp_inchan_channel_area: double\n", - "owp_bf_channel_perimeter: double\n", - "owp_inchan_channel_perimeter: double\n", - "owp_bf_channel_volume: double\n", - "owp_inchan_channel_volume: double\n", - "owp_bf_channel_bed_area: double\n", - "owp_inchan_channel_bed_area: double\n", - "owp_y_bf: double\n", - "owp_y_inchan: double\n", - "owp_tw_bf: double\n", - "owp_tw_inchan: double\n", - "owp_roughness_bathy: double\n", - "owp_roughness_bathy_lower_bound: double\n", - "owp_roughness_bathy_upper_bound: double\n", - "hf_id: int64\n", - "owp_roughness_no_bathy: double\n", - "hand_source: string\n", - "vpuid: dictionary\n", - "----\n", - "hf_source: [[\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",...,\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\",\"reference_fabric\"]]\n", - "owp_ahg_c: [[0.2783956527709961,0.26645627617836,0.2778419256210327,0.2656676173210144,0.2778984308242798,...,0.24669642746448517,0.2410922795534134,0.21650205552577972,0.23524419963359833,0.2453560084104538]]\n", - "owp_ahg_f: [[0.403207927942276,0.4721261262893677,0.3986799418926239,0.4429498612880707,0.4048362374305725,...,0.46750980615615845,0.46937182545661926,0.45957159996032715,0.4573363959789276,0.46542882919311523]]\n", - "owp_ahg_a: [[15.474262237548828,15.589872360229492,15.27043628692627,15.695556640625,15.373209953308105,...,14.39522933959961,15.831462860107422,17.09531593322754,15.73424243927002,15.698975563049316]]\n", - "owp_ahg_b: [[0.21297027170658112,0.20660685002803802,0.22359369695186615,0.21279571950435638,0.21274369955062866,...,0.22100567817687988,0.20211540162563324,0.1899542361497879,0.19244758784770966,0.20660847425460815]]\n", - "owp_ahg_k: [[0.2632668912410736,0.2649047374725342,0.2646264433860779,0.26899534463882446,0.26056915521621704,...,0.30960214138031006,0.3056097626686096,0.3103371262550354,0.3096386194229126,0.2898109257221222]]\n", - "owp_ahg_m: [[0.4113325774669647,0.36840832233428955,0.40038490295410156,0.3914453685283661,0.4115554094314575,...,0.31428271532058716,0.34859946370124817,0.38616055250167847,0.37841135263442993,0.31649747490882874]]\n", - "owp_dingman_r: [[34.94359157777524,78.50221647993335,23.816824026591785,71.37071616896621,68.16839964475069,...,87.87201916851028,120.53569949076702,196.1542010519919,183.4062312745436,144.50062488154873]]\n", - "LENGTHKM: [[2.967968432144912,1.359883622971128,2.0899864298839312,0.5329819884305866,1.276767180876021,...,11.041326186301118,2.2220571382098906,2.3020617663270158,7.381776970395373,10.90124605539771]]\n", - "slope: [[0.01388814,0.00057352,0.01573711,0.00500938,0.02304347,...,0.00064764,0.00001,0.00286086,0.0031118,0.00064093]]\n", - "..." - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# Load a m1_auxiliary parquet file into a DataFrame\n", "parquet_file_path = f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet\"\n", @@ -1632,9 +317,9 @@ ], "metadata": { "kernelspec": { - "display_name": "iceberg", + "display_name": ".venv", "language": "python", - "name": "iceberg" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -1646,7 +331,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.13.2" + "version": "3.12.8" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index 709ad31..116b8eb 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -23,9 +23,7 @@ maintainers = [ dependencies = [] [project.optional-dependencies] -docs = [ - "mkdocs-material", -] +docs = ["mkdocs-material"] [tool.uv.sources] icefabric_api = { workspace = true } @@ -33,11 +31,7 @@ icefabric_manage = { workspace = true } icefabric_tools = { workspace = true } [tool.uv.workspace] -members = [ - "src/icefabric_api", - "src/icefabric_manage", - "src/icefabric_tools", -] +members = ["src/icefabric_api", "src/icefabric_manage", "src/icefabric_tools"] [tool.uv] dev-dependencies = [ @@ -121,11 +115,11 @@ convention = "numpy" [tool.mypy] python_version = "3.11" -warn_return_any = true +warn_return_any = false +disallow_any_unimported = false warn_unused_configs = true strict_optional = true ignore_missing_imports = true -disallow_any_unimported = true check_untyped_defs = true disallow_untyped_defs = true no_implicit_optional = true diff --git a/src/icefabric_manage/builds/__init__.py b/src/icefabric_manage/builds/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py new file mode 100644 index 0000000..4f3b2ea --- /dev/null +++ b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py @@ -0,0 +1,40 @@ +from pathlib import Path + +from dotenv import load_dotenv +from pyiceberg.exceptions import NamespaceAlreadyExistsError + +from icefabric_manage import IcebergTable + +load_dotenv() + +if __name__ == "__main__": + warehouse_path = Path("/tmp/warehouse") + warehouse_path.mkdir(exist_ok=True) + catalog_name = "pyiceberg_catalog" + catalog_settings = { + "type": "sql", + "uri": f"sqlite:///{warehouse_path}/{catalog_name}.db", + "warehouse": f"file://{warehouse_path}", + } + + iceberg_table = IcebergTable() + + try: + # Establish new Iceberg catalog + iceberg_table.establish_catalog( + catalog_name=catalog_name, + namespace="bathymetry_ml_auxiliary", + catalog_settings=catalog_settings, + ) + + # Generate tables w/in the new Iceberg catalog for all parquets detected in s3 + iceberg_table.create_table_for_all_s3parquets( + app_name="bathymetry_ml_auxiliary", bucket_name="ngwpc-bathymetry" + ) + + except NamespaceAlreadyExistsError as e: + raise FileExistsError( + f"Iceberg table and namespace already exist. Remove catalog from {warehouse_path} to continue" + ) from e + + print(f"Build successful. Files written into metadata store @ {warehouse_path}") diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index b3cec73..f358619 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -24,7 +24,7 @@ dependencies = [ "s3fs==2025.5.0", "pyarrow==20.0.0", "pyiceberg[sql-sqlite]==0.9.0", - "python-dotenv==1.1.0" + "python-dotenv==1.1.0", ] [build-system] diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py index 91a4bdc..61f1855 100644 --- a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py +++ b/src/icefabric_manage/src/icefabric_manage/iceberg_table.py @@ -1,7 +1,5 @@ import os -import re -import boto3 import pyarrow as pa import pyarrow.parquet as pq import s3fs @@ -27,18 +25,15 @@ class IcebergTable: """ - def __init__(self): + def __init__(self) -> None: # Generate folder for iceberg catalog if not os.path.exists(f"{os.getcwd()}/iceberg_catalog"): os.makedirs(f"{os.getcwd()}/iceberg_catalog") - # Set location of where the iceberg catalog will reside - os.environ["PYICEBERG_HOME"] = os.getcwd() - # Initialize namespace to be set for Iceberg catalog self.namespace = "" - def read_data_dirs(self, data_dir): + def read_data_dirs(self, data_dir: str) -> list: """ Extract the list of parquet directories. @@ -52,14 +47,14 @@ def read_data_dirs(self, data_dir): """ parquet_list = [] - for folder, subfolders, files in os.walk(data_dir): + for folder, _subfolders, files in os.walk(data_dir): if folder != data_dir: for file in files: parquet_list.append(f"{folder}/{file}") return parquet_list - def read_data(self, parquet_file_path): + def read_data(self, parquet_file_path: str) -> pa.Table: """ Load a single parquet as a Pyarrow table. @@ -74,21 +69,43 @@ def read_data(self, parquet_file_path): return data - def establish_catalog(self, catalog_name, namespace): + def establish_catalog( + self, catalog_name: str, namespace: str, catalog_settings: dict[str, str] | None = None + ) -> None: """ Creates a new Iceberg catalog. + Defaults to saving in ./iceberg_catalog/{catalog_name}_catalog.db if no uri + specified in catalog_settings + Specify 'uri' and 'warehouse' to select location for catalog and files + Args: catalog_name (str): Name of the catalog to be created. Default: 'dev' for development catalog namespace (str): Name of namespace. + catalog_settings (str): Optional catalog settings accepted by pyiceberg.load_catalog() Return: None """ + # Check if catalog settings exist, if not initialize a URI and warehouse to default location + if not catalog_settings or not isinstance(catalog_settings, dict): + catalog_settings = {} + catalog_settings["uri"] = ( + f"sqlite:///iceberg_catalog/{catalog_name}_catalog.db" + if "uri" not in catalog_settings.keys() + else catalog_settings["uri"] + ) + catalog_settings["warehouse"] = ( + "file://iceberg_catalog" + if "warehouse" not in catalog_settings.keys() + else catalog_settings["warehouse"] + ) + # Establish a new Iceberg catalog & its configuration self.catalog = load_catalog( - name=catalog_name, **{"uri": f"sqlite:///iceberg_catalog/{catalog_name}_catalog.db"} + name=catalog_name, + **catalog_settings, ) # Establish namespace to be create w/in catalog @@ -98,7 +115,7 @@ def establish_catalog(self, catalog_name, namespace): return - def convert_pyarrow_to_iceberg_schema(self, arrow_schema): + def convert_pyarrow_to_iceberg_schema(self, arrow_schema: Schema) -> Schema: """ Translate a given Pyarrow schema into a schema acceptable by Iceberg. @@ -106,7 +123,7 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): arrow_schema (object): Pyarrow schema read from the loaded parquet of interest. - Return (object): Iceberg schema + Return (Iceberge.Schema): Iceberg schema """ fields = [] @@ -145,7 +162,7 @@ def convert_pyarrow_to_iceberg_schema(self, arrow_schema): return schema - def create_table_for_parquet(self, iceberg_tablename, data_table, schema): + def create_table_for_parquet(self, iceberg_tablename: str, data_table: pa.Table, schema: Schema) -> None: """ Convert parquet Pyarrow table to iceberg table & allocate Iceberg catalog under the ./iceberg_catalog directory. @@ -164,9 +181,7 @@ def create_table_for_parquet(self, iceberg_tablename, data_table, schema): """ # Create an Iceberg table iceberg_table = self.catalog.create_table( - identifier=f"{self.namespace}.{iceberg_tablename}", - schema=schema, - location=f"{os.environ['PYICEBERG_HOME']}/iceberg_catalog", + identifier=f"{self.namespace}.{iceberg_tablename}", schema=schema ) # Updates the Iceberg table with data of interest. @@ -174,7 +189,7 @@ def create_table_for_parquet(self, iceberg_tablename, data_table, schema): return - def create_table_for_all_parquets(self, parquet_files, app_name="mip-xs"): + def create_table_for_all_parquets(self, parquet_files: list[str], app_name: str = "mip-xs") -> None: """ Convert parquets to Iceberg tables - each w/ their inherited schema. @@ -190,7 +205,7 @@ def create_table_for_all_parquets(self, parquet_files, app_name="mip-xs"): 'bathymetry_ml_auxiliary' S3 buckets differ. """ - for idx, parquet_file in enumerate(parquet_files): + for _idx, parquet_file in enumerate(parquet_files): if app_name == "mip_xs": iceberg_tablename = f"{os.path.split(os.path.split(parquet_file)[1])[1].split('.')[0]}" @@ -203,48 +218,51 @@ def create_table_for_all_parquets(self, parquet_files, app_name="mip-xs"): self.create_table_for_parquet(iceberg_tablename, data_table, schema) return - def create_table_for_all_s3parquets(self, app_name, bucket_name, profile_name="default"): + def create_table_for_all_s3parquets(self, app_name: str, bucket_name: str) -> None: """ Convert parquets from S3 to Iceberg tables - each w/ their inherited schema. - Args: - bucket_name (list): S3 bucket name. - - app_name (str): Application to create Iceberg tables. - Options: 'mip_xs' & 'bathymetry_ml_auxiliary' + Parameters + ---------- + app_name : str + Application to create Iceberg tables. + Options: 'mip_xs', 'ble_xs' & 'bathymetry_ml_auxiliary' + bucket_name : str + S3 bucket name. - namespace (str): Namespace for which the Iceberg table will reside within - the Iceberg catalog. - - profile_name (str: Profile name declared in the AWS configuration file. - Default: 'default' - - Return: None + Returns + ------- + None """ - # Instantiate bucket of interest. - session = boto3.Session(profile_name=profile_name) - s3 = session.resource("s3") - bucket_ob = s3.Bucket(bucket_name) - pyarrow_table = {} - for s3obj in bucket_ob.objects.all(): - # For sourcing the preprocessed XS parquets from S3 - if app_name == "mip_xs" and re.match(r"^xs_data/.*\.parquet$", s3obj.key): - iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[1])[1].split('.')[0]}" - pyarrow_table[iceberg_tablename] = pq.read_table( - f"s3://{bucket_name}/{s3obj.key}", filesystem=s3fs.S3FileSystem() - ) - - # For sourcing the bathymetry_ml_auxiliary parquets from S3 - elif app_name == "bathymetry_ml_auxiliary": - iceberg_tablename = f"{os.path.split(os.path.split(s3obj.key)[0])[1]}" - pyarrow_table[iceberg_tablename] = pq.read_table( - f"s3://{bucket_name}/{s3obj.key}", filesystem=s3fs.S3FileSystem() - ) + fs = s3fs.S3FileSystem( + key=os.environ["AWS_ACCESS_KEY_ID"], + secret=os.environ["AWS_SECRET_ACCESS_KEY"], + token=os.environ["AWS_SESSION_TOKEN"], + ) + glob_patterns = { + "mip_xs": f"{bucket_name}/full_mip_xs_data/**/*.parquet", + "ble_xs": f"{bucket_name}/full_ble_xs_data/**/*.parquet", + "bathymetry_ml_auxiliary": f"{bucket_name}/ml_auxiliary_data/**/*.parquet", + } + if app_name not in glob_patterns: + raise KeyError(f"App {app_name} not supported. Please add your app to the glob_patterns") + + # Table Name Factory + parquet_files = fs.glob(glob_patterns[app_name]) + pyarrow_tables = {} + for file_path in parquet_files: + if app_name in {"mip_xs", "ble_xs"}: + # Extracts the HUC as the table name + table_name = file_path.split("/")[-1].removesuffix(".parquet") + elif app_name in {"bathymetry_ml_auxiliary"}: + # Extract vpuid from directory structure + table_name = file_path.split("/")[-2] + else: + raise KeyError(f"App {app_name} not supported. Please add your app the table name factory") + s3_uri = f"s3://{file_path}" + pyarrow_tables[table_name] = pq.read_table(s3_uri, filesystem=fs) - # Xforming each unique parquet to an iceberg table - for key, data_table in pyarrow_table.items(): - data_pyarrow_schema = data_table.schema - schema = self.convert_pyarrow_to_iceberg_schema(data_pyarrow_schema) - self.create_table_for_parquet(key, data_table, schema) - return + for table_name, data_table in pyarrow_tables.items(): + schema = self.convert_pyarrow_to_iceberg_schema(data_table.schema) + self.create_table_for_parquet(table_name, data_table, schema) diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py index d1c7b00..be1a4ed 100644 --- a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py +++ b/src/icefabric_manage/src/icefabric_manage/map_fim_data.py @@ -15,44 +15,44 @@ class MapData: """ Maps FIM MIP & BLE XS datasets to relevant IDs & categorize by HUC. - At this time, ensure FIM datasets are saved to local disk. + At this time, ensure FIM datasets are saved to local disk. """ - def __init__(self, data_dir, subfolder_key_prefix): + def __init__(self, data_dir: str, subfolder_key_prefix: str) -> None: self.data_dir = data_dir self.subfolder_key_prefix = subfolder_key_prefix # Parent directory of the FIM files. # Note: All the jsons & geopackages are relevant # to map the files to IDs. - self.fim_data_dirs = [] + self.fim_data_dirs: list[str] = [] # List of directories associated with each file type of # the FIM data sample (e.g. geopackage of a given model @ HUC#, json, # source_models.gpkg, ripple.gpkg) - self.model_gpkg_dirs = [] - self.src_models_gpkg_dirs = [] - self.rip_gpkg_dirs = [] - self.gpkg_dirs = [] - self.json_dirs = [] - self.xs_df_list = [] + self.model_gpkg_dirs: list[str] = [] + self.src_models_gpkg_dirs: list[str] = [] + self.rip_gpkg_dirs: list[str] = [] + self.gpkg_dirs: list[str] = [] + self.json_dirs: list[str] = [] + self.xs_df_list: list[geopandas.GeoDataFrame] = [] # Variables to be used later - self.model_gpkg_tablenames = [] - self.src_models_gpkg_tablenames = [] - self.rip_gpkg_tablenames = [] - self.gpkg_tablenames = [] - self.json_tablenames = [] - - self.id2json = collections.defaultdict(dict) - self.model_id2gpkg = collections.defaultdict(dict) - self.us_ref_dict = collections.defaultdict(dict) - self.ds_ref_dict = collections.defaultdict(dict) - self.rip_huc2gpkg = collections.defaultdict(dict) - self.groupbyriver_dict = collections.defaultdict(dict) - self.crs_dict = collections.defaultdict(dict) - self.consolidated_id2xs = geopandas.GeoDataFrame() + self.model_gpkg_tablenames: list[str] = [] + self.src_models_gpkg_tablenames: list[str] = [] + self.rip_gpkg_tablenames: list[str] = [] + self.gpkg_tablenames: list[str] = [] + self.json_tablenames: list[str] = [] + + self.id2json: dict = collections.defaultdict(dict) + self.model_id2gpkg: dict = collections.defaultdict(dict) + self.us_ref_dict: dict = collections.defaultdict(dict) + self.ds_ref_dict: dict = collections.defaultdict(dict) + self.rip_huc2gpkg: dict = collections.defaultdict(dict) + self.groupbyriver_dict: dict = collections.defaultdict(dict) + self.crs_dict: dict = collections.defaultdict(dict) + self.consolidated_id2xs: geopandas.GeoDataFrame = geopandas.GeoDataFrame() self.read_data_dirs() self.cat_data_dirs(self.subfolder_key_prefix) @@ -84,9 +84,10 @@ def __init__(self, data_dir, subfolder_key_prefix): self.consolidate_id2xs_dfs() # Save HEC RAS models' cross-sections consolidated by HUC as geoparquets & geopackages + # TODO: does this need to be called with a `xs_data_type` ? self.save_xsbyhuc_data() - def read_data_dirs(self): + def read_data_dirs(self) -> None: """ Extract the list of FIM data sample's directories. @@ -97,15 +98,14 @@ def read_data_dirs(self): the FIM data sample. """ - fim_data_dirs = [] - for folder, subfolders, files in os.walk(self.data_dir): + for folder, _subfolders, files in os.walk(self.data_dir): if folder != self.data_dir: for file in files: self.fim_data_dirs.append(f"{folder}/{file}") return - def cat_data_dirs(self, subfolder_key_prefix): + def cat_data_dirs(self, subfolder_key_prefix: str) -> None: """ Categorize FIM data sample files. @@ -124,7 +124,7 @@ def cat_data_dirs(self, subfolder_key_prefix): if re.search("ripple.gpkg", x): self.rip_gpkg_dirs.append(x) t = re.search(f"/{subfolder_key_prefix}(.*)", x) - rip_gpkg_tblname = t.group() + rip_gpkg_tblname = t.group() # type: ignore[union-attr] self.rip_gpkg_tablenames.append(rip_gpkg_tblname.lstrip("/").replace("/", "_")) # Covers all HEC-RAS models gpkg featuring XS per HUC (contains model_id) @@ -135,33 +135,33 @@ def cat_data_dirs(self, subfolder_key_prefix): ): self.model_gpkg_dirs.append(x) t = re.search(f"/{subfolder_key_prefix}(.*)", x) - model_gpkg_tblname = t.group() + model_gpkg_tblname = t.group() # type: ignore[union-attr] self.model_gpkg_tablenames.append(model_gpkg_tblname.lstrip("/").replace("/", "_")) # Covers all HEC-RAS models gpkg featuring 1D model flowlines per HUC (contains model_id & their HEC-RAS 1D model flowlines) elif x.endswith("source_models.gpkg"): self.src_models_gpkg_dirs.append(x) t = re.search(f"/{subfolder_key_prefix}(.*)", x) - src_models_gpkg_tblname = t.group() + src_models_gpkg_tblname = t.group() # type: ignore[union-attr] self.src_models_gpkg_tablenames.append(src_models_gpkg_tblname.lstrip("/").replace("/", "_")) # Covers all HEC-RAS models + Ripple gpkg per HUC if x.endswith(".gpkg"): self.gpkg_dirs.append(x) t = re.search(f"/{subfolder_key_prefix}(.*)", x) - gpkg_tblname = t.group() + gpkg_tblname = t.group() # type: ignore[union-attr] self.gpkg_tablenames.append(gpkg_tblname.lstrip("/").replace("/", "_")) # Covers each HEC-RAS models' result of conflating its model w/ the NWM network elif x.endswith(".json"): self.json_dirs.append(x) t = re.search(f"/{subfolder_key_prefix}(.*)", x) - json_tblname = t.group() + json_tblname = t.group() # type: ignore[union-attr] self.json_tablenames.append(json_tblname.lstrip("/").replace("/", "_")) return - def drop_nested_keys(self, map_dict, keys_to_drop): + def drop_nested_keys(self, map_dict: dict, keys_to_drop: dict) -> dict | list: """ Drop keys irrelevant for linking each XS to IDs @@ -184,7 +184,7 @@ def drop_nested_keys(self, map_dict, keys_to_drop): else: return map_dict - def map_model2huc(self): + def map_model2huc(self) -> None: """ Map each conflation json file to their corresponding model ID & HUC #. @@ -209,7 +209,7 @@ def map_model2huc(self): return - def filter_model2huc_map(self, keys_to_drop): + def filter_model2huc_map(self, keys_to_drop: dict) -> None: """ Extract only relevant keys from model2huc map for linking each XS to a feature ID. @@ -225,7 +225,7 @@ def filter_model2huc_map(self, keys_to_drop): return - def map_modelhuc_xs2ids(self): + def map_modelhuc_xs2ids(self) -> None: """ Parse JSONs & map model_id & HUC # to xs to reach ID & "network_to_id" @@ -294,7 +294,7 @@ def map_modelhuc_xs2ids(self): return - def map_model2huc_gpkg(self): + def map_model2huc_gpkg(self) -> None: """ Map model ID & HUC # to each HEC-RAS model's geopackage. @@ -335,7 +335,7 @@ def map_model2huc_gpkg(self): return - def map_huc2ripple_gpkg(self): + def map_huc2ripple_gpkg(self) -> None: """ Map HUC # to ripple geopackage (features HEC RAS 1D model flowlines). @@ -395,7 +395,7 @@ def map_huc2ripple_gpkg(self): pass return - def map_model_xs2ids(self): + def map_model_xs2ids(self) -> None: """ Map each cross-section instance featured in HEC-RAS model's cross-section layer to their corresponding IDs. @@ -464,7 +464,7 @@ def map_model_xs2ids(self): return - def save_xs_data(self): + def save_xs_data(self) -> None: """ Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage @@ -476,7 +476,7 @@ def save_xs_data(self): Note: These saved parquet files will preserve each river @ HUC's inherited CRS. """ - for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): + for (model_id, huc_num), _model_gpkg_dict in self.model_id2gpkg.items(): # Generate data folder per HUC if not os.path.exists(f"{os.getcwd()}/xs_data/huc_{huc_num}"): os.makedirs(f"{os.getcwd()}/xs_data/huc_{huc_num}") @@ -500,7 +500,7 @@ def save_xs_data(self): return - def save_crs_map(self): + def save_crs_map(self) -> None: """ Consolidate HEC-RAS models cross-sections based on HUC & river & save to storage @@ -513,7 +513,7 @@ def save_crs_map(self): analyze & reference. """ - for (model_id, huc_num), model_gpkg_dict in self.model_id2gpkg.items(): + for (model_id, huc_num), _model_gpkg_dict in self.model_id2gpkg.items(): # Generate data folder per HUC if not os.path.exists(f"{os.getcwd()}/xs_data/crs_map"): os.makedirs(f"{os.getcwd()}/xs_data/crs_map") @@ -524,9 +524,11 @@ def save_crs_map(self): filterbyriver = grouped_xslayers.get_group(river_name) self.crs_dict[(huc_num, model_id)].update( { - river_name: f"""ESPG: { - str(filterbyriver.crs.to_epsg()) if filterbyriver.crs.to_epsg() else None - }, {filterbyriver.crs.name},""" + river_name: ( + f"""ESPG: { + str(filterbyriver.crs.to_epsg()) if filterbyriver.crs.to_epsg() else None + }, {filterbyriver.crs.name},""" + ) } ) @@ -536,7 +538,7 @@ def save_crs_map(self): return - def consolidate_id2xs_dfs(self): + def consolidate_id2xs_dfs(self) -> None: """ Consolidate HEC-RAS models cross-sections featuring their corresponding IDs. @@ -576,7 +578,7 @@ def consolidate_id2xs_dfs(self): return - def save_xsbyhuc_data(self, xs_data_type): + def save_xsbyhuc_data(self, xs_data_type: str) -> None: """ Consolidate HEC-RAS models cross-sections based on HUC & save to storage From b61262b5b7eeefa61b41c6a5c1f7565beb56dba7 Mon Sep 17 00:00:00 2001 From: Brock Hinkson Date: Tue, 3 Jun 2025 17:56:06 -0500 Subject: [PATCH 51/97] NGWPC-6384 - Create Icechunk VC Example Notebook --- .../icechunk_version_control_examples.ipynb | 493 ++++++++++++++++++ .../icechunk/icechunk_s3_module.py | 62 ++- 2 files changed, 549 insertions(+), 6 deletions(-) create mode 100644 examples/icechunk_version_control_examples.ipynb diff --git a/examples/icechunk_version_control_examples.ipynb b/examples/icechunk_version_control_examples.ipynb new file mode 100644 index 0000000..b5023ae --- /dev/null +++ b/examples/icechunk_version_control_examples.ipynb @@ -0,0 +1,493 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "25341568-feb1-46b7-acaf-d6b76f066e57", + "metadata": {}, + "source": [ + "## Icechunk Version Control and Branching\n", + "Showcase for adding new data over time to an icechunk store, \"time traveling\", and making new branches" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4f0fe850-0e5e-40e5-93b1-1c9f468a2d28", + "metadata": {}, + "outputs": [], + "source": [ + "import boto3\n", + "import os\n", + "import warnings\n", + "import xarray as xr\n", + "from dotenv import load_dotenv\n", + "\n", + "import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils\n", + "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations, S3Path\n", + "\n", + "\n", + "warnings.filterwarnings('ignore')\n", + "\n", + "# Before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", + "# NOTE - if you authenticate with AWS SSO, leave it commented out\n", + "load_dotenv()\n", + "\n", + "# Create icechunk repo at s3://hydrofabric-data/ic_testing/snodas_yearly_append_test\n", + "# NOTE - make sure this S3 directory doesn't exist prior to running this cell\n", + "new_repo_s3_path = S3Path(bucket=\"hydrofabric-data\", prefix=\"ic_testing/snodas_yearly_append_test\")\n", + "new_repo = IcechunkS3Repo(location=new_repo_s3_path)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "61ff84b0-9dba-494e-b9c4-187923f504e9", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", + "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Message:\tRepository initialized\n", + "\n" + ] + } + ], + "source": [ + "# Print repo ancestry\n", + "new_repo.print_history()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "ef762477-5c6b-4876-b5a2-a708b9f3d02f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "zz_ssmv11034tS__T0001TTNATS2009*.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.34s/files]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset is uploaded. Commit: 0B2CMBJJWH52P5Q4HSJ0\n" + ] + } + ], + "source": [ + "# Collect first five SNODAS netcdf files from 2009 and combine/virtualize them together into a single dataset\n", + "snodas_09_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + " location=NGWPCLocations.SNODAS_REF.path,\n", + " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", + " file_type=awf_utils.FileType.NETCDF,\n", + " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2009*.nc\",\n", + " loadable_vars=['crs'],\n", + " testing_file_quantity=5\n", + ")\n", + "\n", + "# Add 09 data to SNODAS repo with a new snapshot\n", + "new_repo.write_dataset(ds=snodas_09_vds, virtualized=True, commit=\"First commit! 09 data added.\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "b3b6e582-ba59-44c2-9753-74afa7c48fd0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", + "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Message:\tFirst commit! 09 data added.\n", + "\n", + "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", + "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Message:\tRepository initialized\n", + "\n" + ] + } + ], + "source": [ + "# Now that we have a new snapshot, reprint the repo ancestry\n", + "new_repo.print_history()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "41d0467d-84da-45f2-94e2-f911e88bbf68", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 671MB\n", + "Dimensions: (time: 5, lat: 4096, lon: 8192)\n", + "Coordinates:\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + "Data variables:\n", + " Band1 (time, lat, lon) float32 671MB dask.array\n", + " crs (time) object 40B dask.array\n", + "Attributes:\n", + " Conventions: CF-1.5\n", + " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", + " history: Tue Feb 04 18:40:28 2025: GDAL CreateCopy( /data/unmasked/2...\n" + ] + } + ], + "source": [ + "# Print the data now contained within the SNODAS repo\n", + "snodas_data = new_repo.retrieve_dataset()\n", + "print(snodas_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "bbefb68a-b747-449e-b7da-4c61c6f4a2e0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "zz_ssmv11034tS__T0001TTNATS2010*.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.35s/files]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset has been appended on the time dimension. Commit: 8DCP1J64FV48Z13XWK6G\n" + ] + } + ], + "source": [ + "# Much like the 09 SNODAS files were collected, do the same for 2010\n", + "snodas_10_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + " location=NGWPCLocations.SNODAS_REF.path,\n", + " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", + " file_type=awf_utils.FileType.NETCDF,\n", + " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2010*.nc\",\n", + " loadable_vars=['crs'],\n", + " testing_file_quantity=5\n", + ")\n", + "\n", + "# Append 2010 data to SNODAS repo with a new snapshot\n", + "new_repo.append_virt_data_to_store(vds=snodas_10_vds, append_dim=\"time\", commit=\"Appended new data from the year 2010\")" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "c5cfc9ee-0357-404f-8535-c414409ac58e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", + "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Message:\tAppended new data from the year 2010\n", + "\n", + "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", + "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Message:\tFirst commit! 09 data added.\n", + "\n", + "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", + "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Message:\tRepository initialized\n", + "\n" + ] + } + ], + "source": [ + "# Now that we have another new snapshot with 2010 data, reprint the repo ancestry\n", + "new_repo.print_history()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "f9a3d55d-7d51-4317-9dc8-cf41316d3fea", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 1GB\n", + "Dimensions: (lat: 4096, lon: 8192, time: 10)\n", + "Coordinates:\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", + "Data variables:\n", + " crs (time) object 80B dask.array\n", + " Band1 (time, lat, lon) float32 1GB dask.array\n", + "Attributes:\n", + " Conventions: CF-1.5\n", + " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", + " history: Tue Feb 04 19:54:02 2025: GDAL CreateCopy( /data/unmasked/2...\n" + ] + } + ], + "source": [ + "# Print the new repo collection with both 2009 and 2010 data\n", + "snodas_data = new_repo.retrieve_dataset()\n", + "print(snodas_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "e8c16d28-1933-48fd-8cfc-31dd18d8ed7d", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 671MB\n", + "Dimensions: (time: 5, lat: 4096, lon: 8192)\n", + "Coordinates:\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + "Data variables:\n", + " Band1 (time, lat, lon) float32 671MB dask.array\n", + " crs (time) object 40B dask.array\n", + "Attributes:\n", + " Conventions: CF-1.5\n", + " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", + " history: Tue Feb 04 18:40:28 2025: GDAL CreateCopy( /data/unmasked/2...\n" + ] + } + ], + "source": [ + "# Retrieve and print the data from the previous snapshot, before 2010 data was added\n", + "prev_snap_snodas_data = new_repo.retrieve_prev_snapshot()\n", + "print(prev_snap_snodas_data)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "3d940692-0407-4c46-8df2-5a0036f4420b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "zz_ssmv11034tS__T0001TTNATS2011*.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.36s/files]\u001b[0m\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dataset has been appended on the time dimension. Commit: ZESC6X2MJVJSYDASQY6G\n" + ] + } + ], + "source": [ + "# Make a new feature branch based on \"main\" to add 2011 data\n", + "new_repo.create_new_branch(name=\"2011_feature\")\n", + "\n", + "# Much like the 09 SNODAS files were collected, do the same for 2010\n", + "snodas_11_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + " location=NGWPCLocations.SNODAS_REF.path,\n", + " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", + " file_type=awf_utils.FileType.NETCDF,\n", + " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2011*.nc\",\n", + " loadable_vars=['crs'],\n", + " testing_file_quantity=5\n", + ")\n", + "\n", + "# Append 2011 data to SNODAS repo's new branch with a new snapshot\n", + "new_repo.append_virt_data_to_store(vds=snodas_11_vds, append_dim=\"time\", commit=\"Appended new data from the year 2011\", branch=\"2011_feature\")" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "8386ab8e-02ef-4d87-8b55-91a26bb76675", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NEW BRANCH =====================================\n", + "Snapshot ID:\tZESC6X2MJVJSYDASQY6G\n", + "Timestamp:\t2025-06-03 22:52:53.279869+00:00\n", + "Message:\tAppended new data from the year 2011\n", + "\n", + "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", + "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Message:\tAppended new data from the year 2010\n", + "\n", + "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", + "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Message:\tFirst commit! 09 data added.\n", + "\n", + "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", + "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Message:\tRepository initialized\n", + "\n", + "MAIN BRANCH ====================================\n", + "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", + "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Message:\tAppended new data from the year 2010\n", + "\n", + "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", + "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Message:\tFirst commit! 09 data added.\n", + "\n", + "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", + "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Message:\tRepository initialized\n", + "\n" + ] + } + ], + "source": [ + "# Now that we have a new branch with new 2011 data, print the history of both branches\n", + "print(\"NEW BRANCH =====================================\")\n", + "new_repo.print_history(branch=\"2011_feature\")\n", + "print(\"MAIN BRANCH ====================================\")\n", + "new_repo.print_history(branch=\"main\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "43814441-7461-4d93-99f0-a839b9324d99", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "NEW BRANCH ========================================================\n", + " Size: 2GB\n", + "Dimensions: (time: 15, lat: 4096, lon: 8192)\n", + "Coordinates:\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * time (time) datetime64[ns] 120B 2009-12-09 2009-12-10 ... 2011-01-05\n", + "Data variables:\n", + " Band1 (time, lat, lon) float32 2GB dask.array\n", + " crs (time) object 120B dask.array\n", + "Attributes:\n", + " Conventions: CF-1.5\n", + " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", + " history: Tue Feb 04 19:00:12 2025: GDAL CreateCopy( /data/unmasked/2...\n", + "===================================================================\n", + "MAIN BRANCH =======================================================\n", + " Size: 1GB\n", + "Dimensions: (lat: 4096, lon: 8192, time: 10)\n", + "Coordinates:\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", + "Data variables:\n", + " crs (time) object 80B dask.array\n", + " Band1 (time, lat, lon) float32 1GB dask.array\n", + "Attributes:\n", + " Conventions: CF-1.5\n", + " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", + " history: Tue Feb 04 19:54:02 2025: GDAL CreateCopy( /data/unmasked/2...\n", + "===================================================================\n" + ] + } + ], + "source": [ + "# Print both branch's datasets - notice the new one has 2011 data\n", + "snodas_data_feat_branch = new_repo.retrieve_dataset(branch=\"2011_feature\")\n", + "print(\"NEW BRANCH ========================================================\")\n", + "print(snodas_data_feat_branch)\n", + "print(\"===================================================================\")\n", + "print(\"MAIN BRANCH =======================================================\")\n", + "print(snodas_data)\n", + "print(\"===================================================================\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "a69a8c8e-0003-4738-964e-7bd136412264", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Icechunk repo @ s3://hydrofabric-data/ic_testing/snodas_yearly_append_test in its entirety was successfully deleted.\n" + ] + } + ], + "source": [ + "# Cleanup - delete the test repo entirely\n", + "new_repo.delete_repo(quiet=True)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.0rc1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py index b294750..3babe5f 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py @@ -182,7 +182,7 @@ def gen_virtual_chunk_containers( ] return v_chunks - def create_session(self, read_only: bool | None = True, branch: str | None = "main") -> ic.Session: + def create_session(self, read_only: bool | None = True, snap_id: str | None = None, branch: str | None = "main") -> ic.Session: """ Open a session under the repo defined by an instance of IcechunkS3Repo @@ -190,6 +190,9 @@ def create_session(self, read_only: bool | None = True, branch: str | None = "ma ---------- read_only : bool | None, optional Denotes if the session will be read-only or writable. By default True + snap_id: str | None, optional + The Snapshot ID of a specific commit to base the session on. Leave out if you want the + latest. By default None branch : str | None, optional Icechunk repo branch to be opened. By default "main" @@ -200,26 +203,34 @@ def create_session(self, read_only: bool | None = True, branch: str | None = "ma can be configured. """ if read_only: - return self.repo.readonly_session(branch) + if snap_id: + return self.repo.readonly_session(snapshot_id=snap_id) + else: + return self.repo.readonly_session(branch) return self.repo.writable_session(branch) - def retrieve_dataset(self, read_only: bool | None = True, branch: str | None = "main") -> xr.Dataset: + def retrieve_dataset(self, branch: str | None = "main", snap_id: str | None = None) -> xr.Dataset: """ Returns the repo's store contents as an Xarray dataset Parameters ---------- - read_only : bool | None, optional - Denotes if the session will be read-only or writable, by default True + branch : str | None, optional Icechunk repo branch to be opened, by default "main" + snap_id : str | None, optional + The Snapshot ID of a specific commit you want to retrieve. Leave out if you want the + latest. By default None. Returns ------- xr.Dataset Xarray dataset representation of the Icechunk store """ - session = self.create_session(read_only, branch) + if snap_id: + session = self.create_session(read_only=True, branch=branch, snap_id=snap_id) + else: + session = self.create_session(read_only=True, branch=branch) ds = xr.open_zarr(session.store, consolidated=False, chunks={}) # geotiff rasters saved in zarr need to be convereted to spatial-aware xarray with rioxarray @@ -228,6 +239,22 @@ def retrieve_dataset(self, read_only: bool | None = True, branch: str | None = " return ds + def retrieve_rollback_to_snapshot(self, snap_id: str, branch: str | None = "main") -> xr.Dataset: + """Retrieves the repo data a specific snapshot ID""" + return self.retrieve_dataset(branch=branch, snap_id=snap_id) + + def retrieve_rollback_n_snapshots(self, n: int, branch: str | None = "main") -> xr.Dataset: + """Retrieves the repo data from snapshot(s) ago""" + try: + snap_id = list(self.repo.ancestry(branch=branch))[n].id + except IndexError: + print(f"Rolled back too far! Branch ({branch}) has fewer previous commits than was specified") + return self.retrieve_rollback_to_snapshot(snap_id, branch=branch) + + def retrieve_prev_snapshot(self, branch: str | None = "main") -> xr.Dataset: + """Retrieves the repo data one snapshot ago""" + return self.retrieve_rollback_n_snapshots(n=1, branch=branch) + def write_dataset( self, ds: xr.Dataset, commit: str, virtualized: bool | None = False, branch: str | None = "main" ): @@ -282,6 +309,29 @@ def append_virt_data_to_store( snapshot = session.commit(commit) print(f"Dataset has been appended on the {append_dim} dimension. Commit: {snapshot}") + def create_new_branch_from_snapshot(self, name: str, snap_id: str): + """Create a new branch that is based on a specific snapshot ID""" + self.repo.create_branch(name, snapshot_id=snap_id) + + def create_new_branch(self, name: str, origin: str | None = "main"): + """Create a new branch that is based on the most recent snapshot on a given branch""" + branch_latest_snap_id = self.repo.lookup_branch(origin) + self.create_new_branch_from_snapshot(name, snap_id=branch_latest_snap_id) + + def print_history(self, branch: str | None = "main"): + """ + Prints a nicely-formatted summary of the history of the icechunk repo branch. + + Parameters + ---------- + branch : str | None, optional + The branch whose history will be printed. By default "main" + """ + for ancestor in self.repo.ancestry(branch=branch): + print(f"Snapshot ID:\t{ancestor.id}") + print(f"Timestamp:\t{ancestor.written_at}") + print(f"Message:\t{ancestor.message}\n") + def retrieve_and_convert_to_tif( self, dest: str | Path, From d0afb92105e6aafeabfb437e005d0c5883bb7baa Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 10 Jun 2025 11:03:40 -0400 Subject: [PATCH 52/97] NGWPC 6318 + NGWPC 6510: Iceberg Terraform + S3 --- .gitignore | 16 + .pyiceberg.yaml | 5 - docker/Dockerfile.api | 4 - src/icefabric_api/app/conftest.py | 12 +- src/icefabric_api/app/main.py | 8 +- .../app/routers/hydrofabric/router.py | 8 +- .../routers/streamflow_observations/router.py | 10 +- src/icefabric_manage/builds/README.md | 47 + src/icefabric_manage/builds/build_fema_ble.py | 48 + src/icefabric_manage/builds/build_fema_mip.py | 48 + .../builds/build_hydrofabric.py | 39 +- .../build_iceberg_bathymetry_ml_auxiliary.py | 80 +- .../build_usgs_streamflow_observations.py | 36 +- src/icefabric_manage/pyproject.toml | 4 +- .../src/icefabric_manage/_api.py | 7 +- src/icefabric_manage/terraform/README.md | 137 + .../environments/test/.terraform.lock.hcl | 24 + .../terraform/environments/test/backend.tf | 9 + .../terraform/environments/test/main.tf | 28 + .../environments/test/terraform.tfvars | 8 + .../terraform/environments/test/variables.tf | 33 + .../terraform/iceberg_demo.py | 58 + .../terraform/modules/iceberg/main.tf | 142 + .../terraform/modules/iceberg/variables.tf | 33 + src/icefabric_tools/pyproject.toml | 6 +- src/icefabric_tools/tests/conftest.py | 29 +- uv.lock | 2803 ++++++++--------- 27 files changed, 2154 insertions(+), 1528 deletions(-) delete mode 100644 .pyiceberg.yaml create mode 100644 src/icefabric_manage/builds/README.md create mode 100644 src/icefabric_manage/builds/build_fema_ble.py create mode 100644 src/icefabric_manage/builds/build_fema_mip.py create mode 100644 src/icefabric_manage/terraform/README.md create mode 100644 src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl create mode 100644 src/icefabric_manage/terraform/environments/test/backend.tf create mode 100644 src/icefabric_manage/terraform/environments/test/main.tf create mode 100644 src/icefabric_manage/terraform/environments/test/terraform.tfvars create mode 100644 src/icefabric_manage/terraform/environments/test/variables.tf create mode 100644 src/icefabric_manage/terraform/iceberg_demo.py create mode 100644 src/icefabric_manage/terraform/modules/iceberg/main.tf create mode 100644 src/icefabric_manage/terraform/modules/iceberg/variables.tf diff --git a/.gitignore b/.gitignore index aff49d6..45cdff4 100644 --- a/.gitignore +++ b/.gitignore @@ -186,3 +186,19 @@ data/ *.tiff *.tif examples/iceberg_catalog/metadata/ + +# Local Terraform state +*.tfstate +*.tfstate.backup + +# Crash log files +crash.log + +# CLI configuration +.terraform/ + +# Pyiceberg config file +.pyiceberg.yaml + +# Terraform plan output (optional unless you want to inspect later) +*.tfplan diff --git a/.pyiceberg.yaml b/.pyiceberg.yaml deleted file mode 100644 index 0cef7d0..0000000 --- a/.pyiceberg.yaml +++ /dev/null @@ -1,5 +0,0 @@ -catalog: - hydrofabric: - type: sql - uri: sqlite:///../..//warehouse/icefabric_catalog.db - warehouse: file:///../..//warehouse diff --git a/docker/Dockerfile.api b/docker/Dockerfile.api index 31c449f..cd44310 100644 --- a/docker/Dockerfile.api +++ b/docker/Dockerfile.api @@ -33,10 +33,6 @@ ENV PATH="/app/.venv/bin:$PATH" RUN uv sync RUN uv pip install -e src/icefabric_api -WORKDIR /app/src/icefabric_manage/scripts -RUN python build_hydrofabric.py -RUN python build_usgs_streamflow_observations.py - # Run the API WORKDIR /app/src/icefabric_api CMD ["python", "-m", "app.main"] diff --git a/src/icefabric_api/app/conftest.py b/src/icefabric_api/app/conftest.py index 0dc546f..40ba5d7 100644 --- a/src/icefabric_api/app/conftest.py +++ b/src/icefabric_api/app/conftest.py @@ -1,7 +1,13 @@ -import pytest -from fastapi.testclient import TestClient +import os +from pathlib import Path -from app.main import app +os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) +print(f"PYICEBERG_HOME set to: {os.environ['PYICEBERG_HOME']}") + +import pytest # noqa: E402 +from fastapi.testclient import TestClient # noqa: E402 + +from app.main import app # noqa: E402 @pytest.fixture(scope="session") diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py index 9a579ee..ec9180c 100644 --- a/src/icefabric_api/app/main.py +++ b/src/icefabric_api/app/main.py @@ -1,10 +1,12 @@ +import os +from pathlib import Path + import uvicorn from fastapi import FastAPI, status from pydantic import BaseModel from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router -from app.routers.module_params.router import api_router as module_params_router app = FastAPI( title="Icefabric API", @@ -24,7 +26,7 @@ class HealthCheck(BaseModel): # Include routers app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") -app.include_router(module_params_router, prefix="/v1") +# app.include_router(module_params_router, prefix="/v1") @app.head( @@ -41,4 +43,6 @@ def get_health() -> HealthCheck: if __name__ == "__main__": + os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) + print(os.environ["PYICEBERG_HOME"]) uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="info") diff --git a/src/icefabric_api/app/routers/hydrofabric/router.py b/src/icefabric_api/app/routers/hydrofabric/router.py index ac864e5..e284ce9 100644 --- a/src/icefabric_api/app/routers/hydrofabric/router.py +++ b/src/icefabric_api/app/routers/hydrofabric/router.py @@ -11,12 +11,6 @@ api_router = APIRouter(prefix="/hydrofabric") -catalog_settings: dict = { - "type": "sql", - "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", - "warehouse": "file:///tmp/warehouse", -} - @api_router.get("/{identifier}/gpkg") async def get_hydrofabric_subset_gpkg( @@ -34,7 +28,7 @@ async def get_hydrofabric_subset_gpkg( from a given identifier and returns all related geospatial layers as a downloadable geopackage file. """ - catalog = load_catalog("hydrofabric", **catalog_settings) + catalog = load_catalog("glue") unique_id = str(uuid.uuid4())[:8] temp_dir = pathlib.Path(tempfile.gettempdir()) tmp_path = temp_dir / f"hydrofabric_subset_{identifier}_{unique_id}.gpkg" diff --git a/src/icefabric_api/app/routers/streamflow_observations/router.py b/src/icefabric_api/app/routers/streamflow_observations/router.py index e2c3055..fc0ee79 100644 --- a/src/icefabric_api/app/routers/streamflow_observations/router.py +++ b/src/icefabric_api/app/routers/streamflow_observations/router.py @@ -8,12 +8,6 @@ api_router = APIRouter(prefix="/streamflow_observations") -catalog_settings: dict = { - "type": "sql", - "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", - "warehouse": "file:///tmp/warehouse", -} - # TODO add other gauges used by NWM class DataSource(str, Enum): @@ -25,7 +19,7 @@ class DataSource(str, Enum): # Configuration for each data source DATA_SOURCE_CONFIG = { DataSource.USGS: { - "namespace": "observations", + "namespace": "streamflow_observations", "table": "usgs_hourly", "time_column": "time", "units": "cms", @@ -37,7 +31,7 @@ class DataSource(str, Enum): def get_catalog_and_table(data_source: DataSource): """Get catalog and table for a given data source""" config = DATA_SOURCE_CONFIG[data_source] - catalog = load_catalog(config["namespace"], **catalog_settings) + catalog = load_catalog("glue") table = catalog.load_table(f"{config['namespace']}.{config['table']}") return catalog, table, config diff --git a/src/icefabric_manage/builds/README.md b/src/icefabric_manage/builds/README.md new file mode 100644 index 0000000..d5c555d --- /dev/null +++ b/src/icefabric_manage/builds/README.md @@ -0,0 +1,47 @@ +This folder is set up to build remote iceberg catalogs to the S3 endpoints. The following template can be used to easily create a build script: + +The following variables must always be set when building + +```python +import argparse + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError + +from icefabric_manage import build + +load_dotenv() + +def build_table(file_dir: str): + """Builds the hydrofabric namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "" + . + . + . + build( + catalog=catalog, + parquet_file=f"{file_dir}/{layer}.parquet", + namespace=namespace, + table_name=layer, + location="s3://fim-services-data-test/icefabric_metadata/" + ) + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="A script to build a pyiceberg catalog in the S3 endpoint" + ) + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) + +``` diff --git a/src/icefabric_manage/builds/build_fema_ble.py b/src/icefabric_manage/builds/build_fema_ble.py new file mode 100644 index 0000000..8ad21d2 --- /dev/null +++ b/src/icefabric_manage/builds/build_fema_ble.py @@ -0,0 +1,48 @@ +import argparse +from pathlib import Path + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError + +from icefabric_manage import build + +load_dotenv() + + +def build_table(file_dir: str): + """Builds the hydrofabric namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "ble_xs" + try: + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") + for folder in Path(file_dir).glob("ble_*"): + huc_number = folder.name.split("_", 1)[1] + print(f"building HUC XS: {huc_number}") + build( + catalog=catalog, + parquet_file=f"{file_dir}/ble_{huc_number}/huc_{huc_number}.parquet", + namespace=namespace, + table_name=huc_number, + location="s3://fim-services-data-test/icefabric_metadata/", + ) + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="A script to build a pyiceberg catalog in the S3 endpoint for the FEMA-BLE data" + ) + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) diff --git a/src/icefabric_manage/builds/build_fema_mip.py b/src/icefabric_manage/builds/build_fema_mip.py new file mode 100644 index 0000000..cae4e2b --- /dev/null +++ b/src/icefabric_manage/builds/build_fema_mip.py @@ -0,0 +1,48 @@ +import argparse +from pathlib import Path + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError + +from icefabric_manage import build + +load_dotenv() + + +def build_table(file_dir: str): + """Builds the hydrofabric namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "mip_xs" + try: + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") + for folder in Path(file_dir).glob("mip_*"): + huc_number = folder.name.split("_", 1)[1] + print(f"building HUC XS: {huc_number}") + build( + catalog=catalog, + parquet_file=f"{file_dir}/mip_{huc_number}/huc_{huc_number}.parquet", + namespace=namespace, + table_name=huc_number, + location="s3://fim-services-data-test/icefabric_metadata/", + ) + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="A script to build a pyiceberg catalog in the S3 endpoint for the FEMA-BLE data" + ) + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) diff --git a/src/icefabric_manage/builds/build_hydrofabric.py b/src/icefabric_manage/builds/build_hydrofabric.py index e438391..c4d444a 100644 --- a/src/icefabric_manage/builds/build_hydrofabric.py +++ b/src/icefabric_manage/builds/build_hydrofabric.py @@ -1,23 +1,28 @@ -from pathlib import Path +import argparse from dotenv import load_dotenv from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError from icefabric_manage import build load_dotenv() -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } +def build_table(file_dir: str): + """Builds the hydrofabric namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ + catalog = load_catalog("glue") # Using an AWS Glue Endpoint namespace = "hydrofabric" - catalog = load_catalog(namespace, **catalog_settings) + try: + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") layers = [ "divide-attributes", "divides", @@ -34,8 +39,18 @@ print(f"building layer: {layer}") build( catalog=catalog, - parquet_file=f"s3://hydrofabric-data/icefabric/hydrofabric/{layer}.parquet", + parquet_file=f"{file_dir}/{layer}.parquet", namespace=namespace, table_name=layer, + location="s3://fim-services-data-test/icefabric_metadata/", ) - print(f"Build successful. Files written into metadata store @ {warehouse_path}") + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) diff --git a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py index 4f3b2ea..f7f2655 100644 --- a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py +++ b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py @@ -1,40 +1,68 @@ +import argparse from pathlib import Path from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import IcebergTable +from icefabric_manage import build load_dotenv() -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_name = "pyiceberg_catalog" - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/{catalog_name}.db", - "warehouse": f"file://{warehouse_path}", - } - - iceberg_table = IcebergTable() +def build_table(file_dir: Path): + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "bathymetry_ml_auxiliary" try: - # Establish new Iceberg catalog - iceberg_table.establish_catalog( - catalog_name=catalog_name, - namespace="bathymetry_ml_auxiliary", - catalog_settings=catalog_settings, - ) + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") + + layers = [ + "vpuid=01", + "vpuid=02", + "vpuid=03N", + "vpuid=03S", + "vpuid=03W", + "vpuid=04", + "vpuid=05", + "vpuid=06", + "vpuid=07", + "vpuid=08", + "vpuid=09", + "vpuid=10L", + "vpuid=10U", + "vpuid=11", + "vpuid=12", + "vpuid=13", + "vpuid=14", + "vpuid=15", + "vpuid=16", + "vpuid=17", + ] - # Generate tables w/in the new Iceberg catalog for all parquets detected in s3 - iceberg_table.create_table_for_all_s3parquets( - app_name="bathymetry_ml_auxiliary", bucket_name="ngwpc-bathymetry" + for layer in layers: + print(f"building layer: {layer}") + # The following warning is expected: + # Iceberg does not have a dictionary type. will be inferred as int32 on read. + # Arrow will make columns with a single, non-unique, value into a dictionary for ease of writing/loading + # Thus, when writing to pyiceberg it needs to remove that. + build( + catalog=catalog, + parquet_file=f"{file_dir}/{layer}/ml_auxiliary_data.parquet", + namespace=namespace, + table_name=layer, + location="s3://fim-services-data-test/icefabric_metadata/", ) + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="A script to build a pyiceberg catalog for bathymetric data in the S3 endpoint" + ) - except NamespaceAlreadyExistsError as e: - raise FileExistsError( - f"Iceberg table and namespace already exist. Remove catalog from {warehouse_path} to continue" - ) from e + parser.add_argument("--files", help="The local file dir where the files are located") - print(f"Build successful. Files written into metadata store @ {warehouse_path}") + args = parser.parse_args() + build_table(file_dir=args.files) diff --git a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py index f112418..0b594ff 100644 --- a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py +++ b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py @@ -1,27 +1,35 @@ -from pathlib import Path +import argparse from dotenv import load_dotenv from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError from icefabric_manage import build load_dotenv() -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } - - namespace = "observations" - catalog = load_catalog(namespace, **catalog_settings) + +def build_table(file_dir): + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "streamflow_observations" + try: + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") build( catalog=catalog, - parquet_file="s3://hydrofabric-data/icefabric/observations/usgs_hourly.parquet", + parquet_file=f"{file_dir}/usgs_hourly.parquet", namespace=namespace, table_name="usgs_hourly", + location="s3://fim-services-data-test/icefabric_metadata/", ) - print(f"Build successful. Files written into metadata store @ {warehouse_path}") + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index f358619..aac45b4 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -21,9 +21,9 @@ dependencies = [ "numpy==2.2.6", "pandas==2.2.3", "geopandas==1.0.1", - "s3fs==2025.5.0", + "s3fs==2025.5.1", "pyarrow==20.0.0", - "pyiceberg[sql-sqlite]==0.9.0", + "pyiceberg[s3fs,glue]==0.9.1", "python-dotenv==1.1.0", ] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index 7d61784..b626c19 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -4,7 +4,7 @@ from pyiceberg.catalog import Catalog -def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str) -> None: +def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str, location: str) -> None: """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. Parameters @@ -14,10 +14,6 @@ def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str) file_dir : Path The path to the parquet files to add into the iceberg catalog """ - if not any(ns == (namespace,) for ns in catalog.list_namespaces()): - catalog.create_namespace(namespace) - print(f"Created {namespace} namespace") - if catalog.table_exists(f"{namespace}.{table_name}"): print(f"Table {table_name} already exists. Skipping build") else: @@ -25,5 +21,6 @@ def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str) iceberg_table = catalog.create_table( f"{namespace}.{table_name}", schema=arrow_table.schema, + location=location, ) iceberg_table.append(arrow_table) diff --git a/src/icefabric_manage/terraform/README.md b/src/icefabric_manage/terraform/README.md new file mode 100644 index 0000000..13940e0 --- /dev/null +++ b/src/icefabric_manage/terraform/README.md @@ -0,0 +1,137 @@ +# AWS S3 Tables with Apache Iceberg - Terraform Implementation + +This directory contains PoC Terraform IaC for deploying Apache Iceberg tables using the AWS S3 Tables service with AWS Glue catalog integration. It also contains a basic demo / test python script used to verify things. + +## Architecture Overview + +The infrastructure creates: +- **AWS S3 Tables bucket** - Managed storage for Iceberg table data +- **S3 Tables namespace and table** - Logical organization for tables +- **AWS Glue Catalog database** - Metadata storage for table schemas +- **Lake Formation permissions** - Access control and governance +- **IAM policies** - Secure access between services + +## Prerequisites + +### AWS Requirements +- AWS CLI configured with appropriate credentials. (Older versions may not support AWS S3 Tables) +- Terraform >= 1.0 +- AWS Account with permissions (basically Admin due to IAM requirements) for: + - S3 Tables + - AWS Glue + - Lake Formation + - IAM + +### ⚠️ Critical: Enable S3 Table Buckets Integration + +**This step must be completed before running Terraform**, otherwise the deployment will fail. + +1. Navigate to the [S3 Table Buckets Console](https://console.aws.amazon.com/s3tables/home) in your target region +2. Locate the section titled **"Integration with AWS analytics services"** +3. Click the **"Enable integration"** button +4. Confirm that the integration status shows **"Enabled"** for your deployment region + +This integration allows services like Athena, Glue, Redshift, and EMR to interact with S3 Table Buckets. Without this step, your Iceberg tables won't be accessible through these analytics services. + +> **Note**: This is a one-time setup per AWS region. Once enabled, all future S3 Table Buckets in that region will have access to AWS analytics services integration. + +### Python Requirements +- Python 3.8+ +- pyiceberg python module w/deps +- boto3 (for AWS SDK) + +## Quick Start + +### 1. High Level Deploy Infrastructure + +Create a `terraform.tfvars` file replacing the values below as appropriate for your environment or deploy: + +```hcl +env = "dev" +application = "myapp" +team = "NGWPC" +region = "us-east-1" +identity_center_role_arn = "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_DataRole" + +# Optional: Specify Lake Formation admins +lakeformation_admin_arns = [ + "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_DataRole", + "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Admin" +] +``` + +Deploy the infrastructure: + +```bash +terraform init +terraform plan +terraform apply +``` + +### 3. Set Environment Variables + +After deployment, set these environment variables for the Python demo: + +```bash +# From Terraform outputs +export ICEBERG_WAREHOUSE_PATH=$(terraform output -raw s3tables_table_warehouse_location) +export AWS_DEFAULT_REGION="us-east-1" +``` + +### 4. Install Python Dependencies in your preferred active virtual environment + +```bash +pip install pyiceberg boto3 mypy_boto3_glue pyarrow +``` + +### 5. Run the Demo + +```bash +python iceberg_demo.py +``` + +## Terraform Configuration + +### Variables + +| Variable | Description | Type | Default | Required | +|----------|-------------|------|---------|----------| +| `region` | AWS region | string | `us-east-1` | No | +| `env` | Environment name (test/oe/other) | string | - | Yes | +| `application` | Application name | string | - | Yes | +| `team` | Team name (for future tagging if supported) | string | - | Yes | +| `identity_center_role_arn` | IAM role ARN for accessing resources | string | - | Yes | +| `lakeformation_admin_arns` | Lake Formation administrator ARNs | list(string) | `[]` | No | + +### Outputs + +| Output | Description | +|--------|-------------| +| `s3tables_bucket_arn` | ARN of the S3 Tables bucket | +| `s3tables_table_warehouse_location` | Warehouse location for Iceberg tables (devs need this!!!) | +| `glue_database_name` | Name of the Glue catalog database | +| `lakeformation_admins` | List of Lake Formation administrators | + +## Python Integration + +### Basic Usage + +The provided `iceberg_demo.py` demonstrates: +- Connecting to AWS Glue catalog +- Creating/loading Iceberg tables +- Very Basic schema definition + +### Configuration + +The Python script uses these environment variables: +- `ICEBERG_WAREHOUSE_PATH` - S3 Tables warehouse location +- `AWS_REGION` - AWS region for services +- `AWS_DEFAULT_REGION` - Default AWS region + +## Permissions and Security + +### Lake Formation Integration + +The infrastructure automatically configures basic Lake Formation settings. This can get very granular in the future. +- Database-level permissions for the specified Identity Center role (SoftwareEngineersFull) +- Table-level permissions are supported, but have not been tested diff --git a/src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl b/src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl new file mode 100644 index 0000000..abf9ba6 --- /dev/null +++ b/src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl @@ -0,0 +1,24 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/hashicorp/aws" { + version = "5.99.1" + hashes = [ + "h1:967WCGUW/vgrjUMBvC+HCie1DVgOXHwUkhm2ng3twJw=", + "zh:00b0a61c6d295300f0aa7a79a7d40e9f836164f1fff816d38324c148cd846887", + "zh:1ee9d5ccb67378704642db62113ac6c0d56d69408a9c1afb9a8e14b095fc0733", + "zh:2035977ed418dcb18290785c1eeb79b7133b39f718c470346e043ac48887ffc7", + "zh:67e3ca1bf7061900f81cf958d5c771a2fd6048c2b185bec7b27978349b173a90", + "zh:87fadbe5de7347ede72ad879ff8d8d9334103cd9aa4a321bb086bfac91654944", + "zh:901d170c457c2bff244a2282d9de595bdb3ebecc33a2034c5ce8aafbcff66db9", + "zh:92c07d6cf530679565b87934f9f98604652d787968cce6a3d24c148479b7e34b", + "zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425", + "zh:a7d4803b4c5ff17f029f8b270c91480442ece27cec7922c38548bcfea2ac2d26", + "zh:afda848da7993a07d29018ec25ab6feda652e01d4b22721da570ce4fcc005292", + "zh:baaf16c98b81bad070e0908f057a97108ecd6e8c9f754d7a79b18df4c8453279", + "zh:c3dd496c5014427599d6b6b1c14c7ebb09a15df78918ae0be935e7bfa83b894c", + "zh:e2b84c1d40b3f2c4b1d74bf170b9e932983b61bac0e6dab2e36f5057ddcc997f", + "zh:e49c92cb29c53b4573ed4d9c946486e6bcfc1b63f1aee0c79cc7626f3d9add03", + "zh:efae8e339c4b13f546e0f96c42eb95bf8347de22e941594849b12688574bf380", + ] +} diff --git a/src/icefabric_manage/terraform/environments/test/backend.tf b/src/icefabric_manage/terraform/environments/test/backend.tf new file mode 100644 index 0000000..75551d5 --- /dev/null +++ b/src/icefabric_manage/terraform/environments/test/backend.tf @@ -0,0 +1,9 @@ +terraform { + backend "s3" { + bucket = "ngwpc-infra-test" + key = "terraform/icefabric/test/edfs/terraform.tfstate" + region = "us-east-1" + encrypt = true # Encrypt the state file + #dynamodb_table = "dynamodb-lock-table" # Optional / FUTURE for state locking + } +} diff --git a/src/icefabric_manage/terraform/environments/test/main.tf b/src/icefabric_manage/terraform/environments/test/main.tf new file mode 100644 index 0000000..55aa3bd --- /dev/null +++ b/src/icefabric_manage/terraform/environments/test/main.tf @@ -0,0 +1,28 @@ +provider "aws" { + region = var.region +} + +module "iceberg" { + source = "../../modules/iceberg" # Path to the iceberg module + env = var.env + team = var.team + application = var.application + identity_center_role_arn = var.identity_center_role_arn + lakeformation_admin_arns = var.lakeformation_admin_arns +} + +output "s3tables_bucket_arn" { + value = module.iceberg.s3tables_bucket_arn +} + +output "s3tables_table_warehouse_location" { + value = module.iceberg.s3tables_table_warehouse_location +} + +output "glue_database_name" { + value = module.iceberg.glue_database_name +} + +output "lakeformation_admins" { + value = module.iceberg.lakeformation_admins +} diff --git a/src/icefabric_manage/terraform/environments/test/terraform.tfvars b/src/icefabric_manage/terraform/environments/test/terraform.tfvars new file mode 100644 index 0000000..518b338 --- /dev/null +++ b/src/icefabric_manage/terraform/environments/test/terraform.tfvars @@ -0,0 +1,8 @@ +# Test Deploy +env = "test" +application = "icefabric" +region = "us-east-1" +team = "EDFS" +identity_center_role_arn = "arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_SoftwareEngineersFull_529cc40c0355e893" +lakeformation_admin_arns = ["arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_SoftwareEngineersFull_529cc40c0355e893", + "arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdminLogin_fe24f9db156f282d"] diff --git a/src/icefabric_manage/terraform/environments/test/variables.tf b/src/icefabric_manage/terraform/environments/test/variables.tf new file mode 100644 index 0000000..ad7adc0 --- /dev/null +++ b/src/icefabric_manage/terraform/environments/test/variables.tf @@ -0,0 +1,33 @@ +# variables.tf + +variable "region" { + description = "AWS region" + type = string + default = "us-east-1" +} + +variable "env" { + description = "Environment name" + type = string +} + +variable "application" { + description = "Application name" + type = string +} + +variable "team" { + description = "Team name" + type = string +} + +variable "identity_center_role_arn" { + description = "ARN of the Identity Center role that will access the resources" + type = string +} + +variable "lakeformation_admin_arns" { + description = "List of ARNs to set as Lake Formation administrators" + type = list(string) + default = [] # Will be populated with current account or specific users/roles +} \ No newline at end of file diff --git a/src/icefabric_manage/terraform/iceberg_demo.py b/src/icefabric_manage/terraform/iceberg_demo.py new file mode 100644 index 0000000..d80186b --- /dev/null +++ b/src/icefabric_manage/terraform/iceberg_demo.py @@ -0,0 +1,58 @@ +import os + +from pyiceberg.catalog import load_catalog +from pyiceberg.schema import Schema +from pyiceberg.types import LongType, NestedField, StringType + +# Define warehouse path as a variable at the top (replace with your actual path or load dynamically) +WAREHOUSE_PATH = os.getenv("ICEBERG_WAREHOUSE_PATH") +TABLE_SUBPATH = "tables/icefabric" # Please avoid restricted directories + +# Debug: Print AWS region and Warehouse environment variables +print(f"AWS_DEFAULT_REGION from env: {os.getenv('AWS_DEFAULT_REGION')}") +print(f"Using warehouse path: {WAREHOUSE_PATH}") + +# Configure the catalog to use AWS Glue +config = { + "type": "glue", + "s3.endpoint": "s3.us-east-1.amazonaws.com", + "warehouse": f"{WAREHOUSE_PATH}", + "region": "us-east-1", + "glue_region": "us-east-1", +} +print(f"Catalog configuration: {config}") + +try: + catalog = load_catalog("glue", **config) + print("Catalog loaded successfully") +except Exception as e: + print(f"Error loading catalog: {e}") + raise + +# Define a schema for the Iceberg table (used if creating the table) +schema = Schema( + NestedField(field_id=1, name="id", field_type=LongType(), is_optional=False), + NestedField(field_id=2, name="name", field_type=StringType(), is_optional=True), +) + +# Load or create a table in the Glue catalog, pointing to S3 for storage +try: + table = catalog.load_table(("icefabric_db", "icefabric")) + print(f"Table loaded: {str(table)}") +except Exception as e: + print(f"Table not found, creating it: {e}") + try: + table = catalog.create_table( + identifier=("icefabric_db", "icefabric"), schema=schema, location=f"{TABLE_SUBPATH}" + ) + print(f"Table created: {str(table)}") + except Exception as create_error: + print(f"Error creating table: {create_error}") + raise + +# Example: List tables in the catalog to verify +try: + tables = catalog.list_tables("icefabric_db") + print(f"Tables in namespace: {tables}") +except Exception as list_error: + print(f"Error listing tables: {list_error}") diff --git a/src/icefabric_manage/terraform/modules/iceberg/main.tf b/src/icefabric_manage/terraform/modules/iceberg/main.tf new file mode 100644 index 0000000..c99b6d8 --- /dev/null +++ b/src/icefabric_manage/terraform/modules/iceberg/main.tf @@ -0,0 +1,142 @@ +provider "aws" { + region = var.region +} + +data "aws_caller_identity" "current" {} + +resource "aws_s3tables_table_bucket" "icefabric" { + name = "${var.env}-${var.application}" +} + +resource "aws_s3tables_namespace" "icefabric" { + namespace = var.application + table_bucket_arn = aws_s3tables_table_bucket.icefabric.arn +} + +resource "aws_s3tables_table" "icefabric" { + name = var.application + namespace = aws_s3tables_namespace.icefabric.namespace + table_bucket_arn = aws_s3tables_table_bucket.icefabric.arn + format = "ICEBERG" +} + +data "aws_iam_policy_document" "icefabric_bucket_policy_document" { + statement { + sid = "AllowGlueAccess" + effect = "Allow" + principals { + type = "Service" + identifiers = ["glue.amazonaws.com"] + } + actions = [ + "s3tables:*" + ] + resources = [ + "${aws_s3tables_table_bucket.icefabric.arn}/*", + aws_s3tables_table_bucket.icefabric.arn + ] + } + statement { + sid = "AllowAccountAccess" + effect = "Allow" + principals { + type = "AWS" + identifiers = ["arn:aws:iam::${data.aws_caller_identity.current.account_id}:root"] + } + actions = [ + "s3tables:*" + ] + resources = [ + "${aws_s3tables_table_bucket.icefabric.arn}/*", + aws_s3tables_table_bucket.icefabric.arn + ] + } +} + +resource "aws_s3tables_table_bucket_policy" "icefabric_policy" { + resource_policy = data.aws_iam_policy_document.icefabric_bucket_policy_document.json + table_bucket_arn = aws_s3tables_table_bucket.icefabric.arn +} + +# AWS Glue Catalog Database for Iceberg Tables Metadata +resource "aws_glue_catalog_database" "icefabric_db" { + name = "icefabric_db" + description = "Glue database for Iceberg tables in ${var.application} namespace" +} + +# Grant Lake Formation permissions for the database +resource "aws_lakeformation_permissions" "database_permissions" { + principal = var.identity_center_role_arn + permissions = [ + "CREATE_TABLE", + "DESCRIBE", + "ALTER" + ] + permissions_with_grant_option = [ + "CREATE_TABLE", + "DESCRIBE", + "ALTER" + ] + database { + name = aws_glue_catalog_database.icefabric_db.name + } +} + +# EDFS currently plans to manage Tables outside of Terraform, but one can grant permissions +# for table(s) (if it exists or after creation) in terraform +#resource "aws_lakeformation_permissions" "table_permissions" { +# principal = var.identity_center_role_arn +# permissions = [ +# "SELECT", +# "INSERT", +# "DELETE", +# "ALTER", +# "DESCRIBE" +# ] +# permissions_with_grant_option = [ +# "SELECT", +# "INSERT", +# "DELETE", +# "ALTER", +# "DESCRIBE" +# ] +# table { +# database_name = aws_glue_catalog_database.icefabric_db.name +# name = "icefabric" +# } +#} + +# Set Lake Formation Data Lake Settings (initialize Lake Formation) +resource "aws_lakeformation_data_lake_settings" "main" { + # Define Lake Formation administrators (This shows up as a popup when you enter the console if we don't set it via IaC.) + admins = length(var.lakeformation_admin_arns) > 0 ? var.lakeformation_admin_arns : [ + "arn:aws:iam::${data.aws_caller_identity.current.account_id}:root" + ] + + # Optional: Allow external data filtering (for cross-account access) + allow_external_data_filtering = false + + # Optional: Allow full table external data access + allow_full_table_external_data_access = false + + # Trusted resource owners (for cross-account scenarios) + trusted_resource_owners = [data.aws_caller_identity.current.account_id] +} + + +# Outputs +output "s3tables_bucket_arn" { + value = aws_s3tables_table_bucket.icefabric.arn +} + +output "s3tables_table_warehouse_location" { + value = aws_s3tables_table.icefabric.warehouse_location +} + +output "glue_database_name" { + value = aws_glue_catalog_database.icefabric_db.name +} + +output "lakeformation_admins" { + value = aws_lakeformation_data_lake_settings.main.admins +} diff --git a/src/icefabric_manage/terraform/modules/iceberg/variables.tf b/src/icefabric_manage/terraform/modules/iceberg/variables.tf new file mode 100644 index 0000000..ad7adc0 --- /dev/null +++ b/src/icefabric_manage/terraform/modules/iceberg/variables.tf @@ -0,0 +1,33 @@ +# variables.tf + +variable "region" { + description = "AWS region" + type = string + default = "us-east-1" +} + +variable "env" { + description = "Environment name" + type = string +} + +variable "application" { + description = "Application name" + type = string +} + +variable "team" { + description = "Team name" + type = string +} + +variable "identity_center_role_arn" { + description = "ARN of the Identity Center role that will access the resources" + type = string +} + +variable "lakeformation_admin_arns" { + description = "List of ARNs to set as Lake Formation administrators" + type = list(string) + default = [] # Will be populated with current account or specific users/roles +} \ No newline at end of file diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 9c8a277..7e1489e 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -22,9 +22,9 @@ dependencies = [ "pandas==2.2.3", "geopandas==1.0.1", "matplotlib==3.10.3", - "s3fs==2025.5.0", + "s3fs==2025.5.1", "pyarrow==20.0.0", - "pyiceberg[sql-sqlite]==0.9.0", + "pyiceberg[s3fs,glue]==0.9.1", "xarray==2025.4.0", "rioxarray==0.19.0", "icechunk==0.2.14", @@ -36,7 +36,7 @@ dependencies = [ "kerchunk==0.2.8", "h5py==3.13.0", "h5netcdf==1.6.1", - "fsspec==2025.5.0", + "fsspec==2025.5.1", "dask==2025.5.1", "netCDF4==1.7.2", "python-dotenv==1.1.0", diff --git a/src/icefabric_tools/tests/conftest.py b/src/icefabric_tools/tests/conftest.py index 2de8824..32059d1 100644 --- a/src/icefabric_tools/tests/conftest.py +++ b/src/icefabric_tools/tests/conftest.py @@ -1,8 +1,11 @@ +import os from pathlib import Path -import pytest -from pyiceberg.catalog import Catalog, load_catalog -from sqlalchemy.exc import OperationalError +os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) +print(f"PYICEBERG_HOME set to: {os.environ['PYICEBERG_HOME']}") + +import pytest # noqa: E402 +from pyiceberg.catalog import Catalog, load_catalog # noqa: E402 sample_gauges = [ "gages-01010000", @@ -25,20 +28,12 @@ @pytest.fixture def hydrofabric_catalog() -> Catalog: """Returns an iceberg catalog object for the hydrofabric""" - warehouse_path = ( - "/tmp/warehouse" # Requires the HF to be built via: src/icefabric_manage/builds/build_hydrofabric.py - ) - try: - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } - return load_catalog("hydrofabric", **catalog_settings) - except OperationalError as e: - raise type(e)( # noqa: B904 - f"Cannot find warehouse @ {warehouse_path}. Please build HF warehouse by running src/icefabric_manage/builds/build_hydrofabric.py" - ) # type: ignore + # try: + return load_catalog("glue") + # except Exception as e: + # raise type(e)( + # f"Cannot find warehouse @ {warehouse_path}. Please make sure your AWS credentials are accurate" + # ) # type: ignore @pytest.fixture(params=sample_gauges) diff --git a/uv.lock b/uv.lock index aca5b2d..5d1335c 100644 --- a/uv.lock +++ b/uv.lock @@ -1,4 +1,5 @@ version = 1 +revision = 2 requires-python = ">=3.11, <3.13" resolution-markers = [ "python_full_version >= '3.12'", @@ -17,9 +18,9 @@ members = [ name = "affine" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } +sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132, upload-time = "2023-01-19T23:44:30.696Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, + { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662, upload-time = "2023-01-19T23:44:28.833Z" }, ] [[package]] @@ -35,18 +36,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322, upload-time = "2025-05-01T16:45:45.484Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, + { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930, upload-time = "2025-05-01T16:45:43.508Z" }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, ] [[package]] @@ -62,49 +63,49 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload-time = "2025-04-21T09:43:09.191Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload-time = "2025-04-21T09:40:55.776Z" }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload-time = "2025-04-21T09:40:57.301Z" }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload-time = "2025-04-21T09:40:59.322Z" }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload-time = "2025-04-21T09:41:00.795Z" }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload-time = "2025-04-21T09:41:02.89Z" }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload-time = "2025-04-21T09:41:04.461Z" }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload-time = "2025-04-21T09:41:06.728Z" }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload-time = "2025-04-21T09:41:08.293Z" }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload-time = "2025-04-21T09:41:11.054Z" }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload-time = "2025-04-21T09:41:13.213Z" }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload-time = "2025-04-21T09:41:14.827Z" }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload-time = "2025-04-21T09:41:17.168Z" }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload-time = "2025-04-21T09:41:19.353Z" }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload-time = "2025-04-21T09:41:21.868Z" }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload-time = "2025-04-21T09:41:24.78Z" }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload-time = "2025-04-21T09:41:26.48Z" }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload-time = "2025-04-21T09:41:28.021Z" }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload-time = "2025-04-21T09:41:29.783Z" }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload-time = "2025-04-21T09:41:31.327Z" }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload-time = "2025-04-21T09:41:33.541Z" }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload-time = "2025-04-21T09:41:35.634Z" }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload-time = "2025-04-21T09:41:37.456Z" }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload-time = "2025-04-21T09:41:39.756Z" }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload-time = "2025-04-21T09:41:41.972Z" }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload-time = "2025-04-21T09:41:44.192Z" }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload-time = "2025-04-21T09:41:46.049Z" }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload-time = "2025-04-21T09:41:47.973Z" }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload-time = "2025-04-21T09:41:50.323Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload-time = "2025-04-21T09:41:52.111Z" }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload-time = "2025-04-21T09:41:53.94Z" }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload-time = "2025-04-21T09:41:55.689Z" }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload-time = "2025-04-21T09:41:57.977Z" }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload-time = "2024-09-02T03:33:40.349Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload-time = "2024-09-02T03:34:59.454Z" }, ] [[package]] @@ -114,18 +115,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/ba/b5/6d55e80f6d8a08ce22b982eafa278d823b541c925f11ee774b0b9c43473d/aiosignal-1.3.2.tar.gz", hash = "sha256:a8c255c66fafb1e499c9351d0bf32ff2d8a0321595ebac3b93713656d2436f54", size = 19424, upload-time = "2024-12-13T17:10:40.86Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597 }, + { url = "https://files.pythonhosted.org/packages/ec/6a/bc7e17a3e87a2985d3e8f4da4cd0f481060eb78fb08596c42be62c90a4d9/aiosignal-1.3.2-py2.py3-none-any.whl", hash = "sha256:45cde58e409a301715980c2b01d0c28bdde3770d8290b5eb2173759d9acb31a5", size = 7597, upload-time = "2024-12-13T17:10:38.469Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/ee/67/531ea369ba64dcff5ec9c3402f9f51bf748cec26dde048a2f973a4eea7f5/annotated_types-0.7.0.tar.gz", hash = "sha256:aff07c09a53a08bc8cfccb9c85b05f1aa9a2a6f23728d790723543408344ce89", size = 16081, upload-time = "2024-05-20T21:33:25.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643, upload-time = "2024-05-20T21:33:24.1Z" }, ] [[package]] @@ -137,18 +138,18 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321, upload-time = "2024-02-06T09:43:09.663Z" }, ] [[package]] @@ -158,9 +159,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload-time = "2023-08-15T14:13:12.711Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload-time = "2023-08-15T14:13:10.752Z" }, ] [[package]] @@ -170,18 +171,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, ] [[package]] @@ -192,57 +193,57 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/4a/e7/82da0a03e7ba5141f05cce0d302e6eed121ae055e0456ca228bf693984bc/asttokens-3.0.0.tar.gz", hash = "sha256:0dcd8baa8d62b0c1d118b399b2ddba3c4aff271d0d7a9e0d4c1681c79035bbc7", size = 61978, upload-time = "2024-11-30T04:30:14.439Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918, upload-time = "2024-11-30T04:30:10.946Z" }, ] [[package]] name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload-time = "2025-02-25T18:15:32.003Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload-time = "2025-02-25T16:53:14.607Z" }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload-time = "2025-02-25T16:53:17.266Z" }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload-time = "2025-02-25T16:53:26.378Z" }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload-time = "2025-02-25T16:53:29.858Z" }, ] [[package]] @@ -253,9 +254,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, ] [[package]] @@ -269,17 +270,17 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload-time = "2025-01-29T05:37:11.71Z" }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload-time = "2025-01-29T05:37:14.309Z" }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload-time = "2025-01-29T04:18:17.688Z" }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload-time = "2025-01-29T04:18:51.711Z" }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, ] [[package]] @@ -289,9 +290,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, ] [package.optional-dependencies] @@ -308,9 +309,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } +sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160, upload-time = "2025-02-27T20:28:15.588Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, + { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344, upload-time = "2025-02-27T20:28:13.085Z" }, ] [[package]] @@ -322,27 +323,27 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } +sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648, upload-time = "2025-02-27T20:27:59.559Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, + { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066, upload-time = "2025-02-27T20:27:53.137Z" }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, ] [[package]] @@ -352,40 +353,40 @@ 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 }, +sdist = { url = "https://files.pythonhosted.org/packages/fc/97/c783634659c2920c3fc70419e3af40972dbaf758daa229a7d6ea6135c90d/cffi-1.17.1.tar.gz", hash = "sha256:1c39c6016c32bc48dd54561950ebd6836e1670f2ae46128f67cf49e789c52824", size = 516621, upload-time = "2024-09-04T20:45:21.852Z" } +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, upload-time = "2024-09-04T20:43:51.124Z" }, + { 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, upload-time = "2024-09-04T20:43:52.872Z" }, + { 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, upload-time = "2024-09-04T20:43:56.123Z" }, + { 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, upload-time = "2024-09-04T20:43:57.891Z" }, + { 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, upload-time = "2024-09-04T20:44:00.18Z" }, + { 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, upload-time = "2024-09-04T20:44:01.585Z" }, + { 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, upload-time = "2024-09-04T20:44:03.467Z" }, + { 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, upload-time = "2024-09-04T20:44:05.023Z" }, + { 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, upload-time = "2024-09-04T20:44:06.444Z" }, + { 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, upload-time = "2024-09-04T20:44:08.206Z" }, + { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, + { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, + { 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, upload-time = "2024-09-04T20:44:12.232Z" }, + { 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, upload-time = "2024-09-04T20:44:13.739Z" }, + { 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, upload-time = "2024-09-04T20:44:15.231Z" }, + { 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, upload-time = "2024-09-04T20:44:17.188Z" }, + { 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, upload-time = "2024-09-04T20:44:18.688Z" }, + { 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, upload-time = "2024-09-04T20:44:20.248Z" }, + { 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, upload-time = "2024-09-04T20:44:21.673Z" }, + { 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, upload-time = "2024-09-04T20:44:23.245Z" }, + { 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, upload-time = "2024-09-04T20:44:24.757Z" }, + { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, + { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/11/74/539e56497d9bd1d484fd863dd69cbbfa653cd2aa27abfe35653494d85e94/cfgv-3.4.0.tar.gz", hash = "sha256:e52591d4c5f5dead8e0f673fb16db7949d2cfb3f7da4582893288f0ded8fe560", size = 7114, upload-time = "2023-08-12T20:38:17.776Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249, upload-time = "2023-08-12T20:38:16.269Z" }, ] [[package]] @@ -395,55 +396,55 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631, upload-time = "2024-10-22T18:48:34.194Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, - { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, - { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, - { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, - { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, - { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, - { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, - { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, - { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, - { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, - { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, + { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445, upload-time = "2024-10-22T18:47:51.09Z" }, + { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458, upload-time = "2024-10-22T18:47:52.245Z" }, + { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075, upload-time = "2024-10-22T18:47:53.338Z" }, + { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218, upload-time = "2024-10-22T18:47:54.763Z" }, + { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704, upload-time = "2024-10-22T18:47:56.035Z" }, + { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200, upload-time = "2024-10-22T18:47:58.036Z" }, + { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615, upload-time = "2024-10-22T18:47:59.575Z" }, + { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193, upload-time = "2024-10-22T18:48:00.767Z" }, + { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215, upload-time = "2024-10-22T18:48:02.275Z" }, + { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426, upload-time = "2024-10-22T18:48:03.57Z" }, + { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593, upload-time = "2024-10-22T18:48:04.918Z" }, + { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918, upload-time = "2024-10-22T18:48:06.195Z" }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, ] [[package]] @@ -453,9 +454,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, ] [[package]] @@ -465,9 +466,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload-time = "2019-04-04T04:27:04.82Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload-time = "2019-04-04T04:27:03.36Z" }, ] [[package]] @@ -477,27 +478,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload-time = "2021-05-28T21:23:27.935Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload-time = "2021-05-28T21:23:26.877Z" }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, ] [[package]] @@ -507,9 +508,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/a8/fb783cb0abe2b5fded9f55e5703015cdf1c9c85b3669087c538dd15a6a86/comm-0.2.2.tar.gz", hash = "sha256:3fd7a84065306e07bea1773df6eb8282de51ba82f77c72f9c85716ab11fe980e", size = 6210, upload-time = "2024-03-12T16:53:41.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180, upload-time = "2024-03-12T16:53:39.226Z" }, ] [[package]] @@ -519,70 +520,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, ] [[package]] name = "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 }, +sdist = { url = "https://files.pythonhosted.org/packages/7f/4c/4e40cc26347ac8254d3f25b9f94710b8e8df24ee4dddc1ba41907a88a94d/crc32c-2.7.1.tar.gz", hash = "sha256:f91b144a21eef834d64178e01982bb9179c354b3e9e5f4c803b0e5096384968c", size = 45712, upload-time = "2024-09-24T06:20:17.553Z" } +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, upload-time = "2024-09-24T06:18:18.032Z" }, + { 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, upload-time = "2024-09-24T06:18:19.373Z" }, + { 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, upload-time = "2024-09-24T06:18:20.983Z" }, + { 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, upload-time = "2024-09-24T06:18:23.085Z" }, + { 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, upload-time = "2024-09-24T06:18:24.463Z" }, + { 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, upload-time = "2024-09-24T06:18:25.624Z" }, + { 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, upload-time = "2024-09-24T06:18:26.578Z" }, + { 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, upload-time = "2024-09-24T06:18:28.174Z" }, + { 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, upload-time = "2024-09-24T06:18:29.104Z" }, + { url = "https://files.pythonhosted.org/packages/56/3e/6f39127f7027c75d130c0ba348d86a6150dff23761fbc6a5f71659f4521e/crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1", size = 38370, upload-time = "2024-09-24T06:18:30.013Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fb/1587c2705a3a47a3d0067eecf9a6fec510761c96dec45c7b038fb5c8ff46/crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d", size = 39795, upload-time = "2024-09-24T06:18:31.324Z" }, + { 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, upload-time = "2024-09-24T06:18:32.425Z" }, + { 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, upload-time = "2024-09-24T06:18:34.097Z" }, + { 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, upload-time = "2024-09-24T06:18:35.02Z" }, + { 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, upload-time = "2024-09-24T06:18:35.954Z" }, + { 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, upload-time = "2024-09-24T06:18:36.896Z" }, + { 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, upload-time = "2024-09-24T06:18:38.099Z" }, + { 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, upload-time = "2024-09-24T06:18:39.051Z" }, + { 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, upload-time = "2024-09-24T06:18:40.021Z" }, + { 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, upload-time = "2024-09-24T06:18:40.925Z" }, + { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371, upload-time = "2024-09-24T06:18:42.711Z" }, + { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805, upload-time = "2024-09-24T06:18:43.6Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321, upload-time = "2023-10-07T05:32:16.783Z" }, ] [[package]] @@ -599,62 +600,62 @@ dependencies = [ { name = "pyyaml" }, { name = "toolz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324, upload-time = "2025-05-20T19:54:30.688Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, + { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226, upload-time = "2025-05-20T19:54:20.309Z" }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, ] [[package]] name = "distlib" version = "0.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 } +sdist = { url = "https://files.pythonhosted.org/packages/0d/dd/1bec4c5ddb504ca60fc29472f3d27e8d4da1257a854e1d96742f15c1d02d/distlib-0.3.9.tar.gz", hash = "sha256:a60f20dea646b8a33f3e7772f74dc0b2d0772d2837ee1342a00645c81edf9403", size = 613923, upload-time = "2024-10-09T18:35:47.551Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973 }, + { url = "https://files.pythonhosted.org/packages/91/a1/cf2472db20f7ce4a6be1253a81cfdf85ad9c7885ffbed7047fb72c24cf87/distlib-0.3.9-py2.py3-none-any.whl", hash = "sha256:47f8c22fd27c27e25a65601af709b38e4f0a45ea4fc2e710f65755fa8caaaf87", size = 468973, upload-time = "2024-10-09T18:35:44.272Z" }, ] [[package]] name = "dnspython" version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, ] [[package]] @@ -664,9 +665,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506, upload-time = "2024-05-23T14:14:31.513Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592, upload-time = "2024-05-23T14:13:55.283Z" }, ] [[package]] @@ -677,9 +678,9 @@ dependencies = [ { name = "dnspython" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, ] [[package]] @@ -689,18 +690,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload-time = "2019-12-30T22:47:36.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload-time = "2019-12-30T22:47:35.265Z" }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, ] [[package]] @@ -712,9 +713,9 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236, upload-time = "2025-03-23T22:55:43.822Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164, upload-time = "2025-03-23T22:55:42.101Z" }, ] [package.optional-dependencies] @@ -736,9 +737,9 @@ dependencies = [ { name = "typer" }, { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload-time = "2024-12-15T14:28:10.028Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705 }, + { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload-time = "2024-12-15T14:28:06.18Z" }, ] [package.optional-dependencies] @@ -750,104 +751,104 @@ standard = [ name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, ] [[package]] name = "fonttools" version = "4.58.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522, upload-time = "2025-05-10T17:36:35.886Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, - { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, - { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, - { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, - { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, - { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, - { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, - { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, - { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, - { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, - { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, - { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, - { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, - { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, - { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, + { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920, upload-time = "2025-05-10T17:35:16.487Z" }, + { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957, upload-time = "2025-05-10T17:35:18.906Z" }, + { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808, upload-time = "2025-05-10T17:35:21.394Z" }, + { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876, upload-time = "2025-05-10T17:35:23.849Z" }, + { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798, upload-time = "2025-05-10T17:35:26.189Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560, upload-time = "2025-05-10T17:35:28.577Z" }, + { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330, upload-time = "2025-05-10T17:35:31.733Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687, upload-time = "2025-05-10T17:35:34.015Z" }, + { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502, upload-time = "2025-05-10T17:35:36.436Z" }, + { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214, upload-time = "2025-05-10T17:35:38.939Z" }, + { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136, upload-time = "2025-05-10T17:35:41.491Z" }, + { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598, upload-time = "2025-05-10T17:35:43.986Z" }, + { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256, upload-time = "2025-05-10T17:35:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710, upload-time = "2025-05-10T17:35:49.227Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593, upload-time = "2025-05-10T17:35:51.226Z" }, + { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230, upload-time = "2025-05-10T17:35:53.653Z" }, + { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440, upload-time = "2025-05-10T17:36:33.607Z" }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload-time = "2025-04-17T22:38:53.099Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload-time = "2025-04-17T22:36:17.235Z" }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload-time = "2025-04-17T22:36:18.735Z" }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload-time = "2025-04-17T22:36:20.6Z" }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload-time = "2025-04-17T22:36:22.088Z" }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload-time = "2025-04-17T22:36:24.247Z" }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload-time = "2025-04-17T22:36:26.291Z" }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload-time = "2025-04-17T22:36:27.909Z" }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload-time = "2025-04-17T22:36:29.448Z" }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload-time = "2025-04-17T22:36:31.55Z" }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload-time = "2025-04-17T22:36:33.078Z" }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload-time = "2025-04-17T22:36:34.688Z" }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload-time = "2025-04-17T22:36:36.363Z" }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload-time = "2025-04-17T22:36:38.16Z" }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload-time = "2025-04-17T22:36:40.289Z" }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload-time = "2025-04-17T22:36:42.045Z" }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload-time = "2025-04-17T22:36:44.067Z" }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload-time = "2025-04-17T22:36:45.465Z" }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload-time = "2025-04-17T22:36:47.382Z" }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload-time = "2025-04-17T22:36:49.401Z" }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload-time = "2025-04-17T22:36:51.899Z" }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload-time = "2025-04-17T22:36:53.402Z" }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload-time = "2025-04-17T22:36:55.016Z" }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload-time = "2025-04-17T22:36:57.12Z" }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload-time = "2025-04-17T22:36:58.735Z" }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload-time = "2025-04-17T22:37:00.512Z" }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload-time = "2025-04-17T22:37:02.102Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload-time = "2025-04-17T22:37:03.578Z" }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload-time = "2025-04-17T22:37:05.213Z" }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload-time = "2025-04-17T22:37:06.985Z" }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload-time = "2025-04-17T22:37:08.618Z" }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload-time = "2025-04-17T22:37:10.196Z" }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload-time = "2025-04-17T22:37:12.284Z" }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload-time = "2025-04-17T22:37:13.902Z" }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload-time = "2025-04-17T22:37:15.326Z" }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload-time = "2025-04-17T22:38:51.668Z" }, ] [[package]] name = "fsspec" -version = "2025.5.0" +version = "2025.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/77/deb99b97981e2e191913454da82d406702405178631c31cd623caebaf1b1/fsspec-2025.5.0.tar.gz", hash = "sha256:e4f4623bb6221f7407fd695cc535d1f857a077eb247580f4ada34f5dc25fd5c8", size = 300989 } +sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033, upload-time = "2025-05-24T12:03:23.792Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/a9/a7022f58e081149ec0184c31ea81dcee605e1d46380b48122e1ef94ac24e/fsspec-2025.5.0-py3-none-any.whl", hash = "sha256:0ca253eca6b5333d8a2b8bd98c7326fe821f1f0fdbd34e1b445bddde8e804c95", size = 196164 }, + { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, ] [[package]] @@ -862,9 +863,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload-time = "2024-07-02T12:26:52.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload-time = "2024-07-02T12:26:50.876Z" }, ] [[package]] @@ -874,44 +875,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, -] - -[[package]] -name = "greenlet" -version = "3.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/34/c1/a82edae11d46c0d83481aacaa1e578fea21d94a1ef400afd734d47ad95ad/greenlet-3.2.2.tar.gz", hash = "sha256:ad053d34421a2debba45aa3cc39acf454acbcd025b3fc1a9f8a0dee237abd485", size = 185797 } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a3/9f/a47e19261747b562ce88219e5ed8c859d42c6e01e73da6fbfa3f08a7be13/greenlet-3.2.2-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:dcb9cebbf3f62cb1e5afacae90761ccce0effb3adaa32339a0670fe7805d8068", size = 268635 }, - { url = "https://files.pythonhosted.org/packages/11/80/a0042b91b66975f82a914d515e81c1944a3023f2ce1ed7a9b22e10b46919/greenlet-3.2.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bf3fc9145141250907730886b031681dfcc0de1c158f3cc51c092223c0f381ce", size = 628786 }, - { url = "https://files.pythonhosted.org/packages/38/a2/8336bf1e691013f72a6ebab55da04db81a11f68e82bb691f434909fa1327/greenlet-3.2.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:efcdfb9df109e8a3b475c016f60438fcd4be68cd13a365d42b35914cdab4bb2b", size = 640866 }, - { url = "https://files.pythonhosted.org/packages/f8/7e/f2a3a13e424670a5d08826dab7468fa5e403e0fbe0b5f951ff1bc4425b45/greenlet-3.2.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4bd139e4943547ce3a56ef4b8b1b9479f9e40bb47e72cc906f0f66b9d0d5cab3", size = 636752 }, - { url = "https://files.pythonhosted.org/packages/fd/5d/ce4a03a36d956dcc29b761283f084eb4a3863401c7cb505f113f73af8774/greenlet-3.2.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:71566302219b17ca354eb274dfd29b8da3c268e41b646f330e324e3967546a74", size = 636028 }, - { url = "https://files.pythonhosted.org/packages/4b/29/b130946b57e3ceb039238413790dd3793c5e7b8e14a54968de1fe449a7cf/greenlet-3.2.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3091bc45e6b0c73f225374fefa1536cd91b1e987377b12ef5b19129b07d93ebe", size = 583869 }, - { url = "https://files.pythonhosted.org/packages/ac/30/9f538dfe7f87b90ecc75e589d20cbd71635531a617a336c386d775725a8b/greenlet-3.2.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:44671c29da26539a5f142257eaba5110f71887c24d40df3ac87f1117df589e0e", size = 1112886 }, - { url = "https://files.pythonhosted.org/packages/be/92/4b7deeb1a1e9c32c1b59fdca1cac3175731c23311ddca2ea28a8b6ada91c/greenlet-3.2.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c23ea227847c9dbe0b3910f5c0dd95658b607137614eb821e6cbaecd60d81cc6", size = 1138355 }, - { url = "https://files.pythonhosted.org/packages/c5/eb/7551c751a2ea6498907b2fcbe31d7a54b602ba5e8eb9550a9695ca25d25c/greenlet-3.2.2-cp311-cp311-win_amd64.whl", hash = "sha256:0a16fb934fcabfdfacf21d79e6fed81809d8cd97bc1be9d9c89f0e4567143d7b", size = 295437 }, - { url = "https://files.pythonhosted.org/packages/2c/a1/88fdc6ce0df6ad361a30ed78d24c86ea32acb2b563f33e39e927b1da9ea0/greenlet-3.2.2-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:df4d1509efd4977e6a844ac96d8be0b9e5aa5d5c77aa27ca9f4d3f92d3fcf330", size = 270413 }, - { url = "https://files.pythonhosted.org/packages/a6/2e/6c1caffd65490c68cd9bcec8cb7feb8ac7b27d38ba1fea121fdc1f2331dc/greenlet-3.2.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:da956d534a6d1b9841f95ad0f18ace637668f680b1339ca4dcfb2c1837880a0b", size = 637242 }, - { url = "https://files.pythonhosted.org/packages/98/28/088af2cedf8823b6b7ab029a5626302af4ca1037cf8b998bed3a8d3cb9e2/greenlet-3.2.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9c7b15fb9b88d9ee07e076f5a683027bc3befd5bb5d25954bb633c385d8b737e", size = 651444 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0116ab876bb0bc7a81eadc21c3f02cd6100dcd25a1cf2a085a130a63a26a/greenlet-3.2.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:752f0e79785e11180ebd2e726c8a88109ded3e2301d40abced2543aa5d164275", size = 646067 }, - { url = "https://files.pythonhosted.org/packages/35/17/bb8f9c9580e28a94a9575da847c257953d5eb6e39ca888239183320c1c28/greenlet-3.2.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9ae572c996ae4b5e122331e12bbb971ea49c08cc7c232d1bd43150800a2d6c65", size = 648153 }, - { url = "https://files.pythonhosted.org/packages/2c/ee/7f31b6f7021b8df6f7203b53b9cc741b939a2591dcc6d899d8042fcf66f2/greenlet-3.2.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:02f5972ff02c9cf615357c17ab713737cccfd0eaf69b951084a9fd43f39833d3", size = 603865 }, - { url = "https://files.pythonhosted.org/packages/b5/2d/759fa59323b521c6f223276a4fc3d3719475dc9ae4c44c2fe7fc750f8de0/greenlet-3.2.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4fefc7aa68b34b9224490dfda2e70ccf2131368493add64b4ef2d372955c207e", size = 1119575 }, - { url = "https://files.pythonhosted.org/packages/30/05/356813470060bce0e81c3df63ab8cd1967c1ff6f5189760c1a4734d405ba/greenlet-3.2.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:a31ead8411a027c2c4759113cf2bd473690517494f3d6e4bf67064589afcd3c5", size = 1147460 }, - { url = "https://files.pythonhosted.org/packages/07/f4/b2a26a309a04fb844c7406a4501331b9400e1dd7dd64d3450472fd47d2e1/greenlet-3.2.2-cp312-cp312-win_amd64.whl", hash = "sha256:b24c7844c0a0afc3ccbeb0b807adeefb7eff2b5599229ecedddcfeb0ef333bec", size = 296239 }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, ] [[package]] @@ -922,9 +897,9 @@ dependencies = [ { name = "h5py" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } +sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456, upload-time = "2025-03-07T14:51:24.322Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, + { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561, upload-time = "2025-03-07T14:51:22.863Z" }, ] [[package]] @@ -934,18 +909,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } +sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876, upload-time = "2025-02-18T16:04:01.824Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, - { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, - { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, - { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, - { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, - { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, - { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, - { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, - { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, - { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, + { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922, upload-time = "2025-02-18T16:02:36.376Z" }, + { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619, upload-time = "2025-02-18T16:02:40.722Z" }, + { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366, upload-time = "2025-02-18T16:02:44.544Z" }, + { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058, upload-time = "2025-02-18T16:02:49.035Z" }, + { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428, upload-time = "2025-02-18T16:02:52.061Z" }, + { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442, upload-time = "2025-02-18T16:02:56.545Z" }, + { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567, upload-time = "2025-02-18T16:03:00.079Z" }, + { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544, upload-time = "2025-02-18T16:03:05.675Z" }, + { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139, upload-time = "2025-02-18T16:03:10.129Z" }, + { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179, upload-time = "2025-02-18T16:03:13.716Z" }, ] [[package]] @@ -956,31 +931,31 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, ] [[package]] name = "httptools" version = "0.6.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029 }, - { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492 }, - { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891 }, - { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788 }, - { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214 }, - { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120 }, - { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565 }, - { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683 }, - { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337 }, - { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796 }, - { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837 }, - { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289 }, - { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779 }, - { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634 }, + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, ] [[package]] @@ -993,9 +968,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, ] [[package]] @@ -1005,37 +980,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, - { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, - { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, - { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, - { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, - { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, - { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, - { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, - { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, - { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, - { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, - { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, - { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, - { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, - { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, - { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, - { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, - { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, - { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, - { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, - { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, - { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, - { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, - { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, - { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, - { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, - { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, - { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, +sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131, upload-time = "2025-04-16T18:10:36.75Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673, upload-time = "2025-04-16T18:09:43.971Z" }, + { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240, upload-time = "2025-04-16T18:09:37.035Z" }, + { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672, upload-time = "2025-04-16T18:09:26.089Z" }, + { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034, upload-time = "2025-04-16T18:09:02.686Z" }, + { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792, upload-time = "2025-04-16T18:09:15.5Z" }, + { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356, upload-time = "2025-04-16T18:09:51.136Z" }, + { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442, upload-time = "2025-04-16T18:10:02.792Z" }, + { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160, upload-time = "2025-04-16T18:10:14.601Z" }, + { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124, upload-time = "2025-04-16T18:10:25.808Z" }, + { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858, upload-time = "2025-04-16T18:10:43.776Z" }, + { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459, upload-time = "2025-04-16T18:10:37.921Z" }, + { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831, upload-time = "2025-04-16T18:09:46.168Z" }, + { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016, upload-time = "2025-04-16T18:09:38.98Z" }, + { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090, upload-time = "2025-04-16T18:09:28.202Z" }, + { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912, upload-time = "2025-04-16T18:09:05.87Z" }, + { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623, upload-time = "2025-04-16T18:09:17.868Z" }, + { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655, upload-time = "2025-04-16T18:09:53.417Z" }, + { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287, upload-time = "2025-04-16T18:10:05.042Z" }, + { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009, upload-time = "2025-04-16T18:10:16.678Z" }, + { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396, upload-time = "2025-04-16T18:10:28.392Z" }, + { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850, upload-time = "2025-04-16T18:10:46.224Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293, upload-time = "2025-04-16T18:10:39.897Z" }, + { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636, upload-time = "2025-04-16T18:09:34.591Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882, upload-time = "2025-04-16T18:09:12.974Z" }, + { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805, upload-time = "2025-04-16T18:09:24.072Z" }, + { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170, upload-time = "2025-04-16T18:10:00.013Z" }, + { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703, upload-time = "2025-04-16T18:10:11.788Z" }, + { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569, upload-time = "2025-04-16T18:10:23.599Z" }, + { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490, upload-time = "2025-04-16T18:10:34.914Z" }, ] [[package]] @@ -1066,6 +1041,7 @@ dev = [ [package.metadata] requires-dist = [{ name = "mkdocs-material", marker = "extra == 'docs'" }] +provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ @@ -1109,7 +1085,7 @@ dependencies = [ { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, - { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "pyiceberg", extra = ["glue", "s3fs"] }, { name = "python-dotenv" }, { name = "s3fs" }, ] @@ -1120,9 +1096,9 @@ requires-dist = [ { name = "numpy", specifier = "==2.2.6" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, - { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, + { name = "pyiceberg", extras = ["s3fs", "glue"], specifier = "==0.9.1" }, { name = "python-dotenv", specifier = "==1.1.0" }, - { name = "s3fs", specifier = "==2025.5.0" }, + { name = "s3fs", specifier = "==2025.5.1" }, ] [[package]] @@ -1142,7 +1118,7 @@ dependencies = [ { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, - { name = "pyiceberg", extra = ["sql-sqlite"] }, + { name = "pyiceberg", extra = ["glue", "s3fs"] }, { name = "python-dotenv" }, { name = "rioxarray" }, { name = "s3fs" }, @@ -1157,7 +1133,7 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "dask", specifier = "==2025.5.1" }, - { name = "fsspec", specifier = "==2025.5.0" }, + { name = "fsspec", specifier = "==2025.5.1" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "h5netcdf", specifier = "==1.6.1" }, { name = "h5py", specifier = "==3.13.0" }, @@ -1168,10 +1144,10 @@ requires-dist = [ { name = "numpy", specifier = "==2.2.6" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, - { name = "pyiceberg", extras = ["sql-sqlite"], specifier = "==0.9.0" }, + { name = "pyiceberg", extras = ["s3fs", "glue"], specifier = "==0.9.1" }, { name = "python-dotenv", specifier = "==1.1.0" }, { name = "rioxarray", specifier = "==0.19.0" }, - { name = "s3fs", specifier = "==2025.5.0" }, + { name = "s3fs", specifier = "==2025.5.1" }, { name = "scipy", specifier = "==1.15.3" }, { name = "tifffile", specifier = "==2025.5.21" }, { name = "tqdm", specifier = "==4.67.1" }, @@ -1184,18 +1160,18 @@ requires-dist = [ name = "identify" version = "2.6.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234, upload-time = "2025-05-23T18:19:53.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, + { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112, upload-time = "2025-05-23T18:19:51.88Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/f1/70/7703c29685631f5a7590aa73f1f1d3fa9a380e654b86af429e0934a32f7d/idna-3.10.tar.gz", hash = "sha256:12f65c9b470abda6dc35cf8e63cc574b1c52b11df2c86030af0ac09b01b13ea9", size = 190490, upload-time = "2024-09-15T18:07:39.745Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442, upload-time = "2024-09-15T18:07:37.964Z" }, ] [[package]] @@ -1205,18 +1181,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, ] [[package]] @@ -1238,9 +1214,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/e9/5c/67594cb0c7055dc50814b21731c22a601101ea3b1b50a9a1b090e11f5d0f/ipykernel-6.29.5.tar.gz", hash = "sha256:f093a22c4a40f8828f8e330a9c297cb93dcab13bd9678ded6de8e5cf81c56215", size = 163367, upload-time = "2024-07-01T14:07:22.543Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173, upload-time = "2024-07-01T14:07:19.603Z" }, ] [[package]] @@ -1260,9 +1236,9 @@ dependencies = [ { name = "traitlets" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload-time = "2025-04-25T17:55:40.498Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload-time = "2025-04-25T17:55:37.625Z" }, ] [[package]] @@ -1272,9 +1248,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, ] [[package]] @@ -1284,9 +1260,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, ] [[package]] @@ -1296,9 +1272,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/72/3a/79a912fbd4d8dd6fbb02bf69afd3bb72cf0c729bb3063c6f4498603db17a/jedi-0.19.2.tar.gz", hash = "sha256:4770dc3de41bde3966b02eb84fbcf557fb33cce26ad23da12c742fb50ecb11f0", size = 1231287, upload-time = "2024-11-11T01:41:42.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278, upload-time = "2024-11-11T01:41:40.175Z" }, ] [[package]] @@ -1308,36 +1284,36 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/2a/e867e8531cf3e36b41201936b7fa7ba7b5702dbef42922193f05c8976cd6/jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe", size = 25843, upload-time = "2022-06-17T18:00:12.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256, upload-time = "2022-06-17T18:00:10.251Z" }, ] [[package]] name = "json5" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, ] [[package]] @@ -1350,9 +1326,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/2e/03362ee4034a4c917f697890ccd4aec0800ccf9ded7f511971c75451deec/jsonschema-4.23.0.tar.gz", hash = "sha256:d71497fef26351a33265337fa77ffeb82423f3ea21283cd9467bb03999266bc4", size = 325778, upload-time = "2024-07-08T18:40:05.546Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462, upload-time = "2024-07-08T18:40:00.165Z" }, ] [package.optional-dependencies] @@ -1374,9 +1350,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, ] [[package]] @@ -1390,9 +1366,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/71/22/bf9f12fdaeae18019a468b68952a60fe6dbab5d67cd2a103cac7659b41ca/jupyter_client-8.6.3.tar.gz", hash = "sha256:35b3a0947c4a6e9d589eb97d7d4cd5e90f910ee73101611f01283732bd6d9419", size = 342019, upload-time = "2024-09-17T10:44:17.613Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105, upload-time = "2024-09-17T10:44:15.218Z" }, ] [[package]] @@ -1404,9 +1380,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/00/11/b56381fa6c3f4cc5d2cf54a7dbf98ad9aa0b339ef7a601d6053538b079a7/jupyter_core-5.7.2.tar.gz", hash = "sha256:aa5f8d32bbf6b431ac830496da7392035d6f61b4f54872f15c4bd2a9c3f536d9", size = 87629, upload-time = "2024-03-12T12:37:35.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965, upload-time = "2024-03-12T12:37:32.36Z" }, ] [[package]] @@ -1423,9 +1399,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, ] [[package]] @@ -1435,9 +1411,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, ] [[package]] @@ -1465,9 +1441,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, ] [[package]] @@ -1478,9 +1454,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, ] [[package]] @@ -1502,18 +1478,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } +sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818, upload-time = "2025-05-06T12:29:40.992Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, + { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799, upload-time = "2025-05-06T12:29:35.824Z" }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, ] [[package]] @@ -1529,9 +1505,9 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, ] [[package]] @@ -1545,65 +1521,65 @@ dependencies = [ { name = "ujson" }, { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } +sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488, upload-time = "2025-02-01T18:46:33.404Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, + { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510, upload-time = "2025-02-01T18:46:18.904Z" }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/83/97b29fe05cb6ae28d2dbd30b81e2e402a3eed5f460c26e9eaa5895ceacf5/locket-1.0.0.tar.gz", hash = "sha256:5c0d4c052a8bbbf750e056a8e65ccd309086f4f0f18a2eac306a8dfa4112a632", size = 4350, upload-time = "2022-04-20T22:04:44.312Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398 }, + { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, ] [[package]] name = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload-time = "2025-04-11T14:42:50.928Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload-time = "2025-04-11T14:42:49.178Z" }, ] [[package]] @@ -1613,37 +1589,37 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528 }, + { url = "https://files.pythonhosted.org/packages/42/d7/1ec15b46af6af88f19b8e5ffea08fa375d433c998b8a7639e76935c14f1f/markdown_it_py-3.0.0-py3-none-any.whl", hash = "sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1", size = 87528, upload-time = "2023-06-03T06:41:11.019Z" }, ] [[package]] name = "markupsafe" version = "3.0.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 }, +sdist = { url = "https://files.pythonhosted.org/packages/b2/97/5d42485e71dfc078108a86d6de8fa46db44a1a9295e89c5d6d4a06e23a62/markupsafe-3.0.2.tar.gz", hash = "sha256:ee55d3edf80167e48ea11a923c7386f4669df67d7994554387f84e7d8b0a2bf0", size = 20537, upload-time = "2024-10-18T15:21:54.129Z" } +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, upload-time = "2024-10-18T15:21:02.187Z" }, + { 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, upload-time = "2024-10-18T15:21:02.941Z" }, + { 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, upload-time = "2024-10-18T15:21:03.953Z" }, + { 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, upload-time = "2024-10-18T15:21:06.495Z" }, + { 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, upload-time = "2024-10-18T15:21:07.295Z" }, + { 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, upload-time = "2024-10-18T15:21:08.073Z" }, + { 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, upload-time = "2024-10-18T15:21:09.318Z" }, + { 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, upload-time = "2024-10-18T15:21:10.185Z" }, + { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, + { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, + { 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, upload-time = "2024-10-18T15:21:13.777Z" }, + { 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, upload-time = "2024-10-18T15:21:14.822Z" }, + { 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, upload-time = "2024-10-18T15:21:15.642Z" }, + { 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, upload-time = "2024-10-18T15:21:17.133Z" }, + { 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, upload-time = "2024-10-18T15:21:18.064Z" }, + { 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, upload-time = "2024-10-18T15:21:18.859Z" }, + { 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, upload-time = "2024-10-18T15:21:19.671Z" }, + { 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, upload-time = "2024-10-18T15:21:20.971Z" }, + { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, + { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, ] [[package]] @@ -1661,20 +1637,20 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, ] [[package]] @@ -1684,36 +1660,36 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/99/5b/a36a337438a14116b16480db471ad061c36c3694df7c2084a0da7ba538b7/matplotlib_inline-0.1.7.tar.gz", hash = "sha256:8423b23ec666be3d16e16b60bdd8ac4e86e840ebd1dd11a30b9f117f2fa0ab90", size = 8159, upload-time = "2024-04-15T13:44:44.803Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899 }, + { url = "https://files.pythonhosted.org/packages/8f/8e/9ad090d3553c280a8060fbf6e24dc1c0c29704ee7d1c372f0c174aa59285/matplotlib_inline-0.1.7-py3-none-any.whl", hash = "sha256:df192d39a4ff8f21b1895d72e6a13f5fcc5099f00fa84384e0ea28c2cc0653ca", size = 9899, upload-time = "2024-04-15T13:44:43.265Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/d6/54/cfe61301667036ec958cb99bd3efefba235e65cdeb9c84d24a8293ba1d90/mdurl-0.1.2.tar.gz", hash = "sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba", size = 8729, upload-time = "2022-08-14T12:40:10.846Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979, upload-time = "2022-08-14T12:40:09.779Z" }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, ] [[package]] name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, ] [[package]] @@ -1735,9 +1711,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, ] [[package]] @@ -1749,9 +1725,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, ] [[package]] @@ -1771,101 +1747,101 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707, upload-time = "2025-05-13T13:27:57.173Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767, upload-time = "2025-05-13T13:27:54.089Z" }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload-time = "2025-01-25T08:39:43.386Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload-time = "2025-01-25T08:38:22.917Z" }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload-time = "2025-01-25T08:38:25.079Z" }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload-time = "2025-01-25T08:38:25.947Z" }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload-time = "2025-01-25T08:38:26.939Z" }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload-time = "2025-01-25T08:38:29.159Z" }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload-time = "2025-01-25T08:38:33.04Z" }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload-time = "2025-01-25T08:38:34.987Z" }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload-time = "2025-01-25T08:38:35.983Z" }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload-time = "2025-01-25T08:38:38.198Z" }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload-time = "2025-01-25T08:38:39.257Z" }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload-time = "2025-01-25T08:38:40.395Z" }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload-time = "2025-01-25T08:38:42.141Z" }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload-time = "2025-01-25T08:38:43.402Z" }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload-time = "2025-01-25T08:38:45.143Z" }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload-time = "2025-01-25T08:38:46.029Z" }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload-time = "2025-01-25T08:38:47.035Z" }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload-time = "2025-01-25T08:38:47.902Z" }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload-time = "2025-01-25T08:38:48.839Z" }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload-time = "2025-01-25T08:38:49.773Z" }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload-time = "2025-01-25T08:38:51.5Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload-time = "2025-01-25T08:38:52.542Z" }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload-time = "2025-01-25T08:38:54.286Z" }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload-time = "2025-01-25T08:38:55.576Z" }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload-time = "2025-01-25T08:38:56.654Z" }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload-time = "2025-01-25T08:38:57.662Z" }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload-time = "2025-01-25T08:38:59.505Z" }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload-time = "2025-01-25T08:39:00.483Z" }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload-time = "2025-01-25T08:39:01.484Z" }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload-time = "2025-01-25T08:39:02.444Z" }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload-time = "2025-01-25T08:39:03.369Z" }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload-time = "2025-01-25T08:39:04.284Z" }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload-time = "2025-01-25T08:39:05.174Z" }, ] [[package]] name = "multidict" version = "6.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, - { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, - { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, - { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, - { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, - { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, - { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, - { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, - { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, - { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, - { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, - { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, - { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, - { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, - { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, - { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, - { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, - { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, - { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, - { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, - { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, - { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, - { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, - { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, - { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, - { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, - { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, - { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, - { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, - { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, - { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, - { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, - { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, - { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, - { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515, upload-time = "2025-05-19T14:14:19.767Z" }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609, upload-time = "2025-05-19T14:14:21.538Z" }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871, upload-time = "2025-05-19T14:14:22.666Z" }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661, upload-time = "2025-05-19T14:14:24.124Z" }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422, upload-time = "2025-05-19T14:14:25.437Z" }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447, upload-time = "2025-05-19T14:14:26.793Z" }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455, upload-time = "2025-05-19T14:14:28.149Z" }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666, upload-time = "2025-05-19T14:14:29.584Z" }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392, upload-time = "2025-05-19T14:14:30.961Z" }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969, upload-time = "2025-05-19T14:14:32.672Z" }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433, upload-time = "2025-05-19T14:14:34.016Z" }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418, upload-time = "2025-05-19T14:14:35.376Z" }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042, upload-time = "2025-05-19T14:14:36.723Z" }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280, upload-time = "2025-05-19T14:14:38.194Z" }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322, upload-time = "2025-05-19T14:14:40.015Z" }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070, upload-time = "2025-05-19T14:14:41.904Z" }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667, upload-time = "2025-05-19T14:14:43.534Z" }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, ] [[package]] @@ -1876,30 +1852,42 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, +] + +[[package]] +name = "mypy-boto3-glue" +version = "1.38.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.12'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/73/97/a479bc9405da1d6ae4d2bc88965e76e4d3c8c1c83188eb03c7a49d902826/mypy_boto3_glue-1.38.22.tar.gz", hash = "sha256:a9c529fafaaa9845d39c3204b3fb6cbbb633fa747faf6a084a2b2a381ef12a2b", size = 122519, upload-time = "2025-05-22T19:27:07.452Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, + { url = "https://files.pythonhosted.org/packages/e6/64/33ff3fca5302bb54860d0ddd9ef89c0a2cfea80bd6d1336f10fd4857a1b7/mypy_boto3_glue-1.38.22-py3-none-any.whl", hash = "sha256:4fe34c858cbee41e8ad30382305c01b0dd9c1da4c84f894860b9249ddabb4a58", size = 130042, upload-time = "2025-05-22T19:26:59.181Z" }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, ] [[package]] @@ -1912,9 +1900,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, ] [[package]] @@ -1937,9 +1925,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, ] [[package]] @@ -1952,18 +1940,18 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, ] [[package]] name = "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 } +sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195, upload-time = "2024-01-21T14:25:17.223Z" }, ] [[package]] @@ -1975,27 +1963,27 @@ dependencies = [ { name = "cftime" }, { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } +sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064, upload-time = "2024-10-22T19:01:25.521Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, - { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, - { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, - { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, - { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, - { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, - { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, - { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, - { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, - { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, + { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078, upload-time = "2024-10-22T19:00:39.93Z" }, + { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104, upload-time = "2024-10-22T19:00:41.683Z" }, + { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498, upload-time = "2024-10-22T19:00:43.822Z" }, + { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073, upload-time = "2024-10-22T19:00:45.925Z" }, + { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215, upload-time = "2024-10-22T19:00:48.101Z" }, + { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127, upload-time = "2024-10-22T19:00:50.613Z" }, + { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781, upload-time = "2024-10-22T19:00:52.383Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415, upload-time = "2024-10-22T19:00:54.412Z" }, + { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579, upload-time = "2024-10-22T19:00:56.594Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523, upload-time = "2024-10-22T19:00:58.97Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/43/16/fc88b08840de0e0a72a2f9d8c6bae36be573e475a6326ae854bcc549fc45/nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f", size = 47437, upload-time = "2024-06-04T18:44:11.171Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314, upload-time = "2024-06-04T18:44:08.352Z" }, ] [[package]] @@ -2005,9 +1993,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, ] [[package]] @@ -2018,18 +2006,18 @@ dependencies = [ { name = "numpy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134, upload-time = "2025-05-22T13:33:04.098Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, - { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, - { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, - { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, - { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, - { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, - { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, - { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, - { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, - { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, + { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980, upload-time = "2025-05-22T13:32:37.718Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826, upload-time = "2025-05-22T13:32:39.737Z" }, + { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684, upload-time = "2025-05-22T13:32:41.252Z" }, + { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927, upload-time = "2025-05-22T13:32:42.905Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259, upload-time = "2025-05-22T13:32:45.398Z" }, + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434, upload-time = "2025-05-22T13:32:47.26Z" }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402, upload-time = "2025-05-22T13:32:48.574Z" }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455, upload-time = "2025-05-22T13:32:50.052Z" }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711, upload-time = "2025-05-22T13:32:52.198Z" }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701, upload-time = "2025-05-22T13:32:54.28Z" }, ] [package.optional-dependencies] @@ -2041,55 +2029,55 @@ crc32c = [ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, ] [[package]] @@ -2102,40 +2090,40 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213, upload-time = "2024-09-20T13:10:04.827Z" } 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/a8/44/d9502bf0ed197ba9bf1103c9867d5904ddcaf869e52329787fc54ed70cc8/pandas-2.2.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:66108071e1b935240e74525006034333f98bcdb87ea116de573a6a0dccb6c039", size = 12602222, upload-time = "2024-09-20T13:08:56.254Z" }, + { 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, upload-time = "2024-09-20T13:08:58.645Z" }, + { 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, upload-time = "2024-09-20T19:01:57.571Z" }, + { 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, upload-time = "2024-09-20T13:09:01.501Z" }, + { 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, upload-time = "2024-09-20T19:02:00.678Z" }, + { 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, upload-time = "2024-09-20T13:09:04.105Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166, upload-time = "2024-09-20T13:09:06.917Z" }, + { 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, upload-time = "2024-09-20T13:09:09.655Z" }, + { 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, upload-time = "2024-09-20T13:09:14.718Z" }, + { 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, upload-time = "2024-09-20T19:02:03.88Z" }, + { 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, upload-time = "2024-09-20T13:09:17.621Z" }, + { 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, upload-time = "2024-09-20T19:02:07.094Z" }, + { 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, upload-time = "2024-09-20T13:09:20.474Z" }, + { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248, upload-time = "2024-09-20T13:09:23.137Z" }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, ] [[package]] name = "parso" version = "0.8.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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/94/68e2e17afaa9169cf6412ab0f28623903be73d1b32e208d9e8e541bb086d/parso-0.8.4.tar.gz", hash = "sha256:eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d", size = 400609, upload-time = "2024-04-05T09:43:55.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650, upload-time = "2024-04-05T09:43:53.299Z" }, ] [[package]] @@ -2146,18 +2134,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/b2/3a/3f06f34820a31257ddcabdfafc2672c5816be79c7e353b02c1f318daa7d4/partd-1.4.2.tar.gz", hash = "sha256:d022c33afbdc8405c226621b015e8067888173d85f7f5ecebb3cafed9a20f02c", size = 21029, upload-time = "2024-05-06T19:51:41.945Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905, upload-time = "2024-05-06T19:51:39.271Z" }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, ] [[package]] @@ -2167,64 +2155,64 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } +sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772 }, + { url = "https://files.pythonhosted.org/packages/9e/c3/059298687310d527a58bb01f3b1965787ee3b40dce76752eda8b44e9a2c5/pexpect-4.9.0-py2.py3-none-any.whl", hash = "sha256:7236d1e080e4936be2dc3e326cec0af72acf9212a7e1d060210e70a47e253523", size = 63772, upload-time = "2023-11-25T06:56:14.81Z" }, ] [[package]] name = "pillow" version = "11.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, ] [[package]] @@ -2238,18 +2226,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, ] [[package]] name = "prometheus-client" version = "0.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } +sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443, upload-time = "2025-05-16T20:50:18.333Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, + { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658, upload-time = "2025-05-16T20:50:16.978Z" }, ] [[package]] @@ -2259,118 +2247,118 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload-time = "2025-03-26T03:06:12.05Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload-time = "2025-03-26T03:04:01.912Z" }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload-time = "2025-03-26T03:04:03.704Z" }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload-time = "2025-03-26T03:04:05.257Z" }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload-time = "2025-03-26T03:04:07.044Z" }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload-time = "2025-03-26T03:04:08.676Z" }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload-time = "2025-03-26T03:04:10.172Z" }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload-time = "2025-03-26T03:04:11.616Z" }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload-time = "2025-03-26T03:04:13.102Z" }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload-time = "2025-03-26T03:04:14.658Z" }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload-time = "2025-03-26T03:04:16.207Z" }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload-time = "2025-03-26T03:04:18.11Z" }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload-time = "2025-03-26T03:04:19.562Z" }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload-time = "2025-03-26T03:04:21.065Z" }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload-time = "2025-03-26T03:04:22.718Z" }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload-time = "2025-03-26T03:04:24.039Z" }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload-time = "2025-03-26T03:04:25.211Z" }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload-time = "2025-03-26T03:04:26.436Z" }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload-time = "2025-03-26T03:04:27.932Z" }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload-time = "2025-03-26T03:04:30.659Z" }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload-time = "2025-03-26T03:04:31.977Z" }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload-time = "2025-03-26T03:04:33.45Z" }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload-time = "2025-03-26T03:04:35.542Z" }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload-time = "2025-03-26T03:04:37.501Z" }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload-time = "2025-03-26T03:04:39.532Z" }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload-time = "2025-03-26T03:04:41.109Z" }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload-time = "2025-03-26T03:04:42.544Z" }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload-time = "2025-03-26T03:04:44.06Z" }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload-time = "2025-03-26T03:04:45.983Z" }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload-time = "2025-03-26T03:04:47.699Z" }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload-time = "2025-03-26T03:04:49.195Z" }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload-time = "2025-03-26T03:04:50.595Z" }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload-time = "2025-03-26T03:04:51.791Z" }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload-time = "2025-03-26T03:06:10.5Z" }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993 }, + { url = "https://files.pythonhosted.org/packages/22/a6/858897256d0deac81a172289110f31629fc4cee19b6f01283303e18c8db3/ptyprocess-0.7.0-py2.py3-none-any.whl", hash = "sha256:4b41f3967fce3af57cc7e94b888626c18bf37a083e3651ca8feeb66d492fef35", size = 13993, upload-time = "2020-12-28T15:15:28.35Z" }, ] [[package]] name = "pure-eval" version = "0.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752 } +sdist = { url = "https://files.pythonhosted.org/packages/cd/05/0a34433a064256a578f1783a10da6df098ceaa4a57bbeaa96a6c0352786b/pure_eval-0.2.3.tar.gz", hash = "sha256:5f4e983f40564c576c7c8635ae88db5956bb2229d7e9237d03b3c0b0190eaf42", size = 19752, upload-time = "2024-07-21T12:58:21.801Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842 }, + { url = "https://files.pythonhosted.org/packages/8e/37/efad0257dc6e593a18957422533ff0f87ede7c9c6ea010a2177d738fb82f/pure_eval-0.2.3-py3-none-any.whl", hash = "sha256:1db8e35b67b3d218d818ae653e27f06c3aa420901fa7b081ca98cbedc874e0d0", size = 11842, upload-time = "2024-07-21T12:58:20.04Z" }, ] [[package]] name = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/1d/b2/31537cf4b1ca988837256c910a668b553fceb8f069bedc4b1c826024b52c/pycparser-2.22.tar.gz", hash = "sha256:491c8be9c040f5390f5bf44a5b07752bd07f56edf992381b05c701439eec10f6", size = 172736, upload-time = "2024-03-30T13:22:22.564Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552, upload-time = "2024-03-30T13:22:20.476Z" }, ] [[package]] @@ -2383,9 +2371,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, ] [[package]] @@ -2395,45 +2383,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, ] [[package]] @@ -2445,23 +2433,23 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, ] [[package]] name = "pyiceberg" -version = "0.9.0" +version = "0.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cachetools" }, @@ -2476,23 +2464,27 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/55/35/1c67977f26eea825104d18fc3f0e01b14e15de41fe9c0d06e5bb501c4be8/pyiceberg-0.9.0.tar.gz", hash = "sha256:70d255903dda31ed1f7753d41fec0c031aae36ef95e8a824cdae7df593439d8b", size = 611994 } +sdist = { url = "https://files.pythonhosted.org/packages/bd/6a/6c1ac381ff0b8e03a9abc2f05722f6002d7452a2c05118697b3f3910e171/pyiceberg-0.9.1.tar.gz", hash = "sha256:3634134ce33859a441768b39df179b2c6f3de2bbbf506622884f553b013ee799", size = 617629, upload-time = "2025-04-30T14:59:34.306Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/87/6a/7d2102aa2c12c2fa858b61006a5dd9bc23a64bd48ed5f5a8b3b15c3e5830/pyiceberg-0.9.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e37f2dc0fef4fba1a51e5a7c87d3aee5bb98bdd82cde9f219b5542201919055", size = 564652 }, - { url = "https://files.pythonhosted.org/packages/2d/8f/2008df00285d6d028e06daa4b82d48f2d44526f422061a2fa077951e20b7/pyiceberg-0.9.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b9d4939c41daf94562b9a29ef322fe42e1aa2c886a23cefe23b5f013f27b3854", size = 558538 }, - { url = "https://files.pythonhosted.org/packages/12/b7/fd41db8092dfd1d2b19f10c7bd4725da382de3d9650ea022d9ae0a88ee4b/pyiceberg-0.9.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:91c86e00684427d02ace00fb765af13f75bbff3dd813a6e3928f2974b0ff150c", size = 1050661 }, - { url = "https://files.pythonhosted.org/packages/d3/65/f42f3fe3d1c63ac6bb913476d90365d3fc8aabb0108445c9e27005334232/pyiceberg-0.9.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d5c4d6819b2668c3da82683a8f0e69b282b8092c390d7b2c2c99d6234905574c", size = 1045874 }, - { url = "https://files.pythonhosted.org/packages/79/6b/6fc237561861b99e1b0c1bb125f58050debf81e798c15ef06aace7054611/pyiceberg-0.9.0-cp311-cp311-win_amd64.whl", hash = "sha256:a1832f49831d92aac3f62462f2d5fbad05eeb5e93f25e0e308c0d8053cab9fa6", size = 557840 }, - { url = "https://files.pythonhosted.org/packages/d0/af/5dc5f2aaa65e3508c7eab7a1fafb8d481af9574e8dd1c37a07c57ec5717c/pyiceberg-0.9.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6b868726045ccc013a723130aaa7cf2f2ddeae359930b0c54de8bc29f7103326", size = 604132 }, - { url = "https://files.pythonhosted.org/packages/8c/24/64706626f6e538bdbb412d7efc5afc767c5523480e5fb107bb4b1b75ffcc/pyiceberg-0.9.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:785b5ee8d00b1f38c8643f9c1ca22f2dd034cf9610804972fddfc6ac97ced002", size = 595703 }, - { url = "https://files.pythonhosted.org/packages/a7/06/e8d4d667a7e1e9fa8c16ef926a2089672959d5fa3be8dd4dacb6cefe26f8/pyiceberg-0.9.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6630cac07feb5894c2311be5ca62ffa3432803878fb112ae47c1d3edbd08609", size = 1275772 }, - { url = "https://files.pythonhosted.org/packages/e1/31/b5609e727ea6137b27bb8e0559cbab33a9fac4d56dc1e5799c492a962116/pyiceberg-0.9.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ac640aa29f57b2cb282f9a25427b73373d6fb54e82a589e8cc616f90e6f5e5b7", size = 1267452 }, - { url = "https://files.pythonhosted.org/packages/fa/73/211fd2460b894c1b3413e832069168d07f273abdaf2834170ea0035b53f9/pyiceberg-0.9.0-cp312-cp312-win_amd64.whl", hash = "sha256:c13328f6b5bd5210e845e6a69977b38f2d0272ed431d27c825c587b6d7999b5e", size = 593838 }, + { url = "https://files.pythonhosted.org/packages/f6/75/c8b4ebba7d345b5e736ebf4976121b97dd7091dcad401a17ca57152704c5/pyiceberg-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e75c502dd56ac3d77036ce8a3b2566348da5ff4367c7c671981616ef6dcc883", size = 566274, upload-time = "2025-04-30T14:59:00.626Z" }, + { url = "https://files.pythonhosted.org/packages/e0/a0/9494c7930e5e4dc951d95abba584d8ffdb7403368398796ede21ff25c26f/pyiceberg-0.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0a8189c9b3ba81dd12493d6bb874a656a4d4909904552b97a629d1d43b3a0e90", size = 560157, upload-time = "2025-04-30T14:59:02.082Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d4/351776b1ae83de187d7cf37b100f4f124c7a71e35337182d3aef308156d1/pyiceberg-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c03065d5c5b704444ab8fb18cdd232ec43994db95b9e53444008ebc2cf9dc2c", size = 1052290, upload-time = "2025-04-30T14:59:03.232Z" }, + { url = "https://files.pythonhosted.org/packages/40/17/d8fea681afb52f20bf6a640f9044dcf621a47165f67cc5320bf3c6e82e4e/pyiceberg-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:93f2586a5da737de6e4643bf096a01772f068d1eedb7ffde6b36c60b6b9e6bd3", size = 1047503, upload-time = "2025-04-30T14:59:04.38Z" }, + { url = "https://files.pythonhosted.org/packages/d0/e0/d173fc2aa8dc252d7aac71703ba2c0491e4988b3a160cf5abb531cfb9086/pyiceberg-0.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:94e45c10051110ba7a43b85a1f0a680b4a31d1d6cee593c8e62e14d22d18c47d", size = 559491, upload-time = "2025-04-30T14:59:05.615Z" }, + { url = "https://files.pythonhosted.org/packages/52/26/77983c2884b4a5f13f8a35e5c5e762ae699f6c511efd16730ab883000c1b/pyiceberg-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b8a958e3bbe919026533cee1f0fb6b7040928fce8d42c2ecea228de7c17578fa", size = 605755, upload-time = "2025-04-30T14:59:07.087Z" }, + { url = "https://files.pythonhosted.org/packages/6d/67/e6ea7fcc43aebc85aea5a67a69d01c9015283478061c3121b6b8aa158ce4/pyiceberg-0.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7e956b35c6822600c45fd8f3ea8cfea328cc406fefa534afeb6fdb325d05406", size = 597325, upload-time = "2025-04-30T14:59:08.644Z" }, + { url = "https://files.pythonhosted.org/packages/7f/cf/178a9f63fac1bfdd13bc85169e7ab903955d082e2cd80507b1921a6f64dc/pyiceberg-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4e585164d7d86f5c9a609a1bc2abeae2f0ea0680a11a2064d3a945866b5311", size = 1277399, upload-time = "2025-04-30T14:59:10.193Z" }, + { url = "https://files.pythonhosted.org/packages/d1/6b/78d1739eb1d5b18529ee438aed75dac3e0b246f5e4d800931f9d1e37cda2/pyiceberg-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fee08dac30e8524526f7d18468f9670f8606905b850b261314c597c6633f3b4", size = 1269083, upload-time = "2025-04-30T14:59:11.964Z" }, + { url = "https://files.pythonhosted.org/packages/67/69/c0087d19c8d8e8530acee3ba485d54aedeebf2963784a16692ca4b439566/pyiceberg-0.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:124793c54a0c2fb5ac4ab19c38da116c068e277c85cbaa7e4064e635a70b595e", size = 595512, upload-time = "2025-04-30T14:59:14.464Z" }, ] [package.optional-dependencies] -sql-sqlite = [ - { name = "sqlalchemy" }, +glue = [ + { name = "boto3" }, + { name = "mypy-boto3-glue" }, +] +s3fs = [ + { name = "s3fs" }, ] [[package]] @@ -2503,9 +2495,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload-time = "2025-04-27T23:48:27.359Z" }, ] [[package]] @@ -2517,29 +2509,29 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, ] [[package]] @@ -2549,24 +2541,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload-time = "2025-02-16T04:27:44.539Z" }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload-time = "2025-02-16T04:27:47.019Z" }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload-time = "2025-02-16T04:27:49.239Z" }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload-time = "2025-02-16T04:27:52.65Z" }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload-time = "2025-02-16T04:27:55.239Z" }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload-time = "2025-02-16T04:27:58.343Z" }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload-time = "2025-02-16T04:28:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload-time = "2025-02-16T04:28:04.988Z" }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload-time = "2025-02-16T04:28:09.036Z" }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload-time = "2025-02-16T04:28:10.944Z" }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload-time = "2025-02-16T04:28:13.342Z" }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload-time = "2025-02-16T04:28:15.818Z" }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload-time = "2025-02-16T04:28:18.338Z" }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload-time = "2025-02-16T04:28:20.822Z" }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload-time = "2025-02-16T04:28:23.303Z" }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload-time = "2025-02-16T04:28:25.227Z" }, ] [[package]] @@ -2579,9 +2571,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, ] [[package]] @@ -2591,45 +2583,45 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892 }, + { url = "https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl", hash = "sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427", size = 229892, upload-time = "2024-03-01T18:36:18.57Z" }, ] [[package]] name = "python-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, ] [[package]] name = "python-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, ] [[package]] name = "python-multipart" version = "0.0.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 }, + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, ] [[package]] @@ -2637,48 +2629,48 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, ] [[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 }, +sdist = { url = "https://files.pythonhosted.org/packages/54/ed/79a089b6be93607fa5cdaedf301d7dfb23af5f25c398d5ead2525b063e17/pyyaml-6.0.2.tar.gz", hash = "sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e", size = 130631, upload-time = "2024-08-06T20:33:50.674Z" } +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, upload-time = "2024-08-06T20:32:03.408Z" }, + { 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, upload-time = "2024-08-06T20:32:04.926Z" }, + { 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, upload-time = "2024-08-06T20:32:06.459Z" }, + { 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, upload-time = "2024-08-06T20:32:08.338Z" }, + { 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, upload-time = "2024-08-06T20:32:14.124Z" }, + { 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, upload-time = "2024-08-06T20:32:16.17Z" }, + { 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, upload-time = "2024-08-06T20:32:18.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, + { 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, upload-time = "2024-08-06T20:32:25.131Z" }, + { 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, upload-time = "2024-08-06T20:32:26.511Z" }, + { 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, upload-time = "2024-08-06T20:32:28.363Z" }, + { 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, upload-time = "2024-08-06T20:32:30.058Z" }, + { 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, upload-time = "2024-08-06T20:32:31.881Z" }, + { 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, upload-time = "2024-08-06T20:32:37.083Z" }, + { 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, upload-time = "2024-08-06T20:32:38.898Z" }, + { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, + { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, ] [[package]] @@ -2688,9 +2680,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, ] [[package]] @@ -2700,35 +2692,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, ] [[package]] @@ -2745,16 +2737,16 @@ dependencies = [ { name = "numpy" }, { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } +sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990, upload-time = "2024-12-02T14:49:25.571Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, - { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, - { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, - { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, - { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, - { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, - { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, - { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, + { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767, upload-time = "2024-12-02T14:48:38.794Z" }, + { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975, upload-time = "2024-12-02T14:48:41.895Z" }, + { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391, upload-time = "2024-12-02T14:48:44.447Z" }, + { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478, upload-time = "2024-12-02T14:48:46.893Z" }, + { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543, upload-time = "2024-12-02T14:48:49.757Z" }, + { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924, upload-time = "2024-12-02T14:48:53.263Z" }, + { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721, upload-time = "2024-12-02T14:48:56.533Z" }, + { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154, upload-time = "2024-12-02T14:48:59.261Z" }, ] [[package]] @@ -2766,9 +2758,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, ] [[package]] @@ -2781,9 +2773,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218, upload-time = "2024-05-29T15:37:49.536Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928, upload-time = "2024-05-29T15:37:47.027Z" }, ] [[package]] @@ -2793,18 +2785,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, ] [[package]] @@ -2815,9 +2807,9 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/ab/3a/0316b28d0761c6734d6bc14e770d85506c986c85ffb239e688eeaab2c2bc/rich-13.9.4.tar.gz", hash = "sha256:439594978a49a09530cff7ebc4b5c7103ef57baf48d5ea3184f21d9a2befa098", size = 223149, upload-time = "2024-11-01T16:43:57.873Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424, upload-time = "2024-11-01T16:43:55.817Z" }, ] [[package]] @@ -2829,9 +2821,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805, upload-time = "2025-05-12T19:19:15.284Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815 }, + { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815, upload-time = "2025-05-12T19:19:13.713Z" }, ] [[package]] @@ -2845,95 +2837,95 @@ dependencies = [ { name = "rasterio" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } +sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600, upload-time = "2025-04-21T17:46:54.183Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, + { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151, upload-time = "2025-04-21T17:46:52.801Z" }, ] [[package]] name = "rpds-py" version = "0.25.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, ] [[package]] name = "ruff" version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407, upload-time = "2025-03-14T13:52:36.539Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, - { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, - { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, - { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, - { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, - { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, - { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, - { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, - { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, - { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, - { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, - { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, - { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, - { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, - { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, - { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, - { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158, upload-time = "2025-03-14T13:51:55.69Z" }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071, upload-time = "2025-03-14T13:51:58.989Z" }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944, upload-time = "2025-03-14T13:52:02.318Z" }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725, upload-time = "2025-03-14T13:52:04.303Z" }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435, upload-time = "2025-03-14T13:52:06.602Z" }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664, upload-time = "2025-03-14T13:52:08.613Z" }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856, upload-time = "2025-03-14T13:52:11.019Z" }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156, upload-time = "2025-03-14T13:52:13.383Z" }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167, upload-time = "2025-03-14T13:52:15.528Z" }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311, upload-time = "2025-03-14T13:52:18.088Z" }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039, upload-time = "2025-03-14T13:52:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939, upload-time = "2025-03-14T13:52:22.798Z" }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259, upload-time = "2025-03-14T13:52:24.89Z" }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212, upload-time = "2025-03-14T13:52:27.493Z" }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905, upload-time = "2025-03-14T13:52:30.46Z" }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730, upload-time = "2025-03-14T13:52:32.508Z" }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956, upload-time = "2025-03-14T13:52:34.491Z" }, ] [[package]] name = "s3fs" -version = "2025.5.0" +version = "2025.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "aiobotocore" }, { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/58/54/142a70e4c39a84b2b7c97200b179a4491c9c479f36e5c569c74dbfa96394/s3fs-2025.5.0.tar.gz", hash = "sha256:8ddbdc83c98ed55c7397a295596a7106de6f7a126c45798a95ad4d280edb3611", size = 77305 } +sdist = { url = "https://files.pythonhosted.org/packages/7f/6f/d0ee452580d7d0643a1a776b95dfef2144023f3fc077038e07d651995d34/s3fs-2025.5.1.tar.gz", hash = "sha256:84beffa231b8ed94f8d667e93387b38351e1c4447aedea5c2c19dd88b7fcb658", size = 77276, upload-time = "2025-05-24T12:14:11.442Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/06/62/656d0b3534eacea309d78bd8a8e15e6359d3c691e4192743c2f41e45b509/s3fs-2025.5.0-py3-none-any.whl", hash = "sha256:4eb942ebadfb7423f695475519849862d7d88f6f139cd7d9a211e5eb6fd5fc93", size = 30481 }, + { url = "https://files.pythonhosted.org/packages/d5/c0/f5cc95ec88694429fcb841a37456be0a27463bc39d43edbd36e3164120ed/s3fs-2025.5.1-py3-none-any.whl", hash = "sha256:7475e7c40a3a112f17144907ffae50782ab6c03487fe0b45a9c3942bb7a5c606", size = 30476, upload-time = "2025-05-24T12:14:10.056Z" }, ] [[package]] @@ -2943,9 +2935,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload-time = "2025-02-26T20:44:57.459Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload-time = "2025-02-26T20:44:55.509Z" }, ] [[package]] @@ -2955,44 +2947,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, ] [[package]] name = "setuptools" version = "80.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720, upload-time = "2025-05-20T14:02:53.503Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470, upload-time = "2025-05-20T14:02:51.348Z" }, ] [[package]] @@ -3002,98 +2994,69 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/58/15/8b3609fd3830ef7b27b655beb4b4e9c62313a4e8da8c676e142cc210d58e/shellingham-1.5.4.tar.gz", hash = "sha256:8dbca0739d487e5bd35ab3ca4b36e11c4078f3a234bfce294b0a0291363404de", size = 10310, upload-time = "2023-10-24T04:13:40.426Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755 }, + { url = "https://files.pythonhosted.org/packages/e0/f9/0595336914c5619e5f28a1fb793285925a8cd4b432c9da0a987836c7f822/shellingham-1.5.4-py2.py3-none-any.whl", hash = "sha256:7ecfff8f2fd72616f7481040475a65b2bf8af90a56c89140852d1120324e8686", size = 9755, upload-time = "2023-10-24T04:13:38.866Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050 }, + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, ] [[package]] name = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575 }, + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, ] [[package]] name = "soupsieve" version = "2.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, -] - -[[package]] -name = "sqlalchemy" -version = "2.0.41" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, - { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, - { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, - { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, - { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, - { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, - { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, - { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, - { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, - { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, - { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, - { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, - { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, - { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, - { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, - { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, - { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, ] [[package]] @@ -3105,9 +3068,9 @@ dependencies = [ { 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 } +sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521, upload-time = "2023-09-30T13:58:03.53Z" }, ] [[package]] @@ -3117,9 +3080,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846 } +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 }, + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, ] [[package]] @@ -3129,18 +3092,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload-time = "2023-03-10T12:50:27.062Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload-time = "2023-03-10T12:50:17.242Z" }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, ] [[package]] @@ -3152,9 +3115,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, ] [[package]] @@ -3164,9 +3127,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } +sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347, upload-time = "2025-05-22T03:19:13.699Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, + { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593, upload-time = "2025-05-22T03:19:11.614Z" }, ] [[package]] @@ -3176,37 +3139,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/0b/d80dfa675bf592f636d1ea0b835eab4ec8df6e9415d8cfd766df54456123/toolz-1.0.0.tar.gz", hash = "sha256:2c86e3d9a04798ac556793bced838816296a2f085017664e4995cb40a1047a02", size = 66790, upload-time = "2024-10-04T16:17:04.001Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383 }, + { url = "https://files.pythonhosted.org/packages/03/98/eb27cc78ad3af8e302c9d8ff4977f5026676e130d28dd7578132a457170c/toolz-1.0.0-py3-none-any.whl", hash = "sha256:292c8f1c4e7516bf9086f8850935c799a874039c8bcf959d47b600e4c44a6236", size = 56383, upload-time = "2024-10-04T16:17:01.533Z" }, ] [[package]] name = "tornado" version = "6.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, ] [[package]] @@ -3216,18 +3179,18 @@ 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 } +sdist = { url = "https://files.pythonhosted.org/packages/a8/4b/29b4ef32e036bb34e4ab51796dd745cdba7ed47ad142a9f4a1eb8e0c744d/tqdm-4.67.1.tar.gz", hash = "sha256:f8aef9c52c08c13a65f30ea34f4e5aac3fd1a34959879d7e59e63027286627f2", size = 169737, upload-time = "2024-11-24T20:12:22.481Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540 }, + { url = "https://files.pythonhosted.org/packages/d0/30/dc54f88dd4a2b5dc8a0279bdd7270e735851848b762aeb1c1184ed1f6b14/tqdm-4.67.1-py3-none-any.whl", hash = "sha256:26445eca388f82e72884e0d580d5464cd801a3ea01e63e5601bdff9ba6a48de2", size = 78540, upload-time = "2024-11-24T20:12:19.698Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/79/72064e6a701c2183016abbbfedaba506d81e30e232a68c9f0d6f6fcd1574/traitlets-5.14.3.tar.gz", hash = "sha256:9ed0579d3502c94b4b3732ac120375cda96f923114522847de4b3bb98b96b6b7", size = 161621, upload-time = "2024-04-19T11:11:49.746Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359, upload-time = "2024-04-19T11:11:46.763Z" }, ] [[package]] @@ -3240,27 +3203,27 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641 } +sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641, upload-time = "2025-04-28T21:40:59.204Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253 }, + { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253, upload-time = "2025-04-28T21:40:56.269Z" }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, ] [[package]] @@ -3270,46 +3233,46 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, ] [[package]] name = "ujson" version = "5.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, - { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, - { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, - { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, - { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, - { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, - { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, - { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, - { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, - { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, - { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, - { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, - { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, - { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, - { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, - { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, - { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, - { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, - { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885, upload-time = "2024-05-14T02:02:34.233Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353, upload-time = "2024-05-14T02:00:48.04Z" }, + { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813, upload-time = "2024-05-14T02:00:49.28Z" }, + { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988, upload-time = "2024-05-14T02:00:50.484Z" }, + { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561, upload-time = "2024-05-14T02:00:52.146Z" }, + { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497, upload-time = "2024-05-14T02:00:53.366Z" }, + { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877, upload-time = "2024-05-14T02:00:55.095Z" }, + { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632, upload-time = "2024-05-14T02:00:57.099Z" }, + { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513, upload-time = "2024-05-14T02:00:58.488Z" }, + { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616, upload-time = "2024-05-14T02:01:00.463Z" }, + { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071, upload-time = "2024-05-14T02:01:02.211Z" }, + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642, upload-time = "2024-05-14T02:01:04.055Z" }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807, upload-time = "2024-05-14T02:01:05.25Z" }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972, upload-time = "2024-05-14T02:01:06.458Z" }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686, upload-time = "2024-05-14T02:01:07.618Z" }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591, upload-time = "2024-05-14T02:01:08.901Z" }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853, upload-time = "2024-05-14T02:01:10.772Z" }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689, upload-time = "2024-05-14T02:01:12.214Z" }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576, upload-time = "2024-05-14T02:01:14.39Z" }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764, upload-time = "2024-05-14T02:01:15.83Z" }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211, upload-time = "2024-05-14T02:01:17.567Z" }, ] [[package]] @@ -3319,27 +3282,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427, upload-time = "2024-12-13T00:58:27.514Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087, upload-time = "2024-12-13T00:58:24.582Z" }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, ] [[package]] @@ -3350,9 +3313,9 @@ dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815 } +sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815, upload-time = "2025-04-19T06:02:50.101Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483 }, + { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483, upload-time = "2025-04-19T06:02:48.42Z" }, ] [package.optional-dependencies] @@ -3370,20 +3333,20 @@ standard = [ name = "uvloop" version = "0.21.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410 }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476 }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855 }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185 }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256 }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323 }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, ] [[package]] @@ -3395,9 +3358,9 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, ] [[package]] @@ -3412,33 +3375,33 @@ dependencies = [ { name = "universal-pathlib" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } +sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650, upload-time = "2025-03-03T16:52:05.169Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, + { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890, upload-time = "2025-03-03T16:52:03.25Z" }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, ] [[package]] @@ -3448,132 +3411,132 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336 }, - { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977 }, - { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232 }, - { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151 }, - { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054 }, - { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955 }, - { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234 }, - { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750 }, - { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591 }, - { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370 }, - { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791 }, - { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622 }, - { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699 }, - { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511 }, - { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715 }, - { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138 }, - { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592 }, - { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532 }, - { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865 }, - { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887 }, - { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498 }, - { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663 }, - { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410 }, - { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965 }, - { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693 }, - { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287 }, +sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537, upload-time = "2025-04-08T10:36:26.722Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336, upload-time = "2025-04-08T10:34:59.359Z" }, + { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977, upload-time = "2025-04-08T10:35:00.522Z" }, + { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232, upload-time = "2025-04-08T10:35:01.698Z" }, + { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151, upload-time = "2025-04-08T10:35:03.358Z" }, + { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054, upload-time = "2025-04-08T10:35:04.561Z" }, + { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955, upload-time = "2025-04-08T10:35:05.786Z" }, + { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234, upload-time = "2025-04-08T10:35:07.187Z" }, + { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750, upload-time = "2025-04-08T10:35:08.859Z" }, + { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591, upload-time = "2025-04-08T10:35:10.64Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370, upload-time = "2025-04-08T10:35:12.412Z" }, + { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791, upload-time = "2025-04-08T10:35:13.719Z" }, + { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622, upload-time = "2025-04-08T10:35:15.071Z" }, + { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699, upload-time = "2025-04-08T10:35:16.732Z" }, + { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511, upload-time = "2025-04-08T10:35:17.956Z" }, + { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715, upload-time = "2025-04-08T10:35:19.202Z" }, + { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138, upload-time = "2025-04-08T10:35:20.586Z" }, + { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592, upload-time = "2025-04-08T10:35:21.87Z" }, + { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532, upload-time = "2025-04-08T10:35:23.143Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865, upload-time = "2025-04-08T10:35:24.702Z" }, + { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887, upload-time = "2025-04-08T10:35:25.969Z" }, + { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498, upload-time = "2025-04-08T10:35:27.353Z" }, + { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663, upload-time = "2025-04-08T10:35:28.685Z" }, + { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410, upload-time = "2025-04-08T10:35:30.42Z" }, + { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965, upload-time = "2025-04-08T10:35:32.023Z" }, + { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693, upload-time = "2025-04-08T10:35:33.225Z" }, + { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287, upload-time = "2025-04-08T10:35:34.568Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/63/53559446a878410fc5a5974feb13d31d78d752eb18aeba59c7fef1af7598/wcwidth-0.2.13.tar.gz", hash = "sha256:72ea0c06399eb286d978fdedb6923a9eb47e1c486ce63e9b4e64fc18303972b5", size = 101301, upload-time = "2024-01-06T02:10:57.829Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166 }, + { url = "https://files.pythonhosted.org/packages/fd/84/fd2ba7aafacbad3c4201d395674fc6348826569da3c0937e75505ead3528/wcwidth-0.2.13-py2.py3-none-any.whl", hash = "sha256:3da69048e4540d84af32131829ff948f1e022c1c6bdb8d6102117aac784f6859", size = 34166, upload-time = "2024-01-06T02:10:55.763Z" }, ] [[package]] name = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, ] [[package]] name = "websockets" version = "15.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423 }, - { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082 }, - { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330 }, - { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878 }, - { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883 }, - { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252 }, - { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521 }, - { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958 }, - { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918 }, - { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388 }, - { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828 }, - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437 }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096 }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332 }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152 }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096 }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523 }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790 }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165 }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160 }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395 }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841 }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, ] [[package]] @@ -3585,9 +3548,9 @@ dependencies = [ { name = "packaging" }, { name = "pandas" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, ] [[package]] @@ -3599,43 +3562,43 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload-time = "2025-04-17T00:45:14.661Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload-time = "2025-04-17T00:42:04.511Z" }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload-time = "2025-04-17T00:42:06.43Z" }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload-time = "2025-04-17T00:42:07.976Z" }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload-time = "2025-04-17T00:42:09.902Z" }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload-time = "2025-04-17T00:42:11.768Z" }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload-time = "2025-04-17T00:42:13.983Z" }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload-time = "2025-04-17T00:42:16.386Z" }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload-time = "2025-04-17T00:42:18.622Z" }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload-time = "2025-04-17T00:42:20.9Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload-time = "2025-04-17T00:42:22.926Z" }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload-time = "2025-04-17T00:42:25.145Z" }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload-time = "2025-04-17T00:42:27.475Z" }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload-time = "2025-04-17T00:42:29.333Z" }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload-time = "2025-04-17T00:42:31.668Z" }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload-time = "2025-04-17T00:42:33.523Z" }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload-time = "2025-04-17T00:42:35.873Z" }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload-time = "2025-04-17T00:42:37.586Z" }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload-time = "2025-04-17T00:42:39.602Z" }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload-time = "2025-04-17T00:42:41.469Z" }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload-time = "2025-04-17T00:42:43.666Z" }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload-time = "2025-04-17T00:42:45.391Z" }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload-time = "2025-04-17T00:42:47.552Z" }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload-time = "2025-04-17T00:42:49.406Z" }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload-time = "2025-04-17T00:42:51.588Z" }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload-time = "2025-04-17T00:42:53.674Z" }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload-time = "2025-04-17T00:42:55.49Z" }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload-time = "2025-04-17T00:42:57.895Z" }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload-time = "2025-04-17T00:43:00.094Z" }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload-time = "2025-04-17T00:43:02.242Z" }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload-time = "2025-04-17T00:43:04.189Z" }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload-time = "2025-04-17T00:43:06.609Z" }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload-time = "2025-04-17T00:43:09.01Z" }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload-time = "2025-04-17T00:43:11.311Z" }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload-time = "2025-04-17T00:43:13.087Z" }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload-time = "2025-04-17T00:45:12.199Z" }, ] [[package]] @@ -3649,16 +3612,16 @@ dependencies = [ { name = "packaging" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } +sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825, upload-time = "2025-05-19T14:19:00.123Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, + { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364, upload-time = "2025-05-19T14:18:58.789Z" }, ] [[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 } +sdist = { url = "https://files.pythonhosted.org/packages/3f/50/bad581df71744867e9468ebd0bcd6505de3b275e06f202c2cb016e3ff56f/zipp-3.21.0.tar.gz", hash = "sha256:2c9958f6430a2040341a52eb608ed6dd93ef4392e02ffe219417c1b28b5dd1f4", size = 24545, upload-time = "2024-11-10T15:05:20.202Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630, upload-time = "2024-11-10T15:05:19.275Z" }, ] From b780858139a9d85c540ab9ca51a2a926cbccdda8 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 10 Jun 2025 11:25:28 -0400 Subject: [PATCH 53/97] NGWPC 6399: Write an example Jupyter Notebook showing how to query RAS XS from the EDFS Apache iceberg tables --- examples/ras_xs/querying.ipynb | 744 +++++++++++++++++++++++++++++++++ 1 file changed, 744 insertions(+) create mode 100644 examples/ras_xs/querying.ipynb diff --git a/examples/ras_xs/querying.ipynb b/examples/ras_xs/querying.ipynb new file mode 100644 index 0000000..0e7bf1b --- /dev/null +++ b/examples/ras_xs/querying.ipynb @@ -0,0 +1,744 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Querying RAS XS through PyIceberg\n", + "\n", + "The following notebook is to walk you through the process of querying a RAS XS through PyIceberg. \n", + "\n", + "For the warehouse path, please put the path to your S3 tables URI\n", + "\n", + "Requires `.env` containing `test` account credentials AND default region: `AWS_DEFAULT_REGION=\"us-east-1\"`" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "# imports\n", + "import os\n", + "\n", + "from dotenv import load_dotenv\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric_tools import to_geopandas\n", + "\n", + "load_dotenv()\n", + "\n", + "os.environ[\"WAREHOUSE_PATH\"] = \"INSERT PATH TO URI\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Load Catalog\n", + "catalog_settings = {\n", + " \"type\": \"glue\",\n", + " \"s3.endpoint\": \"s3.us-east-1.amazonaws.com\",\n", + " \"warehouse\": os.environ[\"WAREHOUSE_PATH\"],\n", + " \"glue_region\": \"us-east-1\",\n", + "}\n", + "catalog = load_catalog(\"glue\", **catalog_settings)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('mip_xs', '02030102'),\n", + " ('mip_xs', '02030103'),\n", + " ('mip_xs', '02030104'),\n", + " ('mip_xs', '02030105'),\n", + " ('mip_xs', '02040101'),\n", + " ('mip_xs', '02040102'),\n", + " ('mip_xs', '02040103'),\n", + " ('mip_xs', '02040104'),\n", + " ('mip_xs', '02040105'),\n", + " ('mip_xs', '02040106')]" + ] + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "catalog.list_tables(\"mip_xs\")[40:50]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using `catalog.load_table()` we can directly call the XS data. Each is stored based on HUC8" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id__index_level_0__
    0Middle CreekReach 1Middle Creek ,Reach 116456.0Middle Creek Reach 1 16456.0861.852922.65204.9114.1156.0Type RM Length L Ch R = 1 ,16456 ,204.9,156,...[(0.0, 922.65), (5.6, 922.16), (15.5, 921.15),...['406.7', '461.44']39821605.0\\n1037.0\\n1453.0\\n837.0\\n660.0\\n458.00.2% Chance\\n1% Chance\\n1+% Chance\\n2% Chance\\...LINESTRING (1699491.379 2176460.083, 1699268.2...02040106MiddleCreekAE41871334187169NoneNone89158
    1Middle CreekReach 1Middle Creek ,Reach 116300.0Middle Creek Reach 1 16300.0860.3873.03325.1281.1327.0Type RM Length L Ch R = 1 ,16300 ,325.1,327,...[(0.0, 873.03), (1.2, 872.89), (1.8, 872.7), (...['226.7', '283.62']19922113.0\\n1371.0\\n1920.0\\n1109.0\\n877.0\\n611.00.2% Chance\\n1% Chance\\n1+% Chance\\n2% Chance\\...LINESTRING (1699470.635 2176367.49, 1699291.07...02040106MiddleCreekAENoneNoneNoneNone89159
    2Middle CreekReach 1Middle Creek ,Reach 115972.0Middle Creek Reach 1 15972.0856.647865.25141.8214.1191.2Type RM Length L Ch R = 1 ,15972 ,141.8,191....[(0.0, 865.25), (0.757, 865.23), (4.075, 865.0...['177.08', '192.51']10472113.0\\n1371.0\\n1920.0\\n1109.0\\n877.0\\n611.00.2% Chance\\n1% Chance\\n1+% Chance\\n2% Chance\\...LINESTRING (1699527.966 2176278.803, 1699473.4...02040106MiddleCreekAENoneNoneNoneNone89160
    3Middle CreekReach 1Middle Creek ,Reach 115781.0Middle Creek Reach 1 15781.0853.81864.813128.0205.3183.5Type RM Length L Ch R = 1 ,15781 ,128,183.5,...[(0.0, 864.22), (19.555, 864.768), (22.379, 86...['249.38', '264.58']12962113.0\\n1371.0\\n1920.0\\n1109.0\\n877.0\\n611.00.2% Chance\\n1% Chance\\n1+% Chance\\n2% Chance\\...LINESTRING (1699583.967 2176242.774, 1699513.8...02040106MiddleCreekAENoneNoneNoneNone89161
    4Middle CreekReach 1Middle Creek ,Reach 115598.0Middle Creek Reach 1 15598.0851.72861.82215.395.0209.6Type RM Length L Ch R = 1 ,15598 ,215.3,209....[(0.0, 861.81), (0.4, 861.82), (10.0, 861.02),...['298.1', '328.6']35422113.0\\n1371.0\\n1920.0\\n1109.0\\n877.0\\n611.00.2% Chance\\n1% Chance\\n1+% Chance\\n2% Chance\\...LINESTRING (1699625.84 2176240.53, 1699373.415...02040106MiddleCreekAENoneNoneNoneNone89162
    \n", + "
    " + ], + "text/plain": [ + " river reach ... ds_network_to_id __index_level_0__\n", + "0 Middle Creek Reach 1 ... None 89158\n", + "1 Middle Creek Reach 1 ... None 89159\n", + "2 Middle Creek Reach 1 ... None 89160\n", + "3 Middle Creek Reach 1 ... None 89161\n", + "4 Middle Creek Reach 1 ... None 89162\n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Reading MIP XS\n", + "namespace = \"mip_xs\"\n", + "huc_number = \"02040106\"\n", + "df = catalog.load_table(f\"{namespace}.{huc_number}\").scan().to_pandas()\n", + "gdf = to_geopandas(df)\n", + "gdf.head()\n", + "# gdf.explore()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To query individual river reaches, we can use the scan feature to query based on the table schema" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "catalog.load_table(f\"{namespace}.{huc_number}\").schema" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's query by the river name" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id__index_level_0__
    4916Lehigh RiverMainLehigh River ,Main970.0563Lehigh River Main 970.0563161.24315.72205.44257.81237.58Type RM Length L Ch R = 1 ,970.0563,205.44,237...[(0.0, 212.27), (10.0, 212.07), (13.99, 212.11...['1691.53', '1986.6']396446235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb'\\x01\\x02\\x00\\x00\\x00\\x04\\x00\\x00\\x00\\xb7^\\xf...02040106LehighRiverFEMA_SupNoneNoneNoneNone99205
    4917Lehigh RiverMainLehigh River ,Main732.4796Lehigh River Main 732.4796160.27307.0103.30103.30103.30Type RM Length L Ch R = 1 ,732.4796,103.3,103....[(0.0, 211.27), (3.99, 210.98), (9.98, 210.82)...['1649.13', '1981.56']400446235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb\"\\x01\\x02\\x00\\x00\\x00\\x04\\x00\\x00\\x000\\xdc\\xe...02040106LehighRiverFEMA_SupNoneNoneNoneNone99206
    4918Lehigh RiverMainLehigh River ,Main640.0000Lehigh River Main 640.0160.25211.874.2074.2074.20Type RM Length L Ch R = 1 ,640 ,74.2,74.2,...[(0.0, 209.86), (7.7, 209.81), (19.2, 209.34),...['1628.6', '2020.7']440946235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb'\\x01\\x02\\x00\\x00\\x00\\t\\x00\\x00\\x00\\xba!\\x0b\\...02040106LehighRiverFEMA_SupNoneNoneNoneNone99207
    4919Lehigh RiverMainLehigh River ,Main573.0077Lehigh River Main 573.0077160.76296.63201.11302.23224.98Type RM Length L Ch R = 1 ,573.0077,201.11,224...[(0.0, 210.06), (9.99, 209.84), (15.98, 209.82...['1657.49', '2078.85']380746235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb'\\x01\\x02\\x00\\x00\\x00\\x07\\x00\\x00\\x00*e)r\\xa7...02040106LehighRiverFEMA_SupNoneNoneNoneNone99208
    4920Lehigh RiverMainLehigh River ,Main348.0278Lehigh River Main 348.0278152.95283.66140.55152.84348.03Type RM Length L Ch R = 1 ,348.0278,140.55,348...[(0.0, 208.28), (9.99, 207.72), (37.95, 206.87...['1743.75', '2358.16']400846235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb'\\x01\\x02\\x00\\x00\\x00\\x08\\x00\\x00\\x00\\xb0\\x8f...02040106LehighRiverFEMA_SupNoneNone4188251258846199209
    \n", + "
    " + ], + "text/plain": [ + " river reach ... ds_network_to_id __index_level_0__\n", + "4916 Lehigh River Main ... None 99205\n", + "4917 Lehigh River Main ... None 99206\n", + "4918 Lehigh River Main ... None 99207\n", + "4919 Lehigh River Main ... None 99208\n", + "4920 Lehigh River Main ... 2588461 99209\n", + "\n", + "[5 rows x 25 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyiceberg.expressions import EqualTo\n", + "\n", + "df = (\n", + " catalog.load_table(f\"{namespace}.{huc_number}\")\n", + " .scan(row_filter=EqualTo(\"river\", \"Lehigh River\"))\n", + " .to_pandas()\n", + ")\n", + "display(df.tail())\n", + "# to_geopandas(df).explore()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, let's query by an individual river station ID" + ] + }, + { + "cell_type": "code", + "execution_count": 38, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id__index_level_0__
    0Lehigh RiverMainLehigh River ,Main573.0077Lehigh River Main 573.0077160.76296.63201.11302.23224.98Type RM Length L Ch R = 1 ,573.0077,201.11,224...[(0.0, 210.06), (9.99, 209.84), (15.98, 209.82...['1657.49', '2078.85']380746235.0\\n56895.0\\n64915.0\\n73200.0\\n88600.0\\n9...10-yr\\n25-yr\\n50-yr\\n100-yr\\n100-yr+\\n500-yrb'\\x01\\x02\\x00\\x00\\x00\\x07\\x00\\x00\\x00*e)r\\xa7...02040106LehighRiverFEMA_SupNoneNoneNoneNone99208
    \n", + "
    " + ], + "text/plain": [ + " river reach ... ds_network_to_id __index_level_0__\n", + "0 Lehigh River Main ... None 99208\n", + "\n", + "[1 rows x 25 columns]" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from pyiceberg.expressions import EqualTo\n", + "\n", + "df = (\n", + " catalog.load_table(f\"{namespace}.{huc_number}\")\n", + " .scan(row_filter=EqualTo(\"river_station\", 573.0077))\n", + " .to_pandas()\n", + ")\n", + "display(df.head())\n", + "# to_geopandas(df).explore()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To extend this notebook to other HUCs, just change the HUC number, then change the XS reference" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 7876cb49f4c7a236920128026bdfd34d0828c6c9 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 10 Jun 2025 12:13:09 -0400 Subject: [PATCH 54/97] Docs + API bug cleanup (#29) --- README.md | 3 + conftest.py | 124 ++++++++++ docs/index.md | 36 ++- docs/user_guide/icefabric_api.md | 14 -- docs/user_guide/icefabric_manage.md | 226 +----------------- docs/user_guide/icefabric_tools.md | 7 +- docs/user_guide/terraform.md | 140 +++++++++++ examples/Demo_Iceberg.ipynb | 2 +- mkdocs.yml | 1 + pyproject.toml | 15 +- .../src => scripts}/get_module_parameters.py | 9 +- src/icefabric_api/app/conftest.py | 29 --- src/icefabric_api/app/main.py | 3 +- .../app/routers/hydrofabric/conftest.py | 32 --- .../app/routers/hydrofabric/test_router.py | 34 --- .../app/routers/module_params/router.py | 18 +- .../streamflow_observations/conftest.py | 18 -- src/icefabric_api/data/gauge_06710385.gpkg | Bin 319488 -> 0 bytes src/icefabric_api/pyproject.toml | 8 +- src/icefabric_api/src/__init__.py | 0 src/icefabric_api/src/cfe_params.csv | 26 -- src/icefabric_api/src/gauge_06710385.gpkg | Bin 319488 -> 0 bytes src/icefabric_api/src/hf_attributes.py | 96 -------- .../src/icefabric_api/__init__.py | 6 + .../src/icefabric_api/create_ipes.py | 217 +++++++++++++++++ src/icefabric_api/src/requirements.txt | 2 - src/icefabric_api/src/run_modules.py | 127 ---------- ...ta_from_20211231_1400_to_20220101_1400.csv | 26 -- ...rom_20211231_1400_to_20220101_1400.parquet | Bin 3415 -> 0 bytes .../tests/test_hydrofabric_router.py | 11 + src/icefabric_api/{app => tests}/test_main.py | 0 .../test_streamflow_observations_router.py} | 0 src/icefabric_manage/builds/README.md | 15 +- src/icefabric_manage/builds/build_fema_ble.py | 2 +- src/icefabric_manage/builds/build_fema_mip.py | 2 +- .../build_iceberg_bathymetry_ml_auxiliary.py | 7 + .../build_usgs_streamflow_observations.py | 7 + src/icefabric_manage/pyproject.toml | 2 +- .../src/icefabric_manage/_api.py | 23 +- src/icefabric_tools/pyproject.toml | 2 +- .../src/icefabric_tools/__init__.py | 9 +- src/icefabric_tools/tests/conftest.py | 55 ----- src/icefabric_tools/tests/test_subset.py | 2 +- tests/README.md | 7 + uv.lock | 12 +- 45 files changed, 654 insertions(+), 721 deletions(-) create mode 100644 conftest.py create mode 100644 docs/user_guide/terraform.md rename {src/icefabric_api/src => scripts}/get_module_parameters.py (73%) delete mode 100644 src/icefabric_api/app/conftest.py delete mode 100644 src/icefabric_api/app/routers/hydrofabric/conftest.py delete mode 100644 src/icefabric_api/app/routers/hydrofabric/test_router.py delete mode 100644 src/icefabric_api/app/routers/streamflow_observations/conftest.py delete mode 100644 src/icefabric_api/data/gauge_06710385.gpkg delete mode 100644 src/icefabric_api/src/__init__.py delete mode 100644 src/icefabric_api/src/cfe_params.csv delete mode 100644 src/icefabric_api/src/gauge_06710385.gpkg delete mode 100644 src/icefabric_api/src/hf_attributes.py create mode 100644 src/icefabric_api/src/icefabric_api/__init__.py create mode 100644 src/icefabric_api/src/icefabric_api/create_ipes.py delete mode 100644 src/icefabric_api/src/requirements.txt delete mode 100644 src/icefabric_api/src/run_modules.py delete mode 100644 src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv delete mode 100644 src/icefabric_api/tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet create mode 100644 src/icefabric_api/tests/test_hydrofabric_router.py rename src/icefabric_api/{app => tests}/test_main.py (100%) rename src/icefabric_api/{app/routers/streamflow_observations/test_router.py => tests/test_streamflow_observations_router.py} (100%) delete mode 100644 src/icefabric_tools/tests/conftest.py create mode 100644 tests/README.md diff --git a/README.md b/README.md index 776b525..3e3111f 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,9 @@ An [Apache Iceberg](https://py.iceberg.apache.org/) implementation of the Hydrofabric to disseminate continental hydrologic data +> [!NOTE] +> To run any of the functions in this repo your AWS test account credentials need to be in your `.env` file and your `.pyiceberg.yaml` settings need to up to date + ### Getting Started This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: ```sh diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..279747d --- /dev/null +++ b/conftest.py @@ -0,0 +1,124 @@ +import os +import sys +from pathlib import Path + +# Hard coding a reference to the icefabric_api/ folder to test the API +project_root = Path(__file__).parents[1] +sys.path.insert(0, str(project_root / "src" / "icefabric_api")) + +os.environ["AWS_DEFAULT_REGION"] = "us-east-1" +os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[1]) + +import pandas as pd # noqa: E402 +import pytest # noqa: E402 +from app.main import app # noqa: E402 +from fastapi.testclient import TestClient # noqa: E402 +from pyiceberg.catalog import Catalog, load_catalog # noqa: E402 + +sample_gauges = [ + "01010000", + "02450825", + "03173000", + "04100500", + "05473450", + "06823500", + "07060710", + "08070000", + "09253000", + "10316500", + "11456000", + "12411000", + "13337000", + "14020000", +] + +sample_hf_uri = [ + "gages-01010000", + "gages-02450825", + "gages-03173000", + "gages-04100500", + "gages-05473450", + "gages-06823500", + "gages-07060710", + "gages-08070000", + "gages-09253000", + "gages-10316500", + "gages-11456000", + "gages-12411000", + "gages-13337000", + "gages-14020000", +] + + +@pytest.fixture(params=sample_gauges) +def gauge_ids(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture(params=sample_hf_uri) +def gauge_hf_uri(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture +def testing_dir() -> Path: + """Returns the testing data dir""" + return Path(__file__).parent / "tests/data/" + + +@pytest.fixture(scope="session") +def client(): + """Create a test client for the FastAPI app.""" + return TestClient(app) + + +@pytest.fixture +def local_usgs_streamflow_csv(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + file_path = ( + Path(__file__).parent / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv" + ) + return pd.read_csv(file_path) + + +@pytest.fixture +def local_usgs_streamflow_parquet(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + file_path = ( + Path(__file__).parent / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet" + ) + return pd.read_parquet(file_path) + + +@pytest.fixture +def hydrofabric_catalog() -> Catalog: + """Returns an iceberg catalog object for the hydrofabric""" + return load_catalog("glue") + + +def pytest_addoption(parser): + """Adds the --run-slow tag""" + parser.addoption( + "--run-slow", + action="store_true", + default=False, + help="Run slow tests", + ) + + +def pytest_collection_modifyitems(config, items): + """Allows pytest to read the --run-slow tag""" + if not config.getoption("--run-slow"): + skipper = pytest.mark.skip(reason="Only run when --run-slow is given") + for item in items: + if "slow" in item.keywords: + item.add_marker(skipper) + + +def pytest_configure(config): + """Configure pytest markers.""" + config.addinivalue_line("markers", "performance: marks tests as performance tests") + config.addinivalue_line("markers", "integration: marks tests as integration tests") + config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/docs/index.md b/docs/index.md index d400578..6892352 100644 --- a/docs/index.md +++ b/docs/index.md @@ -3,4 +3,38 @@ !!! warning "In Progress" These docs are a work in progress and will continously be updated -This is the local build of the docs +# Icefabric + +An [Apache Iceberg](https://py.iceberg.apache.org/)/[Icechunk](https://icechunk.io/en/latest/) implementation of the Hydrofabric to disseminate continental hydrologic data + +!!! note + To run any of the functions in this repo your AWS test account credentials + `AWS_DEFAULT_REGION="us-east-1"` need to be in your `.env` file and your `.pyiceberg.yaml` settings need to up to date + +### Getting Started +This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: +```sh +uv venv +source .venv/bin/activate +uv sync +``` + +### Running the API locally +To run the API locally, ensure your `.env` file in your project root has the right credentials, then run +```sh +uv pip install -e src/icefabric_api +cd src/icefabric_api +python -m app.main +``` +This should spin up the API services + +### Building the API through Docker +To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run +```sh +docker compose -f docker/compose.yaml build --no-cache +docker compose -f docker/compose.yaml up +``` +This should spin up the API services + + +### Development +To ensure that icefabric follows the specified structure, be sure to install the local dev dependencies and run `pre-commit install` diff --git a/docs/user_guide/icefabric_api.md b/docs/user_guide/icefabric_api.md index ca26d09..df2d212 100644 --- a/docs/user_guide/icefabric_api.md +++ b/docs/user_guide/icefabric_api.md @@ -121,20 +121,6 @@ else: | > 50,000 records | Parquet | Better compression, faster processing | | > 200,000 records | Parquet + date filters | Reduced data transfer | -## Configuration - -### Catalog Settings - -The default catalog is pointing to a local instance. To build this catalog, one must use the build scripts in `icefabric_manage` - -```python -catalog_settings = { - "type": "sql", - "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", - "warehouse": "file:///tmp/warehouse", -} -``` - ## Development ### Running the API diff --git a/docs/user_guide/icefabric_manage.md b/docs/user_guide/icefabric_manage.md index 2199631..20eaac2 100644 --- a/docs/user_guide/icefabric_manage.md +++ b/docs/user_guide/icefabric_manage.md @@ -6,41 +6,23 @@ IceFabric Manage is a Python package that simplifies building Apache Iceberg cat ## Architecture -The system consists of two main components: +The system consists of two main components from within the `icefabric/src/icefabric_manage/` structure: -1. **Core API** (`src/icefabric_manage/_api.py`) - Contains the table building logic -2. **Build Scripts** (`builds/`) - Orchestrates the catalog creation process +1. **Source Code** (`src/icefabric_manage/`) - Contains the table building logic and objects +2. **Build Scripts** (`builds/`) - Orchestrates the catalog creation process from the S3 Tables ## How It Works !!! info "Build Process Overview" - The system converts individual Parquet files (local or S3) into queryable Iceberg tables through a simple file-by-file conversion process. + The system converts local Parquet file into queryable Iceberg tables through a simple file-by-file conversion process. ### The Build Process -1. **Create Catalog** - Sets up a SQLite-backed Apache Iceberg catalog in `/tmp/warehouse` -2. **Create Namespace** - Creates the specified namespace if it doesn't exist -3. **Create Tables** - For each specified Parquet file, creates a corresponding Iceberg table -4. **Populate Data** - Appends the Parquet data to the newly created Iceberg tables +1. **Create Namespace** - Creates the specified namespace if it doesn't exist +2. **Create Tables** - For each specified Parquet file, creates a corresponding Iceberg table +3. **Populate Data** - Appends the Parquet data to the newly created Iceberg tables -### File Structure - -!!! note "Project Structure" - The warehouse is now stored in `/tmp/warehouse` and supports both S3 and local Parquet files. - -```text -project/ -├── src/icefabric_manage/ -│ └── _api.py # Core table building functions -├── build_hydrofabric.py # Main build script -└── data/ - ├── warehouse/ # Iceberg catalog storage (auto-created) - │ └── pyiceberg_catalog.db - └── hydrofabric/ # Source Parquet files - ├── divides.parquet - ├── nexus.parquet - └── ... -``` +See `builds/README.md` for a template on how to create your own build script ## Usage @@ -53,6 +35,8 @@ project/ ### Running the Build Scripts +Build scripts have to be only run once as the files will live/persist in S3. + To build the hydrofabric dataset, run from the `scripts/` directory: ```bash python build_hydrofabric.py @@ -60,7 +44,7 @@ python build_hydrofabric.py To build USGS streamflow observations: ```bash -python build_usgs_streamflow_observations.py +python builds/build_hydrofabric.py ``` !!! success "Expected Output" @@ -71,191 +55,3 @@ python build_usgs_streamflow_observations.py ... Build successful ``` - -### What Happens During Build - -1. **Warehouse Setup** - Creates `/tmp/warehouse/` directory if it doesn't exist -2. **Catalog Configuration** - Sets up SQLite catalog with file-based storage -3. **Namespace Creation** - Creates the specified namespace if it doesn't exist -4. **Table Creation** - For each specified Parquet file: - - Reads the Parquet file (from S3 or local path) - - Creates an Iceberg table with matching schema - - Appends all data from the Parquet file to the Iceberg table - - Skips files if tables already exist - -## API Reference - -### `build(catalog, parquet_file, namespace, table_name)` - -!!! function "Main Build Function" - Creates an Iceberg table from a single Parquet file (local or S3). - -**Parameters:** - -| Parameter | Type | Description | -|-----------|------|-------------| -| `catalog` | `Catalog` | PyIceberg catalog instance | -| `parquet_file` | `str` | Path to Parquet file (local path or S3 URL) | -| `namespace` | `str` | Iceberg namespace to create the table in | -| `table_name` | `str` | Name for the new table | - -**Behavior:** -- Creates namespace if it doesn't exist -- Reads Parquet file schema using PyArrow -- Creates Iceberg table with matching schema -- Appends all data from the Parquet file -- Skips table creation if table already exists - -**Example Usage:** -```python -from pyiceberg.catalog import load_catalog -from icefabric_manage import build - -catalog = load_catalog("hydrofabric", **catalog_settings) -build( - catalog=catalog, - parquet_file="s3://hydrofabric-data/icefabric/hydrofabric/divides.parquet", - namespace="hydrofabric", - table_name="divides" -) -``` - -## Build Scripts - -### Hydrofabric Build Script - -The `build_hydrofabric.py` script processes multiple hydrofabric layers: - -```python -layers = [ - "divide-attributes", - "divides", - "flowpath-attributes-ml", - "flowpath-attributes", - "flowpaths", - "hydrolocations", - "lakes", - "network", - "nexus", - "pois" -] -``` - -Each layer is read from `s3://hydrofabric-data/icefabric/hydrofabric/{layer}.parquet` and created as a table in the `hydrofabric` namespace. - -### USGS Streamflow Observations Build Script - -The `build_usgs_streamflow_observations.py` script processes USGS hourly streamflow data: -- Source: `s3://hydrofabric-data/icefabric/streamflow_observations/usgs_hourly.parquet` -- Namespace: `observations` -- Table: `usgs_hourly` - -## Configuration - -### Catalog Settings - -Both build scripts use these default settings: - -```python -warehouse_path = Path("/tmp/warehouse") -catalog_settings = { - "type": "sql", # SQLite-backed catalog - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", # Database location - "warehouse": f"file://{warehouse_path}", # Data storage location -} -``` - -### Data Sources - -!!! note "Supported File Locations" - - **S3 URLs**: `s3://bucket-name/path/to/file.parquet` - - **Local paths**: `/path/to/local/file.parquet` - - **Relative paths**: `./data/file.parquet` - -!!! danger "Common Issues" - - **S3 Access** - Ensure AWS credentials are properly configured - - **Nanosecond timestamps** - Convert to microseconds before building - - **Invalid schemas** - Verify Parquet files can be read with `pyarrow.parquet.read_table()` - -## Customization - -### Adding New Datasets - -Create a new build script following this pattern: - -```python -from pathlib import Path -from dotenv import load_dotenv -from pyiceberg.catalog import load_catalog -from icefabric_manage import build - -load_dotenv() - -if __name__ == "__main__": - warehouse_path = Path("/tmp/warehouse") - warehouse_path.mkdir(exist_ok=True) - catalog_settings = { - "type": "sql", - "uri": f"sqlite:///{warehouse_path}/pyiceberg_catalog.db", - "warehouse": f"file://{warehouse_path}", - } - - namespace = "your_namespace" - catalog = load_catalog(namespace, **catalog_settings) - - build( - catalog=catalog, - parquet_file="path/to/your/file.parquet", - namespace=namespace, - table_name="your_table_name", - ) - print("Build successful") -``` - -### Changing Warehouse Location - -Modify the `warehouse_path` in your build script: - -```python -warehouse_path = Path("/your/custom/warehouse/path") -``` - -### Alternative Catalog Backend - -Replace SQLite with other supported backends: - -```python -catalog_settings = { - "type": "sql", - "uri": "postgresql://user:pass@host:port/db", - "warehouse": "s3://your-bucket/warehouse/", -} -``` - -## Best Practices - -!!! tip "Recommendations" - 1. **Table Naming** - Use descriptive table names that reflect the data content - 2. **Data Preparation** - Ensure timestamps are properly formatted before building - -In most functions, it's predefined to the user's `/tmp` dir since it's the same per each user's machine - -## Customization - -The following customizations can be done to update where/what is being added to the PyIceberg table - -### Changing Data Directory - -Modify the `data_dir` path in `build_hydrofabric.py`: - -```python -data_dir = Path("/path/to/your/parquet/files") -``` - -### Different Namespace - -Change the namespace name: - -```python -namespace = "your_namespace" -``` diff --git a/docs/user_guide/icefabric_tools.md b/docs/user_guide/icefabric_tools.md index a6c9a2e..48946b2 100644 --- a/docs/user_guide/icefabric_tools.md +++ b/docs/user_guide/icefabric_tools.md @@ -22,12 +22,7 @@ from pyiceberg.catalog import load_catalog from icefabric_tools import subset, IdType # Load the catalog using default settings -catalog_settings: dict = { - "type": "sql", - "uri": "sqlite:////tmp/warehouse/pyiceberg_catalog.db", - "warehouse": "file:///tmp/warehouse", -} -catalog = load_catalog("hydrofabric", **catalog_settings) +catalog = load_catalog("glue") # Basic subset using a hydrofabric ID result = subset( diff --git a/docs/user_guide/terraform.md b/docs/user_guide/terraform.md new file mode 100644 index 0000000..43c052a --- /dev/null +++ b/docs/user_guide/terraform.md @@ -0,0 +1,140 @@ +!!! note + These docs are taken from `src/icefabric_manage/terraform/README.md` + +# AWS S3 Tables with Apache Iceberg - Terraform Implementation + +This directory contains PoC Terraform IaC for deploying Apache Iceberg tables using the AWS S3 Tables service with AWS Glue catalog integration. It also contains a basic demo / test python script used to verify things. + +## Architecture Overview + +The infrastructure creates: +- **AWS S3 Tables bucket** - Managed storage for Iceberg table data +- **S3 Tables namespace and table** - Logical organization for tables +- **AWS Glue Catalog database** - Metadata storage for table schemas +- **Lake Formation permissions** - Access control and governance +- **IAM policies** - Secure access between services + +## Prerequisites + +### AWS Requirements +- AWS CLI configured with appropriate credentials. (Older versions may not support AWS S3 Tables) +- Terraform >= 1.0 +- AWS Account with permissions (basically Admin due to IAM requirements) for: + - S3 Tables + - AWS Glue + - Lake Formation + - IAM + +### ⚠️ Critical: Enable S3 Table Buckets Integration + +**This step must be completed before running Terraform**, otherwise the deployment will fail. + +1. Navigate to the [S3 Table Buckets Console](https://console.aws.amazon.com/s3tables/home) in your target region +2. Locate the section titled **"Integration with AWS analytics services"** +3. Click the **"Enable integration"** button +4. Confirm that the integration status shows **"Enabled"** for your deployment region + +This integration allows services like Athena, Glue, Redshift, and EMR to interact with S3 Table Buckets. Without this step, your Iceberg tables won't be accessible through these analytics services. + +> **Note**: This is a one-time setup per AWS region. Once enabled, all future S3 Table Buckets in that region will have access to AWS analytics services integration. + +### Python Requirements +- Python 3.8+ +- pyiceberg python module w/deps +- boto3 (for AWS SDK) + +## Quick Start + +### 1. High Level Deploy Infrastructure + +Create a `terraform.tfvars` file replacing the values below as appropriate for your environment or deploy: + +```hcl +env = "dev" +application = "myapp" +team = "NGWPC" +region = "us-east-1" +identity_center_role_arn = "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_DataRole" + +# Optional: Specify Lake Formation admins +lakeformation_admin_arns = [ + "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_DataRole", + "arn:aws:iam::123456789012:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_Admin" +] +``` + +Deploy the infrastructure: + +```bash +terraform init +terraform plan +terraform apply +``` + +### 3. Set Environment Variables + +After deployment, set these environment variables for the Python demo: + +```bash +# From Terraform outputs +export ICEBERG_WAREHOUSE_PATH=$(terraform output -raw s3tables_table_warehouse_location) +export AWS_DEFAULT_REGION="us-east-1" +``` + +### 4. Install Python Dependencies in your preferred active virtual environment + +```bash +pip install pyiceberg boto3 mypy_boto3_glue pyarrow +``` + +### 5. Run the Demo + +```bash +python iceberg_demo.py +``` + +## Terraform Configuration + +### Variables + +| Variable | Description | Type | Default | Required | +|----------|-------------|------|---------|----------| +| `region` | AWS region | string | `us-east-1` | No | +| `env` | Environment name (test/oe/other) | string | - | Yes | +| `application` | Application name | string | - | Yes | +| `team` | Team name (for future tagging if supported) | string | - | Yes | +| `identity_center_role_arn` | IAM role ARN for accessing resources | string | - | Yes | +| `lakeformation_admin_arns` | Lake Formation administrator ARNs | list(string) | `[]` | No | + +### Outputs + +| Output | Description | +|--------|-------------| +| `s3tables_bucket_arn` | ARN of the S3 Tables bucket | +| `s3tables_table_warehouse_location` | Warehouse location for Iceberg tables (devs need this!!!) | +| `glue_database_name` | Name of the Glue catalog database | +| `lakeformation_admins` | List of Lake Formation administrators | + +## Python Integration + +### Basic Usage + +The provided `iceberg_demo.py` demonstrates: +- Connecting to AWS Glue catalog +- Creating/loading Iceberg tables +- Very Basic schema definition + +### Configuration + +The Python script uses these environment variables: +- `ICEBERG_WAREHOUSE_PATH` - S3 Tables warehouse location +- `AWS_REGION` - AWS region for services +- `AWS_DEFAULT_REGION` - Default AWS region + +## Permissions and Security + +### Lake Formation Integration + +The infrastructure automatically configures basic Lake Formation settings. This can get very granular in the future. +- Database-level permissions for the specified Identity Center role (SoftwareEngineersFull) +- Table-level permissions are supported, but have not been tested diff --git a/examples/Demo_Iceberg.ipynb b/examples/Demo_Iceberg.ipynb index e9242cb..d4665d1 100644 --- a/examples/Demo_Iceberg.ipynb +++ b/examples/Demo_Iceberg.ipynb @@ -331,7 +331,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/mkdocs.yml b/mkdocs.yml index 8f176e3..16eb786 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -53,3 +53,4 @@ nav: - Icefabric Manage: user_guide/icefabric_manage.md - Icefabric Tools: user_guide/icefabric_tools.md - Icefabric API: user_guide/icefabric_api.md + - Terraform S3 Glue Endpoint: user_guide/terraform.md diff --git a/pyproject.toml b/pyproject.toml index 116b8eb..be270a9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "icefabric" -version = "2025.5" +version = "2025.6.0" description = "An Apache Iceberg implementation of the Hydrofabric" readme = "README.md" requires-python = ">=3.11,<3.13" @@ -125,3 +125,16 @@ disallow_untyped_defs = true no_implicit_optional = true show_error_codes = true warn_unused_ignores = true + +[tool.pytest.ini_options] +rootdir = "." # Ensures pytest always treats project root as the root +pythonpath = [ + "tests", + "src/icefabric_api", + "src/icefabric_tools" +] +testpaths = [ + "src/icefabric_api/tests", + "src/icefabric_tools/tests", + "tests" +] diff --git a/src/icefabric_api/src/get_module_parameters.py b/scripts/get_module_parameters.py similarity index 73% rename from src/icefabric_api/src/get_module_parameters.py rename to scripts/get_module_parameters.py index f9adb26..d36e1c4 100644 --- a/src/icefabric_api/src/get_module_parameters.py +++ b/scripts/get_module_parameters.py @@ -1,8 +1,10 @@ +"""A sample script to generate CFE IPEs""" + import geopandas as gpd import pandas as pd -param_file = "cfe_params.csv" -gpkg_file = "gauge_06710385.gpkg" +param_file = "../src/icefabric_api/data/cfe_params.csv" +gpkg_file = "../src/icefabric_tools/test/data/gages-08070000.gpkg" divides = gpd.read_file(gpkg_file, layer="divides") @@ -16,13 +18,12 @@ cfg_file = f"{divide}_bmi_cfg_cfe.txt" f = open(cfg_file, "x") - for index, row in param_values.iterrows(): + for _, row in param_values.iterrows(): key = row["name"] value = row["default_value"] f.write(f"{key}={value}\n") f.close() - params_calibratable = module_params.loc[module_params["calibratable"] == "TRUE"] params_calibratable.to_json("out.json", orient="split") diff --git a/src/icefabric_api/app/conftest.py b/src/icefabric_api/app/conftest.py deleted file mode 100644 index 40ba5d7..0000000 --- a/src/icefabric_api/app/conftest.py +++ /dev/null @@ -1,29 +0,0 @@ -import os -from pathlib import Path - -os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) -print(f"PYICEBERG_HOME set to: {os.environ['PYICEBERG_HOME']}") - -import pytest # noqa: E402 -from fastapi.testclient import TestClient # noqa: E402 - -from app.main import app # noqa: E402 - - -@pytest.fixture(scope="session") -def client(): - """Create a test client for the FastAPI app.""" - return TestClient(app) - - -@pytest.fixture(scope="function") -def fresh_client(): - """Create a fresh test client for each test function.""" - return TestClient(app) - - -def pytest_configure(config): - """Configure pytest markers.""" - config.addinivalue_line("markers", "performance: marks tests as performance tests") - config.addinivalue_line("markers", "integration: marks tests as integration tests") - config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py index ec9180c..31833ba 100644 --- a/src/icefabric_api/app/main.py +++ b/src/icefabric_api/app/main.py @@ -6,6 +6,7 @@ from pydantic import BaseModel from app.routers.hydrofabric.router import api_router as hydrofabric_api_router +from app.routers.module_params.router import api_router as module_params_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router app = FastAPI( @@ -26,7 +27,7 @@ class HealthCheck(BaseModel): # Include routers app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") -# app.include_router(module_params_router, prefix="/v1") +app.include_router(module_params_router, prefix="/v1") @app.head( diff --git a/src/icefabric_api/app/routers/hydrofabric/conftest.py b/src/icefabric_api/app/routers/hydrofabric/conftest.py deleted file mode 100644 index 19850f9..0000000 --- a/src/icefabric_api/app/routers/hydrofabric/conftest.py +++ /dev/null @@ -1,32 +0,0 @@ -from pathlib import Path - -import pytest - -sample_gauges = [ - "01010000", - "02450825", - "03173000", - "04100500", - "05473450", - "06823500", - "07060710", - "08070000", - "09253000", - "10316500", - "11456000", - "12411000", - "13337000", - "14020000", -] - - -@pytest.fixture(params=sample_gauges) -def gauge_hf_uri(request) -> str: - """Returns individual gauge identifiers for parameterized testing""" - return request.param - - -@pytest.fixture -def testing_dir() -> Path: - """Returns the testing data dir""" - return Path(__file__).parents[4] / "icefabric_tools/tests/data/" diff --git a/src/icefabric_api/app/routers/hydrofabric/test_router.py b/src/icefabric_api/app/routers/hydrofabric/test_router.py deleted file mode 100644 index 697b645..0000000 --- a/src/icefabric_api/app/routers/hydrofabric/test_router.py +++ /dev/null @@ -1,34 +0,0 @@ -from pathlib import Path - -import geopandas as gpd -import pytest - - -@pytest.mark.integration -def test_subset_hl_uri(client, gauge_hf_uri: str, testing_dir: Path, tmp_path: Path): - """Test: GET /streamflow_observations/usgs/csv""" - response = client.get( - f"/v1/hydrofabric/{gauge_hf_uri}/gpkg", - ) - - assert response.status_code == 200, "Incorrect response" - - if response.status_code == 200: - temp_gpkg = tmp_path / "structure_test.gpkg" - temp_gpkg.write_bytes(response.content) - - output_gdf = gpd.read_file(temp_gpkg, layer="network") - correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="network") - assert output_gdf.equals(correct_gdf) - - output_gdf = gpd.read_file(temp_gpkg, layer="divides") - correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="divides") - assert output_gdf.equals(correct_gdf) - - output_gdf = gpd.read_file(temp_gpkg, layer="flowpaths") - correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="flowpaths") - assert output_gdf.equals(correct_gdf) - - output_gdf = gpd.read_file(temp_gpkg, layer="nexus") - correct_gdf = gpd.read_file(testing_dir / f"gages-{gauge_hf_uri}.gpkg", layer="nexus") - assert output_gdf.equals(correct_gdf) diff --git a/src/icefabric_api/app/routers/module_params/router.py b/src/icefabric_api/app/routers/module_params/router.py index bb28cbc..7e9b8c6 100644 --- a/src/icefabric_api/app/routers/module_params/router.py +++ b/src/icefabric_api/app/routers/module_params/router.py @@ -1,13 +1,11 @@ import json -import re import os +import re -from fastapi import APIRouter, HTTPException, Path, Query -from fastapi.responses import Response +from fastapi import APIRouter, HTTPException from pydantic import BaseModel -from src.hf_attributes import get_hydrofabric_attributes -from src.run_modules import module_ipe +from icefabric_api.create_ipes import get_hydrofabric_attributes, module_ipe api_router = APIRouter(prefix="/modules") ROOT_DIR = os.path.abspath(os.curdir) @@ -22,14 +20,12 @@ class Parameters(BaseModel): @api_router.post("/parameters") -async def get_ipes( - query: Parameters -): - if query.version != '2.1' and query.version != '2.2': +async def get_ipes(query: Parameters): + if query.version != "2.1" and query.version != "2.2": raise HTTPException(status_code=422, detail="Icefabric version must be 2.2 or 2.1") - elif query.version == '2.1' and query.domain != 'CONUS': + elif query.version == "2.1" and query.domain != "CONUS": raise HTTPException(status_code=422, detail="oCONUS domains not availiable in Icefabric version 2.1") - + gpkg_file = f"{ROOT_DIR}/data/gauge_{query.gage_id}.gpkg" if not os.path.exists(gpkg_file): raise HTTPException(status_code=422, detail="Gage ID/geopackage not found") diff --git a/src/icefabric_api/app/routers/streamflow_observations/conftest.py b/src/icefabric_api/app/routers/streamflow_observations/conftest.py deleted file mode 100644 index ea8b020..0000000 --- a/src/icefabric_api/app/routers/streamflow_observations/conftest.py +++ /dev/null @@ -1,18 +0,0 @@ -from pathlib import Path - -import pandas as pd -import pytest - - -@pytest.fixture -def local_usgs_streamflow_csv(): - """Returns a locally downloaded CSV file from a specific gauge and time""" - return pd.read_csv(Path.cwd() / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv") - - -@pytest.fixture -def local_usgs_streamflow_parquet(): - """Returns a locally downloaded CSV file from a specific gauge and time""" - return pd.read_parquet( - Path.cwd() / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet" - ) diff --git a/src/icefabric_api/data/gauge_06710385.gpkg b/src/icefabric_api/data/gauge_06710385.gpkg deleted file mode 100644 index 8f8a14a4968a83ac42f8b1fd7beb05637f218975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319488 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.11, <3.13" @@ -9,3 +9,7 @@ dependencies = [ "pydantic==2.11.5", "pydantic-settings==2.9.1", ] + +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" diff --git a/src/icefabric_api/src/__init__.py b/src/icefabric_api/src/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/icefabric_api/src/cfe_params.csv b/src/icefabric_api/src/cfe_params.csv deleted file mode 100644 index 894fa0a..0000000 --- a/src/icefabric_api/src/cfe_params.csv +++ /dev/null @@ -1,26 +0,0 @@ -name,description,units,data_type,calibratable,source_file,min,max,default_value,divide_attr_name -soil_params.b,beta exponent on Clapp-Hornberger (1978) soil water relations,NULL,double,TRUE,attr,2,15,4.05,mode.bexp_soil_layers_stag=1 -soil_params.satdk,saturated hydraulic conductivity,m/s,double,TRUE,attr,0.000000195,0.00141,0.00000338,geom_mean.dksat_soil_layers_stag=1 -soil_params.satpsi,saturated capillary head,m,double,TRUE,attr,0.036,0.955,0.355,geom_mean.psisat_soil_layers_stag=1 -soil_params.slop,this factor (0-1) modifies the gradient of the hydraulic head at the soil bottom. 0=no-flow.,m/m,double,TRUE,attr,0.0000598,1,0.05,mean.slope_1km -soil_params.smcmax,saturated soil moisture content (Maximum soil moisture content),m/m,double,TRUE,attr,0.16,0.58,0.439,mean.smcmax_soil_layers_stag=1 -soil_params.wltsmc,wilting point soil moisture content (< soil_params.smcmax),m/m,double,TRUE,attr,0.05,0.3,per soil type,mean.smcwlt_soil_layers_stag=1 -soil_params.expon,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs",NULL,double,FALSE,const,NULL,NULL,1, -soil_params.expon_secondary,"optional; defaults to 1, This parameter defines the soil reservoirs to be linear, Use linear reservoirs ",NULL,double,FALSE,const,NULL,NULL,1, -max_gw_storage,maximum storage in the conceptual reservoir,m,double,TRUE,attr,0.01,0.25,0.05,mean.Zmax -Cgw,the primary outlet coefficient,m/hr,double,TRUE,attr,0.0000018,0.0018,0.000018,mean.Coeff -expon,exponent parameter for nonlinear ground water reservoir (1.0 for linear reservoir),NULL,double,TRUE,attr,1,8,3,mode.Expon -gw_storage,initial condition for groundwater reservoir - it is the ground water as a decimal fraction of the maximum groundwater storage (max_gw_storage) for the initial timestep,m/m,double,FALSE,const,NULL,NULL,0.05, -alpha_fc,alpha at fc for clapp hornberger (field capacity),NULL,double,FALSE,const,NULL,NULL,0.33, -soil_storage,initial condition for soil reservoir - it is the water in the soil as a decimal fraction of maximum soil water storage (smcmax x depth) for the initial timestep. Default = 0.5,m/m,double,FALSE,const,NULL,NULL,0.5, -K_nash,Nash Config param for lateral subsurface runoff (Nash discharge to storage ratio),1/m,double,TRUE,const,0,1,0.003, -K_lf,Nash Config param - primary reservoir,NULL,double,TRUE,const,0,1,0.01, -nash_storage,Nash Config param - secondary reservoir ,NULL,double,FALSE,const,NULL,NULL,"0.0,0.0", -giuh_ordinates,Giuh (geomorphological instantaneous unit hydrograph) ordinates in dt time steps,NULL,double,FALSE,const,NULL,NULL,"0.55, 0.25, 0.2", -a_Xinanjiang_inflection_point_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,-0.5,0.5,-0.2,AXAJ -b_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,0.01,10,0.66,BXAJ -x_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,TRUE,CFE-X_params,0.01,10,0.02,XXAJ -urban_decimal_fraction,when surface_water_partitioning_scheme=Xinanjiang,NULL,double ,FALSE,const,0,1,0.01, -refkdt,Reference Soil Infiltration Parameter (used in runoff formulation),NULL,double,TRUE,attr,0.1,4,1,mean.refkdt -soil_params.depth,soil depth,m,double,FALSE,const,NULL,NULL,2, - diff --git a/src/icefabric_api/src/gauge_06710385.gpkg b/src/icefabric_api/src/gauge_06710385.gpkg deleted file mode 100644 index 8f8a14a4968a83ac42f8b1fd7beb05637f218975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319488 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, namespace=namespace, - table_name=layer, + table_name=, location="s3://fim-services-data-test/icefabric_metadata/" ) diff --git a/src/icefabric_manage/builds/build_fema_ble.py b/src/icefabric_manage/builds/build_fema_ble.py index 8ad21d2..d22ddb7 100644 --- a/src/icefabric_manage/builds/build_fema_ble.py +++ b/src/icefabric_manage/builds/build_fema_ble.py @@ -11,7 +11,7 @@ def build_table(file_dir: str): - """Builds the hydrofabric namespace and tables + """Builds the FEMA BLE XS tables Parameters ---------- diff --git a/src/icefabric_manage/builds/build_fema_mip.py b/src/icefabric_manage/builds/build_fema_mip.py index cae4e2b..ee21ccb 100644 --- a/src/icefabric_manage/builds/build_fema_mip.py +++ b/src/icefabric_manage/builds/build_fema_mip.py @@ -11,7 +11,7 @@ def build_table(file_dir: str): - """Builds the hydrofabric namespace and tables + """Builds the FEMA MIP XS tables Parameters ---------- diff --git a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py index f7f2655..453c3a6 100644 --- a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py +++ b/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py @@ -11,6 +11,13 @@ def build_table(file_dir: Path): + """Builds the bathymetric channel data for the Hydrofabric + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ catalog = load_catalog("glue") # Using an AWS Glue Endpoint namespace = "bathymetry_ml_auxiliary" try: diff --git a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py index 0b594ff..7d7661a 100644 --- a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py +++ b/src/icefabric_manage/builds/build_usgs_streamflow_observations.py @@ -10,6 +10,13 @@ def build_table(file_dir): + """Builds the streamflow observation namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ catalog = load_catalog("glue") # Using an AWS Glue Endpoint namespace = "streamflow_observations" try: diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index aac45b4..693f536 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "icefabric_manage" -version = "2025.5" +version = "2025.6.0" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" authors = [ { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric_manage/src/icefabric_manage/_api.py index b626c19..70eae83 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric_manage/src/icefabric_manage/_api.py @@ -7,12 +7,27 @@ def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str, location: str) -> None: """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. + Creates a new Iceberg table from a parquet file if the table doesn't already exist. + If the table exists, the function will skip the build process and print a message. + Parameters ---------- - catalog: Catalog - The Apache Iceberg Catalog - file_dir : Path - The path to the parquet files to add into the iceberg catalog + catalog : Catalog + The Apache Iceberg Catalog instance used to manage tables + parquet_file : str + Path to the parquet file to be loaded into the Iceberg table + namespace : str + The namespace (database/schema) where the table will be created + table_name : str + The name of the table to be created in the catalog + location : str + The storage location where the Iceberg table data will be stored + + Notes + ----- + - The function will automatically infer the schema from the parquet file + - If the table already exists, no action is taken and a message is printed + - The parquet data is appended to the newly created Iceberg table """ if catalog.table_exists(f"{namespace}.{table_name}"): print(f"Table {table_name} already exists. Skipping build") diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 7e1489e..723b688 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "icefabric_tools" -version = "2025.5" +version = "2025.6.0" description = "All functionality for creating, updating, and deleting information from the icefabric catalog" authors = [ { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py index 68c7c48..8a7da3d 100644 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ b/src/icefabric_tools/src/icefabric_tools/__init__.py @@ -2,4 +2,11 @@ from icefabric_tools.iceberg.rnr import get_rnr_segment from icefabric_tools.iceberg.utils import find_origin, table_to_geopandas, to_geopandas -__all__ = ["IdType", "subset", "get_rnr_segment", "find_origin", "to_geopandas", "table_to_geopandas"] +__all__ = [ + "IdType", + "subset", + "get_rnr_segment", + "find_origin", + "to_geopandas", + "table_to_geopandas", +] diff --git a/src/icefabric_tools/tests/conftest.py b/src/icefabric_tools/tests/conftest.py deleted file mode 100644 index 32059d1..0000000 --- a/src/icefabric_tools/tests/conftest.py +++ /dev/null @@ -1,55 +0,0 @@ -import os -from pathlib import Path - -os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) -print(f"PYICEBERG_HOME set to: {os.environ['PYICEBERG_HOME']}") - -import pytest # noqa: E402 -from pyiceberg.catalog import Catalog, load_catalog # noqa: E402 - -sample_gauges = [ - "gages-01010000", - "gages-02450825", - "gages-03173000", - "gages-04100500", - "gages-05473450", - "gages-06823500", - "gages-07060710", - "gages-08070000", - "gages-09253000", - "gages-10316500", - "gages-11456000", - "gages-12411000", - "gages-13337000", - "gages-14020000", -] - - -@pytest.fixture -def hydrofabric_catalog() -> Catalog: - """Returns an iceberg catalog object for the hydrofabric""" - # try: - return load_catalog("glue") - # except Exception as e: - # raise type(e)( - # f"Cannot find warehouse @ {warehouse_path}. Please make sure your AWS credentials are accurate" - # ) # type: ignore - - -@pytest.fixture(params=sample_gauges) -def gauge_hf_uri(request) -> str: - """Returns individual gauge identifiers for parameterized testing""" - return request.param - - -@pytest.fixture -def testing_dir() -> Path: - """Returns the testing data dir""" - return Path(__file__).parent / "data/" - - -def pytest_configure(config): - """Configure pytest markers.""" - config.addinivalue_line("markers", "performance: marks tests as performance tests") - config.addinivalue_line("markers", "integration: marks tests as integration tests") - config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/src/icefabric_tools/tests/test_subset.py b/src/icefabric_tools/tests/test_subset.py index dc76c47..57e059d 100644 --- a/src/icefabric_tools/tests/test_subset.py +++ b/src/icefabric_tools/tests/test_subset.py @@ -7,7 +7,7 @@ from icefabric_tools import IdType, subset -@pytest.mark.integration +@pytest.mark.slow def test_subset_hl_uri(hydrofabric_catalog: Catalog, gauge_hf_uri: str, testing_dir: Path, tmp_path: Path): """Tests all subset gauges in the sample data using hl_uri""" subset( diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 0000000..4184d08 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,7 @@ +# Pytests + +This folder is for all testing data so the global confest can pick it up. This allows all tests in the namespace packages to share the same scope without having to reference one another in tests + +To run tests, run `pytest -s` from project root. + +To run the subsetter tests, run `pytest --run-slow` as these tests take some time. Otherwise, they will be skipped diff --git a/uv.lock b/uv.lock index 5d1335c..f879d18 100644 --- a/uv.lock +++ b/uv.lock @@ -1015,7 +1015,7 @@ wheels = [ [[package]] name = "icefabric" -version = "2025.5" +version = "2025.6.0" source = { virtual = "." } [package.optional-dependencies] @@ -1048,7 +1048,7 @@ dev = [ { name = "black", specifier = "==25.1.0" }, { name = "boto3" }, { name = "examples" }, - { name = "icefabric-api", virtual = "src/icefabric_api" }, + { name = "icefabric-api", editable = "src/icefabric_api" }, { name = "icefabric-manage", editable = "src/icefabric_manage" }, { name = "icefabric-tools", editable = "src/icefabric_tools" }, { name = "ipykernel", specifier = ">=6.29.5" }, @@ -1061,8 +1061,8 @@ dev = [ [[package]] name = "icefabric-api" -version = "2025.5.0" -source = { virtual = "src/icefabric_api" } +version = "2025.6.0" +source = { editable = "src/icefabric_api" } dependencies = [ { name = "fastapi", extra = ["standard"] }, { name = "pydantic" }, @@ -1078,7 +1078,7 @@ requires-dist = [ [[package]] name = "icefabric-manage" -version = "2025.5" +version = "2025.6.0" source = { editable = "src/icefabric_manage" } dependencies = [ { name = "geopandas" }, @@ -1103,7 +1103,7 @@ requires-dist = [ [[package]] name = "icefabric-tools" -version = "2025.5" +version = "2025.6.0" source = { editable = "src/icefabric_tools" } dependencies = [ { name = "dask" }, From b6ba4e9872b5339f45139119d4366103be535eef Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 12 Jun 2025 13:30:56 -0400 Subject: [PATCH 55/97] Feature add TIFF conversion to xr.Dataset --- .../src/icefabric_tools/icechunk/arch_weather_file_utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py index dadf8e5..0e337bf 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py @@ -17,7 +17,6 @@ from icefabric_tools.icechunk import S3Path - class FileType(Enum): """ Archival weather file types @@ -55,6 +54,7 @@ def load_tiff_file(fp: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: if os.path.exists(fp) is False: raise FileNotFoundError(f"Cannot find: {fp}") ds = rxr.open_rasterio(fp) + ds = ds.to_dataset(name="elevation") return ds From 3ba4fcd2781b556b8e3a2b6bd0c7e011c42d7d3c Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 12 Jun 2025 13:34:58 -0400 Subject: [PATCH 56/97] Fixed arg doest exist for retrieve_dataset() TypeError: IcechunkS3Repo.retrieve_dataset() got an unexpected keyword argument 'read_only' --- .../src/icefabric_tools/icechunk/icechunk_s3_module.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py index 3babe5f..0f6987e 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py @@ -378,7 +378,7 @@ def retrieve_and_convert_to_tif( If an xarray dataset does not have a "band" attribute in coordinates, the file is not deemed a raster and will raise error. """ - ds = self.retrieve_dataset(read_only=True, branch=branch) + ds = self.retrieve_dataset(branch=branch) if "band" not in ds.coords.dims: raise AttributeError("Dataset needs a 'band' coordinate to export geotiff") From 4f1cd3440c6a1687980f84696f2ac97433ee02ce Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 12 Jun 2025 13:46:09 -0400 Subject: [PATCH 57/97] Demo tif to xr conversion verification --- .../Demo_Verification_TIF_to_xrDataset.ipynb | 640 ++++++++++++++++++ 1 file changed, 640 insertions(+) create mode 100644 examples/Demo_Verification_TIF_to_xrDataset.ipynb diff --git a/examples/Demo_Verification_TIF_to_xrDataset.ipynb b/examples/Demo_Verification_TIF_to_xrDataset.ipynb new file mode 100644 index 0000000..9119813 --- /dev/null +++ b/examples/Demo_Verification_TIF_to_xrDataset.ipynb @@ -0,0 +1,640 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "4ccf1cb2-05ff-4a86-ad4f-87a209349c86", + "metadata": {}, + "source": [ + "# Demo: Verification of TIF to xr.Dataset Conversion\n", + "\n", + "_Note:_\n", + "\n", + "1) To verify TIFF conversion to xr.dataset, drop this notebook into \"/src/icefabric_tools/src/icefabric_tools/icechunk\"\n", + "\n", + "2) Just for the purpose of using this notebook, one can replace \"from icefabric_tools.icechunk import S3Path\" to \"from \n", + "icechunk_s3_module import S3Path\" from within the \"/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py\"\n", + "\n", + "3) One can now verify that TIFFs can be converted to xr.Dataset as seen as below.\n" + ] + }, + { + "cell_type": "markdown", + "id": "3eb9f5ee-29a3-44bd-8cc0-47ad146705df", + "metadata": {}, + "source": [ + "# Import Modules" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a51dff72-3f4a-4015-9d2d-fb7590709a94", + "metadata": {}, + "outputs": [], + "source": [ + "from arch_weather_file_utils import *\n", + "from icechunk_s3_module import IcechunkS3Repo, NGWPCLocations" + ] + }, + { + "cell_type": "markdown", + "id": "02e4a87f-7384-475e-a938-e64e69f54754", + "metadata": {}, + "source": [ + "# Retrieves a TIFF from S3 & Saves to Local" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e54f73ed-a735-4ad7-9470-47c511ff4c40", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Saved dataset to ./hawaii_topo_30.tif\n" + ] + } + ], + "source": [ + "repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", + "ds = repo.retrieve_dataset()\n", + "\n", + "var_name = \"__xarray_dataarray_variable__\"\n", + "dest = \"./hawaii_topo_30.tif\"\n", + "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name)" + ] + }, + { + "cell_type": "markdown", + "id": "73fa9bed-1dc6-4fe5-b447-8e62c3fafcc5", + "metadata": {}, + "source": [ + "### Code Findings:\n", + "\n", + "- An error will occur under because \"read_only=True\" is not an argument in icechunk_s3_module.py\"s 'retrieve_dataset()' method. Refer to of L381. Putting in a PR for this change as a result." + ] + }, + { + "cell_type": "markdown", + "id": "018b944c-3adc-4454-88b7-55b149187607", + "metadata": {}, + "source": [ + "# After Code Modification, the following code is able to convert TIFF to xr.Dataset\n", + "\n", + "- This conversion effectively allows _xarray_data_variable_ to be converted to `elevation`. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "826c5ffa-99cc-49db-b153-c6dc0466e871", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
    <xarray.Dataset> Size: 1GB\n",
    +       "Dimensions:      (band: 1, x: 22226, y: 14819)\n",
    +       "Coordinates:\n",
    +       "  * band         (band) int64 8B 1\n",
    +       "  * x            (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n",
    +       "  * y            (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n",
    +       "    spatial_ref  int64 8B 0\n",
    +       "Data variables:\n",
    +       "    elevation    (band, y, x) float32 1GB ...
    " + ], + "text/plain": [ + " Size: 1GB\n", + "Dimensions: (band: 1, x: 22226, y: 14819)\n", + "Coordinates:\n", + " * band (band) int64 8B 1\n", + " * x (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n", + " * y (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n", + " spatial_ref int64 8B 0\n", + "Data variables:\n", + " elevation (band, y, x) float32 1GB ..." + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dest = \"./hawaii_topo_30.tif\"\n", + "ds = load_tiff_file(fp = dest)\n", + "ds" + ] + }, + { + "attachments": { + "098a3552-002d-4ea7-9b15-bfc1264a18c8.png": { + "image/png": "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" + } + }, + "cell_type": "markdown", + "id": "fc36554a-1ac0-4260-9553-72dd07795f93", + "metadata": {}, + "source": [ + "# Prior to Code Modification, the following was being generated for TIFF\n", + "\n", + "![image.png](attachment:098a3552-002d-4ea7-9b15-bfc1264a18c8.png)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "23b5e6ec-1887-4595-88a8-ffa5916968d1", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "“icefabric_uv”", + "language": "python", + "name": "icefabric_uv" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.10" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} From 2df53ccf586c5024f9a304005681dd4c8c535f73 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:18:14 -0400 Subject: [PATCH 58/97] Adjst made to accom name attribute in arg --- .../icechunk/arch_weather_file_utils.py | 10 +++++++--- .../src/icefabric_tools/icechunk/icechunk_testing.py | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py index 0e337bf..d2639ae 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py @@ -15,7 +15,8 @@ from tqdm import tqdm from virtualizarr import open_virtual_dataset -from icefabric_tools.icechunk import S3Path +# from icefabric_tools.icechunk import S3Path +from icechunk_s3_module import S3Path class FileType(Enum): """ @@ -29,7 +30,7 @@ class FileType(Enum): NETCDF = ".nc" -def load_tiff_file(fp: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: +def load_tiff_file(fp: str, attr_name: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: """ Loads a GEOTIFF @@ -41,6 +42,9 @@ def load_tiff_file(fp: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: ---------- fp : str File path to the TIFF that will be returned as a dataset. + attr_name : str + Name of the attribute of interest. Ex: "elevation". + Note: Not all rasters will be elevation in future. Returns ------- @@ -54,7 +58,7 @@ def load_tiff_file(fp: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: if os.path.exists(fp) is False: raise FileNotFoundError(f"Cannot find: {fp}") ds = rxr.open_rasterio(fp) - ds = ds.to_dataset(name="elevation") + ds = ds.to_dataset(name=attr_name) return ds diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py index 285daa0..a2ff7af 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py @@ -118,7 +118,7 @@ def land_cover_virtualize_push_test( nlcd_repo.delete_repo(quiet=True) -def topo_push_test(tiff_fp: str, new_ic_repo: S3Path, clean_up: bool | None = False): +def topo_push_test(tiff_fp: str, attr_name: str, new_ic_repo: S3Path, clean_up: bool | None = False): """ Push a topobathy GEOTIFF @@ -131,7 +131,7 @@ def topo_push_test(tiff_fp: str, new_ic_repo: S3Path, clean_up: bool | None = Fa NOTE: Take care to not overwrite an existing IC repo """ topo_repo = IcechunkS3Repo(location=new_ic_repo) - topo_ds = awf_utils.load_tiff_file(tiff_fp) + topo_ds = awf_utils.load_tiff_file(tiff_fp, attr_name) topo_repo.write_dataset(ds=topo_ds, commit="first commit") print(topo_repo.retrieve_dataset()) if clean_up: From 85dc1225ee3e4df8af2de9a54ec2db0867ec3dbb Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Thu, 12 Jun 2025 15:18:47 -0400 Subject: [PATCH 59/97] Modified import modules --- .../Demo_Verification_TIF_to_xrDataset.ipynb | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/examples/Demo_Verification_TIF_to_xrDataset.ipynb b/examples/Demo_Verification_TIF_to_xrDataset.ipynb index 9119813..fbd1742 100644 --- a/examples/Demo_Verification_TIF_to_xrDataset.ipynb +++ b/examples/Demo_Verification_TIF_to_xrDataset.ipynb @@ -11,7 +11,7 @@ "\n", "1) To verify TIFF conversion to xr.dataset, drop this notebook into \"/src/icefabric_tools/src/icefabric_tools/icechunk\"\n", "\n", - "2) Just for the purpose of using this notebook, one can replace \"from icefabric_tools.icechunk import S3Path\" to \"from \n", + "2) Just for the purpose of using this notebook, one could replace \"from icefabric_tools.icechunk import S3Path\" to \"from \n", "icechunk_s3_module import S3Path\" from within the \"/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py\"\n", "\n", "3) One can now verify that TIFFs can be converted to xr.Dataset as seen as below.\n" @@ -32,8 +32,10 @@ "metadata": {}, "outputs": [], "source": [ - "from arch_weather_file_utils import *\n", - "from icechunk_s3_module import IcechunkS3Repo, NGWPCLocations" + "from dotenv import load_dotenv\n", + "from icefabric_tools.icechunk.arch_weather_file_utils import load_tiff_file\n", + "from icefabric_tools.icechunk.icechunk_s3_module import IcechunkS3Repo, NGWPCLocations\n", + "load_dotenv()" ] }, { @@ -63,18 +65,9 @@ "ds = repo.retrieve_dataset()\n", "\n", "var_name = \"__xarray_dataarray_variable__\"\n", - "dest = \"./hawaii_topo_30.tif\"\n", - "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name)" - ] - }, - { - "cell_type": "markdown", - "id": "73fa9bed-1dc6-4fe5-b447-8e62c3fafcc5", - "metadata": {}, - "source": [ - "### Code Findings:\n", - "\n", - "- An error will occur under because \"read_only=True\" is not an argument in icechunk_s3_module.py\"s 'retrieve_dataset()' method. Refer to of L381. Putting in a PR for this change as a result." + "fp = \"./hawaii_topo_30.tif\"\n", + "repo.retrieve_and_convert_to_tif(dest=fp,\n", + " var_name=var_name)" ] }, { @@ -547,9 +540,9 @@ " * y (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n", " spatial_ref int64 8B 0\n", "Data variables:\n", - " elevation (band, y, x) float32 1GB ...
  1. " ], "text/plain": [ " Size: 1GB\n", @@ -587,8 +580,10 @@ } ], "source": [ - "dest = \"./hawaii_topo_30.tif\"\n", - "ds = load_tiff_file(fp = dest)\n", + "fp = \"./hawaii_topo_30.tif\"\n", + "attr_name = \"elevation\"\n", + "ds = load_tiff_file(fp,\n", + " attr_name)\n", "ds" ] }, From d01e24b407e9c33ed7eef6f54aa5492871871194 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Mon, 16 Jun 2025 11:44:48 -0400 Subject: [PATCH 60/97] Add env setup requirement --- src/icefabric_tools/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/icefabric_tools/README.md b/src/icefabric_tools/README.md index c522fc6..7ee2c9f 100644 --- a/src/icefabric_tools/README.md +++ b/src/icefabric_tools/README.md @@ -1,3 +1,6 @@ # Icefabric tools A collection of compute functions/services build on top of existing Iceberg data + +Prior to exectuing the "src/icefabric_tools", one must establish their environment via +"uv pip install -e" against the .toml file residing within "https://github.com/NGWPC/icefabric/blob/main/pyproject.toml." From c63565b4bc51ff4ff8481faa8f7f4fbb83a993f5 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Mon, 16 Jun 2025 11:46:33 -0400 Subject: [PATCH 61/97] Update import of icechunk module --- .../src/icefabric_tools/icechunk/arch_weather_file_utils.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py index d2639ae..e3128c5 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py @@ -7,16 +7,13 @@ import os from enum import Enum - import fsspec import pandas as pd import rioxarray as rxr import xarray as xr from tqdm import tqdm from virtualizarr import open_virtual_dataset - -# from icefabric_tools.icechunk import S3Path -from icechunk_s3_module import S3Path +from icefabric_tools.icechunk import S3Path class FileType(Enum): """ From cb01040ad8a628fc5741ba1df0ced3f1a4498a61 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Mon, 16 Jun 2025 12:12:13 -0400 Subject: [PATCH 62/97] Migrates icechunks of TIFFs from local to cloud. Script for which will covers those TIFFs declared in icechunk_s3_module.py's NGWPCLocations() for migration to S3 as icechunks. --- .../icechunk/icechunk_s3_migration.py | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py new file mode 100644 index 0000000..bd08485 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py @@ -0,0 +1,58 @@ +import os +from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations, S3Path +from icefabric_tools.icechunk.icechunk_testing import * + +def migrate_all_icechunks(attr_name): + ''' + Converts & migrates TIFFs from local to cloud. + + Args: + attr_name (str): Attribute name of interest for a given TIFF. + + Return: None + + ''' + # Extract list of TIFFs from local + local_list = [] + for root, _, files in os.walk("./"): + for file in files: + if file.endswith(f".tiff"): + local_list.append(file.lower()) + + # Maps the S3 paths to TIFFs + topo_fn2s3_map = {} + for fn in local_list: + if 'hawaii_10m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_HA_10M_IC.path] = 'tbdem_hawaii_10m.tiff' + elif 'hawaii_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_HA_30M_IC.path] = 'tbdem_hawaii_30m.tiff' + elif 'conus_atlantic_gulf_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_ATL_GULF_30M_IC.path] = 'tbdem_conus_atlantic_gulf_30m.tiff' + elif 'conus_pacific_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_PAC_30M_IC.path] = 'tbdem_conus_pacific_30m.tiff' + elif 'pr_usvi_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_30M_IC.path] = 'tbdem_pr_usvi_30m.tiff' + elif 'pr_usvi_10m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_10M_IC.path] = 'tbdem_pr_usvi_10m.tiff' + elif 'alaska_10m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_AK_10M_IC.path] = 'tbdem_alaska_10m.tiff' + elif 'alaska_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_AK_30M_IC.path] = 'tbdem_alaska_30m.tiff' + elif 'great_lakes_30m' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_GREAT_LAKES_30M_IC.path] = 'tbdem_great_lakes_30m.tiff' + elif 'albemarle_sound_nos_ncei' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_ALBEMARLE_SOUND_IC.path] = 'Albemarle_Sound_NOS_NCEI.tiff' + elif 'chesapeake_bay_nos_ncei' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CHESAPEAKE_BAY_IC.path] = 'Chesapeake_Bay_NOS_NCEI.tiff' + elif 'mobile_bay_nos_ncei' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_MOBILE_BAY_IC.path] = 'Mobile_Bay_NOS_NCEI.tiff' + elif 'tangier_sound_nos_ncei-002' in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_TANGIER_SOUND_IC.path] = 'Tangier_Sound_NOS_NCEI-002.tiff' + + # Migration of all captured TIFFs to cloud. + for s3_path, fn in topo_fn2s3_map.items(): + if fn: + topo_push_test(tiff_fp=f"./{fn}", + attr_name=attr_name, + new_ic_repo=s3_path) + return \ No newline at end of file From 10ee82a632009c7a347ea9372d81874742c89273 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Tue, 17 Jun 2025 11:49:59 -0400 Subject: [PATCH 63/97] NGWPC-6502: Move the hydrofabric-ui codes into the icefabric repo --- .pre-commit-config.yaml | 2 +- docker/notebook/docker-compose.yml | 19 + examples/geopackage_viewer/geopackage.ipynb | 855 +++++ examples/geopackage_viewer/requirements.txt | 9 + examples/{ => iceberg}/Demo_Iceberg.ipynb | 0 examples/iceberg/pyiceberg_timetravel.ipynb | 376 +++ examples/{ => iceberg}/quick_start.ipynb | 6 +- examples/icechunk/README.icechunk.md | 19 + .../icechunk/icechunk_data_ret_and_plot.ipynb | 301 ++ .../{ => icechunk}/icechunk_to_tiff.ipynb | 82 +- .../icechunk_version_control_examples.ipynb | 131 +- pyproject.toml | 16 +- src/icefabric_manage/pyproject.toml | 2 +- src/icefabric_tools/pyproject.toml | 5 + .../src/icefabric_tools/geo/__init__.py | 0 .../src/icefabric_tools/geo/geo_utils.py | 91 + .../icechunk/icechunk_s3_module.py | 5 +- tests/integration/test_topobathy_icechunk.py | 48 + uv.lock | 2948 +++++++++-------- 19 files changed, 3442 insertions(+), 1473 deletions(-) create mode 100644 docker/notebook/docker-compose.yml create mode 100644 examples/geopackage_viewer/geopackage.ipynb create mode 100644 examples/geopackage_viewer/requirements.txt rename examples/{ => iceberg}/Demo_Iceberg.ipynb (100%) create mode 100644 examples/iceberg/pyiceberg_timetravel.ipynb rename examples/{ => iceberg}/quick_start.ipynb (99%) create mode 100644 examples/icechunk/README.icechunk.md create mode 100644 examples/icechunk/icechunk_data_ret_and_plot.ipynb rename examples/{ => icechunk}/icechunk_to_tiff.ipynb (70%) rename examples/{ => icechunk}/icechunk_version_control_examples.ipynb (84%) create mode 100644 src/icefabric_tools/src/icefabric_tools/geo/__init__.py create mode 100644 src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py create mode 100644 tests/integration/test_topobathy_icechunk.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 88b32b5..a258935 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -22,4 +22,4 @@ repos: - repo: https://github.com/astral-sh/uv-pre-commit rev: 0.5.7 hooks: - - id: uv-lock \ No newline at end of file + - id: uv-lock diff --git a/docker/notebook/docker-compose.yml b/docker/notebook/docker-compose.yml new file mode 100644 index 0000000..f09cefc --- /dev/null +++ b/docker/notebook/docker-compose.yml @@ -0,0 +1,19 @@ +# NOTE: Unsure the purpose of this compose at this time - personal directories should be removed +version: "3.8" + +services: + jupyterlab: + image: jupyter/base-notebook:latest + ports: + - "8888:8888" + volumes: + - ~/efs/jupyterlab-compose:/home/jovyan/work + environment: + JUPYTER_ENABLE_LAB: "yes" + NB_UID: "1000" + NB_GID : "100" + AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}" + AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}" + AWS_SESSION_TOKEN: "${AWS_SESSION_TOKEN}" + command: > + bash -c "pip install boto3 && chown -R 1000:100 /home/jovyan/work && start-notebook.sh --NotebookApp.token=''" diff --git a/examples/geopackage_viewer/geopackage.ipynb b/examples/geopackage_viewer/geopackage.ipynb new file mode 100644 index 0000000..1355d34 --- /dev/null +++ b/examples/geopackage_viewer/geopackage.ipynb @@ -0,0 +1,855 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "5c66ee09-04ee-47c3-bc36-8f620a207626", + "metadata": {}, + "source": [ + "# Hydrofabric Geopackage Viewer" + ] + }, + { + "cell_type": "markdown", + "id": "df0435b9-0fd0-4681-9c10-4ac2faaf83aa", + "metadata": {}, + "source": [ + "Read geopackage with geopandas. Get list of layers, loop and read all layers and store in a dictionary.\n", + "\n", + "\n", + "Requires:\n", + "- To be run on machine with access to https://hydroapi.oe.nextgenwaterprediction.com/\n", + "- `.env` with AWS credentials" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "784799a5-df23-4971-ad1b-ea4573610279", + "metadata": {}, + "outputs": [], + "source": [ + "import geopandas as gpd\n", + "import ipywidgets as widgets\n", + "import pandas as pd\n", + "from dotenv import load_dotenv\n", + "from ipywidgets import interact\n", + "\n", + "from icefabric_tools.geo.geo_utils import create_time_series_widget, get_geopackage_uri, get_observational_uri" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "515b8c7d-c575-42f3-a9b3-414659e619f5", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", + "load_dotenv()" + ] + }, + { + "cell_type": "markdown", + "id": "3278d5ca-d9c5-4950-8731-77b9dd5d3367", + "metadata": {}, + "source": [ + "## Getting streamflow observations for different gages\n" + ] + }, + { + "cell_type": "markdown", + "id": "ac3f8c61-8218-4d6b-bba7-285053166a7e", + "metadata": {}, + "source": [ + "Step 1) getting the data" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5124f78a-2f24-4e9c-ba73-93d246bfc2e4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    \n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
    dateTimeq_cms
    01990-10-01 05:00:0019.623575
    11990-10-01 06:00:0020.416447
    21990-10-01 07:00:0021.237635
    31990-10-01 08:00:0021.860605
    41990-10-01 09:00:0022.285358
    .........
    2973032024-08-30 20:00:0013.280601
    2973042024-08-30 21:00:0013.280601
    2973052024-08-30 22:00:0013.280601
    2973062024-08-30 23:00:0013.280601
    2973072024-08-31 00:00:0013.280601
    \n", + "

    297308 rows × 2 columns

    \n", + "
    " + ], + "text/plain": [ + " dateTime q_cms\n", + "0 1990-10-01 05:00:00 19.623575\n", + "1 1990-10-01 06:00:00 20.416447\n", + "2 1990-10-01 07:00:00 21.237635\n", + "3 1990-10-01 08:00:00 21.860605\n", + "4 1990-10-01 09:00:00 22.285358\n", + "... ... ...\n", + "297303 2024-08-30 20:00:00 13.280601\n", + "297304 2024-08-30 21:00:00 13.280601\n", + "297305 2024-08-30 22:00:00 13.280601\n", + "297306 2024-08-30 23:00:00 13.280601\n", + "297307 2024-08-31 00:00:00 13.280601\n", + "\n", + "[297308 rows x 2 columns]" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "streamflow_obs_uri = get_observational_uri(gage_id=\"01013500\")\n", + "streamflow_obs_df = pd.read_csv(streamflow_obs_uri)\n", + "streamflow_obs_df" + ] + }, + { + "cell_type": "markdown", + "id": "3ef286cb-c57b-471c-b235-0c7becd81bb4", + "metadata": {}, + "source": [ + "Step 2) streamflow visualization" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a53b0ff1-be18-4baf-af51-f331888974da", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "02a4caac921e415092fb25289f697d6b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(SelectionSlider(description='Start:', layout=Layout(width='95%'), options=('1990-10-01 0…" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "streamflow_obs_df[\"dateTime\"] = pd.to_datetime(streamflow_obs_df[\"dateTime\"])\n", + "\n", + "# Create sliders\n", + "start_slider = widgets.SelectionSlider(\n", + " options=streamflow_obs_df[\"dateTime\"].dt.strftime(\"%Y-%m-%d %H:%M:%S\").tolist(),\n", + " description=\"Start:\",\n", + " layout=widgets.Layout(width=\"95%\"),\n", + ")\n", + "\n", + "end_slider = widgets.SelectionSlider(\n", + " options=streamflow_obs_df[\"dateTime\"].dt.strftime(\"%Y-%m-%d %H:%M:%S\").tolist(),\n", + " description=\"End:\",\n", + " layout=widgets.Layout(width=\"95%\"),\n", + ")\n", + "\n", + "# Scatter Plot of observations\n", + "create_time_series_widget(streamflow_obs_df, start_slider, end_slider, point_size=5)" + ] + }, + { + "cell_type": "markdown", + "id": "721e55a1-798e-4122-b69f-d178381086ec", + "metadata": {}, + "source": [ + "## Geopackage Summary" + ] + }, + { + "cell_type": "markdown", + "id": "3adcb9a2-4623-4117-99cf-ad29501bea42", + "metadata": {}, + "source": [ + "Print list of layers, number of catchments, and list of hydrolocations." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "434b7c40-4a11-4db2-b073-8794848833d7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'s3://ngwpc-hydrofabric-oe/2.1/CONUS/06710385/GEOPACKAGE/USGS/2024_Dec_16_20_29_12/gauge_06710385.gpkg'" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "geopackage_uri" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "7fb96ccb-b383-42eb-b8bd-b2355c1e20cc", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Layers:\n", + "flowpaths, divides, nexus, lakes, pois, hydrolocations, flowpath-attributes, flowpath-attributes-ml, network, divide-attributes\n", + "Number of catchments:\n", + "26\n", + "Hydrolocations:\n", + "huc12-101900020801, huc12-101900020802, gages-06710385\n" + ] + } + ], + "source": [ + "geopackage_uri = get_geopackage_uri(gage_id=\"06710385\", version=2.2)\n", + "\n", + "layers = gpd.list_layers(geopackage_uri).name.tolist()\n", + "\n", + "layer_df = {}\n", + "\n", + "for layer in layers:\n", + " df = gpd.read_file(geopackage_uri, layer=layer)\n", + " layer_df[layer] = df\n", + "\n", + "layers_str = \", \".join(layers)\n", + "print(\"Layers:\")\n", + "print(layers_str)\n", + "row, col = layer_df[\"divides\"].shape\n", + "print(\"Number of catchments:\")\n", + "print(row)\n", + "print(\"Hydrolocations:\")\n", + "hl = layer_df[\"hydrolocations\"].hl_uri.tolist()\n", + "hl_str = \", \".join(hl)\n", + "print(hl_str)" + ] + }, + { + "cell_type": "markdown", + "id": "77cd7974-cda9-4931-b80c-8d5dd31da250", + "metadata": {}, + "source": [ + "## Map of divides, nexuses, and flowpaths" + ] + }, + { + "cell_type": "markdown", + "id": "b3689b76-8a61-48b8-b827-1b17eb3e3caf", + "metadata": {}, + "source": [ + "Plot divides, nexuses, and flowpaths on a map." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "798ddd22", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    Make this Notebook Trusted to load map: File -> Trust Notebook
    " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "divides = layer_df[\"divides\"].to_crs(epsg=3857)\n", + "\n", + "flowpaths = layer_df[\"flowpaths\"].to_crs(epsg=3857)\n", + "nexus = layer_df[\"nexus\"].to_crs(epsg=3857)\n", + "\n", + "div_ex = divides.explore()\n", + "fl_ex = flowpaths.explore(m=div_ex, color=\"yellow\")\n", + "nexus.explore(m=fl_ex, color=\"red\")" + ] + }, + { + "cell_type": "markdown", + "id": "460fc320-ffd7-4509-a252-d3eedb25b292", + "metadata": {}, + "source": [ + "## View Layers" + ] + }, + { + "cell_type": "markdown", + "id": "c4e1f9d4-ab23-4606-86dd-69432e84a523", + "metadata": {}, + "source": [ + "Select layer and print table" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "858e0398-81ee-4d57-8889-11002174c5ea", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "70048138c0e24c9b99123493f978d25a", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "interactive(children=(Dropdown(description='layer_name', options=('flowpaths', 'divides', 'nexus', 'lakes', 'p…" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def show_layer(layer_name):\n", + " display(layer_df[layer_name])\n", + "\n", + "\n", + "interact(show_layer, layer_name=layers)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ccc9a36b-0c8e-456e-8b5b-97215626a630", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "464f2243-2d93-44a6-8101-5b7b6812495b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/geopackage_viewer/requirements.txt b/examples/geopackage_viewer/requirements.txt new file mode 100644 index 0000000..bfa17c6 --- /dev/null +++ b/examples/geopackage_viewer/requirements.txt @@ -0,0 +1,9 @@ +folium==0.19.5 +geodatasets==2024.8.0 +geopandas==1.0.1 +httpx==0.28.1 +ipywidgets==8.1.6 +matplotlib==3.10.3 +pandas==2.2.3 +python-dotenv==1.1.0 +mapclassify==2.9.0 diff --git a/examples/Demo_Iceberg.ipynb b/examples/iceberg/Demo_Iceberg.ipynb similarity index 100% rename from examples/Demo_Iceberg.ipynb rename to examples/iceberg/Demo_Iceberg.ipynb diff --git a/examples/iceberg/pyiceberg_timetravel.ipynb b/examples/iceberg/pyiceberg_timetravel.ipynb new file mode 100644 index 0000000..eb06391 --- /dev/null +++ b/examples/iceberg/pyiceberg_timetravel.ipynb @@ -0,0 +1,376 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "c015f447", + "metadata": {}, + "source": [ + "# Demo: Timetravel in with iceberg tables\n", + "\n", + "Create a demo catalog, make changes, and see the changes with \"snapshot\" history.\n", + "\n", + "Requires:\n", + "- pyiceberg[sql-sqlite] installed\n", + "- `.env` with your AWS credentials" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "9f07637f", + "metadata": {}, + "outputs": [], + "source": [ + "import shlex\n", + "import subprocess\n", + "from pathlib import Path\n", + "\n", + "import pyarrow.parquet as pq\n", + "from dotenv import load_dotenv\n", + "from pyiceberg.catalog import load_catalog" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "db86d0ba", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# before running this cell, make sure you created a .env file in this directory with your _current_ AWS credentials in it\n", + "load_dotenv()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "3f901988", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "download: s3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet to data/parquet/divides.parquet\n" + ] + }, + { + "data": { + "text/plain": [ + "CompletedProcess(args=['aws', 's3', 'cp', 's3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet', 'data/parquet'], returncode=0)" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Retrieve sample parquet from s3\n", + "parquet_path = Path(\"./data/parquet\")\n", + "parquet_path.mkdir(parents=True, exist_ok=True)\n", + "\n", + "subprocess.run(\n", + " shlex.split(\n", + " f\"aws s3 cp s3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet {parquet_path}\"\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "f41913d7-1cc8-42d0-8cea-053b4c23d6bb", + "metadata": {}, + "source": [ + "Read divides parquet file" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "6651c9e7-c38d-46d1-b6a4-491baf12cc90", + "metadata": {}, + "outputs": [], + "source": [ + "df = pq.read_table(\"data/parquet/divides.parquet\")" + ] + }, + { + "cell_type": "markdown", + "id": "0e4d5aaf-d51c-486c-86ac-32eeb2b7e74f", + "metadata": {}, + "source": [ + "Create data catalog stored in \"warehouse\" directory." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "96974839-0308-4256-bb3e-0cddfea9d037", + "metadata": {}, + "outputs": [], + "source": [ + "warehouse_path = Path(\"./warehouse\")\n", + "warehouse_path.mkdir(exist_ok=True)\n", + "catalog = load_catalog(\n", + " \"default\",\n", + " **{\n", + " \"type\": \"sql\",\n", + " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", + " \"warehouse\": f\"file://{warehouse_path}\",\n", + " },\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "2fe13a4d-0c18-4f2b-953e-a9c658b7225a", + "metadata": {}, + "source": [ + "Create Iceberg table for divides" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "efed8866-134c-40f9-969b-1e4c20b5f11b", + "metadata": {}, + "outputs": [], + "source": [ + "catalog.create_namespace(\"default\")\n", + "table = catalog.create_table(\n", + " \"default.divides\",\n", + " schema=df.schema,\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "f29ed9b6-ba8d-4a54-bbc5-eec900f1cec6", + "metadata": {}, + "source": [ + "Add divides data to Iceberg table and print the number of rows. There should be 831777 divides for CONUS." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "0a9d4717-9055-4ac7-819c-aca6c2435c95", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "831777" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table.append(df)\n", + "len(table.scan().to_arrow())" + ] + }, + { + "cell_type": "markdown", + "id": "a1c2b449-667a-4bcd-9c94-d0e604c33f8c", + "metadata": {}, + "source": [ + "A snapshot was created for the initial append. Store this snapshot id for later use." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "78ee6462-5db1-4a40-89b8-3837e63711cd", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snapshot ID: 6392225911450853109; Summary: operation=Operation.APPEND\n" + ] + } + ], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")\n", + "snapshot_id = table.metadata.snapshots[0].snapshot_id" + ] + }, + { + "cell_type": "markdown", + "id": "8f245529-a3c9-4a99-bcb3-fe1078779498", + "metadata": {}, + "source": [ + "Add a new column for flowpath length in m. Overwrite original table." + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "975224d2-deb0-420f-be80-6b5cac7bbe60", + "metadata": {}, + "outputs": [], + "source": [ + "import pyarrow.compute as pc\n", + "\n", + "df = df.append_column(\"lengthm\", pc.multiply(df[\"lengthkm\"], 1000))\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(df.schema)\n", + "table.overwrite(df)" + ] + }, + { + "cell_type": "markdown", + "id": "b3ff7a72-70f6-44e8-a6da-d1c9766c6782", + "metadata": {}, + "source": [ + "There should be a new \"lengthm\" column." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "d826f290-79bf-4bab-a508-cd73bb3aadb6", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "table.schema" + ] + }, + { + "cell_type": "markdown", + "id": "668d3f57-e9ef-47e7-a268-05699debcf8f", + "metadata": {}, + "source": [ + "There should now be three snapshots. The original, a delete, and an append with the new column." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "6b3a70f2-2271-4bcd-b5fb-83683f36705c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Snapshot ID: 6392225911450853109; Summary: operation=Operation.APPEND\n", + "Snapshot ID: 3770483438741118773; Summary: operation=Operation.DELETE\n", + "Snapshot ID: 6082380623201209864; Summary: operation=Operation.APPEND\n" + ] + } + ], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")" + ] + }, + { + "cell_type": "markdown", + "id": "3685eddd-31bb-4c07-a656-6cfb5e97881a", + "metadata": {}, + "source": [ + "You can use the scan function and the first snapshot ID (this variable was saved earlier) to look at the table before the\n", + "new column was added. This table doesn't have lengthm." + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2f47f9e3-7e6b-468b-a978-2c433e662c12", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "pyarrow.Table\n", + "divide_id: large_string\n", + "toid: large_string\n", + "type: large_string\n", + "ds_id: double\n", + "areasqkm: double\n", + "vpuid: large_string\n", + "id: large_string\n", + "lengthkm: double\n", + "tot_drainage_areasqkm: double\n", + "has_flowline: bool\n", + "geometry: large_binary\n" + ] + } + ], + "source": [ + "# scan = table.scan(row_filter=\"divide_id\" == \"cat-276\", selected_fields=('divide_id', 'lengthm')).to_arrow()\n", + "# print(scan)\n", + "print(table.scan(snapshot_id=snapshot_id).to_arrow().to_string())\n", + "# table.scan(snapshot_id=snapshot_id)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/quick_start.ipynb b/examples/iceberg/quick_start.ipynb similarity index 99% rename from examples/quick_start.ipynb rename to examples/iceberg/quick_start.ipynb index 6e18088..24680e4 100644 --- a/examples/quick_start.ipynb +++ b/examples/iceberg/quick_start.ipynb @@ -14,7 +14,6 @@ "metadata": {}, "outputs": [], "source": [ - "import os\n", "from pathlib import Path\n", "\n", "import geopandas as gpd\n", @@ -58,7 +57,7 @@ "warehouse_path.mkdir(exist_ok=True)\n", "\n", "catalog_settings = {\n", - " 'type': 'sql',\n", + " \"type\": \"sql\",\n", " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", " \"warehouse\": f\"file://{warehouse_path}\",\n", "}\n", @@ -830,7 +829,7 @@ "from icefabric_tools.rnr import get_rnr_segment\n", "\n", "catalog_settings = {\n", - " 'type': 'sql',\n", + " \"type\": \"sql\",\n", " \"uri\": \"sqlite:///../data/warehouse/pyiceberg_catalog.db\",\n", " \"warehouse\": \"file://../data/warehouse\",\n", "}\n", @@ -1036,7 +1035,6 @@ } ], "source": [ - "import geopandas as gpd\n", "gdf = gpd.read_file(\"../data/test_ds_rnr.gpkg\", layer=\"network\")\n", "gdf.head()" ] diff --git a/examples/icechunk/README.icechunk.md b/examples/icechunk/README.icechunk.md new file mode 100644 index 0000000..322a9c7 --- /dev/null +++ b/examples/icechunk/README.icechunk.md @@ -0,0 +1,19 @@ +# Icechunk Data Viewer +Interface to load, create and view S3 Icechunk-versioned NGWPC datasets + +## Install Icechunk Data Viewer: +1. Clone repo: `git clone ` +2. CD to repo dir: `cd /icechunk_data_viewer` +3. Create virtual environment: `python3.11 -m venv .venv` +4. Start virtual environment: `source .venv/bin/activate` +5. Load dependedencies: `pip install -r requirements.txt` +6. Prepare AWS credentials. Either: + - [Set up IAM Identity Center and run `aws sso login` prior to notebook launch](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html#sso-configure-profile-token-auto-sso) + - [Copy/paste credentials into `~/.aws/credentials`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-format) +7. Start Jupyter notebook: `jupyter notebook --no-browser` +8. Using your browser, navigate to the notebook server instance (i.e. `http://127.0.0.1:8888/tree?token=XXX`). Your specific URL is listed in the terminal output. +9. Open `icechunk_data_ret_and_plot.jpynb` in the GUI. +10. Prior to execution, depending on if you've configured AWS credentials with SSO or copy/pasted them: + - SSO: Comment out line #11 in block 1 (`os.environ['AWS_PROFILE'] = "XXX_SoftwareEngineersFull"`) + - Copy/paste: Alter line #11 to overwrite the placeholder string with your profile name found in `~/.aws/credentials` +11. Run the notebook diff --git a/examples/icechunk/icechunk_data_ret_and_plot.ipynb b/examples/icechunk/icechunk_data_ret_and_plot.ipynb new file mode 100644 index 0000000..f1986b1 --- /dev/null +++ b/examples/icechunk/icechunk_data_ret_and_plot.ipynb @@ -0,0 +1,301 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "d2960e7e-b0ce-4fc7-bc91-509ff38180db", + "metadata": {}, + "source": [ + "## Retrieving Icechunk Data\n", + "Intantiate and retrieve the data from the NLCD Land Cover Icechunk repo. Print and plot the data.\n", + "\n", + "Requires:\n", + "- `.env` with your AWS credentials" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "92608737-174f-42fd-ab07-b599edd9d1de", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "from dotenv import load_dotenv" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "28c1bab2-5106-4ea5-94fd-502de7859a4d", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "True" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", + "load_dotenv()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "2b3b1ced-6760-4ef5-8cdc-4bde82a287fe", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 874GB\n", + "Dimensions: (year: 39, Y: 105000, X: 160000, Y1: 52500, X1: 80000, Y2: 26250,\n", + " X2: 40000, Y3: 13125, X3: 20000, Y4: 6563, X4: 10000, Y5: 3282,\n", + " X5: 5000, Y6: 1641, X6: 2500)\n", + "Coordinates:\n", + " * year (year) int32 156B 1985 1986 1987 1988 1989 ... 2020 2021 2022 2023\n", + "Dimensions without coordinates: Y, X, Y1, X1, Y2, X2, Y3, X3, Y4, X4, Y5, X5,\n", + " Y6, X6\n", + "Data variables:\n", + " 0 (year, Y, X) uint8 655GB dask.array\n", + " 1 (year, Y1, X1) uint8 164GB dask.array\n", + " 2 (year, Y2, X2) uint8 41GB dask.array\n", + " 3 (year, Y3, X3) uint8 10GB dask.array\n", + " 4 (year, Y4, X4) uint8 3GB dask.array\n", + " 5 (year, Y5, X5) uint8 640MB dask.array\n", + " 6 (year, Y6, X6) uint8 160MB dask.array\n", + "Attributes: (12/24)\n", + " multiscales: [{'datasets': [{'path': '0'}, {'path': '1'}, {'...\n", + " KeyDirectoryVersion: 1\n", + " KeyRevision: 1\n", + " KeyRevisionMinor: 0\n", + " GTModelTypeGeoKey: 1\n", + " GTRasterTypeGeoKey: 1\n", + " ... ...\n", + " ProjNatOriginLongGeoKey: -96.0\n", + " ProjNatOriginLatGeoKey: 23.0\n", + " ProjFalseEastingGeoKey: 0.0\n", + " ProjFalseNorthingGeoKey: 0.0\n", + " ModelPixelScale: [30.0, 30.0, 0.0]\n", + " ModelTiepoint: [0.0, 0.0, 0.0, -2415585.0, 3314805.0, 0.0]\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n", + "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", + " super().__init__(**codec_config)\n" + ] + } + ], + "source": [ + "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations\n", + "\n", + "# Retrive data and print\n", + "land_cover_repo = IcechunkS3Repo(location=NGWPCLocations.NLCD_IC.path)\n", + "lc_data = land_cover_repo.retrieve_dataset()\n", + "print(lc_data)" + ] + }, + { + "cell_type": "markdown", + "id": "e4c698c4-49cd-445c-ac4a-2929fa01185f", + "metadata": {}, + "source": [ + "### Plot 2023 data" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "9d70e76d-82aa-4724-93fb-9e53b979363c", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 16MB\n", + "dask.array\n", + "Coordinates:\n", + " year int32 4B 2023\n", + "Dimensions without coordinates: Y5, X5\n" + ] + }, + { + "data": { + "image/png": "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W1sb6uvrTeeH379r3ZueznE4HFH9r/SEhARMnToVOTk5WLduHebOnYsXX3yR9+0ajh49iurqasyfPx9xcXGIi4vDwYMH8R//8R+Ii4tDZmYm7x+RAQOiXiQkJCAnJwd79+5VzwWDQezduxderzeCVzayTJ48GW6323SfGhoacPjwYXWfvF4v6uvrcfToUXXOvn37EAwGkZubq845dOgQ2tvb1Tl79uzBjBkzonq5TAiBRx55BNu3b8e+ffu6LAvm5OQgPj7edP9OnTqFyspK0/0rKyszBZV79uyBw+GAx+NR5xhfQ54z2n5Wg8EgWltbed+u4c4770RZWRlKSkrU4wtf+AJWrlypPub9IzKIdFX3SLd161Zhs9nE5s2bRXl5uVizZo1ISUkx7bqIBY2NjeLYsWPi2LFjAoB4/vnnxbFjx8T58+eFEPq2+5SUFPH222+LTz75RNx7773dbru/9dZbxeHDh8VHH30kpk2bZtp2X19fLzIzM8V3vvMdcfz4cbF161Zht9ujftv9ww8/LJxOpzhw4IC4dOmSejQ3N6tz1q5dK7KyssS+ffvEkSNHhNfrFV6vVx2X25+//vWvi5KSEvHee++J9PT0brc/P/HEE6KiokJs2LAh6rc/P/nkk+LgwYPi008/FZ988ol48sknhaZp4v333xdC8L5dL+MuMyF4/4iMGBD1wW9+8xuRlZUlEhISxBe/+EVRXFwc6Usadvv37xcAujweeughIYS+9f6nP/2pyMzMFDabTdx5553i1KlTpteoqakRK1asEMnJycLhcIjvfve7orGx0XROaWmp+PKXvyxsNpu48cYbxfr164frLQ6Z7u4bAPHKK6+oc65evSr+8R//UbhcLmG328V9990nLl26ZHqdc+fOicWLF4ukpCQxbtw48c///M+ivb3ddM7+/fvFvHnzREJCgrj55ptNXyMafe973xOTJk0SCQkJIj09Xdx5550qGBKC9+16hQdEvH9EIZoQQkQmN0VEREQ0MrCGiIiIiGIeAyIiIiKKeQyIiIiIKOYxICIiIqKYx4CIiIiIYh4DIiIiIop5DIiIiIgo5jEgIiIiopjHgIiIlL//+7/HN7/5zW6PXb16FT/72c8wffp02Gw2jBs3Dn/3d3+HEydOmM579tlnoWka1q5da3q+pKQEmqbh3LlzQ3T1RET9x4CIiK6ptbUVixYtwu9//3v84he/wOnTp7F79250dHQgNzcXxcXFpvMTExPx8ssv48yZMxG6YiKi6xMX6QsgopHv3//931FUVIRjx45h7ty5AIBJkybhrbfeQm5uLlavXo3jx49D0zQAwIwZM5CRkYGnn34a27Zti+SlExH1CTNERHRNf/jDH/C1r31NBUOSxWLBY489hvLycpSWlpqOrV+/Hm+99RaOHDkynJdKRNQvDIiI6JpOnz6N7Ozsbo/J50+fPm16fv78+Vi+fDl+/OMfD/n1ERENFAMiIuoTIcR1f84vfvELfPjhh3j//feH4IqIiAYPAyIiuqbp06ejoqKi22Py+enTp3c5NmXKFHz/+9/Hk08+2a+AiohouDAgIqJr+va3v40PPvigS51QMBjECy+8AI/H06W+SHrmmWdw+vRpbN26dTgulYioX7jLjIhM/H4/SkpKTM+tWrUKb7/9NpYuXYpf//rXyM3NRVVVFX75y1+ioqICH3zwgdphFi4zMxOPP/44fvWrXw3D1RMR9Q8DIiIyOXDgAG699VbTc6tXr8a+ffvwy1/+Ej/5yU9w/vx5jB07FrfffjuKi4txyy239PqaP/zhD7Fx40a0tLQM5aUTEfWbJriwT0RERDGONUREREQU8xgQERERUcxjQEREREQxjwERERERxTwGRERERBTzGBARERFRzGNARERERDGPARERERHFPAZEREREFPMYEBEREVHMY0BEREREMY8BEREREcW8/w+VFf2cQcAoOQAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Print data for year 2023\n", + "print(lc_data[\"5\"].sel(year=2023))\n", + "\n", + "# Set up plot for 2023 land cover\n", + "lc_data[\"5\"].sel(year=2023).plot(x=\"X5\", y=\"Y5\")\n", + "\n", + "# Invert the y-axis to show the CONUS region correctly\n", + "plt.gca().invert_yaxis()\n", + "\n", + "# Add labels and show the plot\n", + "plt.xlabel(\"LON\")\n", + "plt.ylabel(\"LAT\")\n", + "plt.title(\"CONUS Land Cover\")\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "982fa54a-cd71-43d0-af65-a60184956bba", + "metadata": {}, + "source": [ + "## Topobathy\n", + "Intantiate and retrieve the data from one Topobathy Icechunk repo. Print and plot the data.\n", + "\n", + "### Retrieve Data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "617115d8-a7d0-486e-aab9-2daedad9074e", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 681MB\n", + "Dimensions: (band: 1, y: 6304, x: 13504)\n", + "Coordinates:\n", + " * y (y) float64 50kB 19.0 19.0 ... 17.25 17.25\n", + " * x (x) float64 108kB -68.0 -68.0 ... -64.25\n", + " spatial_ref int64 8B 0\n", + " * band (band) int64 8B 1\n", + "Data variables:\n", + " __xarray_dataarray_variable__ (band, y, x) float64 681MB dask.array\n" + ] + } + ], + "source": [ + "# Retrive data and print\n", + "topo_repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_PR_USVI_30M_IC.path)\n", + "topo_data = topo_repo.retrieve_dataset()\n", + "print(topo_data)" + ] + }, + { + "cell_type": "markdown", + "id": "9ac68b4d-0601-43b5-8cc2-ce328305e4fe", + "metadata": {}, + "source": [ + "### Plot Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e5a687c9-57ea-4fa9-ae0b-d88595fc03b2", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Size: 681MB\n", + "dask.array\n", + "Coordinates:\n", + " * y (y) float64 50kB 19.0 19.0 19.0 19.0 ... 17.25 17.25 17.25\n", + " * x (x) float64 108kB -68.0 -68.0 -68.0 ... -64.25 -64.25 -64.25\n", + " spatial_ref int64 8B 0\n", + " * band (band) int64 8B 1\n", + "Attributes: (12/13)\n", + " DataType: Generic\n", + " AREA_OR_POINT: Area\n", + " RepresentationType: ATHEMATIC\n", + " STATISTICS_COUNT: 64069221.0\n", + " STATISTICS_COVARIANCES: 2043434.806372322\n", + " STATISTICS_MAXIMUM: 1328.0447998047\n", + " ... ...\n", + " STATISTICS_MEDIAN: -1039.828272\n", + " STATISTICS_MINIMUM: -6616.7924804688\n", + " STATISTICS_SKIPFACTORX: 1\n", + " STATISTICS_SKIPFACTORY: 1\n", + " STATISTICS_STDDEV: 1429.4876027347\n", + " units: metre\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAHHCAYAAAARcURhAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsfXmcHEXd/lPVPbO7OTkkCSEQDrlPBQRELkUQIoKABwQJCvIRwq28viDKoRBFuUFAVA4FUfwJoqByCagICppXEQS5BHkJyIsk5Nidma76/VH9rfpWdfXs7JHdhfTz+czuTHd1dVVPT/fTz/cSWmuNChUqVKhQoUKFCqMGOdoDqFChQoUKFSpUWNFREbIKFSpUqFChQoVRRkXIKlSoUKFChQoVRhkVIatQoUKFChUqVBhlVISsQoUKFSpUqFBhlFERsgoVKlSoUKFChVFGRcgqVKhQoUKFChVGGRUhq1ChQoUKFSpUGGVUhKxChQoVKlSoUGGUURGyChUYdt11V+y6666jPYwKFdrijDPOgBACr7766nLf1zXXXAMhBB5++OHlvq8KFVZkVIRsBQRdYOnV3d2NDTbYAMcccwxefvnlURnTY489hjPOOAPPPffcsPYbzjVNU6yxxho47LDD8OKLLw7rvoYCpRS+8Y1vYP3110dPTw/WW289HHXUUVi8eHHHfRx22GGYMGFC6foJEybgsMMO85Y999xz+OQnP4n11lsP3d3dmDZtGnbeeWecfvrpAIBXXnkFaZrikEMOKe33jTfeQE9PD/bff38And/A//d//xeHHHIINtxwQ0ycOBErrbQS3vWud+Haa69FrKLbiy++iI9+9KNYaaWVMGnSJOy777545plnCvOh7/orX/lKdL+zZ8+GEKLtseL99Pca7nN2tPDNb34T11xzzWgPo0KFFRbpaA+gwujhrLPOwjrrrIPe3l789re/xeWXX47bb78djz76KMaNGzeiY3nsscdw5plnYtddd8Xaa6897P3zuT744IO45ppr8Nvf/haPPvoouru7bbs77rhj2PfdCS666CKcfPLJ2G+//XDyySfjn//8J37wgx/g85//fFviMBQ89dRT2HbbbdHT04NPfepTWHvttfHSSy/hT3/6E772ta/hzDPPxJQpU/D+978fP/3pT7F06dLoefGTn/wEvb29bUlbDK+++ir+9a9/4cADD8Raa62FZrOJO++8E4cddhieeOIJnHPOObbt4sWLsdtuu2HhwoU49dRTUavVcMEFF2CXXXbB/Pnzseqqq3p9d3d34wc/+AFOO+00b/mSJUvw05/+1PvOY1httdXwve99z1t23nnn4V//+hcuuOCCQtu3Ar75zW/ibW97W4G0V6hQYYSgK6xwuPrqqzUA/cc//tFbftJJJ2kA+oYbbhixsSxbtkxnWaZvuukmDUD/+te/Htb+y+b6+c9/XgPQP/zhD4d1f4PFu971Lr3ppptqpZRdlmWZbjabHfcxZ84cPX78+NL148eP13PmzLGfjz76aJ2mqX7uuecKbV9++WX7/nvf+54GoH/wgx9E+91jjz305MmTdW9vr9a6/Jh3ig9+8IN6/PjxutVq2WVf+9rXNAD9hz/8wS57/PHHdZIk+pRTTrHLnn32WQ1A77///hqAnj9/vtf39ddfr2u1mt5nn33aHqsYZs2apWfOnDmoOQ03Tj/9dA1A//vf/x62PjfddFO9yy67FJYP9fusUKFCZ6hMlhUs3vve9wIAnn32Wbvs+9//Prbeemv09PRglVVWwcc//nG88MIL3nZrr7129Kk69Me69957IYTAjTfeiNNOOw1rrLEGxo0bh4svvhgf+chHAAC77babNQXde++9dttvfvOb2HTTTdHV1YXp06dj7ty5eP311wc915122gkA8PTTT7cdMwD09vbijDPOwAYbbIDu7m6svvrq2H///b1tlyxZgs9+9rNYc8010dXVhQ033BDf+MY3oqa3GKSUUEpBCOEtS9PlJ2I//fTTmDFjBmbOnFlYN2XKFPv+wx/+MMaPH48bbrih0O6VV17B3XffjQMPPBBdXV3DMq61114bS5cuRaPRsMt+/OMfY9ttt8W2225rl2200UZ43/vehx/96EeFPnbYYQess846hTFff/31+MAHPoBVVlllWMb6yiuv4PDDD8fUqVPR3d2NLbfcEtdee63Xhsyf3/jGN3DBBRdg5syZ6OnpwS677IJHH3200Oc999yDnXbaCePHj8dKK62EfffdF48//nh0/6+++io++tGPYtKkSVh11VVx/PHHo7e312tz9dVX473vfS+mTJmCrq4ubLLJJrj88su9NmuvvTb+9re/4b777rO/v/B30NfXh5NOOgmrrbYaxo8fjw9/+MP497//bdfPmTMHb3vb29BsNgvj3GOPPbDhhhu2PZYVKqzoqAhZBQsiGGT+Ofvss3HooYdi/fXXx/nnn48TTjgBd999N3beeechkaEvf/nLuO222/C5z30O55xzDvbYYw8cd9xxAIBTTz0V3/ve9/C9730PG2+8MQDjwDx37lxMnz4d5513Hg444ABceeWV2GOPPaIX/05Afj8rr7xy23ZZluGDH/wgzjzzTGy99dY477zzcPzxx2PhwoX2Zqq1xoc+9CFccMEF+MAHPoDzzz8fG264IU4++WScdNJJHY3nk5/8JB5//HFceeWVg5rPYDBz5ky88MILuOeee9q2Gz9+PPbdd1/86le/wmuvveat++EPf4gsyzB79uxBj2PZsmV49dVX8dxzz+Haa6/F1VdfjR122AE9PT0AjH/dX/7yF2yzzTaFbd/1rnfh6aefxhtvvFFYd9BBB+HGG2+0pPjVV1/FHXfcgYMPPnjQYw3Hveuuu+J73/seZs+eja9//euYPHkyDjvsMFx00UWF9tdddx0uvvhizJ07F6eccgoeffRRvPe97/X8Nu+66y7sueeeeOWVV3DGGWfgpJNOwgMPPIAdd9wx6qv20Y9+FL29vZg3bx723ntvXHzxxTjyyCO9NpdffjlmzpyJU089Feeddx7WXHNNHH300bjssstsmwsvvBAzZszARhttZH9/X/jCF7x+jj32WPzP//wPTj/9dBx11FH42c9+hmOOOcau/8QnPoH/+7//w69+9StvuwULFuCee+4ZsEm7QoUVDqOs0FUYBZAJ4q677tL//ve/9QsvvKBvvPFGveqqq+qenh79r3/9Sz/33HM6SRJ99tlne9v+9a9/1WmaestnzpzpmcIIu+yyi2cC+fWvf60B6HXXXVcvXbrUa1tmsnzllVd0vV7Xe+yxh86yzC6/9NJLNQD93e9+d8Bz/fGPf6xXW2013dXVpV944YW2Y/7ud7+rAejzzz+/0DeZF2+55RYNQH/lK1/x1h944IFaCKGfeuqptmPUWuv//u//1vV6XSdJon/yk5/02z6GgZosH330Ud3T06MB6K222koff/zx+pZbbtFLliwpbHvbbbdpAPrKK6/0lm+//fZ6jTXW8L6bgZq45s2bpwHY1/ve9z79/PPP2/X//ve/NQB91llnFba97LLLNAD997//XWvtTJZf//rX9aOPPqoB6N/85je27YQJE/SSJUv6PVYxhCbLCy+8UAPQ3//+9+2yRqOhd9hhBz1hwgS9aNEib0z02yI89NBDGoA+8cQT7bKtttpKT5kyRf/f//2fXfY///M/WkqpDz30ULuMTJYf+tCHvDEeffTRGoD+n//5H7ss/K1prfWee+6p1113XW9ZfybL3Xff3TOpn3jiiTpJEv36669rrY2JfcaMGfpjH/uYt/3555+vhRD6mWeeKfRdoUIFh0ohW4Gx++67Y7XVVsOaa66Jj3/845gwYQJuvvlmrLHGGvjJT34CpRQ++tGP4tVXX7WvadOmYf3118evf/3rQe93zpw5Vv3oD3fddRcajQZOOOEESOlO109/+tOYNGkSbrvtto764XM98MADMX78eNx6662YMWNG2+3+3//7f3jb296GY489trCOzIu33347kiSxKh/hs5/9LLTW+MUvftF2HxdffDHOP/98/O53v8NBBx2Ej3/844Xggq6uLnzxi1/sZKodY9NNN8X8+fNxyCGH4LnnnsNFF12E/fbbD1OnTsVVV13ltd1jjz2w2mqreSbAZ599Fg8++CAOOugg77sZKA466CDceeeduOGGG6x6tWzZMrue3sdMouScz9vz+W2xxRb4wQ9+AAC44YYbsO+++w5bwMrtt9+OadOm4aCDDrLLarUajjvuOCxevBj33Xef136//fbDGmusYT+/613vwnbbbYfbb78dAPDSSy9h/vz5OOywwzyT6hZbbIH3v//9th3H3Llzvc90nvK2/Le2cOFCvPrqq9hll13wzDPPYOHChR3P98gjj/RM6jvttBOyLMM///lPAMbEPnv2bNx6662eYnn99dfj3e9+N9ZZZ52O91WhwoqIipCtwLjssstw55134te//jUee+wxPPPMM9hzzz0BAP/4xz+gtcb666+P1VZbzXs9/vjjeOWVVwa934FcmOliH/qf1Ot1rLvuunZ9f6C5/vjHP8bee++NV199tSOfp6effhobbrhhW1+uf/7zn5g+fTomTpzoLSeTa7sxLlu2DKeffjqOOOIIbLPNNtbf58Mf/jB++9vfAjDfRaPRwHbbbdfJVNuC31ABYIMNNsD3vvc9vPrqq/jLX/6Cc845B2ma4sgjj8Rdd91l26Vpio997GP4zW9+Y9OFEDkbirkSMKbT3XffHQcddBCuv/56rLvuuth9990tySJC0dfXV9iW/KXKCP7BBx+Mm266CU899RQeeOCBYTNXAuZ7XX/99QtktOx7X3/99Qt9bLDBBtYUWXauU5+vvvoqlixZ0rbP9dZbD1JKz7z5u9/9Drvvvrv1SVtttdVw6qmnAsCACNlaa63lfSZz/3/+8x+77NBDD8WyZctw8803AwCeeOIJPPLII/jEJz7R8X4qVFhRURGyFRjvete7sPvuu2PXXXfFxhtv7N1YyMH8l7/8Je68887Ci/s6hTd5QpZl0eWdqmPDCZrrAQccgFtvvRWbbbYZDj744AHl+VoeePzxx/H6669j++23B2CIz49//GNsttlmmDVrFv70pz/hW9/6lk0/0Q7d3d3o6+uLBhJordHb21ua7iFJEmy++eY45ZRT7M30+uuv99occsghUEpZxekHP/gBNtlkE2y11VYDnXZbHHjggXjhhRdw//33AwBWWWUVdHV14aWXXiq0pWXTp0+P9nXQQQfh1Vdfxac//Wmsuuqq2GOPPYZ1rGMN4W/x6aefxvve9z68+uqrOP/883HbbbfhzjvvxIknngjA/M47RZIk0eX8fNtkk02w9dZb4/vf/z4AExRUr9fx0Y9+dKBTqVBhhUOVh6xCFOuttx601lhnnXWwwQYbtG278sorR538//nPf2LdddftaH9lpI4iAJ944gmvr0ajgWeffRa77757R/1zJEmCefPmYbfddsOll16K//7v/y5tu9566+Ghhx5Cs9lErVYrHeNdd92FN954w1PJ/v73v3tziIHmzSNXx48fj9tvvx3vec97sOeee6K3txdf+cpX+lX0Zs6ciVarhaeffhpvf/vbvXVPPfUUsixrOxYCOc+HBGi77bbDeuuthxtuuAHvf//78be//Q1nn312v/0NFKSMkXojpcTmm28eTTT70EMPYd111y2ok4S11loLO+64I+69914cddRRwxq1OnPmTPzlL3+BUsp7mCn73v/xj38U+njyySdt3j1+rof4+9//jre97W0YP358oU+uOD/11FNQStk+f/azn6Gvrw+33nqrp3DFXA7KfoMDxaGHHoqTTjoJL730Em644QbMmjWr3+CZChUqVApZhRLsv//+SJIEZ555ZkFx0Vrj//7v/+zn9dZbDw8++KCXpuDnP/95IT1GO9CNJiR2u+++O+r1Oi6++GJvHN/5znewcOFCzJo1ayDTsth1113xrne9CxdeeGEhTQDHAQccgFdffRWXXnppYR2NZ++990aWZYU2F1xwAYQQ2GuvvUr733zzzTF16lRceumlnhl41VVXxdVXX41XX30Vy5Ytwz777NPvnGg/sbFSRB0fy29+85tolCr5H8VMZ7Nnz8af//xnnH766RBCDMkEyFMmcHznO9+BEALvfOc77bIDDzwQf/zjHz1S9sQTT+Cee+6xKVPK8JWvfAWnn3561A9wKNh7772xYMEC/PCHP7TLWq0WLrnkEkyYMAG77LKL1/6WW27xqkP84Q9/wEMPPWS/k9VXXx1bbbUVrr32Wu938Oijj+KOO+7A3nvvXRgDj5QEgEsuuQSA+55J1eK/nYULF+Lqq68u9DV+/PghRU8TDjroIAghcPzxx+OZZ56poisrVOgUoxRMUGEU0WkUHEW/vfvd79bnnnuuvvzyy/V//dd/6fXXX19//etft+1++ctfagB6t91205dffrn+3Oc+p6dNm6bXW2+9aJTlTTfdVNjXSy+9pJMk0dtvv72+5ppr9A9+8AObnJQiyvbYYw996aWX6mOPPVYnSaK33XZb3Wg0Bj1Xiuy8/PLL7bIwyrLVauldd91VA9Af//jH9WWXXabPPfdcvccee+hbbrlFa22iy3bbbTcthNBHHnmkvuyyy/S+++6rAegTTjih7fhoHFJKPWXKFP3FL35Rf/vb39af/exn9corr6w333xzvfLKK+vNNttML1y4sN++jjjiCA1A77333vqCCy7QF1xwgd577701AH3EEUd4bWfNmqWnTZumjz76aH3FFVfoK664Qh955JG6u7tbr7LKKtGouCeffNJGQ+64447RMXR6fh1//PF6m2220aeddpr+1re+pb/61a/qbbfdVgPQxx57rNd20aJFer311tNTpkzR5557rr7gggv0mmuuqadPn65feeUV245HWbbDcERZLl26VG+88ca6Xq/rz372s/qSSy7Ru+yyiwagL7zwwsKYNt98c7322mvrr33ta/qss87Sq6yyil511VX1//7v/9q2d955p07TVG+00Ub661//uj7rrLP0aqutpldeeWXv+6DfxOabb6732Wcffdlll+lDDjlEA9AHH3ywbff3v/9d1+t1vfnmm+tLL71Uf/WrX9Xrrbee3nLLLTUA/eyzz9q2Rx99tBZC6C9/+cv6Bz/4gb777ru11uXf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8MHo6OjAxIkTcdZZZ1Xs88gjjyy7BgsWLBikGZQzGHNq5s8SgOD77s4776zYZyM/S8DgzGkofJ4AUxJvzz33RBRF2Lx5c8U+G/06CSMUPUL50Y9+pDs7O/X111+v165dq//4xz/qu+66y+5/66239C677KJPPfVU/dxzz+nVq1frefPm6d1220339vbm9rtgwQI9efJkvWzZMr1ixQr9D//wD/oDH/hAPaZUdU7btm3Tr776qvOYM2eOPuKIIyr2u/fee+tFixY5x23dunWQZzN48/nIRz6ip0+frn/3u9/pxx9/XL/rXe/SJ5100iDPxlBtTlprvWTJEr3HHnvo22+/Xb/44ot61apV+r777qvY7xFHHKHPOOMM51q8+eabgzkVy2DNqZk/S1prDUB///vfd655d3d3xX4b9VnSevDm1OyfJ+JjH/uYnjt3rgag//73v1fst5GvkzByGZGCrFgs6ne+8536pptuym3z5JNPagB6w4YNdtsf/vAHDUC/8MILwWM2b96sW1tb9T333GO3PfvssxqAXr58+cBNIEAtc/J57bXXdGtrq77tttsqttt77731Nddc088R9o3Bms+aNWs0AP3kk0/abQ888ICOoki//PLL/RpzNWqZ0xtvvKFHjRqlH3300T71fcQRR+izzz67nyPsO4M1p6HwWQKgf/zjH/ep70Z8lrQevDk1++eJuO666/QRRxyhly1bVrMga8TrJIxsRqTL8umnn8bLL7+MOI4xY8YM7L777pg7dy5Wr15t20ydOhW77rorbr75ZvT29qK7uxs333wzpk2bhn322SfY71NPPYVisYjZs2fbbe9+97ux1157Yfny5Q2fk89tt92G0aNH41/+5V+q9n/VVVdh1113xYwZM3D11VejVCoN5PDLGKz5LF++HOPGjcNhhx1mt82ePRtxHOOJJ54Y0Dn41DKnRx55BEopvPzyy5g2bRr23HNPfOITn8BLL71Utf/bb78d48ePx0EHHYSLLroI27ZtG8zpABi8OQ2Vz9JZZ52F8ePH4/3vfz9uueUW6BrSOtb7swQM3pya/fMEAGvWrMGiRYtw22239anwdyNeJ2GE02hF2Aj+53/+RwPQe+21l/7Rj36kV6xYoU866SS966676r/97W+23TPPPKP3228/HcexjuNYT506Va9fvz6339tvv123tbWVbX/f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EIQhiVjIBEEo44477sA///M/WzFGxHGMc889F2vWrMGqVaucfVdddRXuvfderFixop5DFQRBGBaIIBMEoYznn38e06ZNC+6j7c8//7yz/dBDD8UnPvEJXHDBBYM+PkEQhOGGCDJBEIJorft8zBVXXIHHH38cDz/88CCMSBAEYfgigkwQhDIOOOAAPPvss8F9tP2AAw4o27fffvvhjDPOwIUXXrhDgk4QBGGkIoJMEIQyTjzxRDz66KNlcWJKKVxzzTU48MADy+LLiEsvvRTPP/887rzzznoMVRAEYVggqywFYYTz5ptvYuXKlc62T3/607jvvvvw0Y9+FEuWLEFXVxc2bdqEK6+8Es8++yweffRRu8LSZ7fddsN5552Hq6++ug6jFwRBGB6IIBOEEc4vf/lLzJgxw9k2f/58PPbYY7jyyivx5S9/Gf/3f/+HnXfeGUcddRR+97vf4aCDDqrY57//+7/j+uuvx/bt2wdz6IIgCMOGSEughyAIgiAIQkORGDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBqMCDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBqMCDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBrM/wMk0ywglyByVAAAAABJRU5ErkJggg==", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Print Dataarray\n", + "print(topo_data[\"elevation\"])\n", + "\n", + "# Set up plot\n", + "topo_data[\"elevation\"].plot(x=\"x\", y=\"y\")\n", + "\n", + "# Add labels and show the plot\n", + "plt.xlabel(\"LON\")\n", + "plt.ylabel(\"LAT\")\n", + "plt.title(\"Puerto Rico & USVI 30M Topobathy\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/icechunk_to_tiff.ipynb b/examples/icechunk/icechunk_to_tiff.ipynb similarity index 70% rename from examples/icechunk_to_tiff.ipynb rename to examples/icechunk/icechunk_to_tiff.ipynb index 1e07c9e..03bb4e2 100644 --- a/examples/icechunk_to_tiff.ipynb +++ b/examples/icechunk/icechunk_to_tiff.ipynb @@ -7,19 +7,35 @@ "source": [ "# Demo: Export icechunk raster data to geotiff\n", "\n", - "Raster topobathymetry data made into icechunk stores is not inherently visibile with traditional GIS methods. Use this method to retrieve a dataset and export to geotiff. " + "Raster topobathymetry data made into icechunk stores is not inherently visibile with traditional GIS methods. Use this method to retrieve a dataset and export to geotiff. \n", + "\n", + "Requires:\n", + "- `.env` with AWS credentials" ] }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, "id": "7cba65ef", "metadata": {}, "outputs": [], "source": [ + "from dotenv import load_dotenv\n", + "\n", "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d479759f", + "metadata": {}, + "outputs": [], + "source": [ + "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", + "load_dotenv()" + ] + }, { "cell_type": "markdown", "id": "bcebeab5", @@ -408,16 +424,16 @@ " fill: currentColor;\n", "}\n", "
    <xarray.Dataset> Size: 3GB\n",
    -       "Dimensions:                        (band: 1, y: 14819, x: 22226)\n",
    +       "Dimensions:      (band: 1, y: 14819, x: 22226)\n",
            "Coordinates:\n",
    -       "    spatial_ref                    int64 8B 0\n",
    -       "  * band                           (band) int64 8B 1\n",
    -       "  * x                              (x) float64 178kB -160.5 -160.5 ... -154.5\n",
    -       "  * y                              (y) float64 119kB 22.5 22.5 ... 18.5 18.5\n",
    +       "  * band         (band) int64 8B 1\n",
    +       "    spatial_ref  int64 8B 0\n",
    +       "  * y            (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n",
    +       "  * x            (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n",
            "Data variables:\n",
    -       "    __xarray_dataarray_variable__  (band, y, x) float64 3GB dask.array<chunksize=(1, 464, 1390), meta=np.ndarray>
    " + " dtype='float64', name='y', length=14819))
  2. x
    PandasIndex
    PandasIndex(Index([-160.5005550000003, -160.5002850000003, -160.5000150000003,\n",
    +       "       -160.4997450000003, -160.4994750000003, -160.4992050000003,\n",
    +       "       -160.4989350000003, -160.4986650000003, -160.4983950000003,\n",
    +       "       -160.4981250000003,\n",
    +       "       ...\n",
    +       "       -154.5022350000003, -154.5019650000003, -154.5016950000003,\n",
    +       "       -154.5014250000003, -154.5011550000003, -154.5008850000003,\n",
    +       "       -154.5006150000003, -154.5003450000003, -154.5000750000003,\n",
    +       "       -154.4998050000003],\n",
    +       "      dtype='float64', name='x', length=22226))
  3. " ], "text/plain": [ " Size: 3GB\n", - "Dimensions: (band: 1, y: 14819, x: 22226)\n", + "Dimensions: (band: 1, y: 14819, x: 22226)\n", "Coordinates:\n", - " spatial_ref int64 8B 0\n", - " * band (band) int64 8B 1\n", - " * x (x) float64 178kB -160.5 -160.5 ... -154.5\n", - " * y (y) float64 119kB 22.5 22.5 ... 18.5 18.5\n", + " * band (band) int64 8B 1\n", + " spatial_ref int64 8B 0\n", + " * y (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n", + " * x (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n", "Data variables:\n", - " __xarray_dataarray_variable__ (band, y, x) float64 3GB dask.array" + " elevation (band, y, x) float64 3GB dask.array" ] }, "execution_count": 2, @@ -614,7 +630,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "9e2935a8", "metadata": {}, "outputs": [ @@ -622,12 +638,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Saved dataset to ./hawaii_topo_30.tiff\n" + "Saved dataset to ./hawaii_topo_30.tif\n" ] } ], "source": [ - "var_name = \"__xarray_dataarray_variable__\"\n", + "var_name = \"elevation\"\n", "dest = \"./hawaii_topo_30.tif\"\n", "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name)" ] @@ -642,7 +658,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "id": "5493c79b", "metadata": {}, "outputs": [ @@ -650,12 +666,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Saved clipped window to ./hawaii_clipped_topo_30.tiff\n" + "Saved clipped window to ./hawaii_clipped_topo_30.tif\n" ] } ], "source": [ - "var_name = \"__xarray_dataarray_variable__\"\n", + "var_name = \"elevation\"\n", "dest = \"./hawaii_clipped_topo_30.tif\"\n", "minx, miny, maxx, maxy = -159, 21, -158, 22\n", "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name, minx=minx, miny=miny, maxx=maxx, maxy=maxy)" diff --git a/examples/icechunk_version_control_examples.ipynb b/examples/icechunk/icechunk_version_control_examples.ipynb similarity index 84% rename from examples/icechunk_version_control_examples.ipynb rename to examples/icechunk/icechunk_version_control_examples.ipynb index b5023ae..d096bd0 100644 --- a/examples/icechunk_version_control_examples.ipynb +++ b/examples/icechunk/icechunk_version_control_examples.ipynb @@ -11,22 +11,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "4f0fe850-0e5e-40e5-93b1-1c9f468a2d28", "metadata": {}, "outputs": [], "source": [ - "import boto3\n", - "import os\n", "import warnings\n", - "import xarray as xr\n", + "\n", "from dotenv import load_dotenv\n", "\n", "import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils\n", "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations, S3Path\n", "\n", - "\n", - "warnings.filterwarnings('ignore')\n", + "warnings.filterwarnings(\"ignore\")\n", "\n", "# Before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", "# NOTE - if you authenticate with AWS SSO, leave it commented out\n", @@ -48,8 +45,8 @@ "name": "stdout", "output_type": "stream", "text": [ - "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", - "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", + "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", "Message:\tRepository initialized\n", "\n" ] @@ -77,14 +74,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.34s/files]\u001b[0m\n" + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:27<00:00, 17.52s/files]\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Dataset is uploaded. Commit: 0B2CMBJJWH52P5Q4HSJ0\n" + "Dataset is uploaded. Commit: 9CNDKXE65PVGCHK4CHBG\n" ] } ], @@ -95,8 +92,8 @@ " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", " file_type=awf_utils.FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2009*.nc\",\n", - " loadable_vars=['crs'],\n", - " testing_file_quantity=5\n", + " loadable_vars=[\"crs\"],\n", + " testing_file_quantity=5,\n", ")\n", "\n", "# Add 09 data to SNODAS repo with a new snapshot\n", @@ -113,12 +110,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", - "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", + "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", "Message:\tFirst commit! 09 data added.\n", "\n", - "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", - "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", + "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", "Message:\tRepository initialized\n", "\n" ] @@ -140,11 +137,11 @@ "output_type": "stream", "text": [ " Size: 671MB\n", - "Dimensions: (time: 5, lat: 4096, lon: 8192)\n", + "Dimensions: (lon: 8192, time: 5, lat: 4096)\n", "Coordinates:\n", " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", "Data variables:\n", " Band1 (time, lat, lon) float32 671MB dask.array\n", " crs (time) object 40B dask.array\n", @@ -178,14 +175,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.35s/files]\u001b[0m\n" + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:27<00:00, 17.54s/files]\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Dataset has been appended on the time dimension. Commit: 8DCP1J64FV48Z13XWK6G\n" + "Dataset has been appended on the time dimension. Commit: 6FMVKF4CS7N5RW6PC86G\n" ] } ], @@ -196,12 +193,14 @@ " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", " file_type=awf_utils.FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2010*.nc\",\n", - " loadable_vars=['crs'],\n", - " testing_file_quantity=5\n", + " loadable_vars=[\"crs\"],\n", + " testing_file_quantity=5,\n", ")\n", "\n", "# Append 2010 data to SNODAS repo with a new snapshot\n", - "new_repo.append_virt_data_to_store(vds=snodas_10_vds, append_dim=\"time\", commit=\"Appended new data from the year 2010\")" + "new_repo.append_virt_data_to_store(\n", + " vds=snodas_10_vds, append_dim=\"time\", commit=\"Appended new data from the year 2010\"\n", + ")" ] }, { @@ -214,16 +213,16 @@ "name": "stdout", "output_type": "stream", "text": [ - "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", - "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", + "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", "Message:\tAppended new data from the year 2010\n", "\n", - "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", - "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", + "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", "Message:\tFirst commit! 09 data added.\n", "\n", - "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", - "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", + "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", "Message:\tRepository initialized\n", "\n" ] @@ -245,14 +244,14 @@ "output_type": "stream", "text": [ " Size: 1GB\n", - "Dimensions: (lat: 4096, lon: 8192, time: 10)\n", + "Dimensions: (time: 10, lat: 4096, lon: 8192)\n", "Coordinates:\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", "Data variables:\n", - " crs (time) object 80B dask.array\n", " Band1 (time, lat, lon) float32 1GB dask.array\n", + " crs (time) object 80B dask.array\n", "Attributes:\n", " Conventions: CF-1.5\n", " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", @@ -280,8 +279,8 @@ "Dimensions: (time: 5, lat: 4096, lon: 8192)\n", "Coordinates:\n", " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", + " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", "Data variables:\n", " Band1 (time, lat, lon) float32 671MB dask.array\n", " crs (time) object 40B dask.array\n", @@ -315,14 +314,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [00:11<00:00, 2.36s/files]\u001b[0m\n" + "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:28<00:00, 17.79s/files]\u001b[0m\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Dataset has been appended on the time dimension. Commit: ZESC6X2MJVJSYDASQY6G\n" + "Dataset has been appended on the time dimension. Commit: T30V4R9GM9TCKHFFBQFG\n" ] } ], @@ -336,12 +335,14 @@ " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", " file_type=awf_utils.FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2011*.nc\",\n", - " loadable_vars=['crs'],\n", - " testing_file_quantity=5\n", + " loadable_vars=[\"crs\"],\n", + " testing_file_quantity=5,\n", ")\n", "\n", "# Append 2011 data to SNODAS repo's new branch with a new snapshot\n", - "new_repo.append_virt_data_to_store(vds=snodas_11_vds, append_dim=\"time\", commit=\"Appended new data from the year 2011\", branch=\"2011_feature\")" + "new_repo.append_virt_data_to_store(\n", + " vds=snodas_11_vds, append_dim=\"time\", commit=\"Appended new data from the year 2011\", branch=\"2011_feature\"\n", + ")" ] }, { @@ -355,33 +356,33 @@ "output_type": "stream", "text": [ "NEW BRANCH =====================================\n", - "Snapshot ID:\tZESC6X2MJVJSYDASQY6G\n", - "Timestamp:\t2025-06-03 22:52:53.279869+00:00\n", + "Snapshot ID:\tT30V4R9GM9TCKHFFBQFG\n", + "Timestamp:\t2025-06-17 00:05:10.559344+00:00\n", "Message:\tAppended new data from the year 2011\n", "\n", - "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", - "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", + "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", "Message:\tAppended new data from the year 2010\n", "\n", - "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", - "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", + "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", "Message:\tFirst commit! 09 data added.\n", "\n", - "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", - "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", + "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", "Message:\tRepository initialized\n", "\n", "MAIN BRANCH ====================================\n", - "Snapshot ID:\t8DCP1J64FV48Z13XWK6G\n", - "Timestamp:\t2025-06-03 22:52:40.716732+00:00\n", + "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", + "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", "Message:\tAppended new data from the year 2010\n", "\n", - "Snapshot ID:\t0B2CMBJJWH52P5Q4HSJ0\n", - "Timestamp:\t2025-06-03 22:52:27.746862+00:00\n", + "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", + "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", "Message:\tFirst commit! 09 data added.\n", "\n", - "Snapshot ID:\tBANR3MYSD920Z3WTB500\n", - "Timestamp:\t2025-06-03 22:52:13.292198+00:00\n", + "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", + "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", "Message:\tRepository initialized\n", "\n" ] @@ -407,14 +408,14 @@ "text": [ "NEW BRANCH ========================================================\n", " Size: 2GB\n", - "Dimensions: (time: 15, lat: 4096, lon: 8192)\n", + "Dimensions: (time: 15, lon: 8192, lat: 4096)\n", "Coordinates:\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", " * time (time) datetime64[ns] 120B 2009-12-09 2009-12-10 ... 2011-01-05\n", + " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", "Data variables:\n", - " Band1 (time, lat, lon) float32 2GB dask.array\n", " crs (time) object 120B dask.array\n", + " Band1 (time, lat, lon) float32 2GB dask.array\n", "Attributes:\n", " Conventions: CF-1.5\n", " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", @@ -422,14 +423,14 @@ "===================================================================\n", "MAIN BRANCH =======================================================\n", " Size: 1GB\n", - "Dimensions: (lat: 4096, lon: 8192, time: 10)\n", + "Dimensions: (time: 10, lat: 4096, lon: 8192)\n", "Coordinates:\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", + " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", "Data variables:\n", - " crs (time) object 80B dask.array\n", " Band1 (time, lat, lon) float32 1GB dask.array\n", + " crs (time) object 80B dask.array\n", "Attributes:\n", " Conventions: CF-1.5\n", " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", @@ -467,11 +468,19 @@ "# Cleanup - delete the test repo entirely\n", "new_repo.delete_repo(quiet=True)" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "da2aa6f1", + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": ".venv", "language": "python", "name": "python3" }, @@ -485,7 +494,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.11.0rc1" + "version": "3.12.8" } }, "nbformat": 4, diff --git a/pyproject.toml b/pyproject.toml index be270a9..8f524f3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -58,7 +58,7 @@ target-version = ['py311'] [tool.ruff] line-length = 110 -exclude = [".csv", "LICENSE"] +exclude = [".csv", "LICENSE", ".tf", ".tfvars"] lint.select = [ "F", # Errors detected by Pyflakes "E", # Error detected by Pycodestyle @@ -127,14 +127,6 @@ show_error_codes = true warn_unused_ignores = true [tool.pytest.ini_options] -rootdir = "." # Ensures pytest always treats project root as the root -pythonpath = [ - "tests", - "src/icefabric_api", - "src/icefabric_tools" -] -testpaths = [ - "src/icefabric_api/tests", - "src/icefabric_tools/tests", - "tests" -] +rootdir = "." # Ensures pytest always treats project root as the root +pythonpath = ["tests", "src/icefabric_api", "src/icefabric_tools"] +testpaths = ["src/icefabric_api/tests", "src/icefabric_tools/tests", "tests"] diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml index 693f536..ba9ddec 100644 --- a/src/icefabric_manage/pyproject.toml +++ b/src/icefabric_manage/pyproject.toml @@ -23,7 +23,7 @@ dependencies = [ "geopandas==1.0.1", "s3fs==2025.5.1", "pyarrow==20.0.0", - "pyiceberg[s3fs,glue]==0.9.1", + "pyiceberg[s3fs,glue,sql-sqlite]==0.9.1", "python-dotenv==1.1.0", ] diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 723b688..9aa31f0 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -40,6 +40,11 @@ dependencies = [ "dask==2025.5.1", "netCDF4==1.7.2", "python-dotenv==1.1.0", + "folium==0.19.5", + "geodatasets==2024.8.0", + "httpx==0.28.1", + "ipywidgets==8.1.6", + "mapclassify==2.9.0", ] [build-system] diff --git a/src/icefabric_tools/src/icefabric_tools/geo/__init__.py b/src/icefabric_tools/src/icefabric_tools/geo/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py b/src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py new file mode 100644 index 0000000..b64719b --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py @@ -0,0 +1,91 @@ +import httpx +import ipywidgets as widgets +import matplotlib.pyplot as plt +import pandas as pd + + +def get_observational_uri( + gage_id: str, source: str = "USGS", domain: str = "CONUS", version: str = "2.1", timeout=None +) -> str: + """ + Fetches the observational data URI from the NextGen Water Prediction API. + + Args: + gage_id (str): The gage identifier. + source (str): Data source, e.g., "USGS". + domain (str): Domain name, e.g., "CONUS". + version (str): API version, e.g., "2.2". + + Returns + ------- + str: The URI of the observational dataset. + """ + base_url = f"https://hydroapi.oe.nextgenwaterprediction.com/hydrofabric/{version}/observational" + params = {"gage_id": gage_id, "source": source, "domain": domain} + + response = httpx.get(base_url, params=params, timeout=timeout) + response.raise_for_status() # Raise an error if request failed + data = response.json() + + return data["uri"] + + +def get_geopackage_uri( + gage_id: str, source: str = "USGS", domain: str = "CONUS", version: str = "2.2", timeout=None +) -> str: + """ + Fetches the GeoPackage URI for a given gage ID from the NextGen Water Prediction API. + + Returns + ------- + str: The URI pointing to the GeoPackage in S3. + """ + import httpx + + base_url = "https://hydroapi.oe.nextgenwaterprediction.com/hydrofabric/geopackages" + params = {"gage_id": gage_id, "source": source, "domain": domain, "version": version} + + response = httpx.get(base_url, params=params, timeout=timeout) + response.raise_for_status() + data = response.json() + + return data["uri"] + + +def create_time_series_widget( + df: pd.DataFrame, + start_slider: widgets.SelectionSlider, + end_slider: widgets.SelectionSlider, + point_size: float = 30, +): + """ + Creates an interactive time series plot using matplotlib and ipywidgets. + + Parameters + ---------- + df (pd.DataFrame): DataFrame with 'DateTime' and 'q_cms' columns + start_slider (widgets.SelectionSlider): Widget for selecting start time + end_slider (widgets.SelectionSlider): Widget for selecting end time + """ + + @widgets.interact(start=start_slider, end=end_slider) + def plot_flow(start, end): + start_dt = pd.to_datetime(start) + end_dt = pd.to_datetime(end) + + if start_dt >= end_dt: + print("⚠️ Start must be before End.") + return + + filtered = df[(df["dateTime"] >= start_dt) & (df["dateTime"] <= end_dt)] + + fig, ax = plt.subplots(figsize=(10, 4)) + ax.scatter(filtered["dateTime"], filtered["q_cms"], s=point_size, label="Flow rate (cms)", alpha=0.7) + ax.set_xlabel("Date Time") + ax.set_ylabel("Discharge (cms)") + ax.set_title("Streamflow Time Series (Scatter Plot)") + ax.grid(True) + ax.legend() + plt.xticks(rotation=45) + plt.tight_layout() + plt.show() diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py index 0f6987e..a1fecae 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py @@ -182,7 +182,9 @@ def gen_virtual_chunk_containers( ] return v_chunks - def create_session(self, read_only: bool | None = True, snap_id: str | None = None, branch: str | None = "main") -> ic.Session: + def create_session( + self, read_only: bool | None = True, snap_id: str | None = None, branch: str | None = "main" + ) -> ic.Session: """ Open a session under the repo defined by an instance of IcechunkS3Repo @@ -215,7 +217,6 @@ def retrieve_dataset(self, branch: str | None = "main", snap_id: str | None = No Parameters ---------- - branch : str | None, optional Icechunk repo branch to be opened, by default "main" snap_id : str | None, optional diff --git a/tests/integration/test_topobathy_icechunk.py b/tests/integration/test_topobathy_icechunk.py new file mode 100644 index 0000000..97fc2f9 --- /dev/null +++ b/tests/integration/test_topobathy_icechunk.py @@ -0,0 +1,48 @@ +import os +from pathlib import Path + +import numpy as np +import pytest +import rasterio +from dotenv import load_dotenv + +from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations + +load_dotenv() + +ic_rasters = [pytest.param(f, id=f) for f in NGWPCLocations._member_names_ if "TOPO" in f] + + +@pytest.mark.parametrize("ic_raster", ic_rasters) +@pytest.mark.slow +def test_topobathy(ic_raster: str) -> None: + """This test is SLOW. It will temporarily download all topobathy layers, up to 9 GB individually. + To run, call `pytest tests --run-slow` + Corrupted rasters will load correctly in xarray but incorrectly in rasterio and cannot be exported. + This test checks that when exported, a dataset has values that are non-no data. + """ + data_dir = Path(__file__).parents[0] / "data" + os.makedirs(data_dir, exist_ok=True) + + temp_path = data_dir / "temp_raster.tif" + + try: + # export icechunk zarr to geotiff raster + repo = IcechunkS3Repo(location=NGWPCLocations[ic_raster].path) + ds = repo.retrieve_dataset() + raster = ds.elevation + raster.rio.to_raster(temp_path, tiled=True, compress="LZW", bigtiff="YES") + + # open raster version + with rasterio.open(temp_path, "r") as f: + profile = f.profile + ras = f.read(1) + + # assert all values are not nodata + total_nd = np.where(ras == profile["nodata"], 1, 0).sum() + assert total_nd != ras.size + assert ras.min() != ras.max() + + finally: + if os.path.exists(temp_path): + os.remove(temp_path) diff --git a/uv.lock b/uv.lock index f879d18..62d28ce 100644 --- a/uv.lock +++ b/uv.lock @@ -1,5 +1,4 @@ version = 1 -revision = 2 requires-python = ">=3.11, <3.13" resolution-markers = [ "python_full_version >= '3.12'", @@ -18,9 +17,9 @@ members = [ name = "affine" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132, upload-time = "2023-01-19T23:44:30.696Z" } +sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662, upload-time = "2023-01-19T23:44:28.833Z" }, + { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, ] [[package]] @@ -36,18 +35,18 @@ dependencies = [ { name = "python-dateutil" }, { name = "wrapt" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322, upload-time = "2025-05-01T16:45:45.484Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930, upload-time = "2025-05-01T16:45:43.508Z" }, + { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, ] [[package]] name = "aiohappyeyeballs" version = "2.6.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760, upload-time = "2025-03-12T01:42:48.764Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265, upload-time = "2025-03-12T01:42:47.083Z" }, + { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, ] [[package]] @@ -63,49 +62,49 @@ dependencies = [ { name = "propcache" }, { name = "yarl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653, upload-time = "2025-04-21T09:43:09.191Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088, upload-time = "2025-04-21T09:40:55.776Z" }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450, upload-time = "2025-04-21T09:40:57.301Z" }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836, upload-time = "2025-04-21T09:40:59.322Z" }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978, upload-time = "2025-04-21T09:41:00.795Z" }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307, upload-time = "2025-04-21T09:41:02.89Z" }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692, upload-time = "2025-04-21T09:41:04.461Z" }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934, upload-time = "2025-04-21T09:41:06.728Z" }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190, upload-time = "2025-04-21T09:41:08.293Z" }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947, upload-time = "2025-04-21T09:41:11.054Z" }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443, upload-time = "2025-04-21T09:41:13.213Z" }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169, upload-time = "2025-04-21T09:41:14.827Z" }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532, upload-time = "2025-04-21T09:41:17.168Z" }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310, upload-time = "2025-04-21T09:41:19.353Z" }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580, upload-time = "2025-04-21T09:41:21.868Z" }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565, upload-time = "2025-04-21T09:41:24.78Z" }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652, upload-time = "2025-04-21T09:41:26.48Z" }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671, upload-time = "2025-04-21T09:41:28.021Z" }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169, upload-time = "2025-04-21T09:41:29.783Z" }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554, upload-time = "2025-04-21T09:41:31.327Z" }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154, upload-time = "2025-04-21T09:41:33.541Z" }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402, upload-time = "2025-04-21T09:41:35.634Z" }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958, upload-time = "2025-04-21T09:41:37.456Z" }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288, upload-time = "2025-04-21T09:41:39.756Z" }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871, upload-time = "2025-04-21T09:41:41.972Z" }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262, upload-time = "2025-04-21T09:41:44.192Z" }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431, upload-time = "2025-04-21T09:41:46.049Z" }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430, upload-time = "2025-04-21T09:41:47.973Z" }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342, upload-time = "2025-04-21T09:41:50.323Z" }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600, upload-time = "2025-04-21T09:41:52.111Z" }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131, upload-time = "2025-04-21T09:41:53.94Z" }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442, upload-time = "2025-04-21T09:41:55.689Z" }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444, upload-time = "2025-04-21T09:41:57.977Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, + { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, + { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, + { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, + { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, + { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, + { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, + { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, + { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, + { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, + { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, + { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, + { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, + { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, + { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, + { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, + { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, + { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, + { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, + { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, + { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, + { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, + { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, + { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, + { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, + { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, + { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, + { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, + { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, + { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, + { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, + { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, ] [[package]] name = "aioitertools" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369, upload-time = "2024-09-02T03:33:40.349Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345, upload-time = "2024-09-02T03:34:59.454Z" }, + { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, ] [[package]] @@ -115,18 +114,18 @@ 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, upload-time = "2024-12-13T17:10:40.86Z" } +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, upload-time = "2024-12-13T17:10:38.469Z" }, + { 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 = "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, upload-time = "2024-05-20T21:33:25.928Z" } +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, upload-time = "2024-05-20T21:33:24.1Z" }, + { url = "https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl", hash = "sha256:1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53", size = 13643 }, ] [[package]] @@ -138,18 +137,18 @@ dependencies = [ { name = "sniffio" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949, upload-time = "2025-03-17T00:02:54.77Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916, upload-time = "2025-03-17T00:02:52.713Z" }, + { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, ] [[package]] name = "appnope" version = "0.1.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/5d/752690df9ef5b76e169e68d6a129fa6d08a7100ca7f754c89495db3c6019/appnope-0.1.4.tar.gz", hash = "sha256:1de3860566df9caf38f01f86f65e0e13e379af54f9e4bee1e66b48f2efffd1ee", size = 4170, upload-time = "2024-02-06T09:43:11.258Z" } +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, upload-time = "2024-02-06T09:43:09.663Z" }, + { url = "https://files.pythonhosted.org/packages/81/29/5ecc3a15d5a33e31b26c11426c45c501e439cb865d0bff96315d86443b78/appnope-0.1.4-py2.py3-none-any.whl", hash = "sha256:502575ee11cd7a28c0205f379b525beefebab9d161b7c964670864014ed7213c", size = 4321 }, ] [[package]] @@ -159,9 +158,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "argon2-cffi-bindings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798, upload-time = "2023-08-15T14:13:12.711Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124, upload-time = "2023-08-15T14:13:10.752Z" }, + { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, ] [[package]] @@ -171,18 +170,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911, upload-time = "2021-12-01T08:52:55.68Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658, upload-time = "2021-12-01T09:09:17.016Z" }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583, upload-time = "2021-12-01T09:09:19.546Z" }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168, upload-time = "2021-12-01T09:09:21.445Z" }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709, upload-time = "2021-12-01T09:09:18.182Z" }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613, upload-time = "2021-12-01T09:09:22.741Z" }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583, upload-time = "2021-12-01T09:09:24.177Z" }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475, upload-time = "2021-12-01T09:09:26.673Z" }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698, upload-time = "2021-12-01T09:09:27.87Z" }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817, upload-time = "2021-12-01T09:09:30.267Z" }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104, upload-time = "2021-12-01T09:09:31.335Z" }, + { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, + { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, + { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, + { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, + { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, + { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, + { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, + { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, + { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, + { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, ] [[package]] @@ -193,57 +192,57 @@ dependencies = [ { name = "python-dateutil" }, { name = "types-python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960, upload-time = "2023-09-30T22:11:18.25Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419, upload-time = "2023-09-30T22:11:16.072Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, ] [[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, upload-time = "2024-11-30T04:30:14.439Z" } +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, upload-time = "2024-11-30T04:30:10.946Z" }, + { url = "https://files.pythonhosted.org/packages/25/8a/c46dcc25341b5bce5472c718902eb3d38600a903b14fa6aeecef3f21a46f/asttokens-3.0.0-py3-none-any.whl", hash = "sha256:e3078351a059199dd5138cb1c706e6430c05eff2ff136af5eb4790f9d28932e2", size = 26918 }, ] [[package]] name = "async-lru" version = "2.0.5" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380, upload-time = "2025-03-16T17:25:36.919Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069, upload-time = "2025-03-16T17:25:35.422Z" }, + { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, ] [[package]] name = "attrs" version = "25.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032, upload-time = "2025-03-13T11:10:22.779Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815, upload-time = "2025-03-13T11:10:21.14Z" }, + { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, ] [[package]] name = "babel" version = "2.17.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852, upload-time = "2025-02-01T15:17:41.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537, upload-time = "2025-02-01T15:17:37.39Z" }, + { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, ] [[package]] name = "backrefs" version = "5.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994, upload-time = "2025-02-25T18:15:32.003Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337, upload-time = "2025-02-25T16:53:14.607Z" }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142, upload-time = "2025-02-25T16:53:17.266Z" }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021, upload-time = "2025-02-25T16:53:26.378Z" }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336, upload-time = "2025-02-25T16:53:29.858Z" }, + { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, + { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, + { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, + { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, ] [[package]] @@ -254,9 +253,9 @@ dependencies = [ { name = "soupsieve" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067, upload-time = "2025-04-15T17:05:13.836Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285, upload-time = "2025-04-15T17:05:12.221Z" }, + { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, ] [[package]] @@ -270,17 +269,17 @@ dependencies = [ { name = "pathspec" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449, upload-time = "2025-01-29T04:15:40.373Z" } +sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372, upload-time = "2025-01-29T05:37:11.71Z" }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865, upload-time = "2025-01-29T05:37:14.309Z" }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699, upload-time = "2025-01-29T04:18:17.688Z" }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028, upload-time = "2025-01-29T04:18:51.711Z" }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988, upload-time = "2025-01-29T05:37:16.707Z" }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985, upload-time = "2025-01-29T05:37:18.273Z" }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816, upload-time = "2025-01-29T04:18:33.823Z" }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860, upload-time = "2025-01-29T04:19:12.944Z" }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646, upload-time = "2025-01-29T04:15:38.082Z" }, + { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, + { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, + { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, + { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, + { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, + { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, + { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, + { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, + { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, ] [[package]] @@ -290,9 +289,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083, upload-time = "2024-10-29T18:30:40.477Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406, upload-time = "2024-10-29T18:30:38.186Z" }, + { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, ] [package.optional-dependencies] @@ -309,9 +308,9 @@ dependencies = [ { name = "jmespath" }, { name = "s3transfer" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160, upload-time = "2025-02-27T20:28:15.588Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344, upload-time = "2025-02-27T20:28:13.085Z" }, + { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, ] [[package]] @@ -323,27 +322,39 @@ dependencies = [ { name = "python-dateutil" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648, upload-time = "2025-02-27T20:27:59.559Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066, upload-time = "2025-02-27T20:27:53.137Z" }, + { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, +] + +[[package]] +name = "branca" +version = "0.8.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jinja2" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e8/1d/bec5cb6669b7bf98b632b20bbbb25200bdc44298e7a39d588b0028a78300/branca-0.8.1.tar.gz", hash = "sha256:ac397c2d79bd13af0d04193b26d5ed17031d27609a7f1fab50c438b8ae712390", size = 27743 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f8/9d/91cddd38bd00170aad1a4b198c47b4ed716be45c234e09b835af41f4e717/branca-0.8.1-py3-none-any.whl", hash = "sha256:d29c5fab31f7c21a92e34bf3f854234e29fecdcf5d2df306b616f20d816be425", size = 26071 }, ] [[package]] name = "cachetools" version = "5.5.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380, upload-time = "2025-02-20T21:01:19.524Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080, upload-time = "2025-02-20T21:01:16.647Z" }, + { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, ] [[package]] name = "certifi" version = "2025.4.26" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705, upload-time = "2025-04-26T02:12:29.51Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618, upload-time = "2025-04-26T02:12:27.662Z" }, + { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, ] [[package]] @@ -353,40 +364,40 @@ 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, upload-time = "2024-09-04T20:45:21.852Z" } -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, upload-time = "2024-09-04T20:43:51.124Z" }, - { 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, upload-time = "2024-09-04T20:43:52.872Z" }, - { 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, upload-time = "2024-09-04T20:43:56.123Z" }, - { 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, upload-time = "2024-09-04T20:43:57.891Z" }, - { 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, upload-time = "2024-09-04T20:44:00.18Z" }, - { 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, upload-time = "2024-09-04T20:44:01.585Z" }, - { 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, upload-time = "2024-09-04T20:44:03.467Z" }, - { 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, upload-time = "2024-09-04T20:44:05.023Z" }, - { 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, upload-time = "2024-09-04T20:44:06.444Z" }, - { 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, upload-time = "2024-09-04T20:44:08.206Z" }, - { url = "https://files.pythonhosted.org/packages/34/33/e1b8a1ba29025adbdcda5fb3a36f94c03d771c1b7b12f726ff7fef2ebe36/cffi-1.17.1-cp311-cp311-win32.whl", hash = "sha256:85a950a4ac9c359340d5963966e3e0a94a676bd6245a4b55bc43949eee26a655", size = 171727, upload-time = "2024-09-04T20:44:09.481Z" }, - { url = "https://files.pythonhosted.org/packages/3d/97/50228be003bb2802627d28ec0627837ac0bf35c90cf769812056f235b2d1/cffi-1.17.1-cp311-cp311-win_amd64.whl", hash = "sha256:caaf0640ef5f5517f49bc275eca1406b0ffa6aa184892812030f04c2abf589a0", size = 181400, upload-time = "2024-09-04T20:44:10.873Z" }, - { 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, upload-time = "2024-09-04T20:44:12.232Z" }, - { 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, upload-time = "2024-09-04T20:44:13.739Z" }, - { 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, upload-time = "2024-09-04T20:44:15.231Z" }, - { 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, upload-time = "2024-09-04T20:44:17.188Z" }, - { 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, upload-time = "2024-09-04T20:44:18.688Z" }, - { 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, upload-time = "2024-09-04T20:44:20.248Z" }, - { 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, upload-time = "2024-09-04T20:44:21.673Z" }, - { 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, upload-time = "2024-09-04T20:44:23.245Z" }, - { 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, upload-time = "2024-09-04T20:44:24.757Z" }, - { url = "https://files.pythonhosted.org/packages/86/c5/28b2d6f799ec0bdecf44dced2ec5ed43e0eb63097b0f58c293583b406582/cffi-1.17.1-cp312-cp312-win32.whl", hash = "sha256:a08d7e755f8ed21095a310a693525137cfe756ce62d066e53f502a83dc550f65", size = 172448, upload-time = "2024-09-04T20:44:26.208Z" }, - { url = "https://files.pythonhosted.org/packages/50/b9/db34c4755a7bd1cb2d1603ac3863f22bcecbd1ba29e5ee841a4bc510b294/cffi-1.17.1-cp312-cp312-win_amd64.whl", hash = "sha256:51392eae71afec0d0c8fb1a53b204dbb3bcabcb3c9b807eedf3e1e6ccf2de903", size = 181976, upload-time = "2024-09-04T20:44:27.578Z" }, +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 }, ] [[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, upload-time = "2023-08-12T20:38:17.776Z" } +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, upload-time = "2023-08-12T20:38:16.269Z" }, + { url = "https://files.pythonhosted.org/packages/c5/55/51844dd50c4fc7a33b653bfaba4c2456f06955289ca770a5dbd5fd267374/cfgv-3.4.0-py2.py3-none-any.whl", hash = "sha256:b7265b1f29fd3316bfcd2b330d63d024f2bfd8bcb8b0272f8e19a504856c48f9", size = 7249 }, ] [[package]] @@ -396,55 +407,55 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631, upload-time = "2024-10-22T18:48:34.194Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445, upload-time = "2024-10-22T18:47:51.09Z" }, - { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458, upload-time = "2024-10-22T18:47:52.245Z" }, - { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075, upload-time = "2024-10-22T18:47:53.338Z" }, - { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218, upload-time = "2024-10-22T18:47:54.763Z" }, - { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704, upload-time = "2024-10-22T18:47:56.035Z" }, - { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200, upload-time = "2024-10-22T18:47:58.036Z" }, - { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615, upload-time = "2024-10-22T18:47:59.575Z" }, - { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193, upload-time = "2024-10-22T18:48:00.767Z" }, - { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215, upload-time = "2024-10-22T18:48:02.275Z" }, - { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426, upload-time = "2024-10-22T18:48:03.57Z" }, - { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593, upload-time = "2024-10-22T18:48:04.918Z" }, - { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918, upload-time = "2024-10-22T18:48:06.195Z" }, + { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, + { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, + { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, + { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, + { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, + { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, + { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, + { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, + { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, + { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, + { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, + { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, ] [[package]] name = "charset-normalizer" version = "3.4.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367, upload-time = "2025-05-02T08:34:42.01Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794, upload-time = "2025-05-02T08:32:11.945Z" }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846, upload-time = "2025-05-02T08:32:13.946Z" }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350, upload-time = "2025-05-02T08:32:15.873Z" }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657, upload-time = "2025-05-02T08:32:17.283Z" }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260, upload-time = "2025-05-02T08:32:18.807Z" }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164, upload-time = "2025-05-02T08:32:20.333Z" }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571, upload-time = "2025-05-02T08:32:21.86Z" }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952, upload-time = "2025-05-02T08:32:23.434Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959, upload-time = "2025-05-02T08:32:24.993Z" }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030, upload-time = "2025-05-02T08:32:26.435Z" }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015, upload-time = "2025-05-02T08:32:28.376Z" }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106, upload-time = "2025-05-02T08:32:30.281Z" }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402, upload-time = "2025-05-02T08:32:32.191Z" }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936, upload-time = "2025-05-02T08:32:33.712Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790, upload-time = "2025-05-02T08:32:35.768Z" }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924, upload-time = "2025-05-02T08:32:37.284Z" }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626, upload-time = "2025-05-02T08:32:38.803Z" }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567, upload-time = "2025-05-02T08:32:40.251Z" }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957, upload-time = "2025-05-02T08:32:41.705Z" }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408, upload-time = "2025-05-02T08:32:43.709Z" }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399, upload-time = "2025-05-02T08:32:46.197Z" }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815, upload-time = "2025-05-02T08:32:48.105Z" }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537, upload-time = "2025-05-02T08:32:49.719Z" }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565, upload-time = "2025-05-02T08:32:51.404Z" }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357, upload-time = "2025-05-02T08:32:53.079Z" }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776, upload-time = "2025-05-02T08:32:54.573Z" }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626, upload-time = "2025-05-02T08:34:40.053Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, + { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, + { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, + { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, + { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, + { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, + { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, + { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, + { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, + { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, + { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, + { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, + { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, + { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, + { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, + { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, + { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, + { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, + { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, + { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, + { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, + { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, + { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, + { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, + { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, + { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, + { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, ] [[package]] @@ -454,9 +465,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] @@ -466,9 +477,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164, upload-time = "2019-04-04T04:27:04.82Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497, upload-time = "2019-04-04T04:27:03.36Z" }, + { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, ] [[package]] @@ -478,27 +489,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803, upload-time = "2021-05-28T21:23:27.935Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069, upload-time = "2021-05-28T21:23:26.877Z" }, + { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, ] [[package]] name = "cloudpickle" version = "3.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113, upload-time = "2025-01-14T17:02:05.085Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992, upload-time = "2025-01-14T17:02:02.417Z" }, + { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, ] [[package]] name = "colorama" version = "0.4.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +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, upload-time = "2022-10-25T02:36:20.889Z" }, + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335 }, ] [[package]] @@ -508,9 +519,9 @@ 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, upload-time = "2024-03-12T16:53:41.133Z" } +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, upload-time = "2024-03-12T16:53:39.226Z" }, + { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, ] [[package]] @@ -520,70 +531,70 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130, upload-time = "2025-04-15T17:47:53.79Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636, upload-time = "2025-04-15T17:35:54.473Z" }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636, upload-time = "2025-04-15T17:35:58.283Z" }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053, upload-time = "2025-04-15T17:36:03.235Z" }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985, upload-time = "2025-04-15T17:36:08.275Z" }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750, upload-time = "2025-04-15T17:36:13.29Z" }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246, upload-time = "2025-04-15T17:36:18.329Z" }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728, upload-time = "2025-04-15T17:36:33.878Z" }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762, upload-time = "2025-04-15T17:36:51.295Z" }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196, upload-time = "2025-04-15T17:36:55.002Z" }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017, upload-time = "2025-04-15T17:36:58.576Z" }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580, upload-time = "2025-04-15T17:37:03.105Z" }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530, upload-time = "2025-04-15T17:37:07.026Z" }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688, upload-time = "2025-04-15T17:37:11.481Z" }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331, upload-time = "2025-04-15T17:37:18.212Z" }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963, upload-time = "2025-04-15T17:37:22.76Z" }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681, upload-time = "2025-04-15T17:37:33.001Z" }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674, upload-time = "2025-04-15T17:37:48.64Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480, upload-time = "2025-04-15T17:38:06.7Z" }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489, upload-time = "2025-04-15T17:38:10.338Z" }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042, upload-time = "2025-04-15T17:38:14.239Z" }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807, upload-time = "2025-04-15T17:45:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729, upload-time = "2025-04-15T17:45:20.166Z" }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791, upload-time = "2025-04-15T17:45:24.794Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, + { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, + { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, + { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, + { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, + { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, + { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, + { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, + { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, + { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, + { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, + { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, + { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, + { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, + { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, + { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, + { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, + { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, + { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, + { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, + { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, + { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, + { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, ] [[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, upload-time = "2024-09-24T06:20:17.553Z" } -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, upload-time = "2024-09-24T06:18:18.032Z" }, - { 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, upload-time = "2024-09-24T06:18:19.373Z" }, - { 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, upload-time = "2024-09-24T06:18:20.983Z" }, - { 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, upload-time = "2024-09-24T06:18:23.085Z" }, - { 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, upload-time = "2024-09-24T06:18:24.463Z" }, - { 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, upload-time = "2024-09-24T06:18:25.624Z" }, - { 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, upload-time = "2024-09-24T06:18:26.578Z" }, - { 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, upload-time = "2024-09-24T06:18:28.174Z" }, - { 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, upload-time = "2024-09-24T06:18:29.104Z" }, - { url = "https://files.pythonhosted.org/packages/56/3e/6f39127f7027c75d130c0ba348d86a6150dff23761fbc6a5f71659f4521e/crc32c-2.7.1-cp311-cp311-win32.whl", hash = "sha256:f7786d219a1a1bf27d0aa1869821d11a6f8e90415cfffc1e37791690d4a848a1", size = 38370, upload-time = "2024-09-24T06:18:30.013Z" }, - { url = "https://files.pythonhosted.org/packages/c9/fb/1587c2705a3a47a3d0067eecf9a6fec510761c96dec45c7b038fb5c8ff46/crc32c-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:887f6844bb3ad35f0778cd10793ad217f7123a5422e40041231b8c4c7329649d", size = 39795, upload-time = "2024-09-24T06:18:31.324Z" }, - { 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, upload-time = "2024-09-24T06:18:32.425Z" }, - { 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, upload-time = "2024-09-24T06:18:34.097Z" }, - { 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, upload-time = "2024-09-24T06:18:35.02Z" }, - { 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, upload-time = "2024-09-24T06:18:35.954Z" }, - { 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, upload-time = "2024-09-24T06:18:36.896Z" }, - { 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, upload-time = "2024-09-24T06:18:38.099Z" }, - { 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, upload-time = "2024-09-24T06:18:39.051Z" }, - { 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, upload-time = "2024-09-24T06:18:40.021Z" }, - { 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, upload-time = "2024-09-24T06:18:40.925Z" }, - { url = "https://files.pythonhosted.org/packages/5e/b5/144b42cd838a901175a916078781cb2c3c9f977151c9ba085aebd6d15b22/crc32c-2.7.1-cp312-cp312-win32.whl", hash = "sha256:9f14b60e5a14206e8173dd617fa0c4df35e098a305594082f930dae5488da428", size = 38371, upload-time = "2024-09-24T06:18:42.711Z" }, - { url = "https://files.pythonhosted.org/packages/ae/c4/7929dcd5d9b57db0cce4fe6f6c191049380fc6d8c9b9f5581967f4ec018e/crc32c-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:7c810a246660a24dc818047dc5f89c7ce7b2814e1e08a8e99993f4103f7219e8", size = 39805, upload-time = "2024-09-24T06:18:43.6Z" }, +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 }, ] [[package]] name = "cycler" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a9/95/a3dbbb5028f35eafb79008e7522a75244477d2838f38cbb722248dabc2a8/cycler-0.12.1.tar.gz", hash = "sha256:88bb128f02ba341da8ef447245a9e138fae777f6a23943da4540077d3601eb1c", size = 7615, upload-time = "2023-10-07T05:32:18.335Z" } +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, upload-time = "2023-10-07T05:32:16.783Z" }, + { url = "https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl", hash = "sha256:85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30", size = 8321 }, ] [[package]] @@ -600,62 +611,62 @@ dependencies = [ { name = "pyyaml" }, { name = "toolz" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324, upload-time = "2025-05-20T19:54:30.688Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226, upload-time = "2025-05-20T19:54:20.309Z" }, + { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, ] [[package]] name = "debugpy" version = "1.8.14" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444, upload-time = "2025-04-10T19:46:10.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } wheels = [ - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064, upload-time = "2025-04-10T19:46:19.486Z" }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359, upload-time = "2025-04-10T19:46:21.192Z" }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269, upload-time = "2025-04-10T19:46:23.047Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156, upload-time = "2025-04-10T19:46:24.521Z" }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268, upload-time = "2025-04-10T19:46:26.044Z" }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077, upload-time = "2025-04-10T19:46:27.464Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127, upload-time = "2025-04-10T19:46:29.467Z" }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249, upload-time = "2025-04-10T19:46:31.538Z" }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230, upload-time = "2025-04-10T19:46:54.077Z" }, + { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, + { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, + { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, + { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, + { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, + { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, + { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, + { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, ] [[package]] name = "decorator" version = "5.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711, upload-time = "2025-02-24T04:41:34.073Z" } +sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190, upload-time = "2025-02-24T04:41:32.565Z" }, + { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, ] [[package]] name = "defusedxml" version = "0.7.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520, upload-time = "2021-03-08T10:59:26.269Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604, upload-time = "2021-03-08T10:59:24.45Z" }, + { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, ] [[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, upload-time = "2024-10-09T18:35:47.551Z" } +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, upload-time = "2024-10-09T18:35:44.272Z" }, + { 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 = "dnspython" version = "2.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197, upload-time = "2024-10-05T20:14:59.362Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632, upload-time = "2024-10-05T20:14:57.687Z" }, + { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, ] [[package]] @@ -665,9 +676,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506, upload-time = "2024-05-23T14:14:31.513Z" } +sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592, upload-time = "2024-05-23T14:13:55.283Z" }, + { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, ] [[package]] @@ -678,9 +689,9 @@ dependencies = [ { name = "dnspython" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967, upload-time = "2024-06-20T11:30:30.034Z" } +sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521, upload-time = "2024-06-20T11:30:28.248Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, ] [[package]] @@ -690,18 +701,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pydantic" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936, upload-time = "2019-12-30T22:47:36.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232, upload-time = "2019-12-30T22:47:35.265Z" }, + { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, ] [[package]] name = "executing" version = "2.2.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693, upload-time = "2025-01-22T15:41:29.403Z" } +sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702, upload-time = "2025-01-22T15:41:25.929Z" }, + { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, ] [[package]] @@ -713,9 +724,9 @@ dependencies = [ { name = "starlette" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236, upload-time = "2025-03-23T22:55:43.822Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164, upload-time = "2025-03-23T22:55:42.101Z" }, + { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, ] [package.optional-dependencies] @@ -737,9 +748,9 @@ dependencies = [ { name = "typer" }, { name = "uvicorn", extra = ["standard"] }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753, upload-time = "2024-12-15T14:28:10.028Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705, upload-time = "2024-12-15T14:28:06.18Z" }, + { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705 }, ] [package.optional-dependencies] @@ -751,104 +762,132 @@ standard = [ name = "fastjsonschema" version = "2.21.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939, upload-time = "2024-12-02T10:55:15.133Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924, upload-time = "2024-12-02T10:55:07.599Z" }, + { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, ] [[package]] name = "filelock" version = "3.18.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075, upload-time = "2025-03-14T07:11:40.47Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215, upload-time = "2025-03-14T07:11:39.145Z" }, + { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, +] + +[[package]] +name = "folium" +version = "0.19.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "branca" }, + { name = "jinja2" }, + { name = "numpy" }, + { name = "requests" }, + { name = "xyzservices" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/4e/f5ef1fcacaa669465cc2ee0c71718f2093e89ec4086125fc5f3d335ed62f/folium-0.19.5.tar.gz", hash = "sha256:103ef92d7738b91972f4531211f76eee3f38c88be03111bbd6a5e65c69d084df", size = 106257 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/81/4d/bcbee0676dc06f0b014a030cb928e158c96daafb872a01ddee7e60a8c998/folium-0.19.5-py2.py3-none-any.whl", hash = "sha256:4333fb3e6f3e9eedb231615d22c6d7df20aea5829554bd6908675865a37803b3", size = 110890 }, ] [[package]] name = "fonttools" version = "4.58.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522, upload-time = "2025-05-10T17:36:35.886Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } wheels = [ - { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920, upload-time = "2025-05-10T17:35:16.487Z" }, - { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957, upload-time = "2025-05-10T17:35:18.906Z" }, - { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808, upload-time = "2025-05-10T17:35:21.394Z" }, - { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876, upload-time = "2025-05-10T17:35:23.849Z" }, - { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798, upload-time = "2025-05-10T17:35:26.189Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560, upload-time = "2025-05-10T17:35:28.577Z" }, - { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330, upload-time = "2025-05-10T17:35:31.733Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687, upload-time = "2025-05-10T17:35:34.015Z" }, - { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502, upload-time = "2025-05-10T17:35:36.436Z" }, - { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214, upload-time = "2025-05-10T17:35:38.939Z" }, - { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136, upload-time = "2025-05-10T17:35:41.491Z" }, - { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598, upload-time = "2025-05-10T17:35:43.986Z" }, - { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256, upload-time = "2025-05-10T17:35:46.617Z" }, - { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710, upload-time = "2025-05-10T17:35:49.227Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593, upload-time = "2025-05-10T17:35:51.226Z" }, - { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230, upload-time = "2025-05-10T17:35:53.653Z" }, - { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440, upload-time = "2025-05-10T17:36:33.607Z" }, + { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, + { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, + { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, + { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, + { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, + { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, + { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, + { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, + { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, + { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, + { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, + { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, + { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, + { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, + { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, + { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, ] [[package]] name = "fqdn" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015, upload-time = "2021-03-11T07:16:29.08Z" } +sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121, upload-time = "2021-03-11T07:16:28.351Z" }, + { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, ] [[package]] name = "frozenlist" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831, upload-time = "2025-04-17T22:38:53.099Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912, upload-time = "2025-04-17T22:36:17.235Z" }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315, upload-time = "2025-04-17T22:36:18.735Z" }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230, upload-time = "2025-04-17T22:36:20.6Z" }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842, upload-time = "2025-04-17T22:36:22.088Z" }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919, upload-time = "2025-04-17T22:36:24.247Z" }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074, upload-time = "2025-04-17T22:36:26.291Z" }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292, upload-time = "2025-04-17T22:36:27.909Z" }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569, upload-time = "2025-04-17T22:36:29.448Z" }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625, upload-time = "2025-04-17T22:36:31.55Z" }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523, upload-time = "2025-04-17T22:36:33.078Z" }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657, upload-time = "2025-04-17T22:36:34.688Z" }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414, upload-time = "2025-04-17T22:36:36.363Z" }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321, upload-time = "2025-04-17T22:36:38.16Z" }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975, upload-time = "2025-04-17T22:36:40.289Z" }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553, upload-time = "2025-04-17T22:36:42.045Z" }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511, upload-time = "2025-04-17T22:36:44.067Z" }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863, upload-time = "2025-04-17T22:36:45.465Z" }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193, upload-time = "2025-04-17T22:36:47.382Z" }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831, upload-time = "2025-04-17T22:36:49.401Z" }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862, upload-time = "2025-04-17T22:36:51.899Z" }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361, upload-time = "2025-04-17T22:36:53.402Z" }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115, upload-time = "2025-04-17T22:36:55.016Z" }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505, upload-time = "2025-04-17T22:36:57.12Z" }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666, upload-time = "2025-04-17T22:36:58.735Z" }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119, upload-time = "2025-04-17T22:37:00.512Z" }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226, upload-time = "2025-04-17T22:37:02.102Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788, upload-time = "2025-04-17T22:37:03.578Z" }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914, upload-time = "2025-04-17T22:37:05.213Z" }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283, upload-time = "2025-04-17T22:37:06.985Z" }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264, upload-time = "2025-04-17T22:37:08.618Z" }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482, upload-time = "2025-04-17T22:37:10.196Z" }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248, upload-time = "2025-04-17T22:37:12.284Z" }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161, upload-time = "2025-04-17T22:37:13.902Z" }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548, upload-time = "2025-04-17T22:37:15.326Z" }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404, upload-time = "2025-04-17T22:38:51.668Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, + { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, + { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, + { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, + { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, + { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, + { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, + { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, + { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, + { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, + { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, + { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, + { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, + { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, + { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, + { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, + { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, + { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, + { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, + { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, + { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, + { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, + { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, + { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, + { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, + { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, + { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, + { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, + { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, + { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, + { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, + { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, + { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, + { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, + { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, ] [[package]] name = "fsspec" version = "2025.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033, upload-time = "2025-05-24T12:03:23.792Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052 }, +] + +[[package]] +name = "geodatasets" +version = "2024.8.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pooch" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/c5/19/37a772bf09a9758eb1c09ed9ad6a11dcf0435dadd89bc46e3f78d709f353/geodatasets-2024.8.0.tar.gz", hash = "sha256:ea1b0f885f1b3305d4a308b2ddee042e425c5288b5ff6b00e6b0ac74a4d5e8d9", size = 457760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052, upload-time = "2025-05-24T12:03:21.66Z" }, + { url = "https://files.pythonhosted.org/packages/9d/dd/e30e144271280d263c0c10f34fbcf2e09e9a82bd11a165c5f1f498899a29/geodatasets-2024.8.0-py3-none-any.whl", hash = "sha256:fd2a91618277553dbb180496bb952d496e4bc99e8c0066c5dc06701d66d53540", size = 20029 }, ] [[package]] @@ -863,9 +902,9 @@ dependencies = [ { name = "pyproj" }, { name = "shapely" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736, upload-time = "2024-07-02T12:26:52.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587, upload-time = "2024-07-02T12:26:50.876Z" }, + { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, ] [[package]] @@ -875,18 +914,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943, upload-time = "2022-05-02T15:47:16.11Z" } +sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034, upload-time = "2022-05-02T15:47:14.552Z" }, + { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, +] + +[[package]] +name = "greenlet" +version = "3.2.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/2e/d4fcb2978f826358b673f779f78fa8a32ee37df11920dc2bb5589cbeecef/greenlet-3.2.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822", size = 270219 }, + { url = "https://files.pythonhosted.org/packages/16/24/929f853e0202130e4fe163bc1d05a671ce8dcd604f790e14896adac43a52/greenlet-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83", size = 630383 }, + { url = "https://files.pythonhosted.org/packages/d1/b2/0320715eb61ae70c25ceca2f1d5ae620477d246692d9cc284c13242ec31c/greenlet-3.2.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf", size = 642422 }, + { url = "https://files.pythonhosted.org/packages/bd/49/445fd1a210f4747fedf77615d941444349c6a3a4a1135bba9701337cd966/greenlet-3.2.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b", size = 638375 }, + { url = "https://files.pythonhosted.org/packages/7e/c8/ca19760cf6eae75fa8dc32b487e963d863b3ee04a7637da77b616703bc37/greenlet-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147", size = 637627 }, + { url = "https://files.pythonhosted.org/packages/65/89/77acf9e3da38e9bcfca881e43b02ed467c1dedc387021fc4d9bd9928afb8/greenlet-3.2.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5", size = 585502 }, + { url = "https://files.pythonhosted.org/packages/97/c6/ae244d7c95b23b7130136e07a9cc5aadd60d59b5951180dc7dc7e8edaba7/greenlet-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc", size = 1114498 }, + { url = "https://files.pythonhosted.org/packages/89/5f/b16dec0cbfd3070658e0d744487919740c6d45eb90946f6787689a7efbce/greenlet-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba", size = 1139977 }, + { url = "https://files.pythonhosted.org/packages/66/77/d48fb441b5a71125bcac042fc5b1494c806ccb9a1432ecaa421e72157f77/greenlet-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34", size = 297017 }, + { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992 }, + { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820 }, + { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046 }, + { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701 }, + { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747 }, + { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461 }, + { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190 }, + { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055 }, + { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817 }, ] [[package]] name = "h11" version = "0.16.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250, upload-time = "2025-04-24T03:35:25.427Z" } +sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515, upload-time = "2025-04-24T03:35:24.344Z" }, + { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, ] [[package]] @@ -897,9 +962,9 @@ dependencies = [ { name = "h5py" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456, upload-time = "2025-03-07T14:51:24.322Z" } +sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561, upload-time = "2025-03-07T14:51:22.863Z" }, + { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, ] [[package]] @@ -909,18 +974,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876, upload-time = "2025-02-18T16:04:01.824Z" } +sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } wheels = [ - { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922, upload-time = "2025-02-18T16:02:36.376Z" }, - { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619, upload-time = "2025-02-18T16:02:40.722Z" }, - { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366, upload-time = "2025-02-18T16:02:44.544Z" }, - { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058, upload-time = "2025-02-18T16:02:49.035Z" }, - { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428, upload-time = "2025-02-18T16:02:52.061Z" }, - { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442, upload-time = "2025-02-18T16:02:56.545Z" }, - { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567, upload-time = "2025-02-18T16:03:00.079Z" }, - { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544, upload-time = "2025-02-18T16:03:05.675Z" }, - { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139, upload-time = "2025-02-18T16:03:10.129Z" }, - { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179, upload-time = "2025-02-18T16:03:13.716Z" }, + { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, + { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, + { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, + { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, + { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, + { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, + { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, + { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, + { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, + { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, ] [[package]] @@ -931,31 +996,31 @@ dependencies = [ { name = "certifi" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484, upload-time = "2025-04-24T22:06:22.219Z" } +sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784, upload-time = "2025-04-24T22:06:20.566Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, ] [[package]] name = "httptools" version = "0.6.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639, upload-time = "2024-10-16T19:45:08.902Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029, upload-time = "2024-10-16T19:44:18.427Z" }, - { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492, upload-time = "2024-10-16T19:44:19.515Z" }, - { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891, upload-time = "2024-10-16T19:44:21.067Z" }, - { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788, upload-time = "2024-10-16T19:44:22.958Z" }, - { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214, upload-time = "2024-10-16T19:44:24.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120, upload-time = "2024-10-16T19:44:26.295Z" }, - { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565, upload-time = "2024-10-16T19:44:29.188Z" }, - { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683, upload-time = "2024-10-16T19:44:30.175Z" }, - { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337, upload-time = "2024-10-16T19:44:31.786Z" }, - { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796, upload-time = "2024-10-16T19:44:32.825Z" }, - { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837, upload-time = "2024-10-16T19:44:33.974Z" }, - { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289, upload-time = "2024-10-16T19:44:35.111Z" }, - { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779, upload-time = "2024-10-16T19:44:36.253Z" }, - { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634, upload-time = "2024-10-16T19:44:37.357Z" }, + { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029 }, + { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492 }, + { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891 }, + { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788 }, + { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214 }, + { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120 }, + { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565 }, + { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683 }, + { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337 }, + { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796 }, + { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837 }, + { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289 }, + { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779 }, + { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634 }, ] [[package]] @@ -968,9 +1033,9 @@ dependencies = [ { name = "httpcore" }, { name = "idna" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406, upload-time = "2024-12-06T15:37:23.222Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517, upload-time = "2024-12-06T15:37:21.509Z" }, + { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, ] [[package]] @@ -980,37 +1045,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131, upload-time = "2025-04-16T18:10:36.75Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673, upload-time = "2025-04-16T18:09:43.971Z" }, - { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240, upload-time = "2025-04-16T18:09:37.035Z" }, - { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672, upload-time = "2025-04-16T18:09:26.089Z" }, - { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034, upload-time = "2025-04-16T18:09:02.686Z" }, - { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792, upload-time = "2025-04-16T18:09:15.5Z" }, - { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356, upload-time = "2025-04-16T18:09:51.136Z" }, - { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442, upload-time = "2025-04-16T18:10:02.792Z" }, - { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160, upload-time = "2025-04-16T18:10:14.601Z" }, - { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124, upload-time = "2025-04-16T18:10:25.808Z" }, - { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858, upload-time = "2025-04-16T18:10:43.776Z" }, - { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459, upload-time = "2025-04-16T18:10:37.921Z" }, - { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831, upload-time = "2025-04-16T18:09:46.168Z" }, - { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016, upload-time = "2025-04-16T18:09:38.98Z" }, - { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090, upload-time = "2025-04-16T18:09:28.202Z" }, - { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912, upload-time = "2025-04-16T18:09:05.87Z" }, - { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623, upload-time = "2025-04-16T18:09:17.868Z" }, - { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655, upload-time = "2025-04-16T18:09:53.417Z" }, - { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287, upload-time = "2025-04-16T18:10:05.042Z" }, - { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009, upload-time = "2025-04-16T18:10:16.678Z" }, - { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396, upload-time = "2025-04-16T18:10:28.392Z" }, - { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850, upload-time = "2025-04-16T18:10:46.224Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293, upload-time = "2025-04-16T18:10:39.897Z" }, - { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636, upload-time = "2025-04-16T18:09:34.591Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882, upload-time = "2025-04-16T18:09:12.974Z" }, - { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805, upload-time = "2025-04-16T18:09:24.072Z" }, - { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170, upload-time = "2025-04-16T18:10:00.013Z" }, - { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703, upload-time = "2025-04-16T18:10:11.788Z" }, - { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569, upload-time = "2025-04-16T18:10:23.599Z" }, - { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490, upload-time = "2025-04-16T18:10:34.914Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, + { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, + { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, + { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, + { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, + { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, + { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, + { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, + { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, + { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, + { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, + { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, + { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, + { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, + { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, + { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, + { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, + { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, + { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, + { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, + { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, + { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, + { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, + { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, + { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, + { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, + { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, + { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, + { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, ] [[package]] @@ -1041,7 +1106,6 @@ dev = [ [package.metadata] requires-dist = [{ name = "mkdocs-material", marker = "extra == 'docs'" }] -provides-extras = ["docs"] [package.metadata.requires-dev] dev = [ @@ -1085,7 +1149,7 @@ dependencies = [ { name = "numpy" }, { name = "pandas" }, { name = "pyarrow" }, - { name = "pyiceberg", extra = ["glue", "s3fs"] }, + { name = "pyiceberg", extra = ["glue", "s3fs", "sql-sqlite"] }, { name = "python-dotenv" }, { name = "s3fs" }, ] @@ -1096,7 +1160,7 @@ requires-dist = [ { name = "numpy", specifier = "==2.2.6" }, { name = "pandas", specifier = "==2.2.3" }, { name = "pyarrow", specifier = "==20.0.0" }, - { name = "pyiceberg", extras = ["s3fs", "glue"], specifier = "==0.9.1" }, + { name = "pyiceberg", extras = ["s3fs", "glue", "sql-sqlite"], specifier = "==0.9.1" }, { name = "python-dotenv", specifier = "==1.1.0" }, { name = "s3fs", specifier = "==2025.5.1" }, ] @@ -1107,12 +1171,17 @@ version = "2025.6.0" source = { editable = "src/icefabric_tools" } dependencies = [ { name = "dask" }, + { name = "folium" }, { name = "fsspec" }, + { name = "geodatasets" }, { name = "geopandas" }, { name = "h5netcdf" }, { name = "h5py" }, + { name = "httpx" }, { name = "icechunk" }, + { name = "ipywidgets" }, { name = "kerchunk" }, + { name = "mapclassify" }, { name = "matplotlib" }, { name = "netcdf4" }, { name = "numpy" }, @@ -1133,12 +1202,17 @@ dependencies = [ [package.metadata] requires-dist = [ { name = "dask", specifier = "==2025.5.1" }, + { name = "folium", specifier = "==0.19.5" }, { name = "fsspec", specifier = "==2025.5.1" }, + { name = "geodatasets", specifier = "==2024.8.0" }, { name = "geopandas", specifier = "==1.0.1" }, { name = "h5netcdf", specifier = "==1.6.1" }, { name = "h5py", specifier = "==3.13.0" }, + { name = "httpx", specifier = "==0.28.1" }, { name = "icechunk", specifier = "==0.2.14" }, + { name = "ipywidgets", specifier = "==8.1.6" }, { name = "kerchunk", specifier = "==0.2.8" }, + { name = "mapclassify", specifier = "==2.9.0" }, { name = "matplotlib", specifier = "==3.10.3" }, { name = "netcdf4", specifier = "==1.7.2" }, { name = "numpy", specifier = "==2.2.6" }, @@ -1160,18 +1234,18 @@ requires-dist = [ name = "identify" version = "2.6.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234, upload-time = "2025-05-23T18:19:53.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112, upload-time = "2025-05-23T18:19:51.88Z" }, + { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, ] [[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, upload-time = "2024-09-15T18:07:39.745Z" } +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, upload-time = "2024-09-15T18:07:37.964Z" }, + { url = "https://files.pythonhosted.org/packages/76/c6/c88e154df9c4e1a2a66ccf0005a88dfb2650c1dffb6f5ce603dfbd452ce3/idna-3.10-py3-none-any.whl", hash = "sha256:946d195a0d259cbba61165e88e65941f16e9b36ea6ddb97f00452bae8b1287d3", size = 70442 }, ] [[package]] @@ -1181,18 +1255,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "zipp", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641, upload-time = "2025-04-27T15:29:01.736Z" } +sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656, upload-time = "2025-04-27T15:29:00.214Z" }, + { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, ] [[package]] name = "iniconfig" version = "2.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, ] [[package]] @@ -1214,9 +1288,9 @@ dependencies = [ { 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, upload-time = "2024-07-01T14:07:22.543Z" } +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, upload-time = "2024-07-01T14:07:19.603Z" }, + { url = "https://files.pythonhosted.org/packages/94/5c/368ae6c01c7628438358e6d337c19b05425727fbb221d2a3c4303c372f42/ipykernel-6.29.5-py3-none-any.whl", hash = "sha256:afdb66ba5aa354b09b91379bac28ae4afebbb30e8b39510c9690afb7a10421b5", size = 117173 }, ] [[package]] @@ -1236,9 +1310,9 @@ dependencies = [ { name = "traitlets" }, { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394, upload-time = "2025-04-25T17:55:40.498Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277, upload-time = "2025-04-25T17:55:37.625Z" }, + { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, ] [[package]] @@ -1248,9 +1322,25 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pygments" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393, upload-time = "2025-01-17T11:24:34.505Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, +] + +[[package]] +name = "ipywidgets" +version = "8.1.6" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "ipython" }, + { name = "jupyterlab-widgets" }, + { name = "traitlets" }, + { name = "widgetsnbextension" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/aa/98/4074d9cb7e89f7ee387b41e9a4b74c8e0d6196e90b910af1cc674e1cdd3d/ipywidgets-8.1.6.tar.gz", hash = "sha256:d8ace49c66f14419fc66071371b99d01bed230bbc15d8a60233b18bfbd782851", size = 116764 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074, upload-time = "2025-01-17T11:24:33.271Z" }, + { url = "https://files.pythonhosted.org/packages/53/b8/62952729573d983d9433faacf62a52ee2e8cf46504418061ad1739967abe/ipywidgets-8.1.6-py3-none-any.whl", hash = "sha256:446e7630a1d025bdc7635e1169fcc06f2ce33b5bd41c2003edeb4a47c8d4bbb1", size = 139808 }, ] [[package]] @@ -1260,9 +1350,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "arrow" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649, upload-time = "2020-11-01T11:00:00.312Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321, upload-time = "2020-11-01T10:59:58.02Z" }, + { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, ] [[package]] @@ -1272,9 +1362,9 @@ 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, upload-time = "2024-11-11T01:41:42.873Z" } +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, upload-time = "2024-11-11T01:41:40.175Z" }, + { url = "https://files.pythonhosted.org/packages/c0/5a/9cac0c82afec3d09ccd97c8b6502d48f165f9124db81b4bcb90b4af974ee/jedi-0.19.2-py2.py3-none-any.whl", hash = "sha256:a8ef22bde8490f57fe5c7681a3c83cb58874daf72b4784de3cce5b6ef6edb5b9", size = 1572278 }, ] [[package]] @@ -1284,36 +1374,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "markupsafe" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115, upload-time = "2025-03-05T20:05:02.478Z" } +sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899, upload-time = "2025-03-05T20:05:00.369Z" }, + { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, ] [[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, upload-time = "2022-06-17T18:00:12.224Z" } +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, upload-time = "2022-06-17T18:00:10.251Z" }, + { url = "https://files.pythonhosted.org/packages/31/b4/b9b800c45527aadd64d5b442f9b932b00648617eb5d63d2c7a6587b7cafc/jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980", size = 20256 }, +] + +[[package]] +name = "joblib" +version = "1.5.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 }, ] [[package]] name = "json5" version = "0.12.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907, upload-time = "2025-04-03T16:33:13.201Z" } +sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079, upload-time = "2025-04-03T16:33:11.927Z" }, + { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, ] [[package]] name = "jsonpointer" version = "3.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114, upload-time = "2024-06-10T19:24:42.462Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595, upload-time = "2024-06-10T19:24:40.698Z" }, + { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, ] [[package]] @@ -1326,9 +1425,9 @@ dependencies = [ { 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, upload-time = "2024-07-08T18:40:05.546Z" } +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, upload-time = "2024-07-08T18:40:00.165Z" }, + { url = "https://files.pythonhosted.org/packages/69/4a/4f9dbeb84e8850557c02365a0eee0649abe5eb1d84af92a25731c6c0f922/jsonschema-4.23.0-py3-none-any.whl", hash = "sha256:fbadb6f8b144a8f8cf9f0b89ba94501d143e50411a1278633f56a7acf7fd5566", size = 88462 }, ] [package.optional-dependencies] @@ -1350,9 +1449,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "referencing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513, upload-time = "2025-04-23T12:34:07.418Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437, upload-time = "2025-04-23T12:34:05.422Z" }, + { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, ] [[package]] @@ -1366,9 +1465,9 @@ dependencies = [ { 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, upload-time = "2024-09-17T10:44:17.613Z" } +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, upload-time = "2024-09-17T10:44:15.218Z" }, + { url = "https://files.pythonhosted.org/packages/11/85/b0394e0b6fcccd2c1eeefc230978a6f8cb0c5df1e4cd3e7625735a0d7d1e/jupyter_client-8.6.3-py3-none-any.whl", hash = "sha256:e8a19cc986cc45905ac3362915f410f3af85424b4c0905e94fa5f2cb08e8f23f", size = 106105 }, ] [[package]] @@ -1380,9 +1479,9 @@ dependencies = [ { 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, upload-time = "2024-03-12T12:37:35.652Z" } +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, upload-time = "2024-03-12T12:37:32.36Z" }, + { url = "https://files.pythonhosted.org/packages/c9/fb/108ecd1fe961941959ad0ee4e12ee7b8b1477247f30b1fdfd83ceaf017f0/jupyter_core-5.7.2-py3-none-any.whl", hash = "sha256:4f7315d2f6b4bcf2e3e7cb6e46772eba760ae459cd1f59d29eb57b0a01bd7409", size = 28965 }, ] [[package]] @@ -1399,9 +1498,9 @@ dependencies = [ { name = "rfc3986-validator" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196, upload-time = "2025-02-03T17:23:41.485Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430, upload-time = "2025-02-03T17:23:38.643Z" }, + { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, ] [[package]] @@ -1411,9 +1510,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741, upload-time = "2024-04-09T17:59:44.918Z" } +sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146, upload-time = "2024-04-09T17:59:43.388Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, ] [[package]] @@ -1441,9 +1540,9 @@ dependencies = [ { name = "traitlets" }, { name = "websocket-client" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177, upload-time = "2025-05-12T16:44:46.245Z" } +sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904, upload-time = "2025-05-12T16:44:43.335Z" }, + { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, ] [[package]] @@ -1454,9 +1553,9 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "terminado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430, upload-time = "2024-03-12T14:37:03.049Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656, upload-time = "2024-03-12T14:37:00.708Z" }, + { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, ] [[package]] @@ -1478,18 +1577,18 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818, upload-time = "2025-05-06T12:29:40.992Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799, upload-time = "2025-05-06T12:29:35.824Z" }, + { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, ] [[package]] name = "jupyterlab-pygments" version = "0.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900, upload-time = "2023-11-23T09:26:37.44Z" } +sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884, upload-time = "2023-11-23T09:26:34.325Z" }, + { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, ] [[package]] @@ -1505,9 +1604,18 @@ dependencies = [ { name = "packaging" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173, upload-time = "2024-07-16T17:02:04.149Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, +] + +[[package]] +name = "jupyterlab-widgets" +version = "3.0.15" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/7d/160595ca88ee87ac6ba95d82177d29ec60aaa63821d3077babb22ce031a5/jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b", size = 213149 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700, upload-time = "2024-07-16T17:02:01.115Z" }, + { url = "https://files.pythonhosted.org/packages/43/6a/ca128561b22b60bd5a0c4ea26649e68c8556b82bc70a0c396eebc977fe86/jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c", size = 216571 }, ] [[package]] @@ -1521,65 +1629,81 @@ dependencies = [ { name = "ujson" }, { name = "zarr" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488, upload-time = "2025-02-01T18:46:33.404Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510, upload-time = "2025-02-01T18:46:18.904Z" }, + { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, ] [[package]] name = "kiwisolver" version = "1.4.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538, upload-time = "2024-12-24T18:30:51.519Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635, upload-time = "2024-12-24T18:28:51.826Z" }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717, upload-time = "2024-12-24T18:28:54.256Z" }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413, upload-time = "2024-12-24T18:28:55.184Z" }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994, upload-time = "2024-12-24T18:28:57.493Z" }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804, upload-time = "2024-12-24T18:29:00.077Z" }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690, upload-time = "2024-12-24T18:29:01.401Z" }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839, upload-time = "2024-12-24T18:29:02.685Z" }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109, upload-time = "2024-12-24T18:29:04.113Z" }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269, upload-time = "2024-12-24T18:29:05.488Z" }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468, upload-time = "2024-12-24T18:29:06.79Z" }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394, upload-time = "2024-12-24T18:29:08.24Z" }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901, upload-time = "2024-12-24T18:29:09.653Z" }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306, upload-time = "2024-12-24T18:29:12.644Z" }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966, upload-time = "2024-12-24T18:29:14.089Z" }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311, upload-time = "2024-12-24T18:29:15.892Z" }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152, upload-time = "2024-12-24T18:29:16.85Z" }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555, upload-time = "2024-12-24T18:29:19.146Z" }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067, upload-time = "2024-12-24T18:29:20.096Z" }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443, upload-time = "2024-12-24T18:29:22.843Z" }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728, upload-time = "2024-12-24T18:29:24.463Z" }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388, upload-time = "2024-12-24T18:29:25.776Z" }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849, upload-time = "2024-12-24T18:29:27.202Z" }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533, upload-time = "2024-12-24T18:29:28.638Z" }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898, upload-time = "2024-12-24T18:29:30.368Z" }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605, upload-time = "2024-12-24T18:29:33.151Z" }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801, upload-time = "2024-12-24T18:29:34.584Z" }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077, upload-time = "2024-12-24T18:29:36.138Z" }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410, upload-time = "2024-12-24T18:29:39.991Z" }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853, upload-time = "2024-12-24T18:29:42.006Z" }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424, upload-time = "2024-12-24T18:29:44.38Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, + { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, + { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, + { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, + { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, + { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, + { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, + { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, + { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, + { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, + { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, + { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, + { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, + { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, + { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, + { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, + { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, + { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, + { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, + { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, + { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, + { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, + { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, + { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, + { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, + { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, + { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, + { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, + { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, + { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, ] [[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, upload-time = "2022-04-20T22:04:44.312Z" } +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 = "mapclassify" +version = "2.9.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "networkx" }, + { name = "numpy" }, + { name = "pandas" }, + { name = "scikit-learn" }, + { name = "scipy" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/af/40/f930dd57f640b957fa1067cf427d7a417eb3995e2d5d7b8f6def297d38bf/mapclassify-2.9.0.tar.gz", hash = "sha256:65fa7a7d778ed63496ff860b9f3c26d632d8f289820a6d8556ac527d14b26bd8", size = 5401963 } wheels = [ - { url = "https://files.pythonhosted.org/packages/db/bc/83e112abc66cd466c6b83f99118035867cecd41802f8d044638aa78a106e/locket-1.0.0-py2.py3-none-any.whl", hash = "sha256:b6c819a722f7b6bd955b80781788e4a66a55628b858d347536b7e81325a3a5e3", size = 4398, upload-time = "2022-04-20T22:04:42.23Z" }, + { url = "https://files.pythonhosted.org/packages/cd/fb/101891210f76158963a8bbf5a202d6c3173cc29a4dd75ca19e65ba4549dc/mapclassify-2.9.0-py3-none-any.whl", hash = "sha256:5c2902a6d83ff7a2cd4d8884238c9c111a32470b7a8bde2cf4f62fef8166a497", size = 286652 }, ] [[package]] name = "markdown" version = "3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906, upload-time = "2025-04-11T14:42:50.928Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210, upload-time = "2025-04-11T14:42:49.178Z" }, + { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, ] [[package]] @@ -1589,37 +1713,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "mdurl" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/38/71/3b932df36c1a044d397a1f92d1cf91ee0a503d91e470cbd670aa66b07ed0/markdown-it-py-3.0.0.tar.gz", hash = "sha256:e3f60a94fa066dc52ec76661e37c851cb232d92f9886b15cb560aaada2df8feb", size = 74596, upload-time = "2023-06-03T06:41:14.443Z" } +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, upload-time = "2023-06-03T06:41:11.019Z" }, + { 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, upload-time = "2024-10-18T15:21:54.129Z" } -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, upload-time = "2024-10-18T15:21:02.187Z" }, - { 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, upload-time = "2024-10-18T15:21:02.941Z" }, - { 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, upload-time = "2024-10-18T15:21:03.953Z" }, - { 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, upload-time = "2024-10-18T15:21:06.495Z" }, - { 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, upload-time = "2024-10-18T15:21:07.295Z" }, - { 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, upload-time = "2024-10-18T15:21:08.073Z" }, - { 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, upload-time = "2024-10-18T15:21:09.318Z" }, - { 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, upload-time = "2024-10-18T15:21:10.185Z" }, - { url = "https://files.pythonhosted.org/packages/9a/34/a15aa69f01e2181ed8d2b685c0d2f6655d5cca2c4db0ddea775e631918cd/MarkupSafe-3.0.2-cp311-cp311-win32.whl", hash = "sha256:6c89876f41da747c8d3677a2b540fb32ef5715f97b66eeb0c6b66f5e3ef6f59d", size = 15094, upload-time = "2024-10-18T15:21:11.005Z" }, - { url = "https://files.pythonhosted.org/packages/da/b8/3a3bd761922d416f3dc5d00bfbed11f66b1ab89a0c2b6e887240a30b0f6b/MarkupSafe-3.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:70a87b411535ccad5ef2f1df5136506a10775d267e197e4cf531ced10537bd6b", size = 15521, upload-time = "2024-10-18T15:21:12.911Z" }, - { 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, upload-time = "2024-10-18T15:21:13.777Z" }, - { 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, upload-time = "2024-10-18T15:21:14.822Z" }, - { 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, upload-time = "2024-10-18T15:21:15.642Z" }, - { 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, upload-time = "2024-10-18T15:21:17.133Z" }, - { 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, upload-time = "2024-10-18T15:21:18.064Z" }, - { 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, upload-time = "2024-10-18T15:21:18.859Z" }, - { 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, upload-time = "2024-10-18T15:21:19.671Z" }, - { 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, upload-time = "2024-10-18T15:21:20.971Z" }, - { url = "https://files.pythonhosted.org/packages/51/ae/97827349d3fcffee7e184bdf7f41cd6b88d9919c80f0263ba7acd1bbcb18/MarkupSafe-3.0.2-cp312-cp312-win32.whl", hash = "sha256:0f4ca02bea9a23221c0182836703cbf8930c5e9454bacce27e767509fa286a30", size = 15097, upload-time = "2024-10-18T15:21:22.646Z" }, - { url = "https://files.pythonhosted.org/packages/c1/80/a61f99dc3a936413c3ee4e1eecac96c0da5ed07ad56fd975f1a9da5bc630/MarkupSafe-3.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:8e06879fc22a25ca47312fbe7c8264eb0b662f6db27cb2d3bbbc74b1df4b9b87", size = 15601, upload-time = "2024-10-18T15:21:23.499Z" }, +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 }, ] [[package]] @@ -1637,20 +1761,20 @@ dependencies = [ { name = "pyparsing" }, { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811, upload-time = "2025-05-08T19:10:54.39Z" } +sdist = { url = "https://files.pythonhosted.org/packages/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873, upload-time = "2025-05-08T19:09:53.857Z" }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205, upload-time = "2025-05-08T19:09:55.684Z" }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823, upload-time = "2025-05-08T19:09:57.442Z" }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464, upload-time = "2025-05-08T19:09:59.471Z" }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103, upload-time = "2025-05-08T19:10:03.208Z" }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492, upload-time = "2025-05-08T19:10:05.271Z" }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689, upload-time = "2025-05-08T19:10:07.602Z" }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466, upload-time = "2025-05-08T19:10:09.383Z" }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252, upload-time = "2025-05-08T19:10:11.958Z" }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321, upload-time = "2025-05-08T19:10:14.47Z" }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972, upload-time = "2025-05-08T19:10:16.569Z" }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954, upload-time = "2025-05-08T19:10:18.663Z" }, + { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, + { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, + { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, + { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, + { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, + { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, + { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, + { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, + { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, + { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, + { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, + { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, ] [[package]] @@ -1660,36 +1784,36 @@ 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, upload-time = "2024-04-15T13:44:44.803Z" } +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, upload-time = "2024-04-15T13:44:43.265Z" }, + { 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, upload-time = "2022-08-14T12:40:10.846Z" } +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, upload-time = "2022-08-14T12:40:09.779Z" }, + { url = "https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl", hash = "sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8", size = 9979 }, ] [[package]] name = "mergedeep" version = "1.3.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661, upload-time = "2021-02-05T18:55:30.623Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354, upload-time = "2021-02-05T18:55:29.583Z" }, + { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, ] [[package]] name = "mistune" version = "3.1.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347, upload-time = "2025-03-19T14:27:24.955Z" } +sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410, upload-time = "2025-03-19T14:27:23.451Z" }, + { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, ] [[package]] @@ -1711,9 +1835,9 @@ dependencies = [ { name = "pyyaml-env-tag" }, { name = "watchdog" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159, upload-time = "2024-08-30T12:24:06.899Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451, upload-time = "2024-08-30T12:24:05.054Z" }, + { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, ] [[package]] @@ -1725,9 +1849,9 @@ dependencies = [ { name = "platformdirs" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239, upload-time = "2023-11-20T17:51:09.981Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521, upload-time = "2023-11-20T17:51:08.587Z" }, + { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, ] [[package]] @@ -1747,101 +1871,101 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707, upload-time = "2025-05-13T13:27:57.173Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767, upload-time = "2025-05-13T13:27:54.089Z" }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, ] [[package]] name = "mkdocs-material-extensions" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847, upload-time = "2023-11-22T19:09:45.208Z" } +sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728, upload-time = "2023-11-22T19:09:43.465Z" }, + { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, ] [[package]] name = "mmh3" version = "5.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728, upload-time = "2025-01-25T08:39:43.386Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098, upload-time = "2025-01-25T08:38:22.917Z" }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513, upload-time = "2025-01-25T08:38:25.079Z" }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112, upload-time = "2025-01-25T08:38:25.947Z" }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632, upload-time = "2025-01-25T08:38:26.939Z" }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884, upload-time = "2025-01-25T08:38:29.159Z" }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835, upload-time = "2025-01-25T08:38:33.04Z" }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688, upload-time = "2025-01-25T08:38:34.987Z" }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569, upload-time = "2025-01-25T08:38:35.983Z" }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483, upload-time = "2025-01-25T08:38:38.198Z" }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496, upload-time = "2025-01-25T08:38:39.257Z" }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109, upload-time = "2025-01-25T08:38:40.395Z" }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231, upload-time = "2025-01-25T08:38:42.141Z" }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548, upload-time = "2025-01-25T08:38:43.402Z" }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810, upload-time = "2025-01-25T08:38:45.143Z" }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476, upload-time = "2025-01-25T08:38:46.029Z" }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880, upload-time = "2025-01-25T08:38:47.035Z" }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152, upload-time = "2025-01-25T08:38:47.902Z" }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564, upload-time = "2025-01-25T08:38:48.839Z" }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104, upload-time = "2025-01-25T08:38:49.773Z" }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634, upload-time = "2025-01-25T08:38:51.5Z" }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888, upload-time = "2025-01-25T08:38:52.542Z" }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968, upload-time = "2025-01-25T08:38:54.286Z" }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771, upload-time = "2025-01-25T08:38:55.576Z" }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726, upload-time = "2025-01-25T08:38:56.654Z" }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523, upload-time = "2025-01-25T08:38:57.662Z" }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628, upload-time = "2025-01-25T08:38:59.505Z" }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190, upload-time = "2025-01-25T08:39:00.483Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439, upload-time = "2025-01-25T08:39:01.484Z" }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780, upload-time = "2025-01-25T08:39:02.444Z" }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835, upload-time = "2025-01-25T08:39:03.369Z" }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509, upload-time = "2025-01-25T08:39:04.284Z" }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888, upload-time = "2025-01-25T08:39:05.174Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, + { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, + { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, + { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, + { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, + { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, + { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, + { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, + { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, + { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, + { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, + { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, + { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, + { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, + { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, + { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, + { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, + { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, + { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, + { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, + { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, + { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, + { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, + { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, + { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, + { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, + { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, + { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, + { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, + { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, + { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, + { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, ] [[package]] name = "multidict" version = "6.4.4" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183, upload-time = "2025-05-19T14:16:37.381Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515, upload-time = "2025-05-19T14:14:19.767Z" }, - { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609, upload-time = "2025-05-19T14:14:21.538Z" }, - { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871, upload-time = "2025-05-19T14:14:22.666Z" }, - { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661, upload-time = "2025-05-19T14:14:24.124Z" }, - { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422, upload-time = "2025-05-19T14:14:25.437Z" }, - { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447, upload-time = "2025-05-19T14:14:26.793Z" }, - { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455, upload-time = "2025-05-19T14:14:28.149Z" }, - { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666, upload-time = "2025-05-19T14:14:29.584Z" }, - { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392, upload-time = "2025-05-19T14:14:30.961Z" }, - { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969, upload-time = "2025-05-19T14:14:32.672Z" }, - { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433, upload-time = "2025-05-19T14:14:34.016Z" }, - { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418, upload-time = "2025-05-19T14:14:35.376Z" }, - { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042, upload-time = "2025-05-19T14:14:36.723Z" }, - { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280, upload-time = "2025-05-19T14:14:38.194Z" }, - { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322, upload-time = "2025-05-19T14:14:40.015Z" }, - { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070, upload-time = "2025-05-19T14:14:41.904Z" }, - { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667, upload-time = "2025-05-19T14:14:43.534Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293, upload-time = "2025-05-19T14:14:44.724Z" }, - { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096, upload-time = "2025-05-19T14:14:45.95Z" }, - { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214, upload-time = "2025-05-19T14:14:47.158Z" }, - { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686, upload-time = "2025-05-19T14:14:48.366Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061, upload-time = "2025-05-19T14:14:49.952Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412, upload-time = "2025-05-19T14:14:51.812Z" }, - { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563, upload-time = "2025-05-19T14:14:53.262Z" }, - { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811, upload-time = "2025-05-19T14:14:55.232Z" }, - { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524, upload-time = "2025-05-19T14:14:57.226Z" }, - { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012, upload-time = "2025-05-19T14:14:58.597Z" }, - { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765, upload-time = "2025-05-19T14:15:00.048Z" }, - { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888, upload-time = "2025-05-19T14:15:01.568Z" }, - { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041, upload-time = "2025-05-19T14:15:03.759Z" }, - { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046, upload-time = "2025-05-19T14:15:05.698Z" }, - { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106, upload-time = "2025-05-19T14:15:07.124Z" }, - { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351, upload-time = "2025-05-19T14:15:08.556Z" }, - { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791, upload-time = "2025-05-19T14:15:09.825Z" }, - { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481, upload-time = "2025-05-19T14:16:36.024Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, + { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, + { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, + { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, + { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, + { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, + { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, + { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, + { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, + { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, + { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, + { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, + { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, + { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, + { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, + { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, + { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, + { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, + { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, + { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, + { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, + { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, + { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, + { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, + { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, + { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, + { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, + { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, + { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, + { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, + { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, + { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, + { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, + { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, + { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, ] [[package]] @@ -1852,21 +1976,21 @@ dependencies = [ { name = "mypy-extensions" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717, upload-time = "2025-02-05T03:50:34.655Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } wheels = [ - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338, upload-time = "2025-02-05T03:50:17.287Z" }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540, upload-time = "2025-02-05T03:49:51.21Z" }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051, upload-time = "2025-02-05T03:50:20.885Z" }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751, upload-time = "2025-02-05T03:49:42.408Z" }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783, upload-time = "2025-02-05T03:49:07.707Z" }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618, upload-time = "2025-02-05T03:49:54.581Z" }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981, upload-time = "2025-02-05T03:50:28.25Z" }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175, upload-time = "2025-02-05T03:50:13.411Z" }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675, upload-time = "2025-02-05T03:50:31.421Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020, upload-time = "2025-02-05T03:48:48.705Z" }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582, upload-time = "2025-02-05T03:49:03.628Z" }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614, upload-time = "2025-02-05T03:50:00.313Z" }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777, upload-time = "2025-02-05T03:50:08.348Z" }, + { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, + { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, + { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, + { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, + { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, + { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, + { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, + { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, + { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, + { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, + { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, + { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, + { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, ] [[package]] @@ -1876,18 +2000,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions", marker = "python_full_version < '3.12'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/73/97/a479bc9405da1d6ae4d2bc88965e76e4d3c8c1c83188eb03c7a49d902826/mypy_boto3_glue-1.38.22.tar.gz", hash = "sha256:a9c529fafaaa9845d39c3204b3fb6cbbb633fa747faf6a084a2b2a381ef12a2b", size = 122519, upload-time = "2025-05-22T19:27:07.452Z" } +sdist = { url = "https://files.pythonhosted.org/packages/73/97/a479bc9405da1d6ae4d2bc88965e76e4d3c8c1c83188eb03c7a49d902826/mypy_boto3_glue-1.38.22.tar.gz", hash = "sha256:a9c529fafaaa9845d39c3204b3fb6cbbb633fa747faf6a084a2b2a381ef12a2b", size = 122519 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/64/33ff3fca5302bb54860d0ddd9ef89c0a2cfea80bd6d1336f10fd4857a1b7/mypy_boto3_glue-1.38.22-py3-none-any.whl", hash = "sha256:4fe34c858cbee41e8ad30382305c01b0dd9c1da4c84f894860b9249ddabb4a58", size = 130042, upload-time = "2025-05-22T19:26:59.181Z" }, + { url = "https://files.pythonhosted.org/packages/e6/64/33ff3fca5302bb54860d0ddd9ef89c0a2cfea80bd6d1336f10fd4857a1b7/mypy_boto3_glue-1.38.22-py3-none-any.whl", hash = "sha256:4fe34c858cbee41e8ad30382305c01b0dd9c1da4c84f894860b9249ddabb4a58", size = 130042 }, ] [[package]] name = "mypy-extensions" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343, upload-time = "2025-04-22T14:54:24.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963, upload-time = "2025-04-22T14:54:22.983Z" }, + { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, ] [[package]] @@ -1900,9 +2024,9 @@ dependencies = [ { name = "nbformat" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424, upload-time = "2024-12-19T10:32:27.164Z" } +sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434, upload-time = "2024-12-19T10:32:24.139Z" }, + { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, ] [[package]] @@ -1925,9 +2049,9 @@ dependencies = [ { name = "pygments" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715, upload-time = "2025-01-28T09:29:14.724Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525, upload-time = "2025-01-28T09:29:12.551Z" }, + { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, ] [[package]] @@ -1940,18 +2064,18 @@ dependencies = [ { name = "jupyter-core" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749, upload-time = "2024-04-04T11:20:37.371Z" } +sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454, upload-time = "2024-04-04T11:20:34.895Z" }, + { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, ] [[package]] name = "nest-asyncio" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/83/f8/51569ac65d696c8ecbee95938f89d4abf00f47d58d48f6fbabfe8f0baefe/nest_asyncio-1.6.0.tar.gz", hash = "sha256:6f172d5449aca15afd6c646851f4e31e02c598d553a667e38cafa997cfec55fe", size = 7418, upload-time = "2024-01-21T14:25:19.227Z" } +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, upload-time = "2024-01-21T14:25:17.223Z" }, + { url = "https://files.pythonhosted.org/packages/a0/c4/c2971a3ba4c6103a3d10c4b0f24f461ddc027f0f09763220cf35ca1401b3/nest_asyncio-1.6.0-py3-none-any.whl", hash = "sha256:87af6efd6b5e897c81050477ef65c62e2b2f35d51703cae01aff2905b1852e1c", size = 5195 }, ] [[package]] @@ -1963,27 +2087,36 @@ dependencies = [ { name = "cftime" }, { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064, upload-time = "2024-10-22T19:01:25.521Z" } +sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078, upload-time = "2024-10-22T19:00:39.93Z" }, - { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104, upload-time = "2024-10-22T19:00:41.683Z" }, - { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498, upload-time = "2024-10-22T19:00:43.822Z" }, - { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073, upload-time = "2024-10-22T19:00:45.925Z" }, - { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215, upload-time = "2024-10-22T19:00:48.101Z" }, - { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127, upload-time = "2024-10-22T19:00:50.613Z" }, - { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781, upload-time = "2024-10-22T19:00:52.383Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415, upload-time = "2024-10-22T19:00:54.412Z" }, - { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579, upload-time = "2024-10-22T19:00:56.594Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523, upload-time = "2024-10-22T19:00:58.97Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, + { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, + { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, + { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, + { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, + { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, + { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, + { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, + { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, + { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, +] + +[[package]] +name = "networkx" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406 }, ] [[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, upload-time = "2024-06-04T18:44:11.171Z" } +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, upload-time = "2024-06-04T18:44:08.352Z" }, + { url = "https://files.pythonhosted.org/packages/d2/1d/1b658dbd2b9fa9c4c9f32accbfc0205d532c8c6194dc0f2a4c0428e7128a/nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9", size = 22314 }, ] [[package]] @@ -1993,9 +2126,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "jupyter-server" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167, upload-time = "2024-02-14T23:35:18.353Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307, upload-time = "2024-02-14T23:35:16.286Z" }, + { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, ] [[package]] @@ -2006,18 +2139,18 @@ dependencies = [ { name = "numpy" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134, upload-time = "2025-05-22T13:33:04.098Z" } +sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980, upload-time = "2025-05-22T13:32:37.718Z" }, - { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826, upload-time = "2025-05-22T13:32:39.737Z" }, - { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684, upload-time = "2025-05-22T13:32:41.252Z" }, - { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927, upload-time = "2025-05-22T13:32:42.905Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259, upload-time = "2025-05-22T13:32:45.398Z" }, - { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434, upload-time = "2025-05-22T13:32:47.26Z" }, - { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402, upload-time = "2025-05-22T13:32:48.574Z" }, - { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455, upload-time = "2025-05-22T13:32:50.052Z" }, - { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711, upload-time = "2025-05-22T13:32:52.198Z" }, - { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701, upload-time = "2025-05-22T13:32:54.28Z" }, + { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, + { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, + { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, + { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, + { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, + { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, + { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, + { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, + { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, + { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, ] [package.optional-dependencies] @@ -2029,55 +2162,55 @@ crc32c = [ name = "numpy" version = "2.2.6" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, ] [[package]] name = "overrides" version = "7.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812, upload-time = "2024-01-27T21:01:33.423Z" } +sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832, upload-time = "2024-01-27T21:01:31.393Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, ] [[package]] name = "packaging" version = "25.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, ] [[package]] name = "paginate" version = "0.5.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252, upload-time = "2024-08-25T14:17:24.139Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746, upload-time = "2024-08-25T14:17:22.55Z" }, + { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, ] [[package]] @@ -2090,40 +2223,40 @@ dependencies = [ { 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, upload-time = "2024-09-20T13:10:04.827Z" } +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, upload-time = "2024-09-20T13:08:56.254Z" }, - { 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, upload-time = "2024-09-20T13:08:58.645Z" }, - { 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, upload-time = "2024-09-20T19:01:57.571Z" }, - { 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, upload-time = "2024-09-20T13:09:01.501Z" }, - { 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, upload-time = "2024-09-20T19:02:00.678Z" }, - { 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, upload-time = "2024-09-20T13:09:04.105Z" }, - { url = "https://files.pythonhosted.org/packages/ed/8c/87ddf1fcb55d11f9f847e3c69bb1c6f8e46e2f40ab1a2d2abadb2401b007/pandas-2.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:3fc6873a41186404dad67245896a6e440baacc92f5b716ccd1bc9ed2995ab2c5", size = 11617166, upload-time = "2024-09-20T13:09:06.917Z" }, - { 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, upload-time = "2024-09-20T13:09:09.655Z" }, - { 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, upload-time = "2024-09-20T13:09:14.718Z" }, - { 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, upload-time = "2024-09-20T19:02:03.88Z" }, - { 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, upload-time = "2024-09-20T13:09:17.621Z" }, - { 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, upload-time = "2024-09-20T19:02:07.094Z" }, - { 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, upload-time = "2024-09-20T13:09:20.474Z" }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248, upload-time = "2024-09-20T13:09:23.137Z" }, + { 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 }, ] [[package]] name = "pandocfilters" version = "1.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454, upload-time = "2024-01-18T20:08:13.726Z" } +sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663, upload-time = "2024-01-18T20:08:11.28Z" }, + { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, ] [[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, upload-time = "2024-04-05T09:43:55.897Z" } +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, upload-time = "2024-04-05T09:43:53.299Z" }, + { url = "https://files.pythonhosted.org/packages/c6/ac/dac4a63f978e4dcb3c6d3a78c4d8e0192a113d288502a1216950c41b1027/parso-0.8.4-py2.py3-none-any.whl", hash = "sha256:a418670a20291dacd2dddc80c377c5c3791378ee1e8d12bffc35420643d43f18", size = 103650 }, ] [[package]] @@ -2134,18 +2267,18 @@ 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, upload-time = "2024-05-06T19:51:41.945Z" } +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, upload-time = "2024-05-06T19:51:39.271Z" }, + { url = "https://files.pythonhosted.org/packages/71/e7/40fb618334dcdf7c5a316c0e7343c5cd82d3d866edc100d98e29bc945ecd/partd-1.4.2-py3-none-any.whl", hash = "sha256:978e4ac767ec4ba5b86c6eaa52e5a2a3bc748a2ca839e8cc798f1cc6ce6efb0f", size = 18905 }, ] [[package]] name = "pathspec" version = "0.12.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043, upload-time = "2023-12-10T22:30:45Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191, upload-time = "2023-12-10T22:30:43.14Z" }, + { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, ] [[package]] @@ -2155,64 +2288,78 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ptyprocess" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450, upload-time = "2023-11-25T09:07:26.339Z" } +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, upload-time = "2023-11-25T06:56:14.81Z" }, + { 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.2.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707, upload-time = "2025-04-12T17:50:03.289Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450, upload-time = "2025-04-12T17:47:37.135Z" }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550, upload-time = "2025-04-12T17:47:39.345Z" }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018, upload-time = "2025-04-12T17:47:41.128Z" }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006, upload-time = "2025-04-12T17:47:42.912Z" }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773, upload-time = "2025-04-12T17:47:44.611Z" }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069, upload-time = "2025-04-12T17:47:46.46Z" }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460, upload-time = "2025-04-12T17:47:49.255Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304, upload-time = "2025-04-12T17:47:51.067Z" }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809, upload-time = "2025-04-12T17:47:54.425Z" }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338, upload-time = "2025-04-12T17:47:56.535Z" }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918, upload-time = "2025-04-12T17:47:58.217Z" }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185, upload-time = "2025-04-12T17:48:00.417Z" }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306, upload-time = "2025-04-12T17:48:02.391Z" }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121, upload-time = "2025-04-12T17:48:04.554Z" }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707, upload-time = "2025-04-12T17:48:06.831Z" }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921, upload-time = "2025-04-12T17:48:09.229Z" }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523, upload-time = "2025-04-12T17:48:11.631Z" }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836, upload-time = "2025-04-12T17:48:13.592Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390, upload-time = "2025-04-12T17:48:15.938Z" }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309, upload-time = "2025-04-12T17:48:17.885Z" }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768, upload-time = "2025-04-12T17:48:19.655Z" }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087, upload-time = "2025-04-12T17:48:21.991Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734, upload-time = "2025-04-12T17:49:46.789Z" }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841, upload-time = "2025-04-12T17:49:48.812Z" }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470, upload-time = "2025-04-12T17:49:50.831Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013, upload-time = "2025-04-12T17:49:53.278Z" }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165, upload-time = "2025-04-12T17:49:55.164Z" }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586, upload-time = "2025-04-12T17:49:57.171Z" }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751, upload-time = "2025-04-12T17:49:59.628Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, + { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, + { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, + { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, + { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, + { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, + { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, + { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, + { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, + { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, + { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, + { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, + { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, + { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, + { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, + { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, + { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, + { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, + { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, + { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, + { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, + { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, + { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, + { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, + { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, + { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, + { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, + { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, + { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, ] [[package]] name = "platformdirs" version = "4.3.8" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362, upload-time = "2025-05-07T22:47:42.121Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567, upload-time = "2025-05-07T22:47:40.376Z" }, + { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, ] [[package]] name = "pluggy" version = "1.6.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, +] + +[[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]] @@ -2226,18 +2373,18 @@ dependencies = [ { name = "pyyaml" }, { name = "virtualenv" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424, upload-time = "2025-03-18T21:35:20.987Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707, upload-time = "2025-03-18T21:35:19.343Z" }, + { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, ] [[package]] name = "prometheus-client" version = "0.22.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443, upload-time = "2025-05-16T20:50:18.333Z" } +sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658, upload-time = "2025-05-16T20:50:16.978Z" }, + { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, ] [[package]] @@ -2247,118 +2394,118 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "wcwidth" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940, upload-time = "2025-04-15T09:18:47.731Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810, upload-time = "2025-04-15T09:18:44.753Z" }, + { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, ] [[package]] name = "propcache" version = "0.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651, upload-time = "2025-03-26T03:06:12.05Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243, upload-time = "2025-03-26T03:04:01.912Z" }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503, upload-time = "2025-03-26T03:04:03.704Z" }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934, upload-time = "2025-03-26T03:04:05.257Z" }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633, upload-time = "2025-03-26T03:04:07.044Z" }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124, upload-time = "2025-03-26T03:04:08.676Z" }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283, upload-time = "2025-03-26T03:04:10.172Z" }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498, upload-time = "2025-03-26T03:04:11.616Z" }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486, upload-time = "2025-03-26T03:04:13.102Z" }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675, upload-time = "2025-03-26T03:04:14.658Z" }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727, upload-time = "2025-03-26T03:04:16.207Z" }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878, upload-time = "2025-03-26T03:04:18.11Z" }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558, upload-time = "2025-03-26T03:04:19.562Z" }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754, upload-time = "2025-03-26T03:04:21.065Z" }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088, upload-time = "2025-03-26T03:04:22.718Z" }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859, upload-time = "2025-03-26T03:04:24.039Z" }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153, upload-time = "2025-03-26T03:04:25.211Z" }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430, upload-time = "2025-03-26T03:04:26.436Z" }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637, upload-time = "2025-03-26T03:04:27.932Z" }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123, upload-time = "2025-03-26T03:04:30.659Z" }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031, upload-time = "2025-03-26T03:04:31.977Z" }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100, upload-time = "2025-03-26T03:04:33.45Z" }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170, upload-time = "2025-03-26T03:04:35.542Z" }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000, upload-time = "2025-03-26T03:04:37.501Z" }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262, upload-time = "2025-03-26T03:04:39.532Z" }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772, upload-time = "2025-03-26T03:04:41.109Z" }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133, upload-time = "2025-03-26T03:04:42.544Z" }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741, upload-time = "2025-03-26T03:04:44.06Z" }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047, upload-time = "2025-03-26T03:04:45.983Z" }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467, upload-time = "2025-03-26T03:04:47.699Z" }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022, upload-time = "2025-03-26T03:04:49.195Z" }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647, upload-time = "2025-03-26T03:04:50.595Z" }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784, upload-time = "2025-03-26T03:04:51.791Z" }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376, upload-time = "2025-03-26T03:06:10.5Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, + { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, + { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, + { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, + { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, + { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, + { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, + { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, + { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, + { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, + { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, + { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, + { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, + { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, + { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, + { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, + { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, + { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, + { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, + { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, + { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, + { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, + { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, + { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, + { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, + { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, + { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, + { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, + { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, + { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, + { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, + { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, + { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, ] [[package]] name = "psutil" version = "7.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003, upload-time = "2025-02-13T21:54:07.946Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051, upload-time = "2025-02-13T21:54:12.36Z" }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535, upload-time = "2025-02-13T21:54:16.07Z" }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004, upload-time = "2025-02-13T21:54:18.662Z" }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986, upload-time = "2025-02-13T21:54:21.811Z" }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544, upload-time = "2025-02-13T21:54:24.68Z" }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053, upload-time = "2025-02-13T21:54:34.31Z" }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885, upload-time = "2025-02-13T21:54:37.486Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, + { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, + { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, + { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, + { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, + { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, + { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, ] [[package]] name = "ptyprocess" version = "0.7.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/e5/16ff212c1e452235a90aeb09066144d0c5a6a8c0834397e03f5224495c4e/ptyprocess-0.7.0.tar.gz", hash = "sha256:5c5d0a3b48ceee0b48485e0c26037c0acd7d29765ca3fbb5cb3831d347423220", size = 70762, upload-time = "2020-12-28T15:15:30.155Z" } +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, upload-time = "2020-12-28T15:15:28.35Z" }, + { 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, upload-time = "2024-07-21T12:58:21.801Z" } +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, upload-time = "2024-07-21T12:58:20.04Z" }, + { 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 = "pyarrow" version = "20.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187, upload-time = "2025-04-27T12:34:23.264Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035, upload-time = "2025-04-27T12:28:40.78Z" }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552, upload-time = "2025-04-27T12:28:47.051Z" }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704, upload-time = "2025-04-27T12:28:55.064Z" }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836, upload-time = "2025-04-27T12:29:02.13Z" }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789, upload-time = "2025-04-27T12:29:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124, upload-time = "2025-04-27T12:29:17.187Z" }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060, upload-time = "2025-04-27T12:29:24.253Z" }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640, upload-time = "2025-04-27T12:29:32.782Z" }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491, upload-time = "2025-04-27T12:29:38.464Z" }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067, upload-time = "2025-04-27T12:29:44.384Z" }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128, upload-time = "2025-04-27T12:29:52.038Z" }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890, upload-time = "2025-04-27T12:29:59.452Z" }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775, upload-time = "2025-04-27T12:30:06.875Z" }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231, upload-time = "2025-04-27T12:30:13.954Z" }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639, upload-time = "2025-04-27T12:30:21.949Z" }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549, upload-time = "2025-04-27T12:30:29.551Z" }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216, upload-time = "2025-04-27T12:30:36.977Z" }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496, upload-time = "2025-04-27T12:30:42.809Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, + { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, + { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, + { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, + { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, + { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, + { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, + { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, + { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, + { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, + { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, + { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, + { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, + { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, + { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, + { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, + { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, + { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, ] [[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, upload-time = "2024-03-30T13:22:22.564Z" } +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, upload-time = "2024-03-30T13:22:20.476Z" }, + { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] [[package]] @@ -2371,9 +2518,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102, upload-time = "2025-05-22T21:18:08.761Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229, upload-time = "2025-05-22T21:18:06.329Z" }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] @@ -2383,45 +2530,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195, upload-time = "2025-04-23T18:33:52.104Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584, upload-time = "2025-04-23T18:31:03.106Z" }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071, upload-time = "2025-04-23T18:31:04.621Z" }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823, upload-time = "2025-04-23T18:31:06.377Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792, upload-time = "2025-04-23T18:31:07.93Z" }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338, upload-time = "2025-04-23T18:31:09.283Z" }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998, upload-time = "2025-04-23T18:31:11.7Z" }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200, upload-time = "2025-04-23T18:31:13.536Z" }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890, upload-time = "2025-04-23T18:31:15.011Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359, upload-time = "2025-04-23T18:31:16.393Z" }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883, upload-time = "2025-04-23T18:31:17.892Z" }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074, upload-time = "2025-04-23T18:31:19.205Z" }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538, upload-time = "2025-04-23T18:31:20.541Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909, upload-time = "2025-04-23T18:31:22.371Z" }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786, upload-time = "2025-04-23T18:31:24.161Z" }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000, upload-time = "2025-04-23T18:31:25.863Z" }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996, upload-time = "2025-04-23T18:31:27.341Z" }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957, upload-time = "2025-04-23T18:31:28.956Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199, upload-time = "2025-04-23T18:31:31.025Z" }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296, upload-time = "2025-04-23T18:31:32.514Z" }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109, upload-time = "2025-04-23T18:31:33.958Z" }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028, upload-time = "2025-04-23T18:31:39.095Z" }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044, upload-time = "2025-04-23T18:31:41.034Z" }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881, upload-time = "2025-04-23T18:31:42.757Z" }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034, upload-time = "2025-04-23T18:31:44.304Z" }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187, upload-time = "2025-04-23T18:31:45.891Z" }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628, upload-time = "2025-04-23T18:31:47.819Z" }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866, upload-time = "2025-04-23T18:31:49.635Z" }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894, upload-time = "2025-04-23T18:31:51.609Z" }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200, upload-time = "2025-04-23T18:33:14.199Z" }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123, upload-time = "2025-04-23T18:33:16.555Z" }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852, upload-time = "2025-04-23T18:33:18.513Z" }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484, upload-time = "2025-04-23T18:33:20.475Z" }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896, upload-time = "2025-04-23T18:33:22.501Z" }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475, upload-time = "2025-04-23T18:33:24.528Z" }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013, upload-time = "2025-04-23T18:33:26.621Z" }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715, upload-time = "2025-04-23T18:33:28.656Z" }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757, upload-time = "2025-04-23T18:33:30.645Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, + { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, + { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, + { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, + { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, + { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, + { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, + { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, + { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, + { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, + { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, + { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, + { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, + { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, + { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, + { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, + { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, + { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, + { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, + { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, + { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, + { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, + { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, + { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, + { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, + { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, + { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, + { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, + { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, + { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, + { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, + { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, + { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, + { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, + { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, + { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, ] [[package]] @@ -2433,18 +2580,18 @@ dependencies = [ { name = "python-dotenv" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234, upload-time = "2025-04-18T16:44:48.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356, upload-time = "2025-04-18T16:44:46.617Z" }, + { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, ] [[package]] name = "pygments" version = "2.19.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581, upload-time = "2025-01-06T17:26:30.443Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293, upload-time = "2025-01-06T17:26:25.553Z" }, + { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, ] [[package]] @@ -2464,18 +2611,18 @@ dependencies = [ { name = "strictyaml" }, { name = "tenacity" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/bd/6a/6c1ac381ff0b8e03a9abc2f05722f6002d7452a2c05118697b3f3910e171/pyiceberg-0.9.1.tar.gz", hash = "sha256:3634134ce33859a441768b39df179b2c6f3de2bbbf506622884f553b013ee799", size = 617629, upload-time = "2025-04-30T14:59:34.306Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bd/6a/6c1ac381ff0b8e03a9abc2f05722f6002d7452a2c05118697b3f3910e171/pyiceberg-0.9.1.tar.gz", hash = "sha256:3634134ce33859a441768b39df179b2c6f3de2bbbf506622884f553b013ee799", size = 617629 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/75/c8b4ebba7d345b5e736ebf4976121b97dd7091dcad401a17ca57152704c5/pyiceberg-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e75c502dd56ac3d77036ce8a3b2566348da5ff4367c7c671981616ef6dcc883", size = 566274, upload-time = "2025-04-30T14:59:00.626Z" }, - { url = "https://files.pythonhosted.org/packages/e0/a0/9494c7930e5e4dc951d95abba584d8ffdb7403368398796ede21ff25c26f/pyiceberg-0.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0a8189c9b3ba81dd12493d6bb874a656a4d4909904552b97a629d1d43b3a0e90", size = 560157, upload-time = "2025-04-30T14:59:02.082Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d4/351776b1ae83de187d7cf37b100f4f124c7a71e35337182d3aef308156d1/pyiceberg-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c03065d5c5b704444ab8fb18cdd232ec43994db95b9e53444008ebc2cf9dc2c", size = 1052290, upload-time = "2025-04-30T14:59:03.232Z" }, - { url = "https://files.pythonhosted.org/packages/40/17/d8fea681afb52f20bf6a640f9044dcf621a47165f67cc5320bf3c6e82e4e/pyiceberg-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:93f2586a5da737de6e4643bf096a01772f068d1eedb7ffde6b36c60b6b9e6bd3", size = 1047503, upload-time = "2025-04-30T14:59:04.38Z" }, - { url = "https://files.pythonhosted.org/packages/d0/e0/d173fc2aa8dc252d7aac71703ba2c0491e4988b3a160cf5abb531cfb9086/pyiceberg-0.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:94e45c10051110ba7a43b85a1f0a680b4a31d1d6cee593c8e62e14d22d18c47d", size = 559491, upload-time = "2025-04-30T14:59:05.615Z" }, - { url = "https://files.pythonhosted.org/packages/52/26/77983c2884b4a5f13f8a35e5c5e762ae699f6c511efd16730ab883000c1b/pyiceberg-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b8a958e3bbe919026533cee1f0fb6b7040928fce8d42c2ecea228de7c17578fa", size = 605755, upload-time = "2025-04-30T14:59:07.087Z" }, - { url = "https://files.pythonhosted.org/packages/6d/67/e6ea7fcc43aebc85aea5a67a69d01c9015283478061c3121b6b8aa158ce4/pyiceberg-0.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7e956b35c6822600c45fd8f3ea8cfea328cc406fefa534afeb6fdb325d05406", size = 597325, upload-time = "2025-04-30T14:59:08.644Z" }, - { url = "https://files.pythonhosted.org/packages/7f/cf/178a9f63fac1bfdd13bc85169e7ab903955d082e2cd80507b1921a6f64dc/pyiceberg-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4e585164d7d86f5c9a609a1bc2abeae2f0ea0680a11a2064d3a945866b5311", size = 1277399, upload-time = "2025-04-30T14:59:10.193Z" }, - { url = "https://files.pythonhosted.org/packages/d1/6b/78d1739eb1d5b18529ee438aed75dac3e0b246f5e4d800931f9d1e37cda2/pyiceberg-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fee08dac30e8524526f7d18468f9670f8606905b850b261314c597c6633f3b4", size = 1269083, upload-time = "2025-04-30T14:59:11.964Z" }, - { url = "https://files.pythonhosted.org/packages/67/69/c0087d19c8d8e8530acee3ba485d54aedeebf2963784a16692ca4b439566/pyiceberg-0.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:124793c54a0c2fb5ac4ab19c38da116c068e277c85cbaa7e4064e635a70b595e", size = 595512, upload-time = "2025-04-30T14:59:14.464Z" }, + { url = "https://files.pythonhosted.org/packages/f6/75/c8b4ebba7d345b5e736ebf4976121b97dd7091dcad401a17ca57152704c5/pyiceberg-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e75c502dd56ac3d77036ce8a3b2566348da5ff4367c7c671981616ef6dcc883", size = 566274 }, + { url = "https://files.pythonhosted.org/packages/e0/a0/9494c7930e5e4dc951d95abba584d8ffdb7403368398796ede21ff25c26f/pyiceberg-0.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0a8189c9b3ba81dd12493d6bb874a656a4d4909904552b97a629d1d43b3a0e90", size = 560157 }, + { url = "https://files.pythonhosted.org/packages/4a/d4/351776b1ae83de187d7cf37b100f4f124c7a71e35337182d3aef308156d1/pyiceberg-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c03065d5c5b704444ab8fb18cdd232ec43994db95b9e53444008ebc2cf9dc2c", size = 1052290 }, + { url = "https://files.pythonhosted.org/packages/40/17/d8fea681afb52f20bf6a640f9044dcf621a47165f67cc5320bf3c6e82e4e/pyiceberg-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:93f2586a5da737de6e4643bf096a01772f068d1eedb7ffde6b36c60b6b9e6bd3", size = 1047503 }, + { url = "https://files.pythonhosted.org/packages/d0/e0/d173fc2aa8dc252d7aac71703ba2c0491e4988b3a160cf5abb531cfb9086/pyiceberg-0.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:94e45c10051110ba7a43b85a1f0a680b4a31d1d6cee593c8e62e14d22d18c47d", size = 559491 }, + { url = "https://files.pythonhosted.org/packages/52/26/77983c2884b4a5f13f8a35e5c5e762ae699f6c511efd16730ab883000c1b/pyiceberg-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b8a958e3bbe919026533cee1f0fb6b7040928fce8d42c2ecea228de7c17578fa", size = 605755 }, + { url = "https://files.pythonhosted.org/packages/6d/67/e6ea7fcc43aebc85aea5a67a69d01c9015283478061c3121b6b8aa158ce4/pyiceberg-0.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7e956b35c6822600c45fd8f3ea8cfea328cc406fefa534afeb6fdb325d05406", size = 597325 }, + { url = "https://files.pythonhosted.org/packages/7f/cf/178a9f63fac1bfdd13bc85169e7ab903955d082e2cd80507b1921a6f64dc/pyiceberg-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4e585164d7d86f5c9a609a1bc2abeae2f0ea0680a11a2064d3a945866b5311", size = 1277399 }, + { url = "https://files.pythonhosted.org/packages/d1/6b/78d1739eb1d5b18529ee438aed75dac3e0b246f5e4d800931f9d1e37cda2/pyiceberg-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fee08dac30e8524526f7d18468f9670f8606905b850b261314c597c6633f3b4", size = 1269083 }, + { url = "https://files.pythonhosted.org/packages/67/69/c0087d19c8d8e8530acee3ba485d54aedeebf2963784a16692ca4b439566/pyiceberg-0.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:124793c54a0c2fb5ac4ab19c38da116c068e277c85cbaa7e4064e635a70b595e", size = 595512 }, ] [package.optional-dependencies] @@ -2486,6 +2633,9 @@ glue = [ s3fs = [ { name = "s3fs" }, ] +sql-sqlite = [ + { name = "sqlalchemy" }, +] [[package]] name = "pymdown-extensions" @@ -2495,9 +2645,9 @@ dependencies = [ { name = "markdown" }, { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320, upload-time = "2025-04-27T23:48:29.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845, upload-time = "2025-04-27T23:48:27.359Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, ] [[package]] @@ -2509,29 +2659,29 @@ dependencies = [ { name = "numpy" }, { name = "packaging" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915, upload-time = "2025-05-08T15:20:17.843Z" } +sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247, upload-time = "2025-05-08T15:18:52.632Z" }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449, upload-time = "2025-05-08T15:18:55.461Z" }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276, upload-time = "2025-05-08T15:18:59.217Z" }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289, upload-time = "2025-05-08T15:19:02.592Z" }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581, upload-time = "2025-05-08T15:19:05.843Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064, upload-time = "2025-05-08T15:19:09.446Z" }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944, upload-time = "2025-05-08T15:19:12.359Z" }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571, upload-time = "2025-05-08T15:19:16.541Z" }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355, upload-time = "2025-05-08T15:19:20.449Z" }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521, upload-time = "2025-05-08T15:19:23.863Z" }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210, upload-time = "2025-05-08T15:19:32.185Z" }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401, upload-time = "2025-05-08T15:19:35.482Z" }, + { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, + { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, + { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, + { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, + { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, + { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, + { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, + { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, + { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, + { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, + { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, + { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, ] [[package]] name = "pyparsing" version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608, upload-time = "2025-03-25T05:01:28.114Z" } +sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120, upload-time = "2025-03-25T05:01:24.908Z" }, + { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, ] [[package]] @@ -2541,24 +2691,24 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339, upload-time = "2025-02-16T04:28:46.621Z" } +sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315, upload-time = "2025-02-16T04:27:44.539Z" }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267, upload-time = "2025-02-16T04:27:47.019Z" }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510, upload-time = "2025-02-16T04:27:49.239Z" }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619, upload-time = "2025-02-16T04:27:52.65Z" }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755, upload-time = "2025-02-16T04:27:55.239Z" }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970, upload-time = "2025-02-16T04:27:58.343Z" }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295, upload-time = "2025-02-16T04:28:01.712Z" }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871, upload-time = "2025-02-16T04:28:04.988Z" }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087, upload-time = "2025-02-16T04:28:09.036Z" }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628, upload-time = "2025-02-16T04:28:10.944Z" }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415, upload-time = "2025-02-16T04:28:13.342Z" }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447, upload-time = "2025-02-16T04:28:15.818Z" }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317, upload-time = "2025-02-16T04:28:18.338Z" }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259, upload-time = "2025-02-16T04:28:20.822Z" }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914, upload-time = "2025-02-16T04:28:23.303Z" }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196, upload-time = "2025-02-16T04:28:25.227Z" }, + { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, + { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, + { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, + { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, + { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, + { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, + { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, + { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, + { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, + { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, + { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, + { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, + { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, + { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, + { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, + { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, ] [[package]] @@ -2571,9 +2721,9 @@ dependencies = [ { name = "packaging" }, { name = "pluggy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, ] [[package]] @@ -2583,45 +2733,45 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/66/c0/0c8b6ad9f17a802ee498c46e004a0eb49bc148f2fd230864601a86dcf6db/python-dateutil-2.9.0.post0.tar.gz", hash = "sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3", size = 342432, upload-time = "2024-03-01T18:36:20.211Z" } +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, upload-time = "2024-03-01T18:36:18.57Z" }, + { 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-dotenv" version = "1.1.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920, upload-time = "2025-03-25T10:14:56.835Z" } +sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256, upload-time = "2025-03-25T10:14:55.034Z" }, + { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, ] [[package]] name = "python-json-logger" version = "3.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642, upload-time = "2025-03-07T07:08:27.301Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163, upload-time = "2025-03-07T07:08:25.627Z" }, + { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, ] [[package]] name = "python-multipart" version = "0.0.20" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158, upload-time = "2024-12-16T19:45:46.972Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 } wheels = [ - { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546, upload-time = "2024-12-16T19:45:44.423Z" }, + { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 }, ] [[package]] name = "pytz" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884, upload-time = "2025-03-25T02:25:00.538Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225, upload-time = "2025-03-25T02:24:58.468Z" }, + { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, ] [[package]] @@ -2629,48 +2779,48 @@ name = "pywin32" version = "310" source = { registry = "https://pypi.org/simple" } wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284, upload-time = "2025-03-17T00:55:53.124Z" }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748, upload-time = "2025-03-17T00:55:55.203Z" }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941, upload-time = "2025-03-17T00:55:57.048Z" }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239, upload-time = "2025-03-17T00:55:58.807Z" }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839, upload-time = "2025-03-17T00:56:00.8Z" }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470, upload-time = "2025-03-17T00:56:02.601Z" }, + { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, + { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, + { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, + { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, + { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, + { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, ] [[package]] name = "pywinpty" version = "2.0.15" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017, upload-time = "2025-02-03T21:53:23.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249, upload-time = "2025-02-03T21:55:47.114Z" }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243, upload-time = "2025-02-03T21:56:52.476Z" }, + { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, + { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, ] [[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, upload-time = "2024-08-06T20:33:50.674Z" } -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, upload-time = "2024-08-06T20:32:03.408Z" }, - { 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, upload-time = "2024-08-06T20:32:04.926Z" }, - { 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, upload-time = "2024-08-06T20:32:06.459Z" }, - { 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, upload-time = "2024-08-06T20:32:08.338Z" }, - { 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, upload-time = "2024-08-06T20:32:14.124Z" }, - { 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, upload-time = "2024-08-06T20:32:16.17Z" }, - { 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, upload-time = "2024-08-06T20:32:18.555Z" }, - { url = "https://files.pythonhosted.org/packages/22/5f/956f0f9fc65223a58fbc14459bf34b4cc48dec52e00535c79b8db361aabd/PyYAML-6.0.2-cp311-cp311-win32.whl", hash = "sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5", size = 143850, upload-time = "2024-08-06T20:32:19.889Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/8da0bbe2ab9dcdd11f4f4557ccaf95c10b9811b13ecced089d43ce59c3c8/PyYAML-6.0.2-cp311-cp311-win_amd64.whl", hash = "sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44", size = 161980, upload-time = "2024-08-06T20:32:21.273Z" }, - { 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, upload-time = "2024-08-06T20:32:25.131Z" }, - { 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, upload-time = "2024-08-06T20:32:26.511Z" }, - { 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, upload-time = "2024-08-06T20:32:28.363Z" }, - { 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, upload-time = "2024-08-06T20:32:30.058Z" }, - { 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, upload-time = "2024-08-06T20:32:31.881Z" }, - { 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, upload-time = "2024-08-06T20:32:37.083Z" }, - { 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, upload-time = "2024-08-06T20:32:38.898Z" }, - { url = "https://files.pythonhosted.org/packages/df/d1/f5a275fdb252768b7a11ec63585bc38d0e87c9e05668a139fea92b80634c/PyYAML-6.0.2-cp312-cp312-win32.whl", hash = "sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4", size = 140591, upload-time = "2024-08-06T20:32:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/0c/e8/4f648c598b17c3d06e8753d7d13d57542b30d56e6c2dedf9c331ae56312e/PyYAML-6.0.2-cp312-cp312-win_amd64.whl", hash = "sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8", size = 156338, upload-time = "2024-08-06T20:32:41.93Z" }, +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 }, ] [[package]] @@ -2680,9 +2830,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737, upload-time = "2025-05-13T15:24:01.64Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722, upload-time = "2025-05-13T15:23:59.629Z" }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] @@ -2692,35 +2842,35 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "cffi", marker = "implementation_name == 'pypy'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293, upload-time = "2025-04-04T12:05:44.049Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723, upload-time = "2025-04-04T12:03:24.358Z" }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645, upload-time = "2025-04-04T12:03:25.693Z" }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133, upload-time = "2025-04-04T12:03:27.625Z" }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428, upload-time = "2025-04-04T12:03:29.004Z" }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409, upload-time = "2025-04-04T12:03:31.032Z" }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007, upload-time = "2025-04-04T12:03:32.687Z" }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599, upload-time = "2025-04-04T12:03:34.084Z" }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546, upload-time = "2025-04-04T12:03:35.478Z" }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247, upload-time = "2025-04-04T12:03:36.846Z" }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727, upload-time = "2025-04-04T12:03:38.578Z" }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942, upload-time = "2025-04-04T12:03:40.143Z" }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586, upload-time = "2025-04-04T12:03:41.954Z" }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880, upload-time = "2025-04-04T12:03:43.45Z" }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216, upload-time = "2025-04-04T12:03:45.572Z" }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814, upload-time = "2025-04-04T12:03:47.188Z" }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889, upload-time = "2025-04-04T12:03:49.223Z" }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153, upload-time = "2025-04-04T12:03:50.591Z" }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352, upload-time = "2025-04-04T12:03:52.473Z" }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834, upload-time = "2025-04-04T12:03:54Z" }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992, upload-time = "2025-04-04T12:03:55.815Z" }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466, upload-time = "2025-04-04T12:03:57.231Z" }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342, upload-time = "2025-04-04T12:03:59.218Z" }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405, upload-time = "2025-04-04T12:05:13.3Z" }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578, upload-time = "2025-04-04T12:05:15.36Z" }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248, upload-time = "2025-04-04T12:05:17.376Z" }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757, upload-time = "2025-04-04T12:05:19.19Z" }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371, upload-time = "2025-04-04T12:05:20.702Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, + { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, + { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, + { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, + { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, + { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, + { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, + { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, + { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, + { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, + { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, + { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, + { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, + { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, + { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, + { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, + { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, + { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, + { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, + { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, + { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, + { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, + { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, + { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, + { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, + { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, + { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, ] [[package]] @@ -2737,16 +2887,16 @@ dependencies = [ { name = "numpy" }, { name = "pyparsing" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990, upload-time = "2024-12-02T14:49:25.571Z" } +sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767, upload-time = "2024-12-02T14:48:38.794Z" }, - { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975, upload-time = "2024-12-02T14:48:41.895Z" }, - { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391, upload-time = "2024-12-02T14:48:44.447Z" }, - { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478, upload-time = "2024-12-02T14:48:46.893Z" }, - { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543, upload-time = "2024-12-02T14:48:49.757Z" }, - { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924, upload-time = "2024-12-02T14:48:53.263Z" }, - { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721, upload-time = "2024-12-02T14:48:56.533Z" }, - { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154, upload-time = "2024-12-02T14:48:59.261Z" }, + { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, + { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, + { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, + { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, + { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, + { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, + { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, + { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, ] [[package]] @@ -2758,9 +2908,9 @@ dependencies = [ { name = "rpds-py" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744, upload-time = "2025-01-25T08:48:16.138Z" } +sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775, upload-time = "2025-01-25T08:48:14.241Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, ] [[package]] @@ -2773,9 +2923,9 @@ dependencies = [ { 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, upload-time = "2024-05-29T15:37:49.536Z" } +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, upload-time = "2024-05-29T15:37:47.027Z" }, + { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, ] [[package]] @@ -2785,18 +2935,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "six" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513, upload-time = "2021-05-12T16:37:54.178Z" } +sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490, upload-time = "2021-05-12T16:37:52.536Z" }, + { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, ] [[package]] name = "rfc3986-validator" version = "0.1.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760, upload-time = "2019-10-28T16:00:19.144Z" } +sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242, upload-time = "2019-10-28T16:00:13.976Z" }, + { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, ] [[package]] @@ -2807,9 +2957,9 @@ 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, upload-time = "2024-11-01T16:43:57.873Z" } +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, upload-time = "2024-11-01T16:43:55.817Z" }, + { url = "https://files.pythonhosted.org/packages/19/71/39c7c0d87f8d4e6c020a393182060eaefeeae6c01dab6a84ec346f2567df/rich-13.9.4-py3-none-any.whl", hash = "sha256:6049d5e6ec054bf2779ab3358186963bac2ea89175919d699e378b99738c2a90", size = 242424 }, ] [[package]] @@ -2821,9 +2971,9 @@ dependencies = [ { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805, upload-time = "2025-05-12T19:19:15.284Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815, upload-time = "2025-05-12T19:19:13.713Z" }, + { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815 }, ] [[package]] @@ -2837,81 +2987,81 @@ dependencies = [ { name = "rasterio" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600, upload-time = "2025-04-21T17:46:54.183Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151, upload-time = "2025-04-21T17:46:52.801Z" }, + { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, ] [[package]] name = "rpds-py" version = "0.25.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304, upload-time = "2025-05-21T12:46:12.502Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341, upload-time = "2025-05-21T12:43:02.978Z" }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111, upload-time = "2025-05-21T12:43:05.128Z" }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112, upload-time = "2025-05-21T12:43:07.13Z" }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362, upload-time = "2025-05-21T12:43:08.693Z" }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214, upload-time = "2025-05-21T12:43:10.694Z" }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491, upload-time = "2025-05-21T12:43:12.739Z" }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978, upload-time = "2025-05-21T12:43:14.25Z" }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662, upload-time = "2025-05-21T12:43:15.8Z" }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385, upload-time = "2025-05-21T12:43:17.78Z" }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047, upload-time = "2025-05-21T12:43:19.457Z" }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863, upload-time = "2025-05-21T12:43:21.69Z" }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627, upload-time = "2025-05-21T12:43:23.311Z" }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603, upload-time = "2025-05-21T12:43:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967, upload-time = "2025-05-21T12:43:26.566Z" }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647, upload-time = "2025-05-21T12:43:28.559Z" }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454, upload-time = "2025-05-21T12:43:30.615Z" }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665, upload-time = "2025-05-21T12:43:32.629Z" }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873, upload-time = "2025-05-21T12:43:34.576Z" }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866, upload-time = "2025-05-21T12:43:36.123Z" }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886, upload-time = "2025-05-21T12:43:38.034Z" }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666, upload-time = "2025-05-21T12:43:40.065Z" }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109, upload-time = "2025-05-21T12:43:42.263Z" }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244, upload-time = "2025-05-21T12:43:43.846Z" }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023, upload-time = "2025-05-21T12:43:45.932Z" }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634, upload-time = "2025-05-21T12:43:48.263Z" }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713, upload-time = "2025-05-21T12:43:49.897Z" }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280, upload-time = "2025-05-21T12:43:51.893Z" }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399, upload-time = "2025-05-21T12:43:53.351Z" }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208, upload-time = "2025-05-21T12:45:26.306Z" }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262, upload-time = "2025-05-21T12:45:28.322Z" }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366, upload-time = "2025-05-21T12:45:30.42Z" }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759, upload-time = "2025-05-21T12:45:32.516Z" }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128, upload-time = "2025-05-21T12:45:34.396Z" }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597, upload-time = "2025-05-21T12:45:36.164Z" }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053, upload-time = "2025-05-21T12:45:38.45Z" }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821, upload-time = "2025-05-21T12:45:40.732Z" }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534, upload-time = "2025-05-21T12:45:42.672Z" }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674, upload-time = "2025-05-21T12:45:44.533Z" }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781, upload-time = "2025-05-21T12:45:46.281Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, + { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, + { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, + { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, + { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, + { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, + { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, + { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, + { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, + { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, + { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, + { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, + { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, + { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, + { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, + { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, + { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, + { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, + { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, + { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, + { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, + { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, + { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, + { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, + { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, + { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, + { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, + { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, + { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, + { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, + { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, + { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, + { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, + { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, + { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, + { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, + { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, + { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, + { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, ] [[package]] name = "ruff" version = "0.11.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407, upload-time = "2025-03-14T13:52:36.539Z" } +sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158, upload-time = "2025-03-14T13:51:55.69Z" }, - { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071, upload-time = "2025-03-14T13:51:58.989Z" }, - { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944, upload-time = "2025-03-14T13:52:02.318Z" }, - { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725, upload-time = "2025-03-14T13:52:04.303Z" }, - { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435, upload-time = "2025-03-14T13:52:06.602Z" }, - { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664, upload-time = "2025-03-14T13:52:08.613Z" }, - { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856, upload-time = "2025-03-14T13:52:11.019Z" }, - { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156, upload-time = "2025-03-14T13:52:13.383Z" }, - { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167, upload-time = "2025-03-14T13:52:15.528Z" }, - { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311, upload-time = "2025-03-14T13:52:18.088Z" }, - { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039, upload-time = "2025-03-14T13:52:20.476Z" }, - { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939, upload-time = "2025-03-14T13:52:22.798Z" }, - { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259, upload-time = "2025-03-14T13:52:24.89Z" }, - { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212, upload-time = "2025-03-14T13:52:27.493Z" }, - { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905, upload-time = "2025-03-14T13:52:30.46Z" }, - { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730, upload-time = "2025-03-14T13:52:32.508Z" }, - { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956, upload-time = "2025-03-14T13:52:34.491Z" }, + { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, + { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, + { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, + { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, + { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, + { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, + { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, + { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, + { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, + { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, + { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, + { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, + { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, + { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, + { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, + { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, + { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, ] [[package]] @@ -2923,9 +3073,9 @@ dependencies = [ { name = "aiohttp" }, { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7f/6f/d0ee452580d7d0643a1a776b95dfef2144023f3fc077038e07d651995d34/s3fs-2025.5.1.tar.gz", hash = "sha256:84beffa231b8ed94f8d667e93387b38351e1c4447aedea5c2c19dd88b7fcb658", size = 77276, upload-time = "2025-05-24T12:14:11.442Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7f/6f/d0ee452580d7d0643a1a776b95dfef2144023f3fc077038e07d651995d34/s3fs-2025.5.1.tar.gz", hash = "sha256:84beffa231b8ed94f8d667e93387b38351e1c4447aedea5c2c19dd88b7fcb658", size = 77276 } wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/c0/f5cc95ec88694429fcb841a37456be0a27463bc39d43edbd36e3164120ed/s3fs-2025.5.1-py3-none-any.whl", hash = "sha256:7475e7c40a3a112f17144907ffae50782ab6c03487fe0b45a9c3942bb7a5c606", size = 30476, upload-time = "2025-05-24T12:14:10.056Z" }, + { url = "https://files.pythonhosted.org/packages/d5/c0/f5cc95ec88694429fcb841a37456be0a27463bc39d43edbd36e3164120ed/s3fs-2025.5.1-py3-none-any.whl", hash = "sha256:7475e7c40a3a112f17144907ffae50782ab6c03487fe0b45a9c3942bb7a5c606", size = 30476 }, ] [[package]] @@ -2935,9 +3085,33 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "botocore" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042, upload-time = "2025-02-26T20:44:57.459Z" } +sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246, upload-time = "2025-02-26T20:44:55.509Z" }, + { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, +] + +[[package]] +name = "scikit-learn" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "joblib" }, + { name = "numpy" }, + { name = "scipy" }, + { name = "threadpoolctl" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/df/3b/29fa87e76b1d7b3b77cc1fcbe82e6e6b8cd704410705b008822de530277c/scikit_learn-1.7.0.tar.gz", hash = "sha256:c01e869b15aec88e2cdb73d27f15bdbe03bce8e2fb43afbe77c45d399e73a5a3", size = 7178217 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/5a/42/c6b41711c2bee01c4800ad8da2862c0b6d2956a399d23ce4d77f2ca7f0c7/scikit_learn-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ef09b1615e1ad04dc0d0054ad50634514818a8eb3ee3dee99af3bffc0ef5007", size = 11719657 }, + { url = "https://files.pythonhosted.org/packages/a3/24/44acca76449e391b6b2522e67a63c0454b7c1f060531bdc6d0118fb40851/scikit_learn-1.7.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7d7240c7b19edf6ed93403f43b0fcb0fe95b53bc0b17821f8fb88edab97085ef", size = 10712636 }, + { url = "https://files.pythonhosted.org/packages/9f/1b/fcad1ccb29bdc9b96bcaa2ed8345d56afb77b16c0c47bafe392cc5d1d213/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80bd3bd4e95381efc47073a720d4cbab485fc483966f1709f1fd559afac57ab8", size = 12242817 }, + { url = "https://files.pythonhosted.org/packages/c6/38/48b75c3d8d268a3f19837cb8a89155ead6e97c6892bb64837183ea41db2b/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dbe48d69aa38ecfc5a6cda6c5df5abef0c0ebdb2468e92437e2053f84abb8bc", size = 12873961 }, + { url = "https://files.pythonhosted.org/packages/f4/5a/ba91b8c57aa37dbd80d5ff958576a9a8c14317b04b671ae7f0d09b00993a/scikit_learn-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fa979313b2ffdfa049ed07252dc94038def3ecd49ea2a814db5401c07f1ecfa", size = 10717277 }, + { url = "https://files.pythonhosted.org/packages/70/3a/bffab14e974a665a3ee2d79766e7389572ffcaad941a246931c824afcdb2/scikit_learn-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c2c7243d34aaede0efca7a5a96d67fddaebb4ad7e14a70991b9abee9dc5c0379", size = 11646758 }, + { url = "https://files.pythonhosted.org/packages/58/d8/f3249232fa79a70cb40595282813e61453c1e76da3e1a44b77a63dd8d0cb/scikit_learn-1.7.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9f39f6a811bf3f15177b66c82cbe0d7b1ebad9f190737dcdef77cfca1ea3c19c", size = 10673971 }, + { url = "https://files.pythonhosted.org/packages/67/93/eb14c50533bea2f77758abe7d60a10057e5f2e2cdcf0a75a14c6bc19c734/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63017a5f9a74963d24aac7590287149a8d0f1a0799bbe7173c0d8ba1523293c0", size = 11818428 }, + { url = "https://files.pythonhosted.org/packages/08/17/804cc13b22a8663564bb0b55fb89e661a577e4e88a61a39740d58b909efe/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b2f8a0b1e73e9a08b7cc498bb2aeab36cdc1f571f8ab2b35c6e5d1c7115d97d", size = 12505887 }, + { url = "https://files.pythonhosted.org/packages/68/c7/4e956281a077f4835458c3f9656c666300282d5199039f26d9de1dabd9be/scikit_learn-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:34cc8d9d010d29fb2b7cbcd5ccc24ffdd80515f65fe9f1e4894ace36b267ce19", size = 10668129 }, ] [[package]] @@ -2947,44 +3121,44 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214, upload-time = "2025-05-08T16:13:05.955Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255, upload-time = "2025-05-08T16:05:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035, upload-time = "2025-05-08T16:05:20.152Z" }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499, upload-time = "2025-05-08T16:05:24.494Z" }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602, upload-time = "2025-05-08T16:05:29.313Z" }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415, upload-time = "2025-05-08T16:05:34.699Z" }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622, upload-time = "2025-05-08T16:05:40.762Z" }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796, upload-time = "2025-05-08T16:05:48.119Z" }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684, upload-time = "2025-05-08T16:05:54.22Z" }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504, upload-time = "2025-05-08T16:06:00.437Z" }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735, upload-time = "2025-05-08T16:06:06.471Z" }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284, upload-time = "2025-05-08T16:06:11.686Z" }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958, upload-time = "2025-05-08T16:06:15.97Z" }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454, upload-time = "2025-05-08T16:06:20.394Z" }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199, upload-time = "2025-05-08T16:06:26.159Z" }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455, upload-time = "2025-05-08T16:06:32.778Z" }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140, upload-time = "2025-05-08T16:06:39.249Z" }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549, upload-time = "2025-05-08T16:06:45.729Z" }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184, upload-time = "2025-05-08T16:06:52.623Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, + { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, + { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, + { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, + { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, + { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, + { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, + { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, + { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, + { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, + { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, + { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, + { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, + { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, + { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, + { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, + { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, + { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, ] [[package]] name = "send2trash" version = "1.8.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394, upload-time = "2024-04-07T00:01:09.267Z" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072, upload-time = "2024-04-07T00:01:07.438Z" }, + { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, ] [[package]] name = "setuptools" version = "80.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720, upload-time = "2025-05-20T14:02:53.503Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } wheels = [ - { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470, upload-time = "2025-05-20T14:02:51.348Z" }, + { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, ] [[package]] @@ -2994,69 +3168,98 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422, upload-time = "2025-05-19T11:04:41.265Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368, upload-time = "2025-05-19T11:03:55.937Z" }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362, upload-time = "2025-05-19T11:03:57.06Z" }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005, upload-time = "2025-05-19T11:03:58.692Z" }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489, upload-time = "2025-05-19T11:04:00.059Z" }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727, upload-time = "2025-05-19T11:04:01.786Z" }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311, upload-time = "2025-05-19T11:04:03.134Z" }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982, upload-time = "2025-05-19T11:04:05.217Z" }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872, upload-time = "2025-05-19T11:04:06.791Z" }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021, upload-time = "2025-05-19T11:04:08.022Z" }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018, upload-time = "2025-05-19T11:04:09.343Z" }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417, upload-time = "2025-05-19T11:04:10.56Z" }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224, upload-time = "2025-05-19T11:04:11.903Z" }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982, upload-time = "2025-05-19T11:04:13.224Z" }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122, upload-time = "2025-05-19T11:04:14.477Z" }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437, upload-time = "2025-05-19T11:04:16.203Z" }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479, upload-time = "2025-05-19T11:04:18.497Z" }, + { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, + { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, + { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, + { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, + { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, + { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, + { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, + { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, + { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, + { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, + { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, + { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, + { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, + { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, + { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, + { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, ] [[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, upload-time = "2023-10-24T04:13:40.426Z" } +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, upload-time = "2023-10-24T04:13:38.866Z" }, + { 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, upload-time = "2024-12-04T17:35:28.174Z" } +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, upload-time = "2024-12-04T17:35:26.475Z" }, + { 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 = "sniffio" version = "1.3.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372, upload-time = "2024-02-25T23:20:04.057Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235, upload-time = "2024-02-25T23:20:01.196Z" }, + { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, ] [[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, upload-time = "2021-05-16T22:03:42.897Z" } +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, upload-time = "2021-05-16T22:03:41.177Z" }, + { 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.7" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418, upload-time = "2025-04-20T18:50:08.518Z" } +sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, +] + +[[package]] +name = "sqlalchemy" +version = "2.0.41" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677, upload-time = "2025-04-20T18:50:07.196Z" }, + { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, + { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, + { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, + { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, + { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, + { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, + { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, + { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, + { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, + { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, + { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, + { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, + { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, + { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, + { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, + { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, + { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, ] [[package]] @@ -3068,9 +3271,9 @@ dependencies = [ { name = "executing" }, { name = "pure-eval" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/28/e3/55dcc2cfbc3ca9c29519eb6884dd1415ecb53b0e934862d3559ddcb7e20b/stack_data-0.6.3.tar.gz", hash = "sha256:836a778de4fec4dcd1dcd89ed8abff8a221f58308462e1c4aa2a3cf30148f0b9", size = 44707, upload-time = "2023-09-30T13:58:05.479Z" } +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, upload-time = "2023-09-30T13:58:03.53Z" }, + { url = "https://files.pythonhosted.org/packages/f1/7b/ce1eafaf1a76852e2ec9b22edecf1daa58175c090266e9f6c64afcd81d91/stack_data-0.6.3-py3-none-any.whl", hash = "sha256:d5558e0c25a4cb0853cddad3d77da9891a08cb85dd9f9f91b9f8cd66e511e695", size = 24521 }, ] [[package]] @@ -3080,9 +3283,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846, upload-time = "2025-04-13T13:56:17.942Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037, upload-time = "2025-04-13T13:56:16.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 }, ] [[package]] @@ -3092,18 +3295,18 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "python-dateutil" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206, upload-time = "2023-03-10T12:50:27.062Z" } +sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917, upload-time = "2023-03-10T12:50:17.242Z" }, + { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, ] [[package]] name = "tenacity" version = "9.1.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036, upload-time = "2025-04-02T08:25:09.966Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248, upload-time = "2025-04-02T08:25:07.678Z" }, + { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, ] [[package]] @@ -3115,9 +3318,18 @@ dependencies = [ { name = "pywinpty", marker = "os_name == 'nt'" }, { name = "tornado" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701, upload-time = "2024-03-12T14:34:39.026Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, +] + +[[package]] +name = "threadpoolctl" +version = "3.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154, upload-time = "2024-03-12T14:34:36.569Z" }, + { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, ] [[package]] @@ -3127,9 +3339,9 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347, upload-time = "2025-05-22T03:19:13.699Z" } +sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593, upload-time = "2025-05-22T03:19:11.614Z" }, + { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, ] [[package]] @@ -3139,37 +3351,37 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "webencodings" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085, upload-time = "2024-10-24T14:58:29.895Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610, upload-time = "2024-10-24T14:58:28.029Z" }, + { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, ] [[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, upload-time = "2024-10-04T16:17:04.001Z" } +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, upload-time = "2024-10-04T16:17:01.533Z" }, + { 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.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934, upload-time = "2025-05-22T18:15:38.788Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948, upload-time = "2025-05-22T18:15:20.862Z" }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112, upload-time = "2025-05-22T18:15:22.591Z" }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672, upload-time = "2025-05-22T18:15:24.027Z" }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019, upload-time = "2025-05-22T18:15:25.735Z" }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252, upload-time = "2025-05-22T18:15:27.499Z" }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930, upload-time = "2025-05-22T18:15:29.299Z" }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351, upload-time = "2025-05-22T18:15:31.038Z" }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328, upload-time = "2025-05-22T18:15:32.426Z" }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396, upload-time = "2025-05-22T18:15:34.205Z" }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840, upload-time = "2025-05-22T18:15:36.1Z" }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596, upload-time = "2025-05-22T18:15:37.433Z" }, + { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, + { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, + { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, + { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, + { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, + { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, + { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, + { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, + { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, + { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, + { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, ] [[package]] @@ -3179,18 +3391,18 @@ 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, upload-time = "2024-11-24T20:12:22.481Z" } +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, upload-time = "2024-11-24T20:12:19.698Z" }, + { 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, upload-time = "2024-04-19T11:11:49.746Z" } +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, upload-time = "2024-04-19T11:11:46.763Z" }, + { url = "https://files.pythonhosted.org/packages/00/c0/8f5d070730d7836adc9c9b6408dec68c6ced86b304a9b26a14df072a6e8c/traitlets-5.14.3-py3-none-any.whl", hash = "sha256:b74e89e397b1ed28cc831db7aea759ba6640cb3de13090ca145426688ff1ac4f", size = 85359 }, ] [[package]] @@ -3203,27 +3415,27 @@ dependencies = [ { name = "shellingham" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641, upload-time = "2025-04-28T21:40:59.204Z" } +sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641 } wheels = [ - { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253, upload-time = "2025-04-28T21:40:56.269Z" }, + { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253 }, ] [[package]] name = "types-python-dateutil" version = "2.9.0.20250516" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943, upload-time = "2025-05-16T03:06:58.385Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356, upload-time = "2025-05-16T03:06:57.249Z" }, + { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, ] [[package]] name = "typing-extensions" version = "4.13.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, ] [[package]] @@ -3233,46 +3445,46 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726, upload-time = "2025-05-21T18:55:23.885Z" } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552, upload-time = "2025-05-21T18:55:22.152Z" }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]] name = "tzdata" version = "2025.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380, upload-time = "2025-03-23T13:54:43.652Z" } +sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839, upload-time = "2025-03-23T13:54:41.845Z" }, + { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, ] [[package]] name = "ujson" version = "5.10.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885, upload-time = "2024-05-14T02:02:34.233Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353, upload-time = "2024-05-14T02:00:48.04Z" }, - { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813, upload-time = "2024-05-14T02:00:49.28Z" }, - { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988, upload-time = "2024-05-14T02:00:50.484Z" }, - { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561, upload-time = "2024-05-14T02:00:52.146Z" }, - { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497, upload-time = "2024-05-14T02:00:53.366Z" }, - { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877, upload-time = "2024-05-14T02:00:55.095Z" }, - { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632, upload-time = "2024-05-14T02:00:57.099Z" }, - { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513, upload-time = "2024-05-14T02:00:58.488Z" }, - { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616, upload-time = "2024-05-14T02:01:00.463Z" }, - { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071, upload-time = "2024-05-14T02:01:02.211Z" }, - { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642, upload-time = "2024-05-14T02:01:04.055Z" }, - { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807, upload-time = "2024-05-14T02:01:05.25Z" }, - { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972, upload-time = "2024-05-14T02:01:06.458Z" }, - { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686, upload-time = "2024-05-14T02:01:07.618Z" }, - { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591, upload-time = "2024-05-14T02:01:08.901Z" }, - { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853, upload-time = "2024-05-14T02:01:10.772Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689, upload-time = "2024-05-14T02:01:12.214Z" }, - { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576, upload-time = "2024-05-14T02:01:14.39Z" }, - { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764, upload-time = "2024-05-14T02:01:15.83Z" }, - { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211, upload-time = "2024-05-14T02:01:17.567Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, + { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, + { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, + { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, + { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, + { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, + { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, + { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, + { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, + { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, + { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, + { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, + { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, + { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, + { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, + { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, + { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, + { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, + { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, + { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, ] [[package]] @@ -3282,27 +3494,27 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "fsspec" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427, upload-time = "2024-12-13T00:58:27.514Z" } +sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087, upload-time = "2024-12-13T00:58:24.582Z" }, + { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, ] [[package]] name = "uri-template" version = "1.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678, upload-time = "2023-06-21T01:49:05.374Z" } +sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140, upload-time = "2023-06-21T01:49:03.467Z" }, + { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, ] [[package]] name = "urllib3" version = "2.4.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672, upload-time = "2025-04-10T15:23:39.232Z" } +sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680, upload-time = "2025-04-10T15:23:37.377Z" }, + { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, ] [[package]] @@ -3313,9 +3525,9 @@ dependencies = [ { name = "click" }, { name = "h11" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815, upload-time = "2025-04-19T06:02:50.101Z" } +sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815 } wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483, upload-time = "2025-04-19T06:02:48.42Z" }, + { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483 }, ] [package.optional-dependencies] @@ -3333,20 +3545,20 @@ standard = [ name = "uvloop" version = "0.21.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741, upload-time = "2024-10-14T23:38:35.489Z" } +sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } wheels = [ - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410, upload-time = "2024-10-14T23:37:33.612Z" }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476, upload-time = "2024-10-14T23:37:36.11Z" }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855, upload-time = "2024-10-14T23:37:37.683Z" }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185, upload-time = "2024-10-14T23:37:40.226Z" }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256, upload-time = "2024-10-14T23:37:42.839Z" }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323, upload-time = "2024-10-14T23:37:45.337Z" }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284, upload-time = "2024-10-14T23:37:47.833Z" }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349, upload-time = "2024-10-14T23:37:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089, upload-time = "2024-10-14T23:37:51.703Z" }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770, upload-time = "2024-10-14T23:37:54.122Z" }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321, upload-time = "2024-10-14T23:37:55.766Z" }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022, upload-time = "2024-10-14T23:37:58.195Z" }, + { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410 }, + { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476 }, + { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855 }, + { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185 }, + { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256 }, + { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323 }, + { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, + { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, + { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, + { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, + { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, + { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, ] [[package]] @@ -3358,9 +3570,9 @@ dependencies = [ { name = "filelock" }, { name = "platformdirs" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316, upload-time = "2025-05-08T17:58:23.811Z" } +sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982, upload-time = "2025-05-08T17:58:21.15Z" }, + { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, ] [[package]] @@ -3375,33 +3587,33 @@ dependencies = [ { name = "universal-pathlib" }, { name = "xarray" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650, upload-time = "2025-03-03T16:52:05.169Z" } +sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } wheels = [ - { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890, upload-time = "2025-03-03T16:52:03.25Z" }, + { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, ] [[package]] name = "watchdog" version = "6.0.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220, upload-time = "2024-11-01T14:07:13.037Z" } +sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393, upload-time = "2024-11-01T14:06:31.756Z" }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392, upload-time = "2024-11-01T14:06:32.99Z" }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019, upload-time = "2024-11-01T14:06:34.963Z" }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471, upload-time = "2024-11-01T14:06:37.745Z" }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449, upload-time = "2024-11-01T14:06:39.748Z" }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054, upload-time = "2024-11-01T14:06:41.009Z" }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079, upload-time = "2024-11-01T14:06:59.472Z" }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078, upload-time = "2024-11-01T14:07:01.431Z" }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076, upload-time = "2024-11-01T14:07:02.568Z" }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077, upload-time = "2024-11-01T14:07:03.893Z" }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078, upload-time = "2024-11-01T14:07:05.189Z" }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077, upload-time = "2024-11-01T14:07:06.376Z" }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078, upload-time = "2024-11-01T14:07:07.547Z" }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065, upload-time = "2024-11-01T14:07:09.525Z" }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070, upload-time = "2024-11-01T14:07:10.686Z" }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067, upload-time = "2024-11-01T14:07:11.845Z" }, + { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, + { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, + { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, + { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, + { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, + { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, + { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, + { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, + { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, + { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, + { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, + { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, + { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, ] [[package]] @@ -3411,132 +3623,141 @@ source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537, upload-time = "2025-04-08T10:36:26.722Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336, upload-time = "2025-04-08T10:34:59.359Z" }, - { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977, upload-time = "2025-04-08T10:35:00.522Z" }, - { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232, upload-time = "2025-04-08T10:35:01.698Z" }, - { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151, upload-time = "2025-04-08T10:35:03.358Z" }, - { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054, upload-time = "2025-04-08T10:35:04.561Z" }, - { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955, upload-time = "2025-04-08T10:35:05.786Z" }, - { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234, upload-time = "2025-04-08T10:35:07.187Z" }, - { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750, upload-time = "2025-04-08T10:35:08.859Z" }, - { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591, upload-time = "2025-04-08T10:35:10.64Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370, upload-time = "2025-04-08T10:35:12.412Z" }, - { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791, upload-time = "2025-04-08T10:35:13.719Z" }, - { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622, upload-time = "2025-04-08T10:35:15.071Z" }, - { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699, upload-time = "2025-04-08T10:35:16.732Z" }, - { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511, upload-time = "2025-04-08T10:35:17.956Z" }, - { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715, upload-time = "2025-04-08T10:35:19.202Z" }, - { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138, upload-time = "2025-04-08T10:35:20.586Z" }, - { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592, upload-time = "2025-04-08T10:35:21.87Z" }, - { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532, upload-time = "2025-04-08T10:35:23.143Z" }, - { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865, upload-time = "2025-04-08T10:35:24.702Z" }, - { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887, upload-time = "2025-04-08T10:35:25.969Z" }, - { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498, upload-time = "2025-04-08T10:35:27.353Z" }, - { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663, upload-time = "2025-04-08T10:35:28.685Z" }, - { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410, upload-time = "2025-04-08T10:35:30.42Z" }, - { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965, upload-time = "2025-04-08T10:35:32.023Z" }, - { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693, upload-time = "2025-04-08T10:35:33.225Z" }, - { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287, upload-time = "2025-04-08T10:35:34.568Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336 }, + { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977 }, + { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232 }, + { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151 }, + { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054 }, + { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955 }, + { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234 }, + { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750 }, + { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591 }, + { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370 }, + { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791 }, + { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622 }, + { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699 }, + { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511 }, + { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715 }, + { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138 }, + { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592 }, + { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532 }, + { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865 }, + { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887 }, + { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498 }, + { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663 }, + { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410 }, + { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965 }, + { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693 }, + { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287 }, ] [[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, upload-time = "2024-01-06T02:10:57.829Z" } +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, upload-time = "2024-01-06T02:10:55.763Z" }, + { 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 = "webcolors" version = "24.11.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064, upload-time = "2024-11-11T07:43:24.224Z" } +sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934, upload-time = "2024-11-11T07:43:22.529Z" }, + { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, ] [[package]] name = "webencodings" version = "0.5.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721, upload-time = "2017-04-05T20:21:34.189Z" } +sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774, upload-time = "2017-04-05T20:21:32.581Z" }, + { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, ] [[package]] name = "websocket-client" version = "1.8.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648, upload-time = "2024-04-23T22:16:16.976Z" } +sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826, upload-time = "2024-04-23T22:16:14.422Z" }, + { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, ] [[package]] name = "websockets" version = "15.0.1" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016, upload-time = "2025-03-05T20:03:41.606Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423, upload-time = "2025-03-05T20:01:56.276Z" }, - { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082, upload-time = "2025-03-05T20:01:57.563Z" }, - { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330, upload-time = "2025-03-05T20:01:59.063Z" }, - { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878, upload-time = "2025-03-05T20:02:00.305Z" }, - { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883, upload-time = "2025-03-05T20:02:03.148Z" }, - { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252, upload-time = "2025-03-05T20:02:05.29Z" }, - { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521, upload-time = "2025-03-05T20:02:07.458Z" }, - { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958, upload-time = "2025-03-05T20:02:09.842Z" }, - { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918, upload-time = "2025-03-05T20:02:11.968Z" }, - { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388, upload-time = "2025-03-05T20:02:13.32Z" }, - { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828, upload-time = "2025-03-05T20:02:14.585Z" }, - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437, upload-time = "2025-03-05T20:02:16.706Z" }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096, upload-time = "2025-03-05T20:02:18.832Z" }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332, upload-time = "2025-03-05T20:02:20.187Z" }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152, upload-time = "2025-03-05T20:02:22.286Z" }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096, upload-time = "2025-03-05T20:02:24.368Z" }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523, upload-time = "2025-03-05T20:02:25.669Z" }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790, upload-time = "2025-03-05T20:02:26.99Z" }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165, upload-time = "2025-03-05T20:02:30.291Z" }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160, upload-time = "2025-03-05T20:02:31.634Z" }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395, upload-time = "2025-03-05T20:02:33.017Z" }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841, upload-time = "2025-03-05T20:02:34.498Z" }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743, upload-time = "2025-03-05T20:03:39.41Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423 }, + { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082 }, + { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330 }, + { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878 }, + { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883 }, + { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252 }, + { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521 }, + { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958 }, + { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918 }, + { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388 }, + { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828 }, + { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437 }, + { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096 }, + { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332 }, + { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152 }, + { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096 }, + { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523 }, + { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790 }, + { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165 }, + { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160 }, + { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395 }, + { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841 }, + { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, +] + +[[package]] +name = "widgetsnbextension" +version = "4.0.14" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/41/53/2e0253c5efd69c9656b1843892052a31c36d37ad42812b5da45c62191f7e/widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af", size = 1097428 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503 }, ] [[package]] name = "wrapt" version = "1.17.2" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531, upload-time = "2025-01-14T10:35:45.465Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308, upload-time = "2025-01-14T10:33:33.992Z" }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488, upload-time = "2025-01-14T10:33:35.264Z" }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776, upload-time = "2025-01-14T10:33:38.28Z" }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776, upload-time = "2025-01-14T10:33:40.678Z" }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420, upload-time = "2025-01-14T10:33:41.868Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199, upload-time = "2025-01-14T10:33:43.598Z" }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307, upload-time = "2025-01-14T10:33:48.499Z" }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025, upload-time = "2025-01-14T10:33:51.191Z" }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879, upload-time = "2025-01-14T10:33:52.328Z" }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419, upload-time = "2025-01-14T10:33:53.551Z" }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773, upload-time = "2025-01-14T10:33:56.323Z" }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799, upload-time = "2025-01-14T10:33:57.4Z" }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821, upload-time = "2025-01-14T10:33:59.334Z" }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919, upload-time = "2025-01-14T10:34:04.093Z" }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721, upload-time = "2025-01-14T10:34:07.163Z" }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899, upload-time = "2025-01-14T10:34:09.82Z" }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222, upload-time = "2025-01-14T10:34:11.258Z" }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707, upload-time = "2025-01-14T10:34:12.49Z" }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685, upload-time = "2025-01-14T10:34:15.043Z" }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567, upload-time = "2025-01-14T10:34:16.563Z" }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672, upload-time = "2025-01-14T10:34:17.727Z" }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865, upload-time = "2025-01-14T10:34:19.577Z" }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594, upload-time = "2025-01-14T10:35:44.018Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, + { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, + { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, + { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, + { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, + { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, + { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, + { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, + { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, + { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, + { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, + { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, + { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, + { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, + { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, + { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, + { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, + { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, + { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, + { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, + { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, + { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, + { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, ] [[package]] @@ -3548,9 +3769,18 @@ dependencies = [ { name = "packaging" }, { name = "pandas" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151, upload-time = "2025-04-29T23:27:59.238Z" } +sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, +] + +[[package]] +name = "xyzservices" +version = "2025.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/af/c0f7f97bb320d14c089476f487b81f733238cc5603e0914f2e409f49d589/xyzservices-2025.4.0.tar.gz", hash = "sha256:6fe764713648fac53450fbc61a3c366cb6ae5335a1b2ae0c3796b495de3709d8", size = 1134722 } wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171, upload-time = "2025-04-29T23:27:57.059Z" }, + { url = "https://files.pythonhosted.org/packages/d6/7d/b77455d7c7c51255b2992b429107fab811b2e36ceaf76da1e55a045dc568/xyzservices-2025.4.0-py3-none-any.whl", hash = "sha256:8d4db9a59213ccb4ce1cf70210584f30b10795bff47627cdfb862b39ff6e10c9", size = 90391 }, ] [[package]] @@ -3562,43 +3792,43 @@ dependencies = [ { name = "multidict" }, { name = "propcache" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258, upload-time = "2025-04-17T00:45:14.661Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178, upload-time = "2025-04-17T00:42:04.511Z" }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859, upload-time = "2025-04-17T00:42:06.43Z" }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647, upload-time = "2025-04-17T00:42:07.976Z" }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788, upload-time = "2025-04-17T00:42:09.902Z" }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613, upload-time = "2025-04-17T00:42:11.768Z" }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953, upload-time = "2025-04-17T00:42:13.983Z" }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204, upload-time = "2025-04-17T00:42:16.386Z" }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108, upload-time = "2025-04-17T00:42:18.622Z" }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610, upload-time = "2025-04-17T00:42:20.9Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378, upload-time = "2025-04-17T00:42:22.926Z" }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919, upload-time = "2025-04-17T00:42:25.145Z" }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248, upload-time = "2025-04-17T00:42:27.475Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418, upload-time = "2025-04-17T00:42:29.333Z" }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850, upload-time = "2025-04-17T00:42:31.668Z" }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218, upload-time = "2025-04-17T00:42:33.523Z" }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606, upload-time = "2025-04-17T00:42:35.873Z" }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374, upload-time = "2025-04-17T00:42:37.586Z" }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089, upload-time = "2025-04-17T00:42:39.602Z" }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706, upload-time = "2025-04-17T00:42:41.469Z" }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719, upload-time = "2025-04-17T00:42:43.666Z" }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972, upload-time = "2025-04-17T00:42:45.391Z" }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639, upload-time = "2025-04-17T00:42:47.552Z" }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745, upload-time = "2025-04-17T00:42:49.406Z" }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178, upload-time = "2025-04-17T00:42:51.588Z" }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219, upload-time = "2025-04-17T00:42:53.674Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266, upload-time = "2025-04-17T00:42:55.49Z" }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873, upload-time = "2025-04-17T00:42:57.895Z" }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524, upload-time = "2025-04-17T00:43:00.094Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370, upload-time = "2025-04-17T00:43:02.242Z" }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297, upload-time = "2025-04-17T00:43:04.189Z" }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771, upload-time = "2025-04-17T00:43:06.609Z" }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000, upload-time = "2025-04-17T00:43:09.01Z" }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355, upload-time = "2025-04-17T00:43:11.311Z" }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904, upload-time = "2025-04-17T00:43:13.087Z" }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124, upload-time = "2025-04-17T00:45:12.199Z" }, +sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, + { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, + { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, + { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, + { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, + { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, + { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, + { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, + { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, + { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, + { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, + { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, + { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, + { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, + { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, + { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, + { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, + { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, + { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, + { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, + { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, + { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, + { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, + { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, + { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, + { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, + { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, + { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, + { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, + { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, + { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, + { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, + { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, + { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, + { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] [[package]] @@ -3612,16 +3842,16 @@ dependencies = [ { name = "packaging" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825, upload-time = "2025-05-19T14:19:00.123Z" } +sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } wheels = [ - { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364, upload-time = "2025-05-19T14:18:58.789Z" }, + { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, ] [[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, upload-time = "2024-11-10T15:05:20.202Z" } +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, upload-time = "2024-11-10T15:05:19.275Z" }, + { url = "https://files.pythonhosted.org/packages/b7/1a/7e4798e9339adc931158c9d69ecc34f5e6791489d469f5e50ec15e35f458/zipp-3.21.0-py3-none-any.whl", hash = "sha256:ac1bbe05fd2991f160ebce24ffbac5f6d11d83dc90891255885223d42b3cd931", size = 9630 }, ] From 0381a790fb2b7af00c89a60d2cb49d2209bceef5 Mon Sep 17 00:00:00 2001 From: Daniel Cumpton Date: Tue, 17 Jun 2025 13:55:34 -0600 Subject: [PATCH 64/97] add file to convert all domains to parquet --- scripts/gpkg_to_parquet_all_domains.py | 28 ++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 scripts/gpkg_to_parquet_all_domains.py diff --git a/scripts/gpkg_to_parquet_all_domains.py b/scripts/gpkg_to_parquet_all_domains.py new file mode 100644 index 0000000..5a7e7d6 --- /dev/null +++ b/scripts/gpkg_to_parquet_all_domains.py @@ -0,0 +1,28 @@ +"""A simple script to convert the v2.2 hydrofabric to parquet""" + +import fiona +import geopandas as gpd + +#Location of Hydrofabric geopackage files organized by domain +input_file_root = '/home/daniel.cumpton/Hydrofabric/data/hydrofabric/v2.2/nextgen' + +#Location of data/domain directories for output Parquet files +output_file_root = '/home/daniel.cumpton/icefabric' + +input_file = {'CONUS':'CONUS/conus_nextgen.gpkg', 'GL':'CONUS/gl_nextgen_divide_attr.gpkg', + 'Alaska':'Alaska/ak_nextgen_workaround.gpkg', 'Hawaii':'Hawaii/hi_nextgen_workaround.gpkg', + 'Puerto_Rico':'Puerto_Rico/prvi_nextgen_workaround.gpkg'} + +domains = ['CONUS', 'GL', 'Alaska', 'Hawaii', 'Puerto_Rico'] + +for domain in domains: + + file = f"{input_file_root}/{input_file[domain]}" + available_layers = fiona.listlayers(file) + print(f"For {domain}, layers in GeoPackage: {available_layers}") + + for layer in available_layers: + gdf = gpd.read_file(file, layer=layer) + output_file = f"{output_file_root}/data/parquet/{domain}/{layer}.parquet" + gdf.to_parquet(output_file) + print(f"For {domain}, converted layer '{layer}' to {output_file}") From e0db0bbbf2cab80acbb9eabc16808806988035ec Mon Sep 17 00:00:00 2001 From: Daniel Cumpton Date: Thu, 26 Jun 2025 10:15:01 -0600 Subject: [PATCH 65/97] updates for csv parameters moving to iceberg tables --- src/icefabric_api/data/modules.csv | 2 +- src/icefabric_api/data/sac_sma_params.csv | 2 +- src/icefabric_api/data/ueb_params.csv | 10 ++-- .../src/icefabric_api/create_ipes.py | 42 ++++++++++++---- .../builds/build_parameters.py | 50 +++++++++++++++++++ 5 files changed, 90 insertions(+), 16 deletions(-) create mode 100644 src/icefabric_manage/builds/build_parameters.py diff --git a/src/icefabric_api/data/modules.csv b/src/icefabric_api/data/modules.csv index d291784..b12d663 100644 --- a/src/icefabric_api/data/modules.csv +++ b/src/icefabric_api/data/modules.csv @@ -1,7 +1,7 @@ module,file,outputs CFE-X,cfe_params.csv, Noah-OWP-Modular,noah_owp_modular_params.csv, -Snow17,snow17_params.csv, +Snow-17,snow17_params.csv, Sac-SMA,sac_sma_params.csv, TopModel,topmodel_params.csv, UEB,ueb_params.csv, diff --git a/src/icefabric_api/data/sac_sma_params.csv b/src/icefabric_api/data/sac_sma_params.csv index dc490b6..59ab937 100644 --- a/src/icefabric_api/data/sac_sma_params.csv +++ b/src/icefabric_api/data/sac_sma_params.csv @@ -1,4 +1,4 @@ -name,description,units,data_type,calibratable,source_file,min,max,default_value,divide_attr_name,source_file +name,description,units,data_type,calibratable,source,min,max,default_value,divide_attr_name,source_file hru_id,Identification string for each hrus,NULL,char,False,const,25,125,NA,divide_id, hru_area,Area of each HRU,NULL,double,False,attr,10,100,NA,areasqkm, uztwm,upper zone tension water maximum storage,mm,double,True,csv,25,125,75,,sac_sma_params diff --git a/src/icefabric_api/data/ueb_params.csv b/src/icefabric_api/data/ueb_params.csv index b51bddc..abe86fb 100644 --- a/src/icefabric_api/data/ueb_params.csv +++ b/src/icefabric_api/data/ueb_params.csv @@ -1,10 +1,10 @@ name,description,units,data_type,calibratable,source,min,max,default_value,divide_attr_name,source_file -USic,Energy content initial condition,kg m-3,double,False,const,,,,, -WSis,Snow water equivalent initial condition,m,double,False,const,,,,, -Tic,Snow surface dimensionless age initial condition,NULL,double,False,const,,,,, -WCic,Snow water equivalent dimensionless age initial condition,m,double,False,const,,,,, +USic,Energy content initial condition,kg m-3,double,False,const,,,0,, +WSis,Snow water equivalent initial condition,m,double,False,const,,,0,, +Tic,Snow surface dimensionless age initial condition,NULL,double,False,const,,,0,, +WCic,Snow water equivalent dimensionless age initial condition,m,double,False,const,,,0,, df,Drift factor multiplier,NULL,double,True,const,0.5,6,1,, -apr,Average atmospheric pressure,Pa,double,True,attr,30000,101325,,atm_pres, +apr,Average atmospheric pressure,Pa,double,True,csv,30000,101325,,atm_pres, Aep,Albedo extinction coefficient,m,double,False,const,NULL,NULL,0.1,, cc,Canopy coverage fraction,NULL,double,True,const,0,0.8,0.4,, hcan,Canopy height,m,integer,True,const,0,10,5,, diff --git a/src/icefabric_api/src/icefabric_api/create_ipes.py b/src/icefabric_api/src/icefabric_api/create_ipes.py index 15aa8dc..21e3596 100644 --- a/src/icefabric_api/src/icefabric_api/create_ipes.py +++ b/src/icefabric_api/src/icefabric_api/create_ipes.py @@ -4,11 +4,12 @@ import geopandas as gpd import pandas as pd from pyproj import Transformer +from pyiceberg.catalog import load_catalog +import pyiceberg.exceptions as ex logger = logging.getLogger(__name__) ROOT_DIR = os.path.abspath(os.curdir) - def module_ipe(module, attr, domain, version, cfg_write=None): # Create empty dataframe for csv parameters csv_params = pd.DataFrame() @@ -55,7 +56,9 @@ def module_ipe(module, attr, domain, version, cfg_write=None): attr_list = module_params["source"].to_list() # Create dictionary with divide IDs as the keys and parameter dictionary for the values. - all_cats = dict.fromkeys(divides, param_values) + all_cats = {} + for divide in divides: + all_cats[divide] = param_values.copy() # For attributes, get list of attribute names attr_list = module_params.loc[module_params["source"] == "attr"]["divide_attr_name"].to_list() @@ -70,10 +73,7 @@ def module_ipe(module, attr, domain, version, cfg_write=None): # Get CSV file parameters if "csv" in module_params["source"].values: - csv_file = module_params.loc[module_params["source"] == "csv"]["source_file"].to_list() - csv_file = csv_file[0] - csv_file = f"{csv_file}_{domain}_{version}.csv" - csv_params = pd.read_csv(f"{ROOT_DIR}/data/{csv_file}") + csv_params = divide_parameters(divides, module, domain) for divide in divides: attr_div = attr.loc[attr["divide_id"] == divide] @@ -83,7 +83,12 @@ def module_ipe(module, attr, domain, version, cfg_write=None): csv_params_div = csv_params.loc[csv_params["divide_id"] == divide] csv_params_div = csv_params_div.to_dict(orient="list") all_cats[divide].update(csv_params_div) - # print(all_cats[divide]) + + for key in all_cats[divide].keys(): + value = all_cats[divide][key] + if isinstance(value, list): + all_cats[divide][key] = value[0] + if cfg_write: write_cfg(all_cats) @@ -91,11 +96,10 @@ def module_ipe(module, attr, domain, version, cfg_write=None): module_json = write_json(all_cats[divides[1]], module_params, output_vars, module, s3_uri) return module_json - def write_cfg(params): divides = params.keys() for divide in divides: - cfg_file = f"{divide}_bmi_config_cfe.txt" + cfg_file = f"{ROOT_DIR}/{divide}_bmi_config_cfe.txt" f = open(cfg_file, "w") for key, value in params[divide].items(): @@ -215,3 +219,23 @@ def get_hydrofabric_attributes(gpkg_file, version, domain): divide_attr.loc[index, "centroid_x"] = wgs84_latlon[1] # longitude return divide_attr + +def divide_parameters(divides, module, domain): + module = module.lower() + domain = domain.lower() + namespace = "divide_parameters" + table_name = f"{namespace}.{module}_{domain}" + catalog = load_catalog("glue") + try: + table = catalog.load_table(table_name) + except ex.NoSuchTableError as e: + print(f"Table {table_name} does not exist") + return pd.DataFrame() + except Exception as e: + print(f"Iceberg table load exception: {e}") + return pd.DataFrame() + df = table.scan().to_pandas() + filtered = df[df['divide_id'].isin(divides)] + return filtered + + diff --git a/src/icefabric_manage/builds/build_parameters.py b/src/icefabric_manage/builds/build_parameters.py new file mode 100644 index 0000000..7064ebb --- /dev/null +++ b/src/icefabric_manage/builds/build_parameters.py @@ -0,0 +1,50 @@ +import argparse + +from dotenv import load_dotenv +from pyiceberg.catalog import load_catalog +from pyiceberg.exceptions import NamespaceAlreadyExistsError + +from icefabric_manage import build + +load_dotenv() + + +def build_table(file_dir): + """Builds the divide parameters namespace and tables + + Parameters + ---------- + file_dir : str + The directory to hydrofabric parquet files + """ + parquet_tables = {'CFE-X_params_Alaska_2.2.parquet':'CFE-X_Alaska', 'CFE-X_params_GL_2.2.parquet':'CFE-X_GL', + 'CFE-X_params_Puerto_Rico_2.2.parquet':'CFE-X_Puerto_Rico', 'snow17_params_2.2.parquet':'Snow-17_CONUS', + 'CFE-X_params_CONUS_2.2.parquet':'CFE-X_CONUS', 'CFE-X_params_Hawaii_2.2.parquet':'CFE-X_Hawaii', + 'sac_sma_params_2.2.parquet':'Sac-SMA_CONUS', 'ueb_params.parquet':'UEB_CONUS'} + + catalog = load_catalog("glue") # Using an AWS Glue Endpoint + namespace = "divide_parameters" + try: + catalog.create_namespace(namespace) + except NamespaceAlreadyExistsError: + print(f"Namespace {namespace} already exists") + + for file in parquet_tables.keys(): + + build( + catalog=catalog, + parquet_file=f"{file_dir}/{file}", + namespace=namespace, + table_name=parquet_tables[file], + location="s3://fim-services-data-test/icefabric_metadata/", + ) + print(f"Build successful. Files written into metadata store @ {catalog.name}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument("--files", help="The local file dir where the files are located") + + args = parser.parse_args() + build_table(file_dir=args.files) From 64314a961b6c1b95de825415e9cb381ec7588931 Mon Sep 17 00:00:00 2001 From: Daniel Cumpton Date: Thu, 26 Jun 2025 12:19:19 -0600 Subject: [PATCH 66/97] change csv variable names to iceberg --- .../app/routers/module_params/router.py | 2 +- src/icefabric_api/data/cfe_params.csv | 6 ++--- src/icefabric_api/data/sac_sma_params.csv | 22 ++++++++-------- src/icefabric_api/data/snow17_params.csv | 26 +++++++++---------- src/icefabric_api/data/ueb_params.csv | 26 +++++++++---------- .../src/icefabric_api/create_ipes.py | 24 ++++++++++------- 6 files changed, 55 insertions(+), 51 deletions(-) diff --git a/src/icefabric_api/app/routers/module_params/router.py b/src/icefabric_api/app/routers/module_params/router.py index 7e9b8c6..1f3eb22 100644 --- a/src/icefabric_api/app/routers/module_params/router.py +++ b/src/icefabric_api/app/routers/module_params/router.py @@ -35,7 +35,7 @@ async def get_ipes(query: Parameters): all_modules = [] for mod in query.modules: - mod_json = module_ipe(mod, attr, query.domain, query.version) + mod_json = module_ipe(mod, attr, query.domain, query.version, cfg_write=True) all_modules.append(mod_json) final_json = json.dumps({"modules": all_modules}) diff --git a/src/icefabric_api/data/cfe_params.csv b/src/icefabric_api/data/cfe_params.csv index eea0fa2..b829027 100644 --- a/src/icefabric_api/data/cfe_params.csv +++ b/src/icefabric_api/data/cfe_params.csv @@ -17,9 +17,9 @@ K_nash,Nash Config param for lateral subsurface runoff (Nash discharge to storag K_lf,Nash Config param - primary reservoir,NULL,double,True,const,0,1,0.01,, nash_storage,Nash Config param - secondary reservoir ,NULL,double,False,const,NULL,NULL,"0.0,0.0",, giuh_ordinates,Giuh (geomorphological instantaneous unit hydrograph) ordinates in dt time steps,NULL,double,False,const,NULL,NULL,"0.55, 0.25, 0.2",, -a_Xinanjiang_inflection_point_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,-0.5,0.5,-0.2,AXAJ,CFE-X_params -b_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,0.01,10,0.66,BXAJ,CFE-X_params -x_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,csv,0.01,10,0.02,XXAJ,CFE-X_params +a_Xinanjiang_inflection_point_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,iceberg,-0.5,0.5,-0.2,AXAJ,CFE-X_params +b_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,iceberg,0.01,10,0.66,BXAJ,CFE-X_params +x_Xinanjiang_shape_parameter,when surface_water_partitioning_scheme=Xinanjiang ,NULL,double,True,iceberg,0.01,10,0.02,XXAJ,CFE-X_params urban_decimal_fraction,when surface_water_partitioning_scheme=Xinanjiang,NULL,double ,False,const,0,1,0.01,, refkdt,Reference Soil Infiltration Parameter (used in runoff formulation),NULL,double,True,attr,0.1,4,1,mean.refkdt, soil_params.depth,soil depth,m,double,False,const,NULL,NULL,2,, \ No newline at end of file diff --git a/src/icefabric_api/data/sac_sma_params.csv b/src/icefabric_api/data/sac_sma_params.csv index 59ab937..c8ce61e 100644 --- a/src/icefabric_api/data/sac_sma_params.csv +++ b/src/icefabric_api/data/sac_sma_params.csv @@ -1,19 +1,19 @@ name,description,units,data_type,calibratable,source,min,max,default_value,divide_attr_name,source_file hru_id,Identification string for each hrus,NULL,char,False,const,25,125,NA,divide_id, hru_area,Area of each HRU,NULL,double,False,attr,10,100,NA,areasqkm, -uztwm,upper zone tension water maximum storage,mm,double,True,csv,25,125,75,,sac_sma_params -uzfwm,Maximum upper zone free water,mm,double,True,csv,10,100,30,,sac_sma_params -lztwm,Maximum lower zone tension water,mm,double,True,csv,75,300,150,,sac_sma_params -lzfsm,"Maximum lower zone free water, secondary (aka supplemental)",mm,double,True,csv,15,300,150,,sac_sma_params -lzfpm,"Maximum lower zone free water, primary",mm,double,True,csv,40,600,300,,sac_sma_params +uztwm,upper zone tension water maximum storage,mm,double,True,iceberg,25,125,75,,sac_sma_params +uzfwm,Maximum upper zone free water,mm,double,True,iceberg,10,100,30,,sac_sma_params +lztwm,Maximum lower zone tension water,mm,double,True,iceberg,75,300,150,,sac_sma_params +lzfsm,"Maximum lower zone free water, secondary (aka supplemental)",mm,double,True,iceberg,15,300,150,,sac_sma_params +lzfpm,"Maximum lower zone free water, primary",mm,double,True,iceberg,40,600,300,,sac_sma_params adimp,Additional impervious area due to saturation,decimal percent,double,True,const,0,0.2,0,, -uzk,Upper zone recession coefficient,per day ,double,True,csv,0.2,0.5,0.3,,sac_sma_params -lzpk,"Lower zone recession coefficient, primary",decimal percent,double,True,csv,0.001,0.015,0.01,,sac_sma_params -lzsk,"Lower zone recession coefficient, secondary (aka supplemental)",decimal percent,double,True,csv,0.03,0.2,0.1,,sac_sma_params -zperc,Minimum percolation rate coefficient,NULL,double,True,csv,20,300,10,,sac_sma_params -rexp,Percolation equation exponent,NULL,double,True,csv,1.4,3.5,2,,sac_sma_params +uzk,Upper zone recession coefficient,per day ,double,True,iceberg,0.2,0.5,0.3,,sac_sma_params +lzpk,"Lower zone recession coefficient, primary",decimal percent,double,True,iceberg,0.001,0.015,0.01,,sac_sma_params +lzsk,"Lower zone recession coefficient, secondary (aka supplemental)",decimal percent,double,True,iceberg,0.03,0.2,0.1,,sac_sma_params +zperc,Minimum percolation rate coefficient,NULL,double,True,iceberg,20,300,10,,sac_sma_params +rexp,Percolation equation exponent,NULL,double,True,iceberg,1.4,3.5,2,,sac_sma_params pctim,impervious fraction of the watershed area ,decimal percent,double,True,const,0,0.05,0,, -pfree,fraction of water percolating from upper zone directly to lower zone free water storage. ,decimal percent,double,True,csv,0,0.5,0.1,,sac_sma_params +pfree,fraction of water percolating from upper zone directly to lower zone free water storage. ,decimal percent,double,True,iceberg,0,0.5,0.1,,sac_sma_params riva,Percent of the basin that is riparian area,decimal percent,double,True,const,0,0.2,0,, side,Portion of the baseflow which does not go to the stream,decimal percent,double,False,const,0,0.2,0,, rserv,Percent of lower zone free water not transferable to the lower zone tension water,decimal percent,double,False,const,0.2,0.4,0.3,, diff --git a/src/icefabric_api/data/snow17_params.csv b/src/icefabric_api/data/snow17_params.csv index dd07923..671cbe1 100644 --- a/src/icefabric_api/data/snow17_params.csv +++ b/src/icefabric_api/data/snow17_params.csv @@ -1,9 +1,9 @@ name,description,units,data_type,calibratable,source,min,max,default_value,divide_attr_name,source_file -mfmax, Maximum melt factor during non-rain periods – assumed to occur on June 21,mm/˚C/hr,double,True,csv,0.1,2.2,1,,sac_sma_params +mfmax, Maximum melt factor during non-rain periods – assumed to occur on June 21,mm/˚C/hr,double,True,iceberg,0.1,2.2,1,,sac_sma_params hru_area, needed for combination and routing conv, sq-km,double,False,attr,,,,areasqkm, latitude, centroid latitude of hru, decimal degrees,double,False,attr,,,,centroid_y, elev, mean elevation of hru, m,double,False,attr,,,,mean.elevation, -uadj, The average wind function during rain-on-snow periods,mm/mb/6 hr,double,True,csv,0.01,0.2,0.05,, +uadj, The average wind function during rain-on-snow periods,mm/mb/6 hr,double,True,iceberg,0.01,0.2,0.05,, si, The mean areal water equivalent above which there is always 100 percent areal snow cover,mm,double,True,const,0,10000,500,, adc1, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.05,0.05,0.05,, adc2, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.1,0.1,0.1,, @@ -13,15 +13,15 @@ adc5, Curve that defines the areal extent of the snow cover as a function of how adc6, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.5,0.5,0.5,, adc7, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.6,0.6,0.6,, adc8, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.7,0.7,0.7,, -mfmin, Minimum melt factor during non-rain periods – assumed to occur on December 21,mm/˚C/hr,double,True,csv,0.01,0.6,0.2,, +mfmin, Minimum melt factor during non-rain periods – assumed to occur on December 21,mm/˚C/hr,double,True,iceberg,0.01,0.6,0.2,, hru_id, local hru ids for multiple hrus,,string,False,const,,,,, -scf,The multiplying factor which adjusts precipitation that is determined to be in the form of snow,,double,True,csv,0.9,1.8,1.1,, -adc9, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,csv,0.8,0.8,0.8,, -adc10, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,csv,0.9,0.9,0.9,, -adc11, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,csv,1,1,1,, -nmf, Maximum negative melt factor,mm/˚C/hr,double,True,csv,0.01,0.3,0.15,, -tipm, Antecedent temperature index parameter,,double,True,csv,0,1,0.1,, -pxtemp, Antecedent temperature index parameter,˚C,double,True,csv,0.5,5,1,, -mbase, Base temperature for snowmelt computations during non-rain periods,˚C,double,False,csv,0,0,0,, -plwhc, maximum amount of liquid water as a fraction of the ice portion of the snow that can be held against gravity drainage, %,double,True,csv,0.01,0.3,0.03,, -daygm, Constant daily amount of melt which takes place at the snow-soil interface whenever there is a snow cover,mm/day,double,True,csv,0,0.5,0,, +scf,The multiplying factor which adjusts precipitation that is determined to be in the form of snow,,double,True,const,0.9,1.8,1.1,, +adc9, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.8,0.8,0.8,, +adc10, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,0.9,0.9,0.9,, +adc11, Curve that defines the areal extent of the snow cover as a function of how much of the original snow cover remains after significant bare ground shows up,NULL,double,False,const,1,1,1,, +nmf, Maximum negative melt factor,mm/˚C/hr,double,True,const,0.01,0.3,0.15,, +tipm, Antecedent temperature index parameter,,double,True,const,0,1,0.1,, +pxtemp, Antecedent temperature index parameter,˚C,double,True,const,0.5,5,1,, +mbase, Base temperature for snowmelt computations during non-rain periods,˚C,double,False,const,0,0,0,, +plwhc, maximum amount of liquid water as a fraction of the ice portion of the snow that can be held against gravity drainage, %,double,True,const,0.01,0.3,0.03,, +daygm, Constant daily amount of melt which takes place at the snow-soil interface whenever there is a snow cover,mm/day,double,True,const,0,0.5,0,, diff --git a/src/icefabric_api/data/ueb_params.csv b/src/icefabric_api/data/ueb_params.csv index abe86fb..05d0ab2 100644 --- a/src/icefabric_api/data/ueb_params.csv +++ b/src/icefabric_api/data/ueb_params.csv @@ -4,7 +4,7 @@ WSis,Snow water equivalent initial condition,m,double,False,const,,,0,, Tic,Snow surface dimensionless age initial condition,NULL,double,False,const,,,0,, WCic,Snow water equivalent dimensionless age initial condition,m,double,False,const,,,0,, df,Drift factor multiplier,NULL,double,True,const,0.5,6,1,, -apr,Average atmospheric pressure,Pa,double,True,csv,30000,101325,,atm_pres, +apr,Average atmospheric pressure,Pa,double,True,iceberg,30000,101325,,atm_pres, Aep,Albedo extinction coefficient,m,double,False,const,NULL,NULL,0.1,, cc,Canopy coverage fraction,NULL,double,True,const,0,0.8,0.4,, hcan,Canopy height,m,integer,True,const,0,10,5,, @@ -17,18 +17,18 @@ latitude,A 2-D grid that contains the latitude at each grid point,degrees,double subalb,The fraction of shortwave radiation (fraction 0-1) reflected by the substrate beneath the snow (ground or glacier),NULL,double,True,const,0.25,0.7,0.25,, subtype,Type of beneath snow substrate ,NULL,integer,False,const,0,3,0,, gsurf,The fraction of surface melt that runs off (e.g. from a glacier),NULL,double,False,const,,,0,, -b01,Monthly mean of daily temperature range for January used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b02,Monthly mean of daily temperature range for February used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b03,Monthly mean of daily temperature range for March used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b04,Monthly mean of daily temperature range for April used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b05,Monthly mean of daily temperature range for May used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b06,Monthly mean of daily temperature range for June used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b07,Monthly mean of daily temperature range for July used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b08,Monthly mean of daily temperature range for August used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b09,Monthly mean of daily temperature range for September used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b10,Monthly mean of daily temperature range for October used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b11,Monthly mean of daily temperature range for November used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat -b12,Monthly mean of daily temperature range for December used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,csv,,,,,ueb_deltat +b01,Monthly mean of daily temperature range for January used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b02,Monthly mean of daily temperature range for February used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b03,Monthly mean of daily temperature range for March used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b04,Monthly mean of daily temperature range for April used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b05,Monthly mean of daily temperature range for May used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b06,Monthly mean of daily temperature range for June used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b07,Monthly mean of daily temperature range for July used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b08,Monthly mean of daily temperature range for August used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b09,Monthly mean of daily temperature range for September used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b10,Monthly mean of daily temperature range for October used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b11,Monthly mean of daily temperature range for November used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat +b12,Monthly mean of daily temperature range for December used in Bristow Campbell formulas for atmospheric transmissivity,C,double,False,iceberg,,,,,ueb_deltat ts_last,Snow surface temperature one day prior to the model starting time,C,double,False,const,,,-9999,,ueb_deltat longitude,A 2-D grid that contains the longitude at each grid,degrees,double,False,attr,,,,centroid_x, ems,Emissivity of snow,NULL,double,True,const,0.98,0.99,0.99,, diff --git a/src/icefabric_api/src/icefabric_api/create_ipes.py b/src/icefabric_api/src/icefabric_api/create_ipes.py index 21e3596..a2866a5 100644 --- a/src/icefabric_api/src/icefabric_api/create_ipes.py +++ b/src/icefabric_api/src/icefabric_api/create_ipes.py @@ -41,7 +41,7 @@ def module_ipe(module, attr, domain, version, cfg_write=None): } # Get output vars out_datatypes = {"variable": "object", "description": "object"} - + module_params = pd.read_csv(f"{ROOT_DIR}/data/{param_file}", dtype=datatypes) output_vars = pd.DataFrame() if has_output_vars: @@ -70,20 +70,24 @@ def module_ipe(module, attr, domain, version, cfg_write=None): attr = attr[attr_list] # Rename attribute names to module names attr.rename(columns=attr_name_map, inplace=True) + + # Get iceberg table parameters + if "iceberg" in module_params["source"].values: + iceberg_params = divide_parameters(divides, module, domain) - # Get CSV file parameters - if "csv" in module_params["source"].values: - csv_params = divide_parameters(divides, module, domain) - + # Loop through divides and update default values with divide attributes from geopackage + # and iceberg tables for divide in divides: attr_div = attr.loc[attr["divide_id"] == divide] attr_div = attr_div.to_dict(orient="list") all_cats[divide].update(attr_div) - if not csv_params.empty: - csv_params_div = csv_params.loc[csv_params["divide_id"] == divide] - csv_params_div = csv_params_div.to_dict(orient="list") - all_cats[divide].update(csv_params_div) - + if not iceberg_params.empty: + iceberg_params_div = iceberg_params.loc[iceberg_params["divide_id"] == divide] + iceberg_params_div = iceberg_params_div.to_dict(orient="list") + all_cats[divide].update(iceberg_params_div) + + # When dataframe is converted to a dictionary, the values are contained in a list + # Remove the value from the list. for key in all_cats[divide].keys(): value = all_cats[divide][key] if isinstance(value, list): From ae437493f732f98d6fe96665c6e7893db5c0f8f0 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Fri, 27 Jun 2025 09:58:20 -0400 Subject: [PATCH 67/97] NGWPC-6591: Complete the topobathy viewer UI workflow --- .gitignore | 6 + docker/notebook/docker-compose.yml | 19 -- examples/icechunk_data_viewer/README.md | 70 +++++ .../martin/compose.martin.yaml | 10 + .../martin/tiles/.gitkeep | 0 .../martin/tiles/martin_config.yaml | 8 + .../icechunk_data_viewer/requirements.txt | 3 + examples/icechunk_data_viewer/viewer.ipynb | 155 +++++++++++ pyproject.toml | 2 +- src/icefabric_tools/pyproject.toml | 2 + .../icechunk/topobathy_ic_to_tif.py | 33 +++ uv.lock | 256 +++++++++++++++++- 12 files changed, 537 insertions(+), 27 deletions(-) delete mode 100644 docker/notebook/docker-compose.yml create mode 100644 examples/icechunk_data_viewer/README.md create mode 100644 examples/icechunk_data_viewer/martin/compose.martin.yaml create mode 100644 examples/icechunk_data_viewer/martin/tiles/.gitkeep create mode 100644 examples/icechunk_data_viewer/martin/tiles/martin_config.yaml create mode 100644 examples/icechunk_data_viewer/requirements.txt create mode 100644 examples/icechunk_data_viewer/viewer.ipynb create mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py diff --git a/.gitignore b/.gitignore index 45cdff4..e714cfe 100644 --- a/.gitignore +++ b/.gitignore @@ -202,3 +202,9 @@ crash.log # Terraform plan output (optional unless you want to inspect later) *.tfplan + +# tiles +*.pmtiles +examples/icechunk_data_viewer/martin/tiles/quantiles/* +examples/icechunk_data_viewer/martin/tiles/legends/* +examples/icechunk_data_viewer/martin/tiles/legend.png \ No newline at end of file diff --git a/docker/notebook/docker-compose.yml b/docker/notebook/docker-compose.yml deleted file mode 100644 index f09cefc..0000000 --- a/docker/notebook/docker-compose.yml +++ /dev/null @@ -1,19 +0,0 @@ -# NOTE: Unsure the purpose of this compose at this time - personal directories should be removed -version: "3.8" - -services: - jupyterlab: - image: jupyter/base-notebook:latest - ports: - - "8888:8888" - volumes: - - ~/efs/jupyterlab-compose:/home/jovyan/work - environment: - JUPYTER_ENABLE_LAB: "yes" - NB_UID: "1000" - NB_GID : "100" - AWS_ACCESS_KEY_ID: "${AWS_ACCESS_KEY_ID}" - AWS_SECRET_ACCESS_KEY: "${AWS_SECRET_ACCESS_KEY}" - AWS_SESSION_TOKEN: "${AWS_SESSION_TOKEN}" - command: > - bash -c "pip install boto3 && chown -R 1000:100 /home/jovyan/work && start-notebook.sh --NotebookApp.token=''" diff --git a/examples/icechunk_data_viewer/README.md b/examples/icechunk_data_viewer/README.md new file mode 100644 index 0000000..09380ab --- /dev/null +++ b/examples/icechunk_data_viewer/README.md @@ -0,0 +1,70 @@ +# Topobathy Data Viewer +The purpose of this data viewer is to visualize version-controlled tif files hosted by the NGWPC program. The data viewer can be run either on pre-processed tiles, or by creating said tiles on an end-to-end full workflow. Details on how to run each are below +## If tiles are pre-created and stored on s3: +1. Move to icechunk_data-viewer folder: + + `cd examples/icechunk_data_viewer` +2. Export AWS data account credentials to your environment and run in CLI: + + `aws s3 sync s3://hydrofabric-data/surface/nws-topobathy/tiles ./martin/tiles` + +3. Start martin tile server: + + `cd martin` + + `docker compose -f compose.martin.yaml up` + +4. Tile server is now running. Confirm by checking `localhost:3000/catalog`. You should see a list of tile sources. Debug logs should be populating in console. +5. Open a new terminal and move to `icechunk_data_viewer` root + + `cd examples/icechunk_data_viewer` +6. Start jupyter lab in activated icefabric virtual environment. This will start the jupyter server at `localhost:8888/lab` + + `jupyter lab` + +7. Open `viewer.ipynb` in Jupyter Lab +8. Execute cells in `viewer.ipynb`. The map should show the tiles served from Martin. + + +## Full Pipeline - from creating tiles to viewing +1. __In icefabric repo__: Export topobathy from icechunk to TIFF using `icefabric_tools/icechunk/topobathy_ic_to_tif.py`. These will be stored locally. + + __NOTE__: Some files may require more memory than average desktop. If 'killed', move to a cluster with more memory. + +2. Clone hydrofabric-ui-tools +3. __In hydrofabric-ui-tools repo__: Copy saved icechunk TIFs to `data` folder in `hydrofabric-ui-tools` +5. Create or modify `config` files to match TIF +6. Run `build_topobathy_tiles.py` using docker or local environment as described in `README.md`. Some regions may require more memory than average desktop. +7. Tiles will be uploaded to s3 if specified in config. +8. __Return to icefabric repo__ +9. Sync from s3 or paste `.pmtiles` files into + + `icefabric/examples/icechunk_data_viewer/martin/tiles` + +AWS option with data account credentials in env vars. + + cd examples/icechunk_data_viewer + aws s3 sync s3://hydrofabric-data/surface/nws-topobathy/tiles ./martin/tiles + +10. Open `martin_config.yaml` + + `icefabric/examples/icechunk_data_viewer/martin/martin_config.yaml` + +11. Match tile names in `tiles` folders to source name if not correct. Source name will be the URI for tile serving. + +12. Start martin tile server. This must be done in the `martin` working directory to copy the files correctly. + ``` + cd examples/icechunk_data/viewer/martin + docker compose -f compose.martin.yaml up + ``` + +13. Tile server is now running. Confirm by checking `localhost:3000/catalog`. You should see a list of tile sources. +14. Open a new terminal and move to `icechunk_data_viewer` root + + `cd examples/icechunk_data_viewer` +15. Start jupyter lab in activated icefabric virtual environment. This will start the jupyter server at `localhost:8888/lab` + + `jupyter lab` + +16. Open `viewer.ipynb` in Jupyter Lab +17. Execute cells in `viewer.ipynb`. The map should show the tiles served from Martin. diff --git a/examples/icechunk_data_viewer/martin/compose.martin.yaml b/examples/icechunk_data_viewer/martin/compose.martin.yaml new file mode 100644 index 0000000..1916d37 --- /dev/null +++ b/examples/icechunk_data_viewer/martin/compose.martin.yaml @@ -0,0 +1,10 @@ +services: + martin: + image: ghcr.io/maplibre/martin:v0.17.0 + ports: + - 3000:3000 + environment: + - RUST_LOG=debug + volumes: + - "${PWD}/tiles:/tiles" + command: -c /tiles/martin_config.yaml diff --git a/examples/icechunk_data_viewer/martin/tiles/.gitkeep b/examples/icechunk_data_viewer/martin/tiles/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/examples/icechunk_data_viewer/martin/tiles/martin_config.yaml b/examples/icechunk_data_viewer/martin/tiles/martin_config.yaml new file mode 100644 index 0000000..e2b11ee --- /dev/null +++ b/examples/icechunk_data_viewer/martin/tiles/martin_config.yaml @@ -0,0 +1,8 @@ +pmtiles: + sources: + alaska: /tiles/alaska.pmtiles + atlantic: /tiles/conus_atlantic_gulf.pmtiles + pacific: /tiles/conus_pacific.pmtiles + great_lakes: /tiles/great_lakes.pmtiles + hawaii: /tiles/hawaii.pmtiles + pr_usvi: /tiles/pr_usvi.pmtiles diff --git a/examples/icechunk_data_viewer/requirements.txt b/examples/icechunk_data_viewer/requirements.txt new file mode 100644 index 0000000..9115ce8 --- /dev/null +++ b/examples/icechunk_data_viewer/requirements.txt @@ -0,0 +1,3 @@ +jupyterlab==4.4.3 +jupytergis==0.5.0 +matplotlib==3.10.3 \ No newline at end of file diff --git a/examples/icechunk_data_viewer/viewer.ipynb b/examples/icechunk_data_viewer/viewer.ipynb new file mode 100644 index 0000000..02812c5 --- /dev/null +++ b/examples/icechunk_data_viewer/viewer.ipynb @@ -0,0 +1,155 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "9f3c3eb3", + "metadata": {}, + "source": [ + "# Data Viewer: Topobathy\n", + "\n", + "## NOTE: This must viewed in Jupyter Lab\n", + "\n", + "A JupyterGIS project to interactively view topobathy and other spatial files. \n", + "\n", + "Maps are served as pmtiles to allow high performance loading and seamless transition. Maps are classified in quantiles - each color represents 10% of the dataset in its region. Legend can be viewed within notebook.\n", + "\n", + "The layer list can be viewed by clicking the bottom tab on left with \"globe\" symbol after layers are loaded.\n", + "\n", + "Opacity can be adjusted on the layers by clicking the right tab \"globe\" > layer properties > opacity > okay\n", + "\n", + "Requirements:\n", + "- Pre-computed map tiles\n", + "- Running local tile server \"Martin\" on port 3000" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "a3120a17", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.image as mpimg\n", + "import matplotlib.pyplot as plt\n", + "from jupytergis import GISDocument" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "7439900c", + "metadata": {}, + "outputs": [], + "source": [ + "# create the map doc\n", + "doc = GISDocument()\n", + "\n", + "# open the map\n", + "doc.sidecar()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "a05cbcdc", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'6e20a7fa-e8ce-40b9-92cb-f2e13f4ff566'" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add Open Street Map basemap\n", + "doc.add_raster_layer(\"https://tile.openstreetmap.org/{z}/{x}/{y}.png\", name=\"Basemap\")" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "09b6ae09", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'ae71a180-bc06-4582-91bb-c0265f59fbae'" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Add topobathy tile layers\n", + "doc.add_raster_layer(\"http://localhost:3000/pr_usvi/{z}/{x}/{y}\", name=\"Puerto Rico/VI\")\n", + "doc.add_raster_layer(\"http://localhost:3000/alaska/{z}/{x}/{y}\", name=\"Alaska\")\n", + "doc.add_raster_layer(\"http://localhost:3000/atlantic/{z}/{x}/{y}\", name=\"Atlantic/Gulf\")\n", + "doc.add_raster_layer(\"http://localhost:3000/hawaii/{z}/{x}/{y}\", name=\"Hawaii\")\n", + "doc.add_raster_layer(\"http://localhost:3000/pacific/{z}/{x}/{y}\", name=\"Pacific\")\n", + "doc.add_raster_layer(\"http://localhost:3000/great_lakes/{z}/{x}/{y}\", name=\"Great Lakes\")" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "dd6e4c55", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
    " + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# show the legend\n", + "image = mpimg.imread(\"./martin/tiles/legend.png\")\n", + "fig, ax = plt.subplots(figsize=(25, 8))\n", + "ax.imshow(image)\n", + "ax.set_axis_off()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e67f5f73-6c5d-44ba-b8c9-6376307445f6", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/pyproject.toml b/pyproject.toml index 8f524f3..844bda6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,7 @@ members = ["src/icefabric_api", "src/icefabric_manage", "src/icefabric_tools"] dev-dependencies = [ "pre-commit>=3.8.0", "ipykernel>=6.29.5", - "jupyterlab==4.4.2", + "jupyterlab==4.4.3", "pytest>=8.3.2", "ruff==0.11.0", "black==25.1.0", diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml index 9aa31f0..24cbf59 100644 --- a/src/icefabric_tools/pyproject.toml +++ b/src/icefabric_tools/pyproject.toml @@ -45,6 +45,8 @@ dependencies = [ "httpx==0.28.1", "ipywidgets==8.1.6", "mapclassify==2.9.0", + "jupyterlab==4.4.3", + "jupytergis==0.5.0", ] [build-system] diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py b/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py new file mode 100644 index 0000000..e799a23 --- /dev/null +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py @@ -0,0 +1,33 @@ +import os +from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations + +from dotenv import load_dotenv + +load_dotenv() + + +def convert_topobathy_to_tiff(output_dir: str, ic_rasters: list[NGWPCLocations]) -> None: + """Converts topobathy layers from icechunk to tiff for use in tiles + + Parameters + ---------- + output_dir : str + Directory to save outputs to + ic_rasters : list[NGWPCLocations] + list of NGWPCLocation raster paths. eg. [NGWPCLocations[TOPO_AK_30M_IC].path] + """ + for ic_raster in ic_rasters: + repo = IcechunkS3Repo(location=NGWPCLocations[ic_raster].path) + output = os.path.join(output_dir, f"{str.split(str(NGWPCLocations[ic_raster].path), '/')[-1]}.tif") + + repo.retrieve_and_convert_to_tif(dest=output, var_name='elevation') + + +if __name__ == '__main__': + output_dir = "./temp_tb_data" + os.makedirs(output_dir, exist_ok=True) + + # all 30 m topobathy layers + ic_rasters = [f for f in NGWPCLocations._member_names_ if "TOPO" and "30M" in f] + + convert_topobathy_to_tiff(output_dir, ic_rasters) diff --git a/uv.lock b/uv.lock index 62d28ce..9d1b77d 100644 --- a/uv.lock +++ b/uv.lock @@ -514,14 +514,14 @@ wheels = [ [[package]] name = "comm" -version = "0.2.2" +version = "0.1.4" 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 } +sdist = { url = "https://files.pythonhosted.org/packages/6c/c1/839b14561c958d42a875851fcdf4c15604ba8fd174d22f9003eb97d0611e/comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15", size = 5626 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/75/49e5bfe642f71f272236b5b2d2691cf915a7283cc0ceda56357b61daa538/comm-0.2.2-py3-none-any.whl", hash = "sha256:e6fb86cb70ff661ee8c9c14e7d36d6de3b4066f1441be4063df9c5009f0a64d3", size = 7180 }, + { url = "https://files.pythonhosted.org/packages/fe/47/0133ac1b7dc476ed77710715e98077119b3d9bae56b13f6f9055e7da1c53/comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a", size = 6600 }, ] [[package]] @@ -1116,7 +1116,7 @@ dev = [ { name = "icefabric-manage", editable = "src/icefabric_manage" }, { name = "icefabric-tools", editable = "src/icefabric_tools" }, { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "jupyterlab", specifier = "==4.4.2" }, + { name = "jupyterlab", specifier = "==4.4.3" }, { name = "mypy", specifier = "==1.15.0" }, { name = "pre-commit", specifier = ">=3.8.0" }, { name = "pytest", specifier = ">=8.3.2" }, @@ -1180,6 +1180,8 @@ dependencies = [ { name = "httpx" }, { name = "icechunk" }, { name = "ipywidgets" }, + { name = "jupytergis" }, + { name = "jupyterlab" }, { name = "kerchunk" }, { name = "mapclassify" }, { name = "matplotlib" }, @@ -1211,6 +1213,8 @@ requires-dist = [ { name = "httpx", specifier = "==0.28.1" }, { name = "icechunk", specifier = "==0.2.14" }, { name = "ipywidgets", specifier = "==8.1.6" }, + { name = "jupytergis", specifier = "==0.5.0" }, + { name = "jupyterlab", specifier = "==4.4.3" }, { name = "kerchunk", specifier = "==0.2.8" }, { name = "mapclassify", specifier = "==2.9.0" }, { name = "matplotlib", specifier = "==3.10.3" }, @@ -1470,6 +1474,29 @@ 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-collaboration" +version = "3.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-collaboration-ui" }, + { name = "jupyter-docprovider" }, + { name = "jupyter-server-ydoc" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3b/58/9694cedf52019b1c478800cb19c109fd3cc171dc4c81954541c81b631a06/jupyter_collaboration-3.1.2.tar.gz", hash = "sha256:44fc022b4a4f17362a4ba80a50592f4599ce3c04ef65f5cd2b5ed503a362db41", size = 3547 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/50/c3/060967b1ca6d3cb44cede6e5cd9e805607873d38f44ee408a2c95f68b84b/jupyter_collaboration-3.1.2-py3-none-any.whl", hash = "sha256:7b9a04b5ea434d166ceece2e399f95b525598c5dabd3746f4c27c1969aa35231", size = 4629 }, +] + +[[package]] +name = "jupyter-collaboration-ui" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/7e/45a1858909862c77e1fe4f2da3cc1f6b401733cc9589879757f28b4c5c56/jupyter_collaboration_ui-1.1.2.tar.gz", hash = "sha256:5f4128379da255f121da9edee204f17311c8d021005a25d3996d22f95a8645ff", size = 63860 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/20/c3a6a92f86f8eded332a8723976a9ad1d7e988034c9ca634cfa467418290/jupyter_collaboration_ui-1.1.2-py3-none-any.whl", hash = "sha256:bd54191e64751ff168f763ed4e35af528ca59a8bbe8407584916d1d59fe6ff4e", size = 41678 }, +] + [[package]] name = "jupyter-core" version = "5.7.2" @@ -1484,6 +1511,15 @@ 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 = "jupyter-docprovider" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fe/29/1226382335a4fb494e375914361305b4c55e719761459c59acd4bcf93fa6/jupyter_docprovider-1.1.2.tar.gz", hash = "sha256:9bf6723a8257ccd60a7c47b7a72194ab03f3475607d43121b9a5ae91aaaa3e29", size = 44567 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cd/7c/305cd99ba0a94b2b23d1a7eb8eef8f8cf9151951b649c607090a23fd451c/jupyter_docprovider-1.1.2-py3-none-any.whl", hash = "sha256:0b5691cba281e2fbd6af61dc62a12b8959f6fa444af7ee689a14f3e56bdbf499", size = 33170 }, +] + [[package]] name = "jupyter-events" version = "0.12.0" @@ -1545,6 +1581,19 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, ] +[[package]] +name = "jupyter-server-fileid" +version = "0.9.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-events" }, + { name = "jupyter-server" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0d/eb/7c2c09454bbf66b3727ba8c431d16159d642c0eb1aa179412a4f7af721cf/jupyter_server_fileid-0.9.3.tar.gz", hash = "sha256:521608bb87f606a8637fcbdce2f3d24a8b3cc89d2eef61751cb40e468d4e54be", size = 54959 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/d6/5e5bca083664b1dd368e261107cbe2d350e3bdc62bdba8720fdbb9b9db39/jupyter_server_fileid-0.9.3-py3-none-any.whl", hash = "sha256:f73c01c19f90005d3fff93607b91b4955ba4e1dccdde9bfe8026646f94053791", size = 16922 }, +] + [[package]] name = "jupyter-server-terminals" version = "0.5.3" @@ -1558,9 +1607,103 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, ] +[[package]] +name = "jupyter-server-ydoc" +version = "1.1.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jsonschema" }, + { name = "jupyter-events" }, + { name = "jupyter-server" }, + { name = "jupyter-server-fileid" }, + { name = "jupyter-ydoc" }, + { name = "pycrdt" }, + { name = "pycrdt-websocket" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e2/b8/af8d5121861cac76f2b61d6bda1e4d79a15cf53a7c73da3b553023138896/jupyter_server_ydoc-1.1.2.tar.gz", hash = "sha256:299929280bb9263601a75860257531287b5aa0367c59fdf47c2d49be7ed48fa0", size = 26576 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fc/84/eca59301c5b578402fb24953fa08252363734946e20b01b84392d4725bdb/jupyter_server_ydoc-1.1.2-py3-none-any.whl", hash = "sha256:1d319dcf45c65179f34998baa487b52e9106b44d3397b66f8b307ce70f799ed1", size = 29923 }, +] + +[[package]] +name = "jupyter-ydoc" +version = "3.0.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycrdt" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/db/9f/eb56e55a4a1f0663ea4c1d53d9ac7c89a25b8179a3784287d0d5ea49dcfc/jupyter_ydoc-3.0.5.tar.gz", hash = "sha256:12208841a1edfe8ee16b8be3e843d54090268498de2d2e783c33a5dd33c995ff", size = 957157 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/1a/8a/def3223c69dda527d9330124e3e1d2391f36323165b2fc43487d7657beb1/jupyter_ydoc-3.0.5-py3-none-any.whl", hash = "sha256:049578d1381673e44ccf22aefc2b2a1e6a5782c1c2079c262b7c4d9483af1cf6", size = 11141 }, +] + +[[package]] +name = "jupytergis" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-collaboration" }, + { name = "jupyter-collaboration-ui" }, + { name = "jupyter-docprovider" }, + { name = "jupyter-server-ydoc" }, + { name = "jupytergis-core" }, + { name = "jupytergis-lab" }, + { name = "jupytergis-qgis" }, + { name = "jupyterlab" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/4e/602f32543b229c4ae2469f2769bce66ffd6d9f360ffe360e7f27aecb0e25/jupytergis-0.5.0.tar.gz", hash = "sha256:39fda03510c80e0fe9c222a6db318d24cfa1aceabc96cb9d83dbd86d238db019", size = 5101 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/91/82/e99e8c1d1166835a6a20a037df03a4d5c6af354395149c6ff5f726a7ed8e/jupytergis-0.5.0-py3-none-any.whl", hash = "sha256:d9773fad34398854ce141436b79a17ee44f9076ac17d18858a4a3ed9ec069c0b", size = 4362 }, +] + +[[package]] +name = "jupytergis-core" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-ydoc" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/40/ba/244300d1ee8313fca4455bbae2d1c4ba2086d9e900b6df5dbbfc01c398d2/jupytergis_core-0.5.0.tar.gz", hash = "sha256:e83aa0d06ce6e079307abb96453c74fcb2f0ac6bfd07ec1109ccac5cdf21dc02", size = 24843248 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/21/f1/ecd63b693c98d6cd58b88d209ae995583e2f9c3332353ec2cf7cb021b3e0/jupytergis_core-0.5.0-py3-none-any.whl", hash = "sha256:c78fb488a666a4ff4ae5f44a3b7fdd01fb7fe40e113f371e5abf1bb6d2b6fd06", size = 24903322 }, +] + +[[package]] +name = "jupytergis-lab" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "jupyter-ydoc" }, + { name = "jupytergis-core" }, + { name = "pydantic" }, + { name = "requests" }, + { name = "sidecar" }, + { name = "yjs-widgets" }, + { name = "ypywidgets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/89/55/3c25ce7adef6fe3e515255c1ef209973dabe4602bfd11874b577596d4357/jupytergis_lab-0.5.0.tar.gz", hash = "sha256:c099f187dd94b7af49d8637e6d7c3c7f18cbae2bf74b63c1937b7d3df3f9ae4e", size = 96765 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cc/30/48d3d8f18c79581769014f9a181e829735f9d12bea9622e413ae3e3b387a/jupytergis_lab-0.5.0-py3-none-any.whl", hash = "sha256:3eae87dbf6ee014ac4978c5ba721409c4d8544f8fed49fa887fe8e6500431c3c", size = 35386 }, +] + +[[package]] +name = "jupytergis-qgis" +version = "0.5.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "jupyter-server" }, + { name = "jupyter-ydoc" }, + { name = "jupytergis-lab" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/6e/74/34e0a37a228c5d01183b4964da4dbe2b7f835c94e46da2bcec011149d559/jupytergis_qgis-0.5.0.tar.gz", hash = "sha256:b8406ecd8ad698f3c458462184a24db6141f793f6c43538d124a82176225fc4f", size = 86290 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/7a/70/dea89a99d51104f0a255764a540a5c4e1ebe3e86e9c031bdddd5bbfaecb3/jupytergis_qgis-0.5.0-py3-none-any.whl", hash = "sha256:e79992707866a53ee9006dab8e92fbb1091afa1484eaf5322c12da3adb0e318a", size = 39236 }, +] + [[package]] name = "jupyterlab" -version = "4.4.2" +version = "4.4.3" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "async-lru" }, @@ -1577,9 +1720,9 @@ dependencies = [ { name = "tornado" }, { name = "traitlets" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/f4/3c/12a8b27ff2c3b4005bbb5e11c7747246965776d2b821193e53ffd61f1332/jupyterlab-4.4.2.tar.gz", hash = "sha256:afa9caf28c0cb966488be18e5e8daba9f018a1c4273a406b7d5006344cbc6d16", size = 23030818 } +sdist = { url = "https://files.pythonhosted.org/packages/d3/2d/d1678dcf2db66cb4a38a80d9e5fcf48c349f3ac12f2d38882993353ae768/jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2", size = 23032376 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/ae/fbb93f4990b7648849b19112d8b3e7427bbfc9c5cc8fdc6bf14c0e86d104/jupyterlab-4.4.2-py3-none-any.whl", hash = "sha256:857111a50bed68542bf55dca784522fe728f9f88b4fe69e8c585db5c50900419", size = 12294799 }, + { url = "https://files.pythonhosted.org/packages/c6/4d/7dd5c2ffbb960930452a031dc8410746183c924580f2ab4e68ceb5b3043f/jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea", size = 12295480 }, ] [[package]] @@ -2508,6 +2651,49 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/13/a3/a812df4e2dd5696d1f351d58b8fe16a405b234ad2886a0dab9183fb78109/pycparser-2.22-py3-none-any.whl", hash = "sha256:c3702b6d3dd8c7abc1afa565d7e63d53a1d0bd86cdc24edd75470f4de499cfcc", size = 117552 }, ] +[[package]] +name = "pycrdt" +version = "0.12.22" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/98/b3/1f6b9d774e06a7ac3967f337556508e033dcc2b74ee88331c63d559c58e4/pycrdt-0.12.22.tar.gz", hash = "sha256:7cadf6de12a3c5c4ae5b32858643afd50d522424b8ea486903e98167e06481d4", size = 73833 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cf/2a/e6f3cca6db20aa2f9963c6e8cce310fc227e7b783b616ddd805fb9c461c1/pycrdt-0.12.22-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:a8dc35e1411d6c4ad1ebbc9653e9e0d276268cc3ec50449ebfa1597c4a4d4a4c", size = 1671926 }, + { url = "https://files.pythonhosted.org/packages/18/73/2f6b9135514efaafa87644f1268e416cc058226ce69962598fe2c45a860d/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:694477c0c095837729b578a587122df1d980d3f4f5a71bd225c4bcad33777c77", size = 901078 }, + { url = "https://files.pythonhosted.org/packages/4f/8b/583feaab3fbcddda2264a18aa91d73fd8e6fab5bc0e47396e7e76321de8d/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51f333ba569cf6db47d2a0b91fc06f5efc66c62437d6b41db640a9012a5f8c4c", size = 928538 }, + { url = "https://files.pythonhosted.org/packages/49/6f/05c4e14325a6ba54a4b148d1354d5e8e2193fc4456ca9b1dab19ba4ad780/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93e3a91f5df51c2a9bcd104168883ee170daa776cea64bd1bc1702b5b6209b7f", size = 1116584 }, + { url = "https://files.pythonhosted.org/packages/a6/b2/cb721d57cb943b2b08b36056de9bc426fd830a1c711e09186e204c284891/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf1446f2a9853a86238701e4e40a1f2d9f718a6e48c55bbe418834e4f17c78e7", size = 972837 }, + { url = "https://files.pythonhosted.org/packages/2b/13/cccdfaf302d08a3c1eebd22230665e90b488f3b3887194ea6eafabea52af/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eee64d635d95f4f7e9b1e78d6a23ebf853331c13ac9980f0d623b0e611bb17b", size = 923577 }, + { url = "https://files.pythonhosted.org/packages/41/3c/93eda683124a94bdfbbbd277088722f4cc2fade784aadba3a1d22ac56d10/pycrdt-0.12.22-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0e671faa409017f9c2b6fb19cca313a7d6333d3b2eb230259d70e8e72cde8c1", size = 1000442 }, + { url = "https://files.pythonhosted.org/packages/80/f2/a50ca937933d653c7eba653f897d1fcf32ff5fe3bbf9c1082fdd3aa75bf9/pycrdt-0.12.22-cp311-cp311-win32.whl", hash = "sha256:4709baf2cdba6de5b20f63e89e0e74f07446b996b7c63777aa187232d477e5e1", size = 668725 }, + { url = "https://files.pythonhosted.org/packages/cd/e7/032dca6ea3512834397c39f3f399d21fc42561220045d4ab6fbbf8a3c198/pycrdt-0.12.22-cp311-cp311-win_amd64.whl", hash = "sha256:477636dccd78c9588ae84e7f5f2c1abfd65665f4eb9adaea4ef50fee1d9d64df", size = 725252 }, + { url = "https://files.pythonhosted.org/packages/17/76/bc5c407255bf718bd2bae2fff5b6e1f662f25a968abb7db6cd46321b87ca/pycrdt-0.12.22-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:da3196b2f858affa800a80c001119df434a434f4181a49e66e8b0109791d31f2", size = 1650873 }, + { url = "https://files.pythonhosted.org/packages/1f/0d/cbb3ba3d8a3513bb4ff8b33f37ffb9a3c6bf691ba9f98960e59d03959653/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b91d173aeb4d38dafa0ca85af2450ad3d8f44f2909477bd24ab9e9c9dad6021", size = 902864 }, + { url = "https://files.pythonhosted.org/packages/55/18/839e15312909eb835bb8f0453fc46448f3b69b54d2704a13fe88a58ad162/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa09deecc8517d5fa444d941708e759799d001d1a527b19dd266731ff6dd65cd", size = 929371 }, + { url = "https://files.pythonhosted.org/packages/9d/08/55c42eec7df89df780d0258de90210a3626ea1736fed82e7e484f861e30f/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d81b256cb896420880005dca5e6e70792a33ea25629949f995226ee0607af51a", size = 1118987 }, + { url = "https://files.pythonhosted.org/packages/04/b6/42a525c31f39bda9f449f95eb0de3676fe5789b69d0d827014c14a3eeb5f/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c51c12eab45d4f166ebf27e2af88ab0dab55fb7115b76527ea4cecd89eec92f", size = 976533 }, + { url = "https://files.pythonhosted.org/packages/9d/38/c8e9bb0abcb4eedcc0009df25c5ac799b4bcc7f798297698e11bbac938d3/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26cb92f3b4ad73a7eb54758e4afd34e5a35a99713b42918d04b5771b9eb41595", size = 928003 }, + { url = "https://files.pythonhosted.org/packages/9e/8f/86536297b3fe73b5794bdd03c45e7dcd0e488d895c798e2372e2bad421ed/pycrdt-0.12.22-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f776eb11112b7772bbba930a1cc38d4efe405c181d71367b548491654d9118b5", size = 1000534 }, + { url = "https://files.pythonhosted.org/packages/e7/d5/84c9b1ad9da551830dab73f20ef70b57f9bdbca5f4432a57c6ae6f4c5ea9/pycrdt-0.12.22-cp312-cp312-win32.whl", hash = "sha256:94d57ee2dc530c5f2754aba337f287c1780ee1bfc8dcef001f7f5429fc347970", size = 668423 }, + { url = "https://files.pythonhosted.org/packages/fe/fd/3b9ec78f784a1eb53e428b455fe4060f11cd30e842b6b5edd28a31aecff1/pycrdt-0.12.22-cp312-cp312-win_amd64.whl", hash = "sha256:e87cefe71fdfc13672eb33e0f6f1668161edc4e727dfe70fdbb4e8cef76b0b76", size = 722306 }, +] + +[[package]] +name = "pycrdt-websocket" +version = "0.15.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, + { name = "pycrdt" }, + { name = "sqlite-anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/25/97/96f3a984a897f0406c66c54c790e5522879443d1f59a6d5c9563a6dabdd1/pycrdt_websocket-0.15.5.tar.gz", hash = "sha256:aff8c07693ab43b98102ccdaf421738c7d0893db376815de824ea4b4e533de7e", size = 18972 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c9/b8/7b2cef47f423d5e1daed3e81515fb07a74aeb9b9148033e8085de451773e/pycrdt_websocket-0.15.5-py3-none-any.whl", hash = "sha256:215c2139503dc1a4559ce8a1553239dd484ecff077429f5433658dfce35432ee", size = 20277 }, +] + [[package]] name = "pydantic" version = "2.11.5" @@ -2899,6 +3085,15 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, ] +[[package]] +name = "reacttrs" +version = "0.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/90/90/33daccaa6587d18e60ccc48a70d3c36e9e2b48db2606f7829b6c687b31fa/reacttrs-0.2.1.tar.gz", hash = "sha256:6a2cbf7a209deb0be056cc30e7c7c5f1ff5a744cba18c427d5418cc32bb1e53c", size = 3472 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/45/0b/888bee634da04d8fd8a7d177d48bca3888388145b8445810550e77de8b34/reacttrs-0.2.1-py3-none-any.whl", hash = "sha256:1425357d8d7b0d8bc89fc1dce2544410296b605429571e11b682492a3060caed", size = 4398 }, +] + [[package]] name = "referencing" version = "0.36.2" @@ -3197,6 +3392,18 @@ 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 = "sidecar" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "ipywidgets" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/23/8c/1143344be27a8c72ab8f02e6b55270e89eca6387bae542f958b056a18764/sidecar-0.7.0.tar.gz", hash = "sha256:c3fa1694b5611c1fab9d7a96c07577ba0764068a89b7b39be9b9ce9770e9d363", size = 3333537 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c5/8e/3a325661f42c7d7aa246b16cbf1113caf94d418e5c367a2483ee1e1f9603/sidecar-0.7.0-py3-none-any.whl", hash = "sha256:a18e5972b45f5b6a81d6738a223471b3e1627bff1e26053834fd843006e67446", size = 17821 }, +] + [[package]] name = "six" version = "1.17.0" @@ -3262,6 +3469,18 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, ] +[[package]] +name = "sqlite-anyio" +version = "0.2.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "anyio" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ba/7c/fddd3d72346519b4e93ea28152ff7626e533278ed914d82df292c850dfe0/sqlite_anyio-0.2.3.tar.gz", hash = "sha256:12a8b0ececaa63d70d5cc5f91edbd932fc1eca9da70ebce2b31d3a199767b3d3", size = 5409 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d5/bb/6b3d94f713b8cf11f1f802bf625c5df8b98d1a176b9b4ce33c2da12dc977/sqlite_anyio-0.2.3-py3-none-any.whl", hash = "sha256:aa10fa23b7e2ce9c792376630572e1e5837e6f6a9892d90c9ad57419daf4bc01", size = 4711 }, +] + [[package]] name = "stack-data" version = "0.6.3" @@ -3831,6 +4050,29 @@ wheels = [ { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, ] +[[package]] +name = "yjs-widgets" +version = "0.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/17/0b/3cccdf4f401d3f3ef20073d4e969bebcb617ca3c0b83994b0581a9603f85/yjs_widgets-0.4.0.tar.gz", hash = "sha256:31448f51b3f16c8e6790c613630a280ecb22761c4b790f218eefabde27bde472", size = 149444 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/df/22/6899489c9a87757769f4ad36f48325385998f91142d4c57117e828783b1d/yjs_widgets-0.4.0-py3-none-any.whl", hash = "sha256:91f11e24688379a3392d34765deb7cb08ffd60c0cbc022c67fccd21818786b7a", size = 18007 }, +] + +[[package]] +name = "ypywidgets" +version = "0.9.7" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "comm" }, + { name = "pycrdt" }, + { name = "reacttrs" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/46/54/548106c7c40ddc7f4d74cae984e0dd68d57dabb542e3ed4748021c4ce2a9/ypywidgets-0.9.7.tar.gz", hash = "sha256:c80d8aa72fd0d1f0880ae66f2b57c311f64ae14a2615d84fbd9fba36628d43d4", size = 5728 } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3a/07/436016f1d704bde674b44e90d95101c8f8fabcc636294f30b356fc71b097/ypywidgets-0.9.7-py3-none-any.whl", hash = "sha256:98afc04ae01db3d924b832199c60db993680786fe63ad9dabcf50698223e127b", size = 5180 }, +] + [[package]] name = "zarr" version = "3.0.8" From 1878a496d92afeda3c5ae487b2105a8694dd502e Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Fri, 27 Jun 2025 12:28:34 -0400 Subject: [PATCH 68/97] Chore: Cleaning up uv lock, README, and `tqdm` (#40) * removing uv lock from project scope * cleanup: cleaning up readme and adding tqdm to to_tif.py file --- .gitignore | 4 +- examples/icechunk_data_viewer/README.md | 2 +- .../icechunk/topobathy_ic_to_tif.py | 10 +- uv.lock | 4099 ----------------- 4 files changed, 9 insertions(+), 4106 deletions(-) delete mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index e714cfe..54e6449 100644 --- a/.gitignore +++ b/.gitignore @@ -99,7 +99,7 @@ ipython_config.py # 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 +uv.lock # poetry # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. @@ -207,4 +207,4 @@ crash.log *.pmtiles examples/icechunk_data_viewer/martin/tiles/quantiles/* examples/icechunk_data_viewer/martin/tiles/legends/* -examples/icechunk_data_viewer/martin/tiles/legend.png \ No newline at end of file +examples/icechunk_data_viewer/martin/tiles/legend.png diff --git a/examples/icechunk_data_viewer/README.md b/examples/icechunk_data_viewer/README.md index 09380ab..8f0618c 100644 --- a/examples/icechunk_data_viewer/README.md +++ b/examples/icechunk_data_viewer/README.md @@ -54,7 +54,7 @@ AWS option with data account credentials in env vars. 12. Start martin tile server. This must be done in the `martin` working directory to copy the files correctly. ``` - cd examples/icechunk_data/viewer/martin + cd examples/icechunk_data_viewer/martin docker compose -f compose.martin.yaml up ``` diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py b/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py index e799a23..5d14e0f 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py +++ b/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py @@ -1,7 +1,9 @@ import os -from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations from dotenv import load_dotenv +from tqdm import tqdm + +from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations load_dotenv() @@ -16,14 +18,14 @@ def convert_topobathy_to_tiff(output_dir: str, ic_rasters: list[NGWPCLocations]) ic_rasters : list[NGWPCLocations] list of NGWPCLocation raster paths. eg. [NGWPCLocations[TOPO_AK_30M_IC].path] """ - for ic_raster in ic_rasters: + for ic_raster in tqdm(ic_rasters, desc="Downloading IC Rasters to .tif"): repo = IcechunkS3Repo(location=NGWPCLocations[ic_raster].path) output = os.path.join(output_dir, f"{str.split(str(NGWPCLocations[ic_raster].path), '/')[-1]}.tif") - repo.retrieve_and_convert_to_tif(dest=output, var_name='elevation') + repo.retrieve_and_convert_to_tif(dest=output, var_name="elevation") -if __name__ == '__main__': +if __name__ == "__main__": output_dir = "./temp_tb_data" os.makedirs(output_dir, exist_ok=True) diff --git a/uv.lock b/uv.lock deleted file mode 100644 index 9d1b77d..0000000 --- a/uv.lock +++ /dev/null @@ -1,4099 +0,0 @@ -version = 1 -requires-python = ">=3.11, <3.13" -resolution-markers = [ - "python_full_version >= '3.12'", - "python_full_version < '3.12'", -] - -[manifest] -members = [ - "icefabric", - "icefabric-api", - "icefabric-manage", - "icefabric-tools", -] - -[[package]] -name = "affine" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/69/98/d2f0bb06385069e799fc7d2870d9e078cfa0fa396dc8a2b81227d0da08b9/affine-2.4.0.tar.gz", hash = "sha256:a24d818d6a836c131976d22f8c27b8d3ca32d0af64c1d8d29deb7bafa4da1eea", size = 17132 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0b/f7/85273299ab57117850cc0a936c64151171fac4da49bc6fba0dad984a7c5f/affine-2.4.0-py3-none-any.whl", hash = "sha256:8a3df80e2b2378aef598a83c1392efd47967afec4242021a0b06b4c7cbc61a92", size = 15662 }, -] - -[[package]] -name = "aiobotocore" -version = "2.22.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiohttp" }, - { name = "aioitertools" }, - { name = "botocore" }, - { name = "jmespath" }, - { name = "multidict" }, - { name = "python-dateutil" }, - { name = "wrapt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9c/4c/113c4f5611103bba8e5252805fbee7944f5d9541addba9a96b091c0c4308/aiobotocore-2.22.0.tar.gz", hash = "sha256:11091477266b75c2b5d28421c1f2bc9a87d175d0b8619cb830805e7a113a170b", size = 110322 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/8e/ffa5840cb7de19ada85bda1fae1ae22671a18992e9373f2e2df9db5389b5/aiobotocore-2.22.0-py3-none-any.whl", hash = "sha256:b4e6306f79df9d81daff1f9d63189a2dbee4b77ce3ab937304834e35eaaeeccf", size = 78930 }, -] - -[[package]] -name = "aiohappyeyeballs" -version = "2.6.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/26/30/f84a107a9c4331c14b2b586036f40965c128aa4fee4dda5d3d51cb14ad54/aiohappyeyeballs-2.6.1.tar.gz", hash = "sha256:c3f9d0113123803ccadfdf3f0faa505bc78e6a72d1cc4806cbd719826e943558", size = 22760 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0f/15/5bf3b99495fb160b63f95972b81750f18f7f4e02ad051373b669d17d44f2/aiohappyeyeballs-2.6.1-py3-none-any.whl", hash = "sha256:f349ba8f4b75cb25c99c5c2d84e997e485204d2902a9597802b0371f09331fb8", size = 15265 }, -] - -[[package]] -name = "aiohttp" -version = "3.11.18" -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/63/e7/fa1a8c00e2c54b05dc8cb5d1439f627f7c267874e3f7bb047146116020f9/aiohttp-3.11.18.tar.gz", hash = "sha256:ae856e1138612b7e412db63b7708735cff4d38d0399f6a5435d3dac2669f558a", size = 7678653 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2f/10/fd9ee4f9e042818c3c2390054c08ccd34556a3cb209d83285616434cf93e/aiohttp-3.11.18-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:427fdc56ccb6901ff8088544bde47084845ea81591deb16f957897f0f0ba1be9", size = 712088 }, - { url = "https://files.pythonhosted.org/packages/22/eb/6a77f055ca56f7aae2cd2a5607a3c9e7b9554f1497a069dcfcb52bfc9540/aiohttp-3.11.18-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c828b6d23b984255b85b9b04a5b963a74278b7356a7de84fda5e3b76866597b", size = 471450 }, - { url = "https://files.pythonhosted.org/packages/78/dc/5f3c0d27c91abf0bb5d103e9c9b0ff059f60cf6031a5f06f456c90731f42/aiohttp-3.11.18-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5c2eaa145bb36b33af1ff2860820ba0589e165be4ab63a49aebfd0981c173b66", size = 457836 }, - { url = "https://files.pythonhosted.org/packages/49/7b/55b65af9ef48b9b811c91ff8b5b9de9650c71147f10523e278d297750bc8/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d518ce32179f7e2096bf4e3e8438cf445f05fedd597f252de9f54c728574756", size = 1690978 }, - { url = "https://files.pythonhosted.org/packages/a2/5a/3f8938c4f68ae400152b42742653477fc625d6bfe02e764f3521321c8442/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:0700055a6e05c2f4711011a44364020d7a10fbbcd02fbf3e30e8f7e7fddc8717", size = 1745307 }, - { url = "https://files.pythonhosted.org/packages/b4/42/89b694a293333ef6f771c62da022163bcf44fb03d4824372d88e3dc12530/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:8bd1cde83e4684324e6ee19adfc25fd649d04078179890be7b29f76b501de8e4", size = 1780692 }, - { url = "https://files.pythonhosted.org/packages/e2/ce/1a75384e01dd1bf546898b6062b1b5f7a59b6692ef802e4dd6db64fed264/aiohttp-3.11.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:73b8870fe1c9a201b8c0d12c94fe781b918664766728783241a79e0468427e4f", size = 1676934 }, - { url = "https://files.pythonhosted.org/packages/a5/31/442483276e6c368ab5169797d9873b5875213cbcf7e74b95ad1c5003098a/aiohttp-3.11.18-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:25557982dd36b9e32c0a3357f30804e80790ec2c4d20ac6bcc598533e04c6361", size = 1621190 }, - { url = "https://files.pythonhosted.org/packages/7b/83/90274bf12c079457966008a58831a99675265b6a34b505243e004b408934/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7e889c9df381a2433802991288a61e5a19ceb4f61bd14f5c9fa165655dcb1fd1", size = 1658947 }, - { url = "https://files.pythonhosted.org/packages/91/c1/da9cee47a0350b78fdc93670ebe7ad74103011d7778ab4c382ca4883098d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:9ea345fda05bae217b6cce2acf3682ce3b13d0d16dd47d0de7080e5e21362421", size = 1654443 }, - { url = "https://files.pythonhosted.org/packages/c9/f2/73cbe18dc25d624f79a09448adfc4972f82ed6088759ddcf783cd201956c/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9f26545b9940c4b46f0a9388fd04ee3ad7064c4017b5a334dd450f616396590e", size = 1644169 }, - { url = "https://files.pythonhosted.org/packages/5b/32/970b0a196c4dccb1b0cfa5b4dc3b20f63d76f1c608f41001a84b2fd23c3d/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:3a621d85e85dccabd700294494d7179ed1590b6d07a35709bb9bd608c7f5dd1d", size = 1728532 }, - { url = "https://files.pythonhosted.org/packages/0b/50/b1dc810a41918d2ea9574e74125eb053063bc5e14aba2d98966f7d734da0/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:9c23fd8d08eb9c2af3faeedc8c56e134acdaf36e2117ee059d7defa655130e5f", size = 1750310 }, - { url = "https://files.pythonhosted.org/packages/95/24/39271f5990b35ff32179cc95537e92499d3791ae82af7dcf562be785cd15/aiohttp-3.11.18-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9e6b0e519067caa4fd7fb72e3e8002d16a68e84e62e7291092a5433763dc0dd", size = 1691580 }, - { url = "https://files.pythonhosted.org/packages/6b/78/75d0353feb77f041460564f12fe58e456436bbc00cbbf5d676dbf0038cc2/aiohttp-3.11.18-cp311-cp311-win32.whl", hash = "sha256:122f3e739f6607e5e4c6a2f8562a6f476192a682a52bda8b4c6d4254e1138f4d", size = 417565 }, - { url = "https://files.pythonhosted.org/packages/ed/97/b912dcb654634a813f8518de359364dfc45976f822116e725dc80a688eee/aiohttp-3.11.18-cp311-cp311-win_amd64.whl", hash = "sha256:e6f3c0a3a1e73e88af384b2e8a0b9f4fb73245afd47589df2afcab6b638fa0e6", size = 443652 }, - { url = "https://files.pythonhosted.org/packages/b5/d2/5bc436f42bf4745c55f33e1e6a2d69e77075d3e768e3d1a34f96ee5298aa/aiohttp-3.11.18-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:63d71eceb9cad35d47d71f78edac41fcd01ff10cacaa64e473d1aec13fa02df2", size = 706671 }, - { url = "https://files.pythonhosted.org/packages/fe/d0/2dbabecc4e078c0474abb40536bbde717fb2e39962f41c5fc7a216b18ea7/aiohttp-3.11.18-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:d1929da615840969929e8878d7951b31afe0bac883d84418f92e5755d7b49508", size = 466169 }, - { url = "https://files.pythonhosted.org/packages/70/84/19edcf0b22933932faa6e0be0d933a27bd173da02dc125b7354dff4d8da4/aiohttp-3.11.18-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d0aebeb2392f19b184e3fdd9e651b0e39cd0f195cdb93328bd124a1d455cd0e", size = 457554 }, - { url = "https://files.pythonhosted.org/packages/32/d0/e8d1f034ae5624a0f21e4fb3feff79342ce631f3a4d26bd3e58b31ef033b/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3849ead845e8444f7331c284132ab314b4dac43bfae1e3cf350906d4fff4620f", size = 1690154 }, - { url = "https://files.pythonhosted.org/packages/16/de/2f9dbe2ac6f38f8495562077131888e0d2897e3798a0ff3adda766b04a34/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5e8452ad6b2863709f8b3d615955aa0807bc093c34b8e25b3b52097fe421cb7f", size = 1733402 }, - { url = "https://files.pythonhosted.org/packages/e0/04/bd2870e1e9aef990d14b6df2a695f17807baf5c85a4c187a492bda569571/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b8d2b42073611c860a37f718b3d61ae8b4c2b124b2e776e2c10619d920350ec", size = 1783958 }, - { url = "https://files.pythonhosted.org/packages/23/06/4203ffa2beb5bedb07f0da0f79b7d9039d1c33f522e0d1a2d5b6218e6f2e/aiohttp-3.11.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40fbf91f6a0ac317c0a07eb328a1384941872f6761f2e6f7208b63c4cc0a7ff6", size = 1695288 }, - { url = "https://files.pythonhosted.org/packages/30/b2/e2285dda065d9f29ab4b23d8bcc81eb881db512afb38a3f5247b191be36c/aiohttp-3.11.18-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:44ff5625413fec55216da5eaa011cf6b0a2ed67a565914a212a51aa3755b0009", size = 1618871 }, - { url = "https://files.pythonhosted.org/packages/57/e0/88f2987885d4b646de2036f7296ebea9268fdbf27476da551c1a7c158bc0/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:7f33a92a2fde08e8c6b0c61815521324fc1612f397abf96eed86b8e31618fdb4", size = 1646262 }, - { url = "https://files.pythonhosted.org/packages/e0/19/4d2da508b4c587e7472a032290b2981f7caeca82b4354e19ab3df2f51d56/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:11d5391946605f445ddafda5eab11caf310f90cdda1fd99865564e3164f5cff9", size = 1677431 }, - { url = "https://files.pythonhosted.org/packages/eb/ae/047473ea50150a41440f3265f53db1738870b5a1e5406ece561ca61a3bf4/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:3cc314245deb311364884e44242e00c18b5896e4fe6d5f942e7ad7e4cb640adb", size = 1637430 }, - { url = "https://files.pythonhosted.org/packages/11/32/c6d1e3748077ce7ee13745fae33e5cb1dac3e3b8f8787bf738a93c94a7d2/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:0f421843b0f70740772228b9e8093289924359d306530bcd3926f39acbe1adda", size = 1703342 }, - { url = "https://files.pythonhosted.org/packages/c5/1d/a3b57bfdbe285f0d45572d6d8f534fd58761da3e9cbc3098372565005606/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e220e7562467dc8d589e31c1acd13438d82c03d7f385c9cd41a3f6d1d15807c1", size = 1740600 }, - { url = "https://files.pythonhosted.org/packages/a5/71/f9cd2fed33fa2b7ce4d412fb7876547abb821d5b5520787d159d0748321d/aiohttp-3.11.18-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ab2ef72f8605046115bc9aa8e9d14fd49086d405855f40b79ed9e5c1f9f4faea", size = 1695131 }, - { url = "https://files.pythonhosted.org/packages/97/97/d1248cd6d02b9de6aa514793d0dcb20099f0ec47ae71a933290116c070c5/aiohttp-3.11.18-cp312-cp312-win32.whl", hash = "sha256:12a62691eb5aac58d65200c7ae94d73e8a65c331c3a86a2e9670927e94339ee8", size = 412442 }, - { url = "https://files.pythonhosted.org/packages/33/9a/e34e65506e06427b111e19218a99abf627638a9703f4b8bcc3e3021277ed/aiohttp-3.11.18-cp312-cp312-win_amd64.whl", hash = "sha256:364329f319c499128fd5cd2d1c31c44f234c58f9b96cc57f743d16ec4f3238c8", size = 439444 }, -] - -[[package]] -name = "aioitertools" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/06/de/38491a84ab323b47c7f86e94d2830e748780525f7a10c8600b67ead7e9ea/aioitertools-0.12.0.tar.gz", hash = "sha256:c2a9055b4fbb7705f561b9d86053e8af5d10cc845d22c32008c43490b2d8dd6b", size = 19369 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/13/58b70a580de00893223d61de8fea167877a3aed97d4a5e1405c9159ef925/aioitertools-0.12.0-py3-none-any.whl", hash = "sha256:fc1f5fac3d737354de8831cbba3eb04f79dd649d8f3afb4c5b114925e662a796", size = 24345 }, -] - -[[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 = "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 = "anyio" -version = "4.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "sniffio" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/7d/4c1bd541d4dffa1b52bd83fb8527089e097a106fc90b467a7313b105f840/anyio-4.9.0.tar.gz", hash = "sha256:673c0c244e15788651a4ff38710fea9675823028a6f08a5eda409e0c9840a028", size = 190949 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/ee/48ca1a7c89ffec8b6a0c5d02b89c305671d5ffd8d3c94acf8b8c408575bb/anyio-4.9.0-py3-none-any.whl", hash = "sha256:9f76d541cad6e36af7beb62e978876f3b41e3e04f2c1fbf0884604c0a9c4d93c", size = 100916 }, -] - -[[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 = "argon2-cffi" -version = "23.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argon2-cffi-bindings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/31/fa/57ec2c6d16ecd2ba0cf15f3c7d1c3c2e7b5fcb83555ff56d7ab10888ec8f/argon2_cffi-23.1.0.tar.gz", hash = "sha256:879c3e79a2729ce768ebb7d36d4609e3a78a4ca2ec3a9f12286ca057e3d0db08", size = 42798 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/6a/e8a041599e78b6b3752da48000b14c8d1e8a04ded09c88c714ba047f34f5/argon2_cffi-23.1.0-py3-none-any.whl", hash = "sha256:c670642b78ba29641818ab2e68bd4e6a78ba53b7eff7b4c3815ae16abf91c7ea", size = 15124 }, -] - -[[package]] -name = "argon2-cffi-bindings" -version = "21.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e9/184b8ccce6683b0aa2fbb7ba5683ea4b9c5763f1356347f1312c32e3c66e/argon2-cffi-bindings-21.2.0.tar.gz", hash = "sha256:bb89ceffa6c791807d1305ceb77dbfacc5aa499891d2c55661c6459651fc39e3", size = 1779911 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d4/13/838ce2620025e9666aa8f686431f67a29052241692a3dd1ae9d3692a89d3/argon2_cffi_bindings-21.2.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ccb949252cb2ab3a08c02024acb77cfb179492d5701c7cbdbfd776124d4d2367", size = 29658 }, - { url = "https://files.pythonhosted.org/packages/b3/02/f7f7bb6b6af6031edb11037639c697b912e1dea2db94d436e681aea2f495/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9524464572e12979364b7d600abf96181d3541da11e23ddf565a32e70bd4dc0d", size = 80583 }, - { url = "https://files.pythonhosted.org/packages/ec/f7/378254e6dd7ae6f31fe40c8649eea7d4832a42243acaf0f1fff9083b2bed/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b746dba803a79238e925d9046a63aa26bf86ab2a2fe74ce6b009a1c3f5c8f2ae", size = 86168 }, - { url = "https://files.pythonhosted.org/packages/74/f6/4a34a37a98311ed73bb80efe422fed95f2ac25a4cacc5ae1d7ae6a144505/argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:58ed19212051f49a523abb1dbe954337dc82d947fb6e5a0da60f7c8471a8476c", size = 82709 }, - { url = "https://files.pythonhosted.org/packages/74/2b/73d767bfdaab25484f7e7901379d5f8793cccbb86c6e0cbc4c1b96f63896/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_aarch64.whl", hash = "sha256:bd46088725ef7f58b5a1ef7ca06647ebaf0eb4baff7d1d0d177c6cc8744abd86", size = 83613 }, - { url = "https://files.pythonhosted.org/packages/4f/fd/37f86deef67ff57c76f137a67181949c2d408077e2e3dd70c6c42912c9bf/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_i686.whl", hash = "sha256:8cd69c07dd875537a824deec19f978e0f2078fdda07fd5c42ac29668dda5f40f", size = 84583 }, - { url = "https://files.pythonhosted.org/packages/6f/52/5a60085a3dae8fded8327a4f564223029f5f54b0cb0455a31131b5363a01/argon2_cffi_bindings-21.2.0-cp36-abi3-musllinux_1_1_x86_64.whl", hash = "sha256:f1152ac548bd5b8bcecfb0b0371f082037e47128653df2e8ba6e914d384f3c3e", size = 88475 }, - { url = "https://files.pythonhosted.org/packages/8b/95/143cd64feb24a15fa4b189a3e1e7efbaeeb00f39a51e99b26fc62fbacabd/argon2_cffi_bindings-21.2.0-cp36-abi3-win32.whl", hash = "sha256:603ca0aba86b1349b147cab91ae970c63118a0f30444d4bc80355937c950c082", size = 27698 }, - { url = "https://files.pythonhosted.org/packages/37/2c/e34e47c7dee97ba6f01a6203e0383e15b60fb85d78ac9a15cd066f6fe28b/argon2_cffi_bindings-21.2.0-cp36-abi3-win_amd64.whl", hash = "sha256:b2ef1c30440dbbcba7a5dc3e319408b59676e2e039e2ae11a8775ecf482b192f", size = 30817 }, - { url = "https://files.pythonhosted.org/packages/5a/e4/bf8034d25edaa495da3c8a3405627d2e35758e44ff6eaa7948092646fdcc/argon2_cffi_bindings-21.2.0-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:e415e3f62c8d124ee16018e491a009937f8cf7ebf5eb430ffc5de21b900dad93", size = 53104 }, -] - -[[package]] -name = "arrow" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, - { name = "types-python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2e/00/0f6e8fcdb23ea632c866620cc872729ff43ed91d284c866b515c6342b173/arrow-1.3.0.tar.gz", hash = "sha256:d4540617648cb5f895730f1ad8c82a65f2dad0166f57b75f3ca54759c4d67a85", size = 131960 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/ed/e97229a566617f2ae958a6b13e7cc0f585470eac730a73e9e82c32a3cdd2/arrow-1.3.0-py3-none-any.whl", hash = "sha256:c728b120ebc00eb84e01882a6f5e7927a53960aa990ce7dd2b10f39005a67f80", size = 66419 }, -] - -[[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 = "async-lru" -version = "2.0.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b2/4d/71ec4d3939dc755264f680f6c2b4906423a304c3d18e96853f0a595dfe97/async_lru-2.0.5.tar.gz", hash = "sha256:481d52ccdd27275f42c43a928b4a50c3bfb2d67af4e78b170e3e0bb39c66e5bb", size = 10380 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/49/d10027df9fce941cb8184e78a02857af36360d33e1721df81c5ed2179a1a/async_lru-2.0.5-py3-none-any.whl", hash = "sha256:ab95404d8d2605310d345932697371a5f40def0487c03d6d0ad9138de52c9943", size = 6069 }, -] - -[[package]] -name = "attrs" -version = "25.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5a/b0/1367933a8532ee6ff8d63537de4f1177af4bff9f3e829baf7331f595bb24/attrs-25.3.0.tar.gz", hash = "sha256:75d7cefc7fb576747b2c81b4442d4d4a1ce0900973527c011d1030fd3bf4af1b", size = 812032 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/06/bb80f5f86020c4551da315d78b3ab75e8228f89f0162f2c3a819e407941a/attrs-25.3.0-py3-none-any.whl", hash = "sha256:427318ce031701fea540783410126f03899a97ffc6f61596ad581ac2e40e3bc3", size = 63815 }, -] - -[[package]] -name = "babel" -version = "2.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7d/6b/d52e42361e1aa00709585ecc30b3f9684b3ab62530771402248b1b1d6240/babel-2.17.0.tar.gz", hash = "sha256:0c54cffb19f690cdcc52a3b50bcbf71e07a808d1c80d549f2459b9d2cf0afb9d", size = 9951852 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b8/3fe70c75fe32afc4bb507f75563d39bc5642255d1d94f1f23604725780bf/babel-2.17.0-py3-none-any.whl", hash = "sha256:4d0b53093fdfb4b21c92b5213dba5a1b23885afa8383709427046b21c366e5f2", size = 10182537 }, -] - -[[package]] -name = "backrefs" -version = "5.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/46/caba1eb32fa5784428ab401a5487f73db4104590ecd939ed9daaf18b47e0/backrefs-5.8.tar.gz", hash = "sha256:2cab642a205ce966af3dd4b38ee36009b31fa9502a35fd61d59ccc116e40a6bd", size = 6773994 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bf/cb/d019ab87fe70e0fe3946196d50d6a4428623dc0c38a6669c8cae0320fbf3/backrefs-5.8-py310-none-any.whl", hash = "sha256:c67f6638a34a5b8730812f5101376f9d41dc38c43f1fdc35cb54700f6ed4465d", size = 380337 }, - { url = "https://files.pythonhosted.org/packages/a9/86/abd17f50ee21b2248075cb6924c6e7f9d23b4925ca64ec660e869c2633f1/backrefs-5.8-py311-none-any.whl", hash = "sha256:2e1c15e4af0e12e45c8701bd5da0902d326b2e200cafcd25e49d9f06d44bb61b", size = 392142 }, - { url = "https://files.pythonhosted.org/packages/b3/04/7b415bd75c8ab3268cc138c76fa648c19495fcc7d155508a0e62f3f82308/backrefs-5.8-py312-none-any.whl", hash = "sha256:bbef7169a33811080d67cdf1538c8289f76f0942ff971222a16034da88a73486", size = 398021 }, - { url = "https://files.pythonhosted.org/packages/0c/37/fb6973edeb700f6e3d6ff222400602ab1830446c25c7b4676d8de93e65b8/backrefs-5.8-py39-none-any.whl", hash = "sha256:a66851e4533fb5b371aa0628e1fee1af05135616b86140c9d787a2ffdf4b8fdc", size = 380336 }, -] - -[[package]] -name = "beautifulsoup4" -version = "4.13.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "soupsieve" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d8/e4/0c4c39e18fd76d6a628d4dd8da40543d136ce2d1752bd6eeeab0791f4d6b/beautifulsoup4-4.13.4.tar.gz", hash = "sha256:dbb3c4e1ceae6aefebdaf2423247260cd062430a410e38c66f2baa50a8437195", size = 621067 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/cd/30110dc0ffcf3b131156077b90e9f60ed75711223f306da4db08eff8403b/beautifulsoup4-4.13.4-py3-none-any.whl", hash = "sha256:9bbbb14bfde9d79f38b8cd5f8c7c85f4b8f2523190ebed90e950a8dea4cb1c4b", size = 187285 }, -] - -[[package]] -name = "black" -version = "25.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "mypy-extensions" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/94/49/26a7b0f3f35da4b5a65f081943b7bcd22d7002f5f0fb8098ec1ff21cb6ef/black-25.1.0.tar.gz", hash = "sha256:33496d5cd1222ad73391352b4ae8da15253c5de89b93a80b3e2c8d9a19ec2666", size = 649449 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/4f/87f596aca05c3ce5b94b8663dbfe242a12843caaa82dd3f85f1ffdc3f177/black-25.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a39337598244de4bae26475f77dda852ea00a93bd4c728e09eacd827ec929df0", size = 1614372 }, - { url = "https://files.pythonhosted.org/packages/e7/d0/2c34c36190b741c59c901e56ab7f6e54dad8df05a6272a9747ecef7c6036/black-25.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:96c1c7cd856bba8e20094e36e0f948718dc688dba4a9d78c3adde52b9e6c2299", size = 1442865 }, - { url = "https://files.pythonhosted.org/packages/21/d4/7518c72262468430ead45cf22bd86c883a6448b9eb43672765d69a8f1248/black-25.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:bce2e264d59c91e52d8000d507eb20a9aca4a778731a08cfff7e5ac4a4bb7096", size = 1749699 }, - { url = "https://files.pythonhosted.org/packages/58/db/4f5beb989b547f79096e035c4981ceb36ac2b552d0ac5f2620e941501c99/black-25.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:172b1dbff09f86ce6f4eb8edf9dede08b1fce58ba194c87d7a4f1a5aa2f5b3c2", size = 1428028 }, - { url = "https://files.pythonhosted.org/packages/83/71/3fe4741df7adf015ad8dfa082dd36c94ca86bb21f25608eb247b4afb15b2/black-25.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4b60580e829091e6f9238c848ea6750efed72140b91b048770b64e74fe04908b", size = 1650988 }, - { url = "https://files.pythonhosted.org/packages/13/f3/89aac8a83d73937ccd39bbe8fc6ac8860c11cfa0af5b1c96d081facac844/black-25.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:1e2978f6df243b155ef5fa7e558a43037c3079093ed5d10fd84c43900f2d8ecc", size = 1453985 }, - { url = "https://files.pythonhosted.org/packages/6f/22/b99efca33f1f3a1d2552c714b1e1b5ae92efac6c43e790ad539a163d1754/black-25.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:3b48735872ec535027d979e8dcb20bf4f70b5ac75a8ea99f127c106a7d7aba9f", size = 1783816 }, - { url = "https://files.pythonhosted.org/packages/18/7e/a27c3ad3822b6f2e0e00d63d58ff6299a99a5b3aee69fa77cd4b0076b261/black-25.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:ea0213189960bda9cf99be5b8c8ce66bb054af5e9e861249cd23471bd7b0b3ba", size = 1440860 }, - { url = "https://files.pythonhosted.org/packages/09/71/54e999902aed72baf26bca0d50781b01838251a462612966e9fc4891eadd/black-25.1.0-py3-none-any.whl", hash = "sha256:95e8176dae143ba9097f351d174fdaf0ccd29efb414b362ae3fd72bf0f710717", size = 207646 }, -] - -[[package]] -name = "bleach" -version = "6.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/9a/0e33f5054c54d349ea62c277191c020c2d6ef1d65ab2cb1993f91ec846d1/bleach-6.2.0.tar.gz", hash = "sha256:123e894118b8a599fd80d3ec1a6d4cc7ce4e5882b1317a7e1ba69b56e95f991f", size = 203083 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/55/96142937f66150805c25c4d0f31ee4132fd33497753400734f9dfdcbdc66/bleach-6.2.0-py3-none-any.whl", hash = "sha256:117d9c6097a7c3d22fd578fcd8d35ff1e125df6736f554da4e432fdd63f31e5e", size = 163406 }, -] - -[package.optional-dependencies] -css = [ - { name = "tinycss2" }, -] - -[[package]] -name = "boto3" -version = "1.37.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "botocore" }, - { name = "jmespath" }, - { name = "s3transfer" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7e/3f/135ec0771e6d0e1af2ad7023a15df6677d96112072838d948c9b5075efe1/boto3-1.37.3.tar.gz", hash = "sha256:21f3ce0ef111297e63a6eb998a25197b8c10982970c320d4c6e8db08be2157be", size = 111160 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/8c/213511a505af2239a673de4de145d013379275c569185187922f93dbdf14/boto3-1.37.3-py3-none-any.whl", hash = "sha256:2063b40af99fd02f6228ff52397b552ff3353831edaf8d25cc04801827ab9794", size = 139344 }, -] - -[[package]] -name = "botocore" -version = "1.37.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jmespath" }, - { name = "python-dateutil" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/74/fb/b243ab806d2e1e6b8a475b731cc59a1f1e4709eded4884b988a27bbc996b/botocore-1.37.3.tar.gz", hash = "sha256:fe8403eb55a88faf9b0f9da6615e5bee7be056d75e17af66c3c8f0a3b0648da4", size = 13574648 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/54/772118f15b5990173aa5264946cc8c9ff70c8f02d72ee6d63167a985188c/botocore-1.37.3-py3-none-any.whl", hash = "sha256:d01bd3bf4c80e61fa88d636ad9f5c9f60a551d71549b481386c6b4efe0bb2b2e", size = 13342066 }, -] - -[[package]] -name = "branca" -version = "0.8.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jinja2" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e8/1d/bec5cb6669b7bf98b632b20bbbb25200bdc44298e7a39d588b0028a78300/branca-0.8.1.tar.gz", hash = "sha256:ac397c2d79bd13af0d04193b26d5ed17031d27609a7f1fab50c438b8ae712390", size = 27743 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f8/9d/91cddd38bd00170aad1a4b198c47b4ed716be45c234e09b835af41f4e717/branca-0.8.1-py3-none-any.whl", hash = "sha256:d29c5fab31f7c21a92e34bf3f854234e29fecdcf5d2df306b616f20d816be425", size = 26071 }, -] - -[[package]] -name = "cachetools" -version = "5.5.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/81/3747dad6b14fa2cf53fcf10548cf5aea6913e96fab41a3c198676f8948a5/cachetools-5.5.2.tar.gz", hash = "sha256:1a661caa9175d26759571b2e19580f9d6393969e5dfca11fdb1f947a23e640d4", size = 28380 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/72/76/20fa66124dbe6be5cafeb312ece67de6b61dd91a0247d1ea13db4ebb33c2/cachetools-5.5.2-py3-none-any.whl", hash = "sha256:d26a22bcc62eb95c3beabd9f1ee5e820d3d2704fe2967cbe350e20c8ffcd3f0a", size = 10080 }, -] - -[[package]] -name = "certifi" -version = "2025.4.26" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/9e/c05b3920a3b7d20d3d3310465f50348e5b3694f4f88c6daf736eef3024c4/certifi-2025.4.26.tar.gz", hash = "sha256:0a816057ea3cdefcef70270d2c515e4506bbc954f417fa5ade2021213bb8f0c6", size = 160705 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/7e/3db2bd1b1f9e95f7cddca6d6e75e2f2bd9f51b1246e546d88addca0106bd/certifi-2025.4.26-py3-none-any.whl", hash = "sha256:30350364dfe371162649852c63336a15c70c6510c2ad5015b21c2345311805f3", size = 159618 }, -] - -[[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 }, -] - -[[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 = "cftime" -version = "1.6.4.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ab/c8/1155d1d58003105307c7e5985f422ae5bcb2ca0cbc553cc828f3c5a934a7/cftime-1.6.4.post1.tar.gz", hash = "sha256:50ac76cc9f10ab7bd46e44a71c51a6927051b499b4407df4f29ab13d741b942f", size = 54631 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/e6/6a7d2120fcffee208cf637d22b0d8f2701d91f69f68a96940056429950f3/cftime-1.6.4.post1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1bf7be0a0afc87628cb8c8483412aac6e48e83877004faa0936afb5bf8a877ba", size = 233445 }, - { url = "https://files.pythonhosted.org/packages/1c/a0/fe0d14d52cffa72d3f1c281ff9f0f384968058d86ce24fdf9e736ce5b755/cftime-1.6.4.post1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0f64ca83acc4e3029f737bf3a32530ffa1fbf53124f5bee70b47548bc58671a7", size = 214458 }, - { url = "https://files.pythonhosted.org/packages/55/c6/72f8fb5ee057f33ab747ba361f1396d2839a4689669aabd6217bc38430f7/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d7ebdfd81726b0cfb8b524309224fa952898dfa177c13d5f6af5b18cefbf497d", size = 1379075 }, - { url = "https://files.pythonhosted.org/packages/77/81/6b30815698ede50f89013f25e46d66ed3a290b8a2d6b97f95bacbbe1eb5c/cftime-1.6.4.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c9ea0965a4c87739aebd84fe8eed966e5809d10065eeffd35c99c274b6f8da15", size = 1415218 }, - { url = "https://files.pythonhosted.org/packages/24/0d/73ab09a32da1478d3ef5f4ab6c59d42f2db2a2383b427c87e05ad81b71ad/cftime-1.6.4.post1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:800a18aea4e8cb2b206450397cb8a53b154798738af3cdd3c922ce1ca198b0e6", size = 1450704 }, - { url = "https://files.pythonhosted.org/packages/79/b1/6551603f8ea31de55913c84e4def3c36670563bdea6e195fcc4b6225ddf7/cftime-1.6.4.post1-cp311-cp311-win_amd64.whl", hash = "sha256:5dcfc872f455db1f12eabe3c3ba98e93757cd60ed3526a53246e966ccde46c8a", size = 190200 }, - { url = "https://files.pythonhosted.org/packages/50/81/0bb28d54088a61592f61a11e7fcabcea6d261c47af79e18d0f9cbcd940ae/cftime-1.6.4.post1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:a590f73506f4704ba5e154ef55bfbaed5e1b4ac170f3caeb8c58e4f2c619ee4e", size = 226615 }, - { url = "https://files.pythonhosted.org/packages/f3/1e/38dbbf8a828dfb5e0e6e5c912818b77aacf2e7bcb97b262ac6126beeb29f/cftime-1.6.4.post1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:933cb10e1af4e362e77f513e3eb92b34a688729ddbf938bbdfa5ac20a7f44ba0", size = 209193 }, - { url = "https://files.pythonhosted.org/packages/9b/60/0db884c76311ecaaf31f628aa9358beae5fcb0fbbdc2eb0b790a93aa258f/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf17a1b36f62e9e73c4c9363dd811e1bbf1170f5ac26d343fb26012ccf482908", size = 1320215 }, - { url = "https://files.pythonhosted.org/packages/8d/7d/2d5fc7af06da4f3bdea59a204f741bf7a30bc5019355991b2f083e557e4e/cftime-1.6.4.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e18021f421aa26527bad8688c1acf0c85fa72730beb6efce969c316743294f2", size = 1367426 }, - { url = "https://files.pythonhosted.org/packages/5d/ab/e8b26d05323fc5629356c82a7f64026248f121ea1361b49df441bbc8f2d7/cftime-1.6.4.post1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5835b9d622f9304d1c23a35603a0f068739f428d902860f25e6e7e5a1b7cd8ea", size = 1385593 }, - { url = "https://files.pythonhosted.org/packages/af/7b/ca72a075a3f660315b031d62d39a3e9cfef71f7929da2621d5120077a75f/cftime-1.6.4.post1-cp312-cp312-win_amd64.whl", hash = "sha256:7f50bf0d1b664924aaee636eb2933746b942417d1f8b82ab6c1f6e8ba0da6885", size = 178918 }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e4/33/89c2ced2b67d1c2a61c19c6751aa8902d46ce3dacb23600a283619f5a12d/charset_normalizer-3.4.2.tar.gz", hash = "sha256:5baececa9ecba31eff645232d59845c07aa030f0c81ee70184a90d35099a0e63", size = 126367 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/85/4c40d00dcc6284a1c1ad5de5e0996b06f39d8232f1031cd23c2f5c07ee86/charset_normalizer-3.4.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:be1e352acbe3c78727a16a455126d9ff83ea2dfdcbc83148d2982305a04714c2", size = 198794 }, - { url = "https://files.pythonhosted.org/packages/41/d9/7a6c0b9db952598e97e93cbdfcb91bacd89b9b88c7c983250a77c008703c/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa88ca0b1932e93f2d961bf3addbb2db902198dca337d88c89e1559e066e7645", size = 142846 }, - { url = "https://files.pythonhosted.org/packages/66/82/a37989cda2ace7e37f36c1a8ed16c58cf48965a79c2142713244bf945c89/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d524ba3f1581b35c03cb42beebab4a13e6cdad7b36246bd22541fa585a56cccd", size = 153350 }, - { url = "https://files.pythonhosted.org/packages/df/68/a576b31b694d07b53807269d05ec3f6f1093e9545e8607121995ba7a8313/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:28a1005facc94196e1fb3e82a3d442a9d9110b8434fc1ded7a24a2983c9888d8", size = 145657 }, - { url = "https://files.pythonhosted.org/packages/92/9b/ad67f03d74554bed3aefd56fe836e1623a50780f7c998d00ca128924a499/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdb20a30fe1175ecabed17cbf7812f7b804b8a315a25f24678bcdf120a90077f", size = 147260 }, - { url = "https://files.pythonhosted.org/packages/a6/e6/8aebae25e328160b20e31a7e9929b1578bbdc7f42e66f46595a432f8539e/charset_normalizer-3.4.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0f5d9ed7f254402c9e7d35d2f5972c9bbea9040e99cd2861bd77dc68263277c7", size = 149164 }, - { url = "https://files.pythonhosted.org/packages/8b/f2/b3c2f07dbcc248805f10e67a0262c93308cfa149a4cd3d1fe01f593e5fd2/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:efd387a49825780ff861998cd959767800d54f8308936b21025326de4b5a42b9", size = 144571 }, - { url = "https://files.pythonhosted.org/packages/60/5b/c3f3a94bc345bc211622ea59b4bed9ae63c00920e2e8f11824aa5708e8b7/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:f0aa37f3c979cf2546b73e8222bbfa3dc07a641585340179d768068e3455e544", size = 151952 }, - { url = "https://files.pythonhosted.org/packages/e2/4d/ff460c8b474122334c2fa394a3f99a04cf11c646da895f81402ae54f5c42/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e70e990b2137b29dc5564715de1e12701815dacc1d056308e2b17e9095372a82", size = 155959 }, - { url = "https://files.pythonhosted.org/packages/a2/2b/b964c6a2fda88611a1fe3d4c400d39c66a42d6c169c924818c848f922415/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:0c8c57f84ccfc871a48a47321cfa49ae1df56cd1d965a09abe84066f6853b9c0", size = 153030 }, - { url = "https://files.pythonhosted.org/packages/59/2e/d3b9811db26a5ebf444bc0fa4f4be5aa6d76fc6e1c0fd537b16c14e849b6/charset_normalizer-3.4.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:6b66f92b17849b85cad91259efc341dce9c1af48e2173bf38a85c6329f1033e5", size = 148015 }, - { url = "https://files.pythonhosted.org/packages/90/07/c5fd7c11eafd561bb51220d600a788f1c8d77c5eef37ee49454cc5c35575/charset_normalizer-3.4.2-cp311-cp311-win32.whl", hash = "sha256:daac4765328a919a805fa5e2720f3e94767abd632ae410a9062dff5412bae65a", size = 98106 }, - { url = "https://files.pythonhosted.org/packages/a8/05/5e33dbef7e2f773d672b6d79f10ec633d4a71cd96db6673625838a4fd532/charset_normalizer-3.4.2-cp311-cp311-win_amd64.whl", hash = "sha256:e53efc7c7cee4c1e70661e2e112ca46a575f90ed9ae3fef200f2a25e954f4b28", size = 105402 }, - { url = "https://files.pythonhosted.org/packages/d7/a4/37f4d6035c89cac7930395a35cc0f1b872e652eaafb76a6075943754f095/charset_normalizer-3.4.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:0c29de6a1a95f24b9a1aa7aefd27d2487263f00dfd55a77719b530788f75cff7", size = 199936 }, - { url = "https://files.pythonhosted.org/packages/ee/8a/1a5e33b73e0d9287274f899d967907cd0bf9c343e651755d9307e0dbf2b3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cddf7bd982eaa998934a91f69d182aec997c6c468898efe6679af88283b498d3", size = 143790 }, - { url = "https://files.pythonhosted.org/packages/66/52/59521f1d8e6ab1482164fa21409c5ef44da3e9f653c13ba71becdd98dec3/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:fcbe676a55d7445b22c10967bceaaf0ee69407fbe0ece4d032b6eb8d4565982a", size = 153924 }, - { url = "https://files.pythonhosted.org/packages/86/2d/fb55fdf41964ec782febbf33cb64be480a6b8f16ded2dbe8db27a405c09f/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:d41c4d287cfc69060fa91cae9683eacffad989f1a10811995fa309df656ec214", size = 146626 }, - { url = "https://files.pythonhosted.org/packages/8c/73/6ede2ec59bce19b3edf4209d70004253ec5f4e319f9a2e3f2f15601ed5f7/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e594135de17ab3866138f496755f302b72157d115086d100c3f19370839dd3a", size = 148567 }, - { url = "https://files.pythonhosted.org/packages/09/14/957d03c6dc343c04904530b6bef4e5efae5ec7d7990a7cbb868e4595ee30/charset_normalizer-3.4.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cf713fe9a71ef6fd5adf7a79670135081cd4431c2943864757f0fa3a65b1fafd", size = 150957 }, - { url = "https://files.pythonhosted.org/packages/0d/c8/8174d0e5c10ccebdcb1b53cc959591c4c722a3ad92461a273e86b9f5a302/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a370b3e078e418187da8c3674eddb9d983ec09445c99a3a263c2011993522981", size = 145408 }, - { url = "https://files.pythonhosted.org/packages/58/aa/8904b84bc8084ac19dc52feb4f5952c6df03ffb460a887b42615ee1382e8/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a955b438e62efdf7e0b7b52a64dc5c3396e2634baa62471768a64bc2adb73d5c", size = 153399 }, - { url = "https://files.pythonhosted.org/packages/c2/26/89ee1f0e264d201cb65cf054aca6038c03b1a0c6b4ae998070392a3ce605/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:7222ffd5e4de8e57e03ce2cef95a4c43c98fcb72ad86909abdfc2c17d227fc1b", size = 156815 }, - { url = "https://files.pythonhosted.org/packages/fd/07/68e95b4b345bad3dbbd3a8681737b4338ff2c9df29856a6d6d23ac4c73cb/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bee093bf902e1d8fc0ac143c88902c3dfc8941f7ea1d6a8dd2bcb786d33db03d", size = 154537 }, - { url = "https://files.pythonhosted.org/packages/77/1a/5eefc0ce04affb98af07bc05f3bac9094513c0e23b0562d64af46a06aae4/charset_normalizer-3.4.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dedb8adb91d11846ee08bec4c8236c8549ac721c245678282dcb06b221aab59f", size = 149565 }, - { url = "https://files.pythonhosted.org/packages/37/a0/2410e5e6032a174c95e0806b1a6585eb21e12f445ebe239fac441995226a/charset_normalizer-3.4.2-cp312-cp312-win32.whl", hash = "sha256:db4c7bf0e07fc3b7d89ac2a5880a6a8062056801b83ff56d8464b70f65482b6c", size = 98357 }, - { url = "https://files.pythonhosted.org/packages/6c/4f/c02d5c493967af3eda9c771ad4d2bbc8df6f99ddbeb37ceea6e8716a32bc/charset_normalizer-3.4.2-cp312-cp312-win_amd64.whl", hash = "sha256:5a9979887252a82fefd3d3ed2a8e3b937a7a809f65dcb1e068b090e165bbe99e", size = 105776 }, - { url = "https://files.pythonhosted.org/packages/20/94/c5790835a017658cbfabd07f3bfb549140c3ac458cfc196323996b10095a/charset_normalizer-3.4.2-py3-none-any.whl", hash = "sha256:7f56930ab0abd1c45cd15be65cc741c28b1c9a34876ce8c17a2fa107810c0af0", size = 52626 }, -] - -[[package]] -name = "click" -version = "8.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, -] - -[[package]] -name = "click-plugins" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/5f/1d/45434f64ed749540af821fd7e42b8e4d23ac04b1eda7c26613288d6cd8a8/click-plugins-1.1.1.tar.gz", hash = "sha256:46ab999744a9d831159c3411bb0c79346d94a444df9a3a3742e9ed63645f264b", size = 8164 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/da/824b92d9942f4e472702488857914bdd50f73021efea15b4cad9aca8ecef/click_plugins-1.1.1-py2.py3-none-any.whl", hash = "sha256:5d262006d3222f5057fd81e1623d4443e41dcda5dc815c06b442aa3c02889fc8", size = 7497 }, -] - -[[package]] -name = "cligj" -version = "0.7.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ea/0d/837dbd5d8430fd0f01ed72c4cfb2f548180f4c68c635df84ce87956cff32/cligj-0.7.2.tar.gz", hash = "sha256:a4bc13d623356b373c2c27c53dbd9c68cae5d526270bfa71f6c6fa69669c6b27", size = 9803 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/73/86/43fa9f15c5b9fb6e82620428827cd3c284aa933431405d1bcf5231ae3d3e/cligj-0.7.2-py3-none-any.whl", hash = "sha256:c1ca117dbce1fe20a5809dc96f01e1c2840f6dcc939b3ddbb1111bf330ba82df", size = 7069 }, -] - -[[package]] -name = "cloudpickle" -version = "3.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/52/39/069100b84d7418bc358d81669d5748efb14b9cceacd2f9c75f550424132f/cloudpickle-3.1.1.tar.gz", hash = "sha256:b216fa8ae4019d5482a8ac3c95d8f6346115d8835911fd4aefd1a445e4242c64", size = 22113 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/e8/64c37fadfc2816a7701fa8a6ed8d87327c7d54eacfbfb6edab14a2f2be75/cloudpickle-3.1.1-py3-none-any.whl", hash = "sha256:c8c5a44295039331ee9dad40ba100a9c7297b6f988e50e87ccdf3765a668350e", size = 20992 }, -] - -[[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.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6c/c1/839b14561c958d42a875851fcdf4c15604ba8fd174d22f9003eb97d0611e/comm-0.1.4.tar.gz", hash = "sha256:354e40a59c9dd6db50c5cc6b4acc887d82e9603787f83b68c01a80a923984d15", size = 5626 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/47/0133ac1b7dc476ed77710715e98077119b3d9bae56b13f6f9055e7da1c53/comm-0.1.4-py3-none-any.whl", hash = "sha256:6d52794cba11b36ed9860999cd10fd02d6b2eac177068fdd585e1e2f8a96e67a", size = 6600 }, -] - -[[package]] -name = "contourpy" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/66/54/eb9bfc647b19f2009dd5c7f5ec51c4e6ca831725f1aea7a993034f483147/contourpy-1.3.2.tar.gz", hash = "sha256:b6945942715a034c671b7fc54f9588126b0b8bf23db2696e3ca8328f3ff0ab54", size = 13466130 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b3/b9/ede788a0b56fc5b071639d06c33cb893f68b1178938f3425debebe2dab78/contourpy-1.3.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6a37a2fb93d4df3fc4c0e363ea4d16f83195fc09c891bc8ce072b9d084853445", size = 269636 }, - { url = "https://files.pythonhosted.org/packages/e6/75/3469f011d64b8bbfa04f709bfc23e1dd71be54d05b1b083be9f5b22750d1/contourpy-1.3.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:b7cd50c38f500bbcc9b6a46643a40e0913673f869315d8e70de0438817cb7773", size = 254636 }, - { url = "https://files.pythonhosted.org/packages/8d/2f/95adb8dae08ce0ebca4fd8e7ad653159565d9739128b2d5977806656fcd2/contourpy-1.3.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d6658ccc7251a4433eebd89ed2672c2ed96fba367fd25ca9512aa92a4b46c4f1", size = 313053 }, - { url = "https://files.pythonhosted.org/packages/c3/a6/8ccf97a50f31adfa36917707fe39c9a0cbc24b3bbb58185577f119736cc9/contourpy-1.3.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:70771a461aaeb335df14deb6c97439973d253ae70660ca085eec25241137ef43", size = 352985 }, - { url = "https://files.pythonhosted.org/packages/1d/b6/7925ab9b77386143f39d9c3243fdd101621b4532eb126743201160ffa7e6/contourpy-1.3.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:65a887a6e8c4cd0897507d814b14c54a8c2e2aa4ac9f7686292f9769fcf9a6ab", size = 323750 }, - { url = "https://files.pythonhosted.org/packages/c2/f3/20c5d1ef4f4748e52d60771b8560cf00b69d5c6368b5c2e9311bcfa2a08b/contourpy-1.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3859783aefa2b8355697f16642695a5b9792e7a46ab86da1118a4a23a51a33d7", size = 326246 }, - { url = "https://files.pythonhosted.org/packages/8c/e5/9dae809e7e0b2d9d70c52b3d24cba134dd3dad979eb3e5e71f5df22ed1f5/contourpy-1.3.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:eab0f6db315fa4d70f1d8ab514e527f0366ec021ff853d7ed6a2d33605cf4b83", size = 1308728 }, - { url = "https://files.pythonhosted.org/packages/e2/4a/0058ba34aeea35c0b442ae61a4f4d4ca84d6df8f91309bc2d43bb8dd248f/contourpy-1.3.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d91a3ccc7fea94ca0acab82ceb77f396d50a1f67412efe4c526f5d20264e6ecd", size = 1375762 }, - { url = "https://files.pythonhosted.org/packages/09/33/7174bdfc8b7767ef2c08ed81244762d93d5c579336fc0b51ca57b33d1b80/contourpy-1.3.2-cp311-cp311-win32.whl", hash = "sha256:1c48188778d4d2f3d48e4643fb15d8608b1d01e4b4d6b0548d9b336c28fc9b6f", size = 178196 }, - { url = "https://files.pythonhosted.org/packages/5e/fe/4029038b4e1c4485cef18e480b0e2cd2d755448bb071eb9977caac80b77b/contourpy-1.3.2-cp311-cp311-win_amd64.whl", hash = "sha256:5ebac872ba09cb8f2131c46b8739a7ff71de28a24c869bcad554477eb089a878", size = 222017 }, - { url = "https://files.pythonhosted.org/packages/34/f7/44785876384eff370c251d58fd65f6ad7f39adce4a093c934d4a67a7c6b6/contourpy-1.3.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4caf2bcd2969402bf77edc4cb6034c7dd7c0803213b3523f111eb7460a51b8d2", size = 271580 }, - { url = "https://files.pythonhosted.org/packages/93/3b/0004767622a9826ea3d95f0e9d98cd8729015768075d61f9fea8eeca42a8/contourpy-1.3.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:82199cb78276249796419fe36b7386bd8d2cc3f28b3bc19fe2454fe2e26c4c15", size = 255530 }, - { url = "https://files.pythonhosted.org/packages/e7/bb/7bd49e1f4fa805772d9fd130e0d375554ebc771ed7172f48dfcd4ca61549/contourpy-1.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:106fab697af11456fcba3e352ad50effe493a90f893fca6c2ca5c033820cea92", size = 307688 }, - { url = "https://files.pythonhosted.org/packages/fc/97/e1d5dbbfa170725ef78357a9a0edc996b09ae4af170927ba8ce977e60a5f/contourpy-1.3.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d14f12932a8d620e307f715857107b1d1845cc44fdb5da2bc8e850f5ceba9f87", size = 347331 }, - { url = "https://files.pythonhosted.org/packages/6f/66/e69e6e904f5ecf6901be3dd16e7e54d41b6ec6ae3405a535286d4418ffb4/contourpy-1.3.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:532fd26e715560721bb0d5fc7610fce279b3699b018600ab999d1be895b09415", size = 318963 }, - { url = "https://files.pythonhosted.org/packages/a8/32/b8a1c8965e4f72482ff2d1ac2cd670ce0b542f203c8e1d34e7c3e6925da7/contourpy-1.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f26b383144cf2d2c29f01a1e8170f50dacf0eac02d64139dcd709a8ac4eb3cfe", size = 323681 }, - { url = "https://files.pythonhosted.org/packages/30/c6/12a7e6811d08757c7162a541ca4c5c6a34c0f4e98ef2b338791093518e40/contourpy-1.3.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:c49f73e61f1f774650a55d221803b101d966ca0c5a2d6d5e4320ec3997489441", size = 1308674 }, - { url = "https://files.pythonhosted.org/packages/2a/8a/bebe5a3f68b484d3a2b8ffaf84704b3e343ef1addea528132ef148e22b3b/contourpy-1.3.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3d80b2c0300583228ac98d0a927a1ba6a2ba6b8a742463c564f1d419ee5b211e", size = 1380480 }, - { url = "https://files.pythonhosted.org/packages/34/db/fcd325f19b5978fb509a7d55e06d99f5f856294c1991097534360b307cf1/contourpy-1.3.2-cp312-cp312-win32.whl", hash = "sha256:90df94c89a91b7362e1142cbee7568f86514412ab8a2c0d0fca72d7e91b62912", size = 178489 }, - { url = "https://files.pythonhosted.org/packages/01/c8/fadd0b92ffa7b5eb5949bf340a63a4a496a6930a6c37a7ba0f12acb076d6/contourpy-1.3.2-cp312-cp312-win_amd64.whl", hash = "sha256:8c942a01d9163e2e5cfb05cb66110121b8d07ad438a17f9e766317bcb62abf73", size = 223042 }, - { url = "https://files.pythonhosted.org/packages/ff/c0/91f1215d0d9f9f343e4773ba6c9b89e8c0cc7a64a6263f21139da639d848/contourpy-1.3.2-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:5f5964cdad279256c084b69c3f412b7801e15356b16efa9d78aa974041903da0", size = 266807 }, - { url = "https://files.pythonhosted.org/packages/d4/79/6be7e90c955c0487e7712660d6cead01fa17bff98e0ea275737cc2bc8e71/contourpy-1.3.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:49b65a95d642d4efa8f64ba12558fcb83407e58a2dfba9d796d77b63ccfcaff5", size = 318729 }, - { url = "https://files.pythonhosted.org/packages/87/68/7f46fb537958e87427d98a4074bcde4b67a70b04900cfc5ce29bc2f556c1/contourpy-1.3.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8c5acb8dddb0752bf252e01a3035b21443158910ac16a3b0d20e7fed7d534ce5", size = 221791 }, -] - -[[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 }, -] - -[[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 = "2025.5.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/3d/29/05feb8e2531c46d763547c66b7f5deb39b53d99b3be1b4ddddbd1cec6567/dask-2025.5.1.tar.gz", hash = "sha256:979d9536549de0e463f4cab8a8c66c3a2ef55791cd740d07d9bf58fab1d1076a", size = 10969324 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/38/30/53b0844a7a4c6b041b111b24ca15cc9b8661a86fe1f6aaeb2d0d7f0fb1f2/dask-2025.5.1-py3-none-any.whl", hash = "sha256:3b85fdaa5f6f989dde49da6008415b1ae996985ebdfb1e40de2c997d9010371d", size = 1474226 }, -] - -[[package]] -name = "debugpy" -version = "1.8.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bd/75/087fe07d40f490a78782ff3b0a30e3968936854105487decdb33446d4b0e/debugpy-1.8.14.tar.gz", hash = "sha256:7cd287184318416850aa8b60ac90105837bb1e59531898c07569d197d2ed5322", size = 1641444 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/67/e8/57fe0c86915671fd6a3d2d8746e40485fd55e8d9e682388fbb3a3d42b86f/debugpy-1.8.14-cp311-cp311-macosx_14_0_universal2.whl", hash = "sha256:1b2ac8c13b2645e0b1eaf30e816404990fbdb168e193322be8f545e8c01644a9", size = 2175064 }, - { url = "https://files.pythonhosted.org/packages/3b/97/2b2fd1b1c9569c6764ccdb650a6f752e4ac31be465049563c9eb127a8487/debugpy-1.8.14-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cf431c343a99384ac7eab2f763980724834f933a271e90496944195318c619e2", size = 3132359 }, - { url = "https://files.pythonhosted.org/packages/c0/ee/b825c87ed06256ee2a7ed8bab8fb3bb5851293bf9465409fdffc6261c426/debugpy-1.8.14-cp311-cp311-win32.whl", hash = "sha256:c99295c76161ad8d507b413cd33422d7c542889fbb73035889420ac1fad354f2", size = 5133269 }, - { url = "https://files.pythonhosted.org/packages/d5/a6/6c70cd15afa43d37839d60f324213843174c1d1e6bb616bd89f7c1341bac/debugpy-1.8.14-cp311-cp311-win_amd64.whl", hash = "sha256:7816acea4a46d7e4e50ad8d09d963a680ecc814ae31cdef3622eb05ccacf7b01", size = 5158156 }, - { url = "https://files.pythonhosted.org/packages/d9/2a/ac2df0eda4898f29c46eb6713a5148e6f8b2b389c8ec9e425a4a1d67bf07/debugpy-1.8.14-cp312-cp312-macosx_14_0_universal2.whl", hash = "sha256:8899c17920d089cfa23e6005ad9f22582fd86f144b23acb9feeda59e84405b84", size = 2501268 }, - { url = "https://files.pythonhosted.org/packages/10/53/0a0cb5d79dd9f7039169f8bf94a144ad3efa52cc519940b3b7dde23bcb89/debugpy-1.8.14-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f6bb5c0dcf80ad5dbc7b7d6eac484e2af34bdacdf81df09b6a3e62792b722826", size = 4221077 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/84e01821f362327bf4828728aa31e907a2eca7c78cd7c6ec062780d249f8/debugpy-1.8.14-cp312-cp312-win32.whl", hash = "sha256:281d44d248a0e1791ad0eafdbbd2912ff0de9eec48022a5bfbc332957487ed3f", size = 5255127 }, - { url = "https://files.pythonhosted.org/packages/33/16/1ed929d812c758295cac7f9cf3dab5c73439c83d9091f2d91871e648093e/debugpy-1.8.14-cp312-cp312-win_amd64.whl", hash = "sha256:5aa56ef8538893e4502a7d79047fe39b1dae08d9ae257074c6464a7b290b806f", size = 5297249 }, - { url = "https://files.pythonhosted.org/packages/97/1a/481f33c37ee3ac8040d3d51fc4c4e4e7e61cb08b8bc8971d6032acc2279f/debugpy-1.8.14-py2.py3-none-any.whl", hash = "sha256:5cd9a579d553b6cb9759a7908a41988ee6280b961f24f63336835d9418216a20", size = 5256230 }, -] - -[[package]] -name = "decorator" -version = "5.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/43/fa/6d96a0978d19e17b68d634497769987b16c8f4cd0a7a05048bec693caa6b/decorator-5.2.1.tar.gz", hash = "sha256:65f266143752f734b0a7cc83c46f4618af75b8c5911b00ccb61d0ac9b6da0360", size = 56711 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/8c/f3147f5c4b73e7550fe5f9352eaa956ae838d5c51eb58e7a25b9f3e2643b/decorator-5.2.1-py3-none-any.whl", hash = "sha256:d316bb415a2d9e2d2b3abcc4084c6502fc09240e292cd76a76afc106a1c8e04a", size = 9190 }, -] - -[[package]] -name = "defusedxml" -version = "0.7.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/d5/c66da9b79e5bdb124974bfe172b4daf3c984ebd9c2a06e2b8a4dc7331c72/defusedxml-0.7.1.tar.gz", hash = "sha256:1bb3032db185915b62d7c6209c5a8792be6a32ab2fedacc84e01b52c51aa3e69", size = 75520 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/6c/aa3f2f849e01cb6a001cd8554a88d4c77c5c1a31c95bdf1cf9301e6d9ef4/defusedxml-0.7.1-py2.py3-none-any.whl", hash = "sha256:a352e7e428770286cc899e2542b6cdaedb2b4953ff269a210103ec58f6198a61", size = 25604 }, -] - -[[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 = "dnspython" -version = "2.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b5/4a/263763cb2ba3816dd94b08ad3a33d5fdae34ecb856678773cc40a3605829/dnspython-2.7.0.tar.gz", hash = "sha256:ce9c432eda0dc91cf618a5cedf1a4e142651196bbcd2c80e89ed5a907e5cfaf1", size = 345197 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/1b/e0a87d256e40e8c888847551b20a017a6b98139178505dc7ffb96f04e954/dnspython-2.7.0-py3-none-any.whl", hash = "sha256:b4c34b7d10b51bcc3a5071e7b8dee77939f1e878477eeecc965e9835f63c6c86", size = 313632 }, -] - -[[package]] -name = "donfig" -version = "0.8.1.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/71/80cc718ff6d7abfbabacb1f57aaa42e9c1552bfdd01e64ddd704e4a03638/donfig-0.8.1.post1.tar.gz", hash = "sha256:3bef3413a4c1c601b585e8d297256d0c1470ea012afa6e8461dc28bfb7c23f52", size = 19506 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/d5/c5db1ea3394c6e1732fb3286b3bd878b59507a8f77d32a2cebda7d7b7cd4/donfig-0.8.1.post1-py3-none-any.whl", hash = "sha256:2a3175ce74a06109ff9307d90a230f81215cbac9a751f4d1c6194644b8204f9d", size = 21592 }, -] - -[[package]] -name = "email-validator" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "dnspython" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/48/ce/13508a1ec3f8bb981ae4ca79ea40384becc868bfae97fd1c942bb3a001b1/email_validator-2.2.0.tar.gz", hash = "sha256:cb690f344c617a714f22e66ae771445a1ceb46821152df8e165c5f9a364582b7", size = 48967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d7/ee/bf0adb559ad3c786f12bcbc9296b3f5675f529199bef03e2df281fa1fadb/email_validator-2.2.0-py3-none-any.whl", hash = "sha256:561977c2d73ce3611850a06fa56b414621e0c8faa9d66f2611407d87465da631", size = 33521 }, -] - -[[package]] -name = "examples" -version = "1.0.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/08/1a/1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253/examples-1.0.2.tar.gz", hash = "sha256:f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597", size = 8936 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/5b/1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7/examples-1.0.2-py3-none-any.whl", hash = "sha256:372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65", size = 8232 }, -] - -[[package]] -name = "executing" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/50/a9d80c47ff289c611ff12e63f7c5d13942c65d68125160cefd768c73e6e4/executing-2.2.0.tar.gz", hash = "sha256:5d108c028108fe2551d1a7b2e8b713341e2cb4fc0aa7dcf966fa4327a5226755", size = 978693 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/8f/c4d9bafc34ad7ad5d8dc16dd1347ee0e507a52c3adb6bfa8887e1c6a26ba/executing-2.2.0-py2.py3-none-any.whl", hash = "sha256:11387150cad388d62750327a53d3339fad4888b39a6fe233c3afbb54ecffd3aa", size = 26702 }, -] - -[[package]] -name = "fastapi" -version = "0.115.12" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "starlette" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f4/55/ae499352d82338331ca1e28c7f4a63bfd09479b16395dce38cf50a39e2c2/fastapi-0.115.12.tar.gz", hash = "sha256:1e2c2a2646905f9e83d32f04a3f86aff4a286669c6c950ca95b5fd68c2602681", size = 295236 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/b3/b51f09c2ba432a576fe63758bddc81f78f0c6309d9e5c10d194313bf021e/fastapi-0.115.12-py3-none-any.whl", hash = "sha256:e94613d6c05e27be7ffebdd6ea5f388112e5e430c8f7d6494a9d1d88d43e814d", size = 95164 }, -] - -[package.optional-dependencies] -standard = [ - { name = "email-validator" }, - { name = "fastapi-cli", extra = ["standard"] }, - { name = "httpx" }, - { name = "jinja2" }, - { name = "python-multipart" }, - { name = "uvicorn", extra = ["standard"] }, -] - -[[package]] -name = "fastapi-cli" -version = "0.0.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "rich-toolkit" }, - { name = "typer" }, - { name = "uvicorn", extra = ["standard"] }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fe/73/82a5831fbbf8ed75905bacf5b2d9d3dfd6f04d6968b29fe6f72a5ae9ceb1/fastapi_cli-0.0.7.tar.gz", hash = "sha256:02b3b65956f526412515907a0793c9094abd4bfb5457b389f645b0ea6ba3605e", size = 16753 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a1/e6/5daefc851b514ce2287d8f5d358ae4341089185f78f3217a69d0ce3a390c/fastapi_cli-0.0.7-py3-none-any.whl", hash = "sha256:d549368ff584b2804336c61f192d86ddea080c11255f375959627911944804f4", size = 10705 }, -] - -[package.optional-dependencies] -standard = [ - { name = "uvicorn", extra = ["standard"] }, -] - -[[package]] -name = "fastjsonschema" -version = "2.21.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8b/50/4b769ce1ac4071a1ef6d86b1a3fb56cdc3a37615e8c5519e1af96cdac366/fastjsonschema-2.21.1.tar.gz", hash = "sha256:794d4f0a58f848961ba16af7b9c85a3e88cd360df008c59aac6fc5ae9323b5d4", size = 373939 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/2b/0817a2b257fe88725c25589d89aec060581aabf668707a8d03b2e9e0cb2a/fastjsonschema-2.21.1-py3-none-any.whl", hash = "sha256:c9e5b7e908310918cf494a434eeb31384dd84a98b57a30bcb1f535015b554667", size = 23924 }, -] - -[[package]] -name = "filelock" -version = "3.18.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/10/c23352565a6544bdc5353e0b15fc1c563352101f30e24bf500207a54df9a/filelock-3.18.0.tar.gz", hash = "sha256:adbc88eabb99d2fec8c9c1b229b171f18afa655400173ddc653d5d01501fb9f2", size = 18075 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4d/36/2a115987e2d8c300a974597416d9de88f2444426de9571f4b59b2cca3acc/filelock-3.18.0-py3-none-any.whl", hash = "sha256:c401f4f8377c4464e6db25fff06205fd89bdd83b65eb0488ed1b160f780e21de", size = 16215 }, -] - -[[package]] -name = "folium" -version = "0.19.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "branca" }, - { name = "jinja2" }, - { name = "numpy" }, - { name = "requests" }, - { name = "xyzservices" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0b/4e/f5ef1fcacaa669465cc2ee0c71718f2093e89ec4086125fc5f3d335ed62f/folium-0.19.5.tar.gz", hash = "sha256:103ef92d7738b91972f4531211f76eee3f38c88be03111bbd6a5e65c69d084df", size = 106257 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/4d/bcbee0676dc06f0b014a030cb928e158c96daafb872a01ddee7e60a8c998/folium-0.19.5-py2.py3-none-any.whl", hash = "sha256:4333fb3e6f3e9eedb231615d22c6d7df20aea5829554bd6908675865a37803b3", size = 110890 }, -] - -[[package]] -name = "fonttools" -version = "4.58.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9a/cf/4d037663e2a1fe30fddb655d755d76e18624be44ad467c07412c2319ab97/fonttools-4.58.0.tar.gz", hash = "sha256:27423d0606a2c7b336913254bf0b1193ebd471d5f725d665e875c5e88a011a43", size = 3514522 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/76/2e/9b9bd943872a50cb182382f8f4a99af92d76e800603d5f73e4343fdce61a/fonttools-4.58.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:9345b1bb994476d6034996b31891c0c728c1059c05daa59f9ab57d2a4dce0f84", size = 2751920 }, - { url = "https://files.pythonhosted.org/packages/9b/8c/e8d6375da893125f610826c2e30e6d2597dfb8dad256f8ff5a54f3089fda/fonttools-4.58.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:1d93119ace1e2d39ff1340deb71097932f72b21c054bd3da727a3859825e24e5", size = 2313957 }, - { url = "https://files.pythonhosted.org/packages/4f/1b/a29cb00c8c20164b24f88780e298fafd0bbfb25cf8bc7b10c4b69331ad5d/fonttools-4.58.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:79c9e4f01bb04f19df272ae35314eb6349fdb2e9497a163cd22a21be999694bd", size = 4913808 }, - { url = "https://files.pythonhosted.org/packages/d1/ab/9b9507b65b15190cbfe1ccd3c08067d79268d8312ef20948b16d9f5aa905/fonttools-4.58.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:62ecda1465d38248aaf9bee1c17a21cf0b16aef7d121d7d303dbb320a6fd49c2", size = 4935876 }, - { url = "https://files.pythonhosted.org/packages/15/e4/1395853bc775b0ab06a1c61cf261779afda7baff3f65cf1197bbd21aa149/fonttools-4.58.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:29d0499bff12a26733c05c1bfd07e68465158201624b2fba4a40b23d96c43f94", size = 4974798 }, - { url = "https://files.pythonhosted.org/packages/3c/b9/0358368ef5462f4653a198207b29885bee8d5e23c870f6125450ed88e693/fonttools-4.58.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1871abdb0af582e2d96cc12d88889e3bfa796928f491ec14d34a2e58ca298c7e", size = 5093560 }, - { url = "https://files.pythonhosted.org/packages/11/00/f64bc3659980c41eccf2c371e62eb15b40858f02a41a0e9c6258ef094388/fonttools-4.58.0-cp311-cp311-win32.whl", hash = "sha256:e292485d70402093eb94f6ab7669221743838b8bd4c1f45c84ca76b63338e7bf", size = 2186330 }, - { url = "https://files.pythonhosted.org/packages/c8/a0/0287be13a1ec7733abf292ffbd76417cea78752d4ce10fecf92d8b1252d6/fonttools-4.58.0-cp311-cp311-win_amd64.whl", hash = "sha256:6df3755fcf9ad70a74ad3134bd5c9738f73c9bb701a304b1c809877b11fe701c", size = 2234687 }, - { url = "https://files.pythonhosted.org/packages/6a/4e/1c6b35ec7c04d739df4cf5aace4b7ec284d6af2533a65de21972e2f237d9/fonttools-4.58.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:aa8316798f982c751d71f0025b372151ea36405733b62d0d94d5e7b8dd674fa6", size = 2737502 }, - { url = "https://files.pythonhosted.org/packages/fc/72/c6fcafa3c9ed2b69991ae25a1ba7a3fec8bf74928a96e8229c37faa8eda2/fonttools-4.58.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c6db489511e867633b859b11aefe1b7c0d90281c5bdb903413edbb2ba77b97f1", size = 2307214 }, - { url = "https://files.pythonhosted.org/packages/52/11/1015cedc9878da6d8d1758049749eef857b693e5828d477287a959c8650f/fonttools-4.58.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:107bdb2dacb1f627db3c4b77fb16d065a10fe88978d02b4fc327b9ecf8a62060", size = 4811136 }, - { url = "https://files.pythonhosted.org/packages/32/b9/6a1bc1af6ec17eead5d32e87075e22d0dab001eace0b5a1542d38c6a9483/fonttools-4.58.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba7212068ab20f1128a0475f169068ba8e5b6e35a39ba1980b9f53f6ac9720ac", size = 4876598 }, - { url = "https://files.pythonhosted.org/packages/d8/46/b14584c7ea65ad1609fb9632251016cda8a2cd66b15606753b9f888d3677/fonttools-4.58.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:f95ea3b6a3b9962da3c82db73f46d6a6845a6c3f3f968f5293b3ac1864e771c2", size = 4872256 }, - { url = "https://files.pythonhosted.org/packages/05/78/b2105a7812ca4ef9bf180cd741c82f4522316c652ce2a56f788e2eb54b62/fonttools-4.58.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:874f1225cc4ccfeac32009887f722d7f8b107ca5e867dcee067597eef9d4c80b", size = 5028710 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/a38c85ffd30d1f2c7a5460c8abfd1aa66e00c198df3ff0b08117f5c6fcd9/fonttools-4.58.0-cp312-cp312-win32.whl", hash = "sha256:5f3cde64ec99c43260e2e6c4fa70dfb0a5e2c1c1d27a4f4fe4618c16f6c9ff71", size = 2173593 }, - { url = "https://files.pythonhosted.org/packages/66/48/29752962a74b7ed95da976b5a968bba1fe611a4a7e50b9fefa345e6e7025/fonttools-4.58.0-cp312-cp312-win_amd64.whl", hash = "sha256:2aee08e2818de45067109a207cbd1b3072939f77751ef05904d506111df5d824", size = 2223230 }, - { url = "https://files.pythonhosted.org/packages/9b/1f/4417c26e26a1feab85a27e927f7a73d8aabc84544be8ba108ce4aa90eb1e/fonttools-4.58.0-py3-none-any.whl", hash = "sha256:c96c36880be2268be409df7b08c5b5dacac1827083461a6bc2cb07b8cbcec1d7", size = 1111440 }, -] - -[[package]] -name = "fqdn" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/30/3e/a80a8c077fd798951169626cde3e239adeba7dab75deb3555716415bd9b0/fqdn-1.5.1.tar.gz", hash = "sha256:105ed3677e767fb5ca086a0c1f4bb66ebc3c100be518f0e0d755d9eae164d89f", size = 6015 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/58/8acf1b3e91c58313ce5cb67df61001fc9dcd21be4fadb76c1a2d540e09ed/fqdn-1.5.1-py3-none-any.whl", hash = "sha256:3a179af3761e4df6eb2e026ff9e1a3033d3587bf980a0b1b2e1e5d08d7358014", size = 9121 }, -] - -[[package]] -name = "frozenlist" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ee/f4/d744cba2da59b5c1d88823cf9e8a6c74e4659e2b27604ed973be2a0bf5ab/frozenlist-1.6.0.tar.gz", hash = "sha256:b99655c32c1c8e06d111e7f41c06c29a5318cb1835df23a45518e02a47c63b68", size = 42831 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b5/bc883b5296ec902115c00be161da93bf661199c465ec4c483feec6ea4c32/frozenlist-1.6.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ae8337990e7a45683548ffb2fee1af2f1ed08169284cd829cdd9a7fa7470530d", size = 160912 }, - { url = "https://files.pythonhosted.org/packages/6f/93/51b058b563d0704b39c56baa222828043aafcac17fd3734bec5dbeb619b1/frozenlist-1.6.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8c952f69dd524558694818a461855f35d36cc7f5c0adddce37e962c85d06eac0", size = 124315 }, - { url = "https://files.pythonhosted.org/packages/c9/e0/46cd35219428d350558b874d595e132d1c17a9471a1bd0d01d518a261e7c/frozenlist-1.6.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:8f5fef13136c4e2dee91bfb9a44e236fff78fc2cd9f838eddfc470c3d7d90afe", size = 122230 }, - { url = "https://files.pythonhosted.org/packages/d1/0f/7ad2ce928ad06d6dd26a61812b959ded573d3e9d0ee6109d96c2be7172e9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:716bbba09611b4663ecbb7cd022f640759af8259e12a6ca939c0a6acd49eedba", size = 314842 }, - { url = "https://files.pythonhosted.org/packages/34/76/98cbbd8a20a5c3359a2004ae5e5b216af84a150ccbad67c8f8f30fb2ea91/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:7b8c4dc422c1a3ffc550b465090e53b0bf4839047f3e436a34172ac67c45d595", size = 304919 }, - { url = "https://files.pythonhosted.org/packages/9a/fa/258e771ce3a44348c05e6b01dffc2bc67603fba95761458c238cd09a2c77/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b11534872256e1666116f6587a1592ef395a98b54476addb5e8d352925cb5d4a", size = 324074 }, - { url = "https://files.pythonhosted.org/packages/d5/a4/047d861fd8c538210e12b208c0479912273f991356b6bdee7ea8356b07c9/frozenlist-1.6.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c6eceb88aaf7221f75be6ab498dc622a151f5f88d536661af3ffc486245a626", size = 321292 }, - { url = "https://files.pythonhosted.org/packages/c0/25/cfec8af758b4525676cabd36efcaf7102c1348a776c0d1ad046b8a7cdc65/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:62c828a5b195570eb4b37369fcbbd58e96c905768d53a44d13044355647838ff", size = 301569 }, - { url = "https://files.pythonhosted.org/packages/87/2f/0c819372fa9f0c07b153124bf58683b8d0ca7bb73ea5ccde9b9ef1745beb/frozenlist-1.6.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e1c6bd2c6399920c9622362ce95a7d74e7f9af9bfec05fff91b8ce4b9647845a", size = 313625 }, - { url = "https://files.pythonhosted.org/packages/50/5f/f0cf8b0fdedffdb76b3745aa13d5dbe404d63493cc211ce8250f2025307f/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:49ba23817781e22fcbd45fd9ff2b9b8cdb7b16a42a4851ab8025cae7b22e96d0", size = 312523 }, - { url = "https://files.pythonhosted.org/packages/e1/6c/38c49108491272d3e84125bbabf2c2d0b304899b52f49f0539deb26ad18d/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:431ef6937ae0f853143e2ca67d6da76c083e8b1fe3df0e96f3802fd37626e606", size = 322657 }, - { url = "https://files.pythonhosted.org/packages/bd/4b/3bd3bad5be06a9d1b04b1c22be80b5fe65b502992d62fab4bdb25d9366ee/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9d124b38b3c299ca68433597ee26b7819209cb8a3a9ea761dfe9db3a04bba584", size = 303414 }, - { url = "https://files.pythonhosted.org/packages/5b/89/7e225a30bef6e85dbfe22622c24afe932e9444de3b40d58b1ea589a14ef8/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:118e97556306402e2b010da1ef21ea70cb6d6122e580da64c056b96f524fbd6a", size = 320321 }, - { url = "https://files.pythonhosted.org/packages/22/72/7e3acef4dd9e86366cb8f4d8f28e852c2b7e116927e9722b31a6f71ea4b0/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:fb3b309f1d4086b5533cf7bbcf3f956f0ae6469664522f1bde4feed26fba60f1", size = 323975 }, - { url = "https://files.pythonhosted.org/packages/d8/85/e5da03d20507e13c66ce612c9792b76811b7a43e3320cce42d95b85ac755/frozenlist-1.6.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54dece0d21dce4fdb188a1ffc555926adf1d1c516e493c2914d7c370e454bc9e", size = 316553 }, - { url = "https://files.pythonhosted.org/packages/ac/8e/6c609cbd0580ae8a0661c408149f196aade7d325b1ae7adc930501b81acb/frozenlist-1.6.0-cp311-cp311-win32.whl", hash = "sha256:654e4ba1d0b2154ca2f096bed27461cf6160bc7f504a7f9a9ef447c293caf860", size = 115511 }, - { url = "https://files.pythonhosted.org/packages/f2/13/a84804cfde6de12d44ed48ecbf777ba62b12ff09e761f76cdd1ff9e14bb1/frozenlist-1.6.0-cp311-cp311-win_amd64.whl", hash = "sha256:3e911391bffdb806001002c1f860787542f45916c3baf764264a52765d5a5603", size = 120863 }, - { url = "https://files.pythonhosted.org/packages/9c/8a/289b7d0de2fbac832ea80944d809759976f661557a38bb8e77db5d9f79b7/frozenlist-1.6.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:c5b9e42ace7d95bf41e19b87cec8f262c41d3510d8ad7514ab3862ea2197bfb1", size = 160193 }, - { url = "https://files.pythonhosted.org/packages/19/80/2fd17d322aec7f430549f0669f599997174f93ee17929ea5b92781ec902c/frozenlist-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ca9973735ce9f770d24d5484dcb42f68f135351c2fc81a7a9369e48cf2998a29", size = 123831 }, - { url = "https://files.pythonhosted.org/packages/99/06/f5812da431273f78c6543e0b2f7de67dfd65eb0a433978b2c9c63d2205e4/frozenlist-1.6.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6ac40ec76041c67b928ca8aaffba15c2b2ee3f5ae8d0cb0617b5e63ec119ca25", size = 121862 }, - { url = "https://files.pythonhosted.org/packages/d0/31/9e61c6b5fc493cf24d54881731204d27105234d09878be1a5983182cc4a5/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95b7a8a3180dfb280eb044fdec562f9b461614c0ef21669aea6f1d3dac6ee576", size = 316361 }, - { url = "https://files.pythonhosted.org/packages/9d/55/22ca9362d4f0222324981470fd50192be200154d51509ee6eb9baa148e96/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:c444d824e22da6c9291886d80c7d00c444981a72686e2b59d38b285617cb52c8", size = 307115 }, - { url = "https://files.pythonhosted.org/packages/ae/39/4fff42920a57794881e7bb3898dc7f5f539261711ea411b43bba3cde8b79/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb52c8166499a8150bfd38478248572c924c003cbb45fe3bcd348e5ac7c000f9", size = 322505 }, - { url = "https://files.pythonhosted.org/packages/55/f2/88c41f374c1e4cf0092a5459e5f3d6a1e17ed274c98087a76487783df90c/frozenlist-1.6.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b35298b2db9c2468106278537ee529719228950a5fdda686582f68f247d1dc6e", size = 322666 }, - { url = "https://files.pythonhosted.org/packages/75/51/034eeb75afdf3fd03997856195b500722c0b1a50716664cde64e28299c4b/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d108e2d070034f9d57210f22fefd22ea0d04609fc97c5f7f5a686b3471028590", size = 302119 }, - { url = "https://files.pythonhosted.org/packages/2b/a6/564ecde55ee633270a793999ef4fd1d2c2b32b5a7eec903b1012cb7c5143/frozenlist-1.6.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4e1be9111cb6756868ac242b3c2bd1f09d9aea09846e4f5c23715e7afb647103", size = 316226 }, - { url = "https://files.pythonhosted.org/packages/f1/c8/6c0682c32377f402b8a6174fb16378b683cf6379ab4d2827c580892ab3c7/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:94bb451c664415f02f07eef4ece976a2c65dcbab9c2f1705b7031a3a75349d8c", size = 312788 }, - { url = "https://files.pythonhosted.org/packages/b6/b8/10fbec38f82c5d163ca1750bfff4ede69713badf236a016781cf1f10a0f0/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:d1a686d0b0949182b8faddea596f3fc11f44768d1f74d4cad70213b2e139d821", size = 325914 }, - { url = "https://files.pythonhosted.org/packages/62/ca/2bf4f3a1bd40cdedd301e6ecfdbb291080d5afc5f9ce350c0739f773d6b9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea8e59105d802c5a38bdbe7362822c522230b3faba2aa35c0fa1765239b7dd70", size = 305283 }, - { url = "https://files.pythonhosted.org/packages/09/64/20cc13ccf94abc2a1f482f74ad210703dc78a590d0b805af1c9aa67f76f9/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:abc4e880a9b920bc5020bf6a431a6bb40589d9bca3975c980495f63632e8382f", size = 319264 }, - { url = "https://files.pythonhosted.org/packages/20/ff/86c6a2bbe98cfc231519f5e6d712a0898488ceac804a917ce014f32e68f6/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9a79713adfe28830f27a3c62f6b5406c37376c892b05ae070906f07ae4487046", size = 326482 }, - { url = "https://files.pythonhosted.org/packages/2f/da/8e381f66367d79adca245d1d71527aac774e30e291d41ef161ce2d80c38e/frozenlist-1.6.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:9a0318c2068e217a8f5e3b85e35899f5a19e97141a45bb925bb357cfe1daf770", size = 318248 }, - { url = "https://files.pythonhosted.org/packages/39/24/1a1976563fb476ab6f0fa9fefaac7616a4361dbe0461324f9fd7bf425dbe/frozenlist-1.6.0-cp312-cp312-win32.whl", hash = "sha256:853ac025092a24bb3bf09ae87f9127de9fe6e0c345614ac92536577cf956dfcc", size = 115161 }, - { url = "https://files.pythonhosted.org/packages/80/2e/fb4ed62a65f8cd66044706b1013f0010930d8cbb0729a2219561ea075434/frozenlist-1.6.0-cp312-cp312-win_amd64.whl", hash = "sha256:2bdfe2d7e6c9281c6e55523acd6c2bf77963cb422fdc7d142fb0cb6621b66878", size = 120548 }, - { url = "https://files.pythonhosted.org/packages/71/3e/b04a0adda73bd52b390d730071c0d577073d3d26740ee1bad25c3ad0f37b/frozenlist-1.6.0-py3-none-any.whl", hash = "sha256:535eec9987adb04701266b92745d6cdcef2e77669299359c3009c3404dd5d191", size = 12404 }, -] - -[[package]] -name = "fsspec" -version = "2025.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/f7/27f15d41f0ed38e8fcc488584b57e902b331da7f7c6dcda53721b15838fc/fsspec-2025.5.1.tar.gz", hash = "sha256:2e55e47a540b91843b755e83ded97c6e897fa0942b11490113f09e9c443c2475", size = 303033 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/61/78c7b3851add1481b048b5fdc29067397a1784e2910592bc81bb3f608635/fsspec-2025.5.1-py3-none-any.whl", hash = "sha256:24d3a2e663d5fc735ab256263c4075f374a174c3410c0b25e5bd1970bceaa462", size = 199052 }, -] - -[[package]] -name = "geodatasets" -version = "2024.8.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pooch" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c5/19/37a772bf09a9758eb1c09ed9ad6a11dcf0435dadd89bc46e3f78d709f353/geodatasets-2024.8.0.tar.gz", hash = "sha256:ea1b0f885f1b3305d4a308b2ddee042e425c5288b5ff6b00e6b0ac74a4d5e8d9", size = 457760 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9d/dd/e30e144271280d263c0c10f34fbcf2e09e9a82bd11a165c5f1f498899a29/geodatasets-2024.8.0-py3-none-any.whl", hash = "sha256:fd2a91618277553dbb180496bb952d496e4bc99e8c0066c5dc06701d66d53540", size = 20029 }, -] - -[[package]] -name = "geopandas" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "packaging" }, - { name = "pandas" }, - { name = "pyogrio" }, - { name = "pyproj" }, - { name = "shapely" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/39/08/2cf5d85356e45b10b8d066cf4c3ba1e9e3185423c48104eed87e8afd0455/geopandas-1.0.1.tar.gz", hash = "sha256:b8bf70a5534588205b7a56646e2082fb1de9a03599651b3d80c99ea4c2ca08ab", size = 317736 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c4/64/7d344cfcef5efddf9cf32f59af7f855828e9d74b5f862eddf5bfd9f25323/geopandas-1.0.1-py3-none-any.whl", hash = "sha256:01e147d9420cc374d26f51fc23716ac307f32b49406e4bd8462c07e82ed1d3d6", size = 323587 }, -] - -[[package]] -name = "ghp-import" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d9/29/d40217cbe2f6b1359e00c6c307bb3fc876ba74068cbab3dde77f03ca0dc4/ghp-import-2.1.0.tar.gz", hash = "sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343", size = 10943 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/ec/67fbef5d497f86283db54c22eec6f6140243aae73265799baaaa19cd17fb/ghp_import-2.1.0-py3-none-any.whl", hash = "sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619", size = 11034 }, -] - -[[package]] -name = "greenlet" -version = "3.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/2e/d4fcb2978f826358b673f779f78fa8a32ee37df11920dc2bb5589cbeecef/greenlet-3.2.3-cp311-cp311-macosx_11_0_universal2.whl", hash = "sha256:784ae58bba89fa1fa5733d170d42486580cab9decda3484779f4759345b29822", size = 270219 }, - { url = "https://files.pythonhosted.org/packages/16/24/929f853e0202130e4fe163bc1d05a671ce8dcd604f790e14896adac43a52/greenlet-3.2.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:0921ac4ea42a5315d3446120ad48f90c3a6b9bb93dd9b3cf4e4d84a66e42de83", size = 630383 }, - { url = "https://files.pythonhosted.org/packages/d1/b2/0320715eb61ae70c25ceca2f1d5ae620477d246692d9cc284c13242ec31c/greenlet-3.2.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:d2971d93bb99e05f8c2c0c2f4aa9484a18d98c4c3bd3c62b65b7e6ae33dfcfaf", size = 642422 }, - { url = "https://files.pythonhosted.org/packages/bd/49/445fd1a210f4747fedf77615d941444349c6a3a4a1135bba9701337cd966/greenlet-3.2.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:c667c0bf9d406b77a15c924ef3285e1e05250948001220368e039b6aa5b5034b", size = 638375 }, - { url = "https://files.pythonhosted.org/packages/7e/c8/ca19760cf6eae75fa8dc32b487e963d863b3ee04a7637da77b616703bc37/greenlet-3.2.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:592c12fb1165be74592f5de0d70f82bc5ba552ac44800d632214b76089945147", size = 637627 }, - { url = "https://files.pythonhosted.org/packages/65/89/77acf9e3da38e9bcfca881e43b02ed467c1dedc387021fc4d9bd9928afb8/greenlet-3.2.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:29e184536ba333003540790ba29829ac14bb645514fbd7e32af331e8202a62a5", size = 585502 }, - { url = "https://files.pythonhosted.org/packages/97/c6/ae244d7c95b23b7130136e07a9cc5aadd60d59b5951180dc7dc7e8edaba7/greenlet-3.2.3-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:93c0bb79844a367782ec4f429d07589417052e621aa39a5ac1fb99c5aa308edc", size = 1114498 }, - { url = "https://files.pythonhosted.org/packages/89/5f/b16dec0cbfd3070658e0d744487919740c6d45eb90946f6787689a7efbce/greenlet-3.2.3-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:751261fc5ad7b6705f5f76726567375bb2104a059454e0226e1eef6c756748ba", size = 1139977 }, - { url = "https://files.pythonhosted.org/packages/66/77/d48fb441b5a71125bcac042fc5b1494c806ccb9a1432ecaa421e72157f77/greenlet-3.2.3-cp311-cp311-win_amd64.whl", hash = "sha256:83a8761c75312361aa2b5b903b79da97f13f556164a7dd2d5448655425bd4c34", size = 297017 }, - { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992 }, - { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820 }, - { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046 }, - { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701 }, - { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747 }, - { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461 }, - { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190 }, - { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055 }, - { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817 }, -] - -[[package]] -name = "h11" -version = "0.16.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/01/ee/02a2c011bdab74c6fb3c75474d40b3052059d95df7e73351460c8588d963/h11-0.16.0.tar.gz", hash = "sha256:4e35b956cf45792e4caa5885e69fba00bdbc6ffafbfa020300e549b208ee5ff1", size = 101250 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/4b/29cac41a4d98d144bf5f6d33995617b185d14b22401f75ca86f384e87ff1/h11-0.16.0-py3-none-any.whl", hash = "sha256:63cf8bbe7522de3bf65932fda1d9c2772064ffb3dae62d55932da54b31cb6c86", size = 37515 }, -] - -[[package]] -name = "h5netcdf" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "h5py" }, - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/34/6d/c1b8e48fccbb588c23033bf219a3190a50813857d78a4c1aae2e1f3969e9/h5netcdf-1.6.1.tar.gz", hash = "sha256:7ef4ecd811374d94d29ac5e7f7db71ff59b55ef8eeefbe4ccc2c316853d31894", size = 64456 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/fc/e73747f3dd31906bfbb78c76069f67d91525fefa28492a1f949cbb4a3c7f/h5netcdf-1.6.1-py3-none-any.whl", hash = "sha256:1ec75cabd6ab50c6e7109d0c6595eb2960ba0e79fef2257607ab80838d84e6f6", size = 49561 }, -] - -[[package]] -name = "h5py" -version = "3.13.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/03/2e/a22d6a8bfa6f8be33e7febd985680fba531562795f0a9077ed1eb047bfb0/h5py-3.13.0.tar.gz", hash = "sha256:1870e46518720023da85d0895a1960ff2ce398c5671eac3b1a41ec696b7105c3", size = 414876 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/86/2b/50b15fdefb577d073b49699e6ea6a0a77a3a1016c2b67e2149fc50124a10/h5py-3.13.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8a8e38ef4ceb969f832cc230c0cf808c613cc47e31e768fd7b1106c55afa1cb8", size = 3422922 }, - { url = "https://files.pythonhosted.org/packages/94/59/36d87a559cab9c59b59088d52e86008d27a9602ce3afc9d3b51823014bf3/h5py-3.13.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:f35640e81b03c02a88b8bf99fb6a9d3023cc52f7c627694db2f379e0028f2868", size = 2921619 }, - { url = "https://files.pythonhosted.org/packages/37/ef/6f80b19682c0b0835bbee7b253bec9c16af9004f2fd6427b1dd858100273/h5py-3.13.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:337af114616f3656da0c83b68fcf53ecd9ce9989a700b0883a6e7c483c3235d4", size = 4259366 }, - { url = "https://files.pythonhosted.org/packages/03/71/c99f662d4832c8835453cf3476f95daa28372023bda4aa1fca9e97c24f09/h5py-3.13.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:782ff0ac39f455f21fd1c8ebc007328f65f43d56718a89327eec76677ebf238a", size = 4509058 }, - { url = "https://files.pythonhosted.org/packages/56/89/e3ff23e07131ff73a72a349be9639e4de84e163af89c1c218b939459a98a/h5py-3.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:22ffe2a25770a2d67213a1b94f58006c14dce06933a42d2aaa0318c5868d1508", size = 2966428 }, - { url = "https://files.pythonhosted.org/packages/d8/20/438f6366ba4ded80eadb38f8927f5e2cd6d2e087179552f20ae3dbcd5d5b/h5py-3.13.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:477c58307b6b9a2509c59c57811afb9f598aedede24a67da808262dfa0ee37b4", size = 3384442 }, - { url = "https://files.pythonhosted.org/packages/10/13/cc1cb7231399617d9951233eb12fddd396ff5d4f7f057ee5d2b1ca0ee7e7/h5py-3.13.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:57c4c74f627c616f02b7aec608a8c706fe08cb5b0ba7c08555a4eb1dde20805a", size = 2917567 }, - { url = "https://files.pythonhosted.org/packages/9e/d9/aed99e1c858dc698489f916eeb7c07513bc864885d28ab3689d572ba0ea0/h5py-3.13.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:357e6dc20b101a805ccfd0024731fbaf6e8718c18c09baf3b5e4e9d198d13fca", size = 4669544 }, - { url = "https://files.pythonhosted.org/packages/a7/da/3c137006ff5f0433f0fb076b1ebe4a7bf7b5ee1e8811b5486af98b500dd5/h5py-3.13.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d6f13f9b5ce549448c01e4dfe08ea8d1772e6078799af2c1c8d09e941230a90d", size = 4932139 }, - { url = "https://files.pythonhosted.org/packages/25/61/d897952629cae131c19d4c41b2521e7dd6382f2d7177c87615c2e6dced1a/h5py-3.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:21daf38171753899b5905f3d82c99b0b1ec2cbbe282a037cad431feb620e62ec", size = 2954179 }, -] - -[[package]] -name = "httpcore" -version = "1.0.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/94/82699a10bca87a5556c9c59b5963f2d039dbd239f25bc2a63907a05a14cb/httpcore-1.0.9.tar.gz", hash = "sha256:6e34463af53fd2ab5d807f399a9b45ea31c3dfa2276f15a2c3f00afff6e176e8", size = 85484 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/f5/f66802a942d491edb555dd61e3a9961140fd64c90bce1eafd741609d334d/httpcore-1.0.9-py3-none-any.whl", hash = "sha256:2d400746a40668fc9dec9810239072b40b4484b640a8c38fd654a024c7a1bf55", size = 78784 }, -] - -[[package]] -name = "httptools" -version = "0.6.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a7/9a/ce5e1f7e131522e6d3426e8e7a490b3a01f39a6696602e1c4f33f9e94277/httptools-0.6.4.tar.gz", hash = "sha256:4e93eee4add6493b59a5c514da98c939b244fce4a0d8879cd3f466562f4b7d5c", size = 240639 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/26/bb526d4d14c2774fe07113ca1db7255737ffbb119315839af2065abfdac3/httptools-0.6.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:f47f8ed67cc0ff862b84a1189831d1d33c963fb3ce1ee0c65d3b0cbe7b711069", size = 199029 }, - { url = "https://files.pythonhosted.org/packages/a6/17/3e0d3e9b901c732987a45f4f94d4e2c62b89a041d93db89eafb262afd8d5/httptools-0.6.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0614154d5454c21b6410fdf5262b4a3ddb0f53f1e1721cfd59d55f32138c578a", size = 103492 }, - { url = "https://files.pythonhosted.org/packages/b7/24/0fe235d7b69c42423c7698d086d4db96475f9b50b6ad26a718ef27a0bce6/httptools-0.6.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f8787367fbdfccae38e35abf7641dafc5310310a5987b689f4c32cc8cc3ee975", size = 462891 }, - { url = "https://files.pythonhosted.org/packages/b1/2f/205d1f2a190b72da6ffb5f41a3736c26d6fa7871101212b15e9b5cd8f61d/httptools-0.6.4-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:40b0f7fe4fd38e6a507bdb751db0379df1e99120c65fbdc8ee6c1d044897a636", size = 459788 }, - { url = "https://files.pythonhosted.org/packages/6e/4c/d09ce0eff09057a206a74575ae8f1e1e2f0364d20e2442224f9e6612c8b9/httptools-0.6.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:40a5ec98d3f49904b9fe36827dcf1aadfef3b89e2bd05b0e35e94f97c2b14721", size = 433214 }, - { url = "https://files.pythonhosted.org/packages/3e/d2/84c9e23edbccc4a4c6f96a1b8d99dfd2350289e94f00e9ccc7aadde26fb5/httptools-0.6.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:dacdd3d10ea1b4ca9df97a0a303cbacafc04b5cd375fa98732678151643d4988", size = 434120 }, - { url = "https://files.pythonhosted.org/packages/d0/46/4d8e7ba9581416de1c425b8264e2cadd201eb709ec1584c381f3e98f51c1/httptools-0.6.4-cp311-cp311-win_amd64.whl", hash = "sha256:288cd628406cc53f9a541cfaf06041b4c71d751856bab45e3702191f931ccd17", size = 88565 }, - { url = "https://files.pythonhosted.org/packages/bb/0e/d0b71465c66b9185f90a091ab36389a7352985fe857e352801c39d6127c8/httptools-0.6.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:df017d6c780287d5c80601dafa31f17bddb170232d85c066604d8558683711a2", size = 200683 }, - { url = "https://files.pythonhosted.org/packages/e2/b8/412a9bb28d0a8988de3296e01efa0bd62068b33856cdda47fe1b5e890954/httptools-0.6.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:85071a1e8c2d051b507161f6c3e26155b5c790e4e28d7f236422dbacc2a9cc44", size = 104337 }, - { url = "https://files.pythonhosted.org/packages/9b/01/6fb20be3196ffdc8eeec4e653bc2a275eca7f36634c86302242c4fbb2760/httptools-0.6.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69422b7f458c5af875922cdb5bd586cc1f1033295aa9ff63ee196a87519ac8e1", size = 508796 }, - { url = "https://files.pythonhosted.org/packages/f7/d8/b644c44acc1368938317d76ac991c9bba1166311880bcc0ac297cb9d6bd7/httptools-0.6.4-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:16e603a3bff50db08cd578d54f07032ca1631450ceb972c2f834c2b860c28ea2", size = 510837 }, - { url = "https://files.pythonhosted.org/packages/52/d8/254d16a31d543073a0e57f1c329ca7378d8924e7e292eda72d0064987486/httptools-0.6.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ec4f178901fa1834d4a060320d2f3abc5c9e39766953d038f1458cb885f47e81", size = 485289 }, - { url = "https://files.pythonhosted.org/packages/5f/3c/4aee161b4b7a971660b8be71a92c24d6c64372c1ab3ae7f366b3680df20f/httptools-0.6.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:f9eb89ecf8b290f2e293325c646a211ff1c2493222798bb80a530c5e7502494f", size = 489779 }, - { url = "https://files.pythonhosted.org/packages/12/b7/5cae71a8868e555f3f67a50ee7f673ce36eac970f029c0c5e9d584352961/httptools-0.6.4-cp312-cp312-win_amd64.whl", hash = "sha256:db78cb9ca56b59b016e64b6031eda5653be0589dba2b1b43453f6e8b405a0970", size = 88634 }, -] - -[[package]] -name = "httpx" -version = "0.28.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "certifi" }, - { name = "httpcore" }, - { name = "idna" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/df/48c586a5fe32a0f01324ee087459e112ebb7224f646c0b5023f5e79e9956/httpx-0.28.1.tar.gz", hash = "sha256:75e98c5f16b0f35b567856f597f06ff2270a374470a5c2392242528e3e3e42fc", size = 141406 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/39/e50c7c3a983047577ee07d2a9e53faf5a69493943ec3f6a384bdc792deb2/httpx-0.28.1-py3-none-any.whl", hash = "sha256:d909fcccc110f8c7faf814ca82a9a4d816bc5a6dbfea25d6591d6985b8ba59ad", size = 73517 }, -] - -[[package]] -name = "icechunk" -version = "0.2.14" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zarr" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/f9/29a725b126e2e05601459e67d3a0ca0c8d01e85fdd07375ca329fa6c2cd2/icechunk-0.2.14.tar.gz", hash = "sha256:c296225e65f5121286510705979bf2af198166751eb6395f59615a3ff55f8b8f", size = 361131 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/1a/6a2e0423bc0e4935e59fa5fc085e00b827d027e065f58b5ee58f51f10c4d/icechunk-0.2.14-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:8a417776167902aa2a7b5db4561157060424494f5912f2a662de86f3c9864cf0", size = 13426673 }, - { url = "https://files.pythonhosted.org/packages/4e/c2/8e71a188c6c3ad742ab2b41bdf2d8279621d22bb34aa44bf3c69315e039c/icechunk-0.2.14-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:66381c16653164de1dbbc59736ca482a52719e94bf4d8da8f6fec2348c41b941", size = 12968240 }, - { url = "https://files.pythonhosted.org/packages/4a/74/b8e469ca762a1e89a87fa9f76eeb8ac7c400dea1386a0f84c8a1387fd6a3/icechunk-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:582f04a5a50fa4136538431c847030437cb025be1b07e7900157cdcbefdff76b", size = 14720672 }, - { url = "https://files.pythonhosted.org/packages/b8/2c/6a0749056959640f3e591f57979a7871b32c7a5b49c508fbb126cb121eb6/icechunk-0.2.14-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:217b8e83b10d438c8a1cc6aa3e2e3e23d30a3ee68375998ba1bff19fae89a459", size = 14467034 }, - { url = "https://files.pythonhosted.org/packages/b0/e5/6bb1abaf3865ad68ff3ae59a1d72de71330864b054d36867198dcb823a98/icechunk-0.2.14-cp311-cp311-manylinux_2_28_armv7l.whl", hash = "sha256:baa36b43d8808aa250a316f926aed115a29aa19a68c5c6abaaa351c6b1f8c77c", size = 14094792 }, - { url = "https://files.pythonhosted.org/packages/54/8c/608430ac82886bfc602cdef677a05de756a85eb684da13b660c977796bfe/icechunk-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:c1296d330873bbf5fa4983e989fd9783722678a16cd1e570b3a7531582503d26", size = 14561356 }, - { url = "https://files.pythonhosted.org/packages/82/de/07d0ca9d397edae432ef552500357594e4629199ea4cadba403e065aa2bd/icechunk-0.2.14-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:7b9406251b12758c5559ecdd1f07cb0e427ad78a24abae2f3e427f26e12cdc1e", size = 14333442 }, - { url = "https://files.pythonhosted.org/packages/d5/52/13607c970a415b85ad375e0652bf42a7672c74c788fce0297ec72b995649/icechunk-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e8a5d24220dfe4d2f5e9c5cf04187ba12151da74a46d55de73b3a950f281553d", size = 14729160 }, - { url = "https://files.pythonhosted.org/packages/ea/b0/659cb55e9f946773618f5efad785ce4117015d1495037a40a5cad4503374/icechunk-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e2073602307d6ded7933fcbe3cc604501189e3c3a99a8333aee6f54844d4a4ed", size = 14878124 }, - { url = "https://files.pythonhosted.org/packages/85/39/39b7301603b371fedd64272bcacd2628bc69941d7807cd238864a2e9c910/icechunk-0.2.14-cp311-cp311-win32.whl", hash = "sha256:973c59de32aeaec8199ec56d1a447c7df10627c437db3b15ec8da3762cc62fa9", size = 10420858 }, - { url = "https://files.pythonhosted.org/packages/77/f8/02a1442ab7d450a3089e20b24389fa5a4ece403a1591118e59c42699c8be/icechunk-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:3988610611238309a530a9ccc724637efbd0ea016ec706e5a8db83c9381f4d04", size = 11696459 }, - { url = "https://files.pythonhosted.org/packages/7f/a3/59557f2af5dc8c34a45272a21b0698420f7e5f3e5c5be73eac33ee4420f0/icechunk-0.2.14-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:49bf8817b873c7affdb242d2a9074c079e85da2257d1ddd1b49e1729fe4b5ebd", size = 13385831 }, - { url = "https://files.pythonhosted.org/packages/6a/90/306c5f839cc5d0f8724589cdd57de53134a16d7b55c4e0896438551a7732/icechunk-0.2.14-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b60d22d55d8bb1f05745936d506d64d46d3ec30650eb8595a82ca1257b810090", size = 12939016 }, - { url = "https://files.pythonhosted.org/packages/59/ee/f1323743eef36d1589da4f66404d7cc6a39a99d94dc76813f1d64d9405e0/icechunk-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5c6a575e408976dff1a8cc1ba82cb90b755cd3c986ee6692ea4e46540f75dfb4", size = 14711090 }, - { url = "https://files.pythonhosted.org/packages/bd/59/296f7edbe50e68e6b52e8f959a01c82b30be4199169a81254f947c1b1308/icechunk-0.2.14-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:ec8e6d1a933d413c910f41e81d117cdda67670f2f7b1a609369b1d329f95c969", size = 14459912 }, - { url = "https://files.pythonhosted.org/packages/e6/76/4623ff1058676405bcdc5fbc3313e5ffa4f8bc6cbe9eb50c0e5f2014c9c7/icechunk-0.2.14-cp312-cp312-manylinux_2_28_armv7l.whl", hash = "sha256:a075b8f72c4974d5dddae8fdd5e0e84fbb44ef9d130c2beb927aa031f163f400", size = 14092623 }, - { url = "https://files.pythonhosted.org/packages/8c/71/d040dbeacd2fefa8210a87bfb57f40a78084782748fedc9578c9b24c3095/icechunk-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:e5faa861f89f0d41047d9fea9e2d824517109284f3012209d76856345dca4823", size = 14556655 }, - { url = "https://files.pythonhosted.org/packages/c9/98/cdb088dab83ed3a5e8e60013ffd8d4e0fff605c8dbb593a39516c38b3993/icechunk-0.2.14-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:45ca17e7a44a69ca1b389ef9f775d2672206329901396e1d47419aee3ca7d76a", size = 14333287 }, - { url = "https://files.pythonhosted.org/packages/31/70/91bbdfe2ae77bb9349ae0e17678928a9860e8daed96a918aa9d6ee5ff001/icechunk-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:937199ed35dbe4a6ec605c240638f768bf24a25ee9777c925913bcdd7b53bbd1", size = 14752009 }, - { url = "https://files.pythonhosted.org/packages/49/14/499444274f06c6c2652e9250627f24aab27fd58e56e1fe766452215b4143/icechunk-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:539e7a74ab7308b3eb8c93b3092e99950c3cc218bf88261fd7797b3037f2c29b", size = 14868396 }, - { url = "https://files.pythonhosted.org/packages/b0/bb/e8fe2be210ad37a91f1e6d9e220452fc818b322d2b9b584b98a876077e51/icechunk-0.2.14-cp312-cp312-win32.whl", hash = "sha256:4ecaa8c235b0ff2284a6428a313e65d249a8e012351059bf348b375a6b5f46f4", size = 10414850 }, - { url = "https://files.pythonhosted.org/packages/d3/7f/5f7f246590669de4f532607665646c0326a5b83e90652bdc9490e97eb2ee/icechunk-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:cb65f497fcd614892c0cc83e7cc3c3919533bd0b35204aee1e29dc75468fe366", size = 11705293 }, - { url = "https://files.pythonhosted.org/packages/5b/ce/52363c6a006b8fdaa78d8bcef2f355c80a69b1bd7fe95242b14cda138a3e/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:27314eb2f601b0bee06b641302dc41c5220e3385055ce4134b60080f6875ce67", size = 14713636 }, - { url = "https://files.pythonhosted.org/packages/ad/6f/220a5b31a19fa256c776d6a7398729b86d1d42330501d6900b7a81442d83/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:8ae4682f815f682a4aac13a731a2426b57ae6c851a97fb9c40504b5a08bac78b", size = 14462882 }, - { url = "https://files.pythonhosted.org/packages/8c/a9/c1d86dff7c97a21d1a78761537b23dacf7f74ce468d27a55ab95a6950327/icechunk-0.2.14-pp311-pypy311_pp73-manylinux_2_28_armv7l.whl", hash = "sha256:98b7db5496cceee5f6d2e4a0814f468f6a44658fb2ab8687a9ae8dfb6e045765", size = 14095805 }, - { url = "https://files.pythonhosted.org/packages/49/d4/222eee06f75e20a41246d364935ea180f8168bc237730a38a2486d6706b3/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:04e252b1205a145e40c4896260c973978aa2f4d4980870495fbee6acbc9b2125", size = 14562170 }, - { url = "https://files.pythonhosted.org/packages/7a/bc/a59d7012b16ad99029a6249b710a001c05aad346fa654818fdba50ad3d13/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_armv7l.whl", hash = "sha256:6e0c36773722435a879e00ea0779664a43b2de6867991d8dbc638343a60d8133", size = 14330703 }, - { url = "https://files.pythonhosted.org/packages/10/3d/0b8df4c5316f5bee0cfb319f69839f3e0cb6bd34b6a89b7fc86cc151a17c/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:6dc308029c85cfdfbc950fefa2c9da52e258d04f906d1042e63b09b36068c6fa", size = 14730569 }, - { url = "https://files.pythonhosted.org/packages/42/19/69451fe1f0e5498180050fc0a51fc5e56af63d81a7ea724c2d8c6abd172f/icechunk-0.2.14-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:e678aa89e31aed02bd5edc3da9384ac220b7c37c112067737822c28495c4185c", size = 14870490 }, -] - -[[package]] -name = "icefabric" -version = "2025.6.0" -source = { virtual = "." } - -[package.optional-dependencies] -docs = [ - { name = "mkdocs-material" }, -] - -[package.dev-dependencies] -dev = [ - { name = "black" }, - { name = "boto3" }, - { name = "examples" }, - { name = "icefabric-api" }, - { name = "icefabric-manage" }, - { name = "icefabric-tools" }, - { name = "ipykernel" }, - { name = "jupyterlab" }, - { name = "mypy" }, - { name = "pre-commit" }, - { name = "pytest" }, - { name = "ruff" }, -] - -[package.metadata] -requires-dist = [{ name = "mkdocs-material", marker = "extra == 'docs'" }] - -[package.metadata.requires-dev] -dev = [ - { name = "black", specifier = "==25.1.0" }, - { name = "boto3" }, - { name = "examples" }, - { name = "icefabric-api", editable = "src/icefabric_api" }, - { name = "icefabric-manage", editable = "src/icefabric_manage" }, - { name = "icefabric-tools", editable = "src/icefabric_tools" }, - { name = "ipykernel", specifier = ">=6.29.5" }, - { name = "jupyterlab", specifier = "==4.4.3" }, - { name = "mypy", specifier = "==1.15.0" }, - { name = "pre-commit", specifier = ">=3.8.0" }, - { name = "pytest", specifier = ">=8.3.2" }, - { name = "ruff", specifier = "==0.11.0" }, -] - -[[package]] -name = "icefabric-api" -version = "2025.6.0" -source = { editable = "src/icefabric_api" } -dependencies = [ - { name = "fastapi", extra = ["standard"] }, - { name = "pydantic" }, - { name = "pydantic-settings" }, -] - -[package.metadata] -requires-dist = [ - { name = "fastapi", extras = ["standard"], specifier = ">=0.115.12" }, - { name = "pydantic", specifier = "==2.11.5" }, - { name = "pydantic-settings", specifier = "==2.9.1" }, -] - -[[package]] -name = "icefabric-manage" -version = "2025.6.0" -source = { editable = "src/icefabric_manage" } -dependencies = [ - { name = "geopandas" }, - { name = "numpy" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "pyiceberg", extra = ["glue", "s3fs", "sql-sqlite"] }, - { name = "python-dotenv" }, - { name = "s3fs" }, -] - -[package.metadata] -requires-dist = [ - { name = "geopandas", specifier = "==1.0.1" }, - { name = "numpy", specifier = "==2.2.6" }, - { name = "pandas", specifier = "==2.2.3" }, - { name = "pyarrow", specifier = "==20.0.0" }, - { name = "pyiceberg", extras = ["s3fs", "glue", "sql-sqlite"], specifier = "==0.9.1" }, - { name = "python-dotenv", specifier = "==1.1.0" }, - { name = "s3fs", specifier = "==2025.5.1" }, -] - -[[package]] -name = "icefabric-tools" -version = "2025.6.0" -source = { editable = "src/icefabric_tools" } -dependencies = [ - { name = "dask" }, - { name = "folium" }, - { name = "fsspec" }, - { name = "geodatasets" }, - { name = "geopandas" }, - { name = "h5netcdf" }, - { name = "h5py" }, - { name = "httpx" }, - { name = "icechunk" }, - { name = "ipywidgets" }, - { name = "jupytergis" }, - { name = "jupyterlab" }, - { name = "kerchunk" }, - { name = "mapclassify" }, - { name = "matplotlib" }, - { name = "netcdf4" }, - { name = "numpy" }, - { name = "pandas" }, - { name = "pyarrow" }, - { name = "pyiceberg", extra = ["glue", "s3fs"] }, - { name = "python-dotenv" }, - { name = "rioxarray" }, - { name = "s3fs" }, - { name = "scipy" }, - { name = "tifffile" }, - { name = "tqdm" }, - { name = "virtualizarr" }, - { name = "xarray" }, - { name = "zarr" }, -] - -[package.metadata] -requires-dist = [ - { name = "dask", specifier = "==2025.5.1" }, - { name = "folium", specifier = "==0.19.5" }, - { name = "fsspec", specifier = "==2025.5.1" }, - { name = "geodatasets", specifier = "==2024.8.0" }, - { name = "geopandas", specifier = "==1.0.1" }, - { name = "h5netcdf", specifier = "==1.6.1" }, - { name = "h5py", specifier = "==3.13.0" }, - { name = "httpx", specifier = "==0.28.1" }, - { name = "icechunk", specifier = "==0.2.14" }, - { name = "ipywidgets", specifier = "==8.1.6" }, - { name = "jupytergis", specifier = "==0.5.0" }, - { name = "jupyterlab", specifier = "==4.4.3" }, - { name = "kerchunk", specifier = "==0.2.8" }, - { name = "mapclassify", specifier = "==2.9.0" }, - { name = "matplotlib", specifier = "==3.10.3" }, - { name = "netcdf4", specifier = "==1.7.2" }, - { name = "numpy", specifier = "==2.2.6" }, - { name = "pandas", specifier = "==2.2.3" }, - { name = "pyarrow", specifier = "==20.0.0" }, - { name = "pyiceberg", extras = ["s3fs", "glue"], specifier = "==0.9.1" }, - { name = "python-dotenv", specifier = "==1.1.0" }, - { name = "rioxarray", specifier = "==0.19.0" }, - { name = "s3fs", specifier = "==2025.5.1" }, - { name = "scipy", specifier = "==1.15.3" }, - { name = "tifffile", specifier = "==2025.5.21" }, - { name = "tqdm", specifier = "==4.67.1" }, - { name = "virtualizarr", specifier = "==1.3.2" }, - { name = "xarray", specifier = "==2025.4.0" }, - { name = "zarr", specifier = "==3.0.8" }, -] - -[[package]] -name = "identify" -version = "2.6.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9c/15/bf10fcc32e9386a88f06c7dcb5358adbba7b30abb1bcf256819d5c35698f/identify-2.6.11.tar.gz", hash = "sha256:7c637280b88b37110c4b7955c055fc93dcad386973fd9023db5d770c3eed878f", size = 99234 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/84/dd/ddcef21317a544a7ea810eea4f806a88f8e47b918382396c6c6f947ef149/identify-2.6.11-py2.py3-none-any.whl", hash = "sha256:63e98071a592f1dc14ab71c0c50644b3e056387aa04cc8c3849f8f0a2d290aea", size = 99112 }, -] - -[[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 = "importlib-metadata" -version = "8.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp", marker = "python_full_version < '3.12'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/76/66/650a33bd90f786193e4de4b3ad86ea60b53c89b669a5c7be931fac31cdb0/importlib_metadata-8.7.0.tar.gz", hash = "sha256:d13b81ad223b890aa16c5471f2ac3056cf76c5f10f82d6f9292f0b415f389000", size = 56641 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/b0/36bd937216ec521246249be3bf9855081de4c5e06a0c9b4219dbeda50373/importlib_metadata-8.7.0-py3-none-any.whl", hash = "sha256:e5dd1551894c77868a30651cef00984d50e1002d06942a7101d34870c5f02afd", size = 27656 }, -] - -[[package]] -name = "iniconfig" -version = "2.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050 }, -] - -[[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 = "9.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "decorator" }, - { name = "ipython-pygments-lexers" }, - { 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/9d/02/63a84444a7409b3c0acd1de9ffe524660e0e5d82ee473e78b45e5bfb64a4/ipython-9.2.0.tar.gz", hash = "sha256:62a9373dbc12f28f9feaf4700d052195bf89806279fc8ca11f3f54017d04751b", size = 4424394 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/78/ce/5e897ee51b7d26ab4e47e5105e7368d40ce6cfae2367acdf3165396d50be/ipython-9.2.0-py3-none-any.whl", hash = "sha256:fef5e33c4a1ae0759e0bba5917c9db4eb8c53fee917b6a526bd973e1ca5159f6", size = 604277 }, -] - -[[package]] -name = "ipython-pygments-lexers" -version = "1.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pygments" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ef/4c/5dd1d8af08107f88c7f741ead7a40854b8ac24ddf9ae850afbcf698aa552/ipython_pygments_lexers-1.1.1.tar.gz", hash = "sha256:09c0138009e56b6854f9535736f4171d855c8c08a563a0dcd8022f78355c7e81", size = 8393 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d9/33/1f075bf72b0b747cb3288d011319aaf64083cf2efef8354174e3ed4540e2/ipython_pygments_lexers-1.1.1-py3-none-any.whl", hash = "sha256:a9462224a505ade19a605f71f8fa63c2048833ce50abc86768a0d81d876dc81c", size = 8074 }, -] - -[[package]] -name = "ipywidgets" -version = "8.1.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "comm" }, - { name = "ipython" }, - { name = "jupyterlab-widgets" }, - { name = "traitlets" }, - { name = "widgetsnbextension" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/aa/98/4074d9cb7e89f7ee387b41e9a4b74c8e0d6196e90b910af1cc674e1cdd3d/ipywidgets-8.1.6.tar.gz", hash = "sha256:d8ace49c66f14419fc66071371b99d01bed230bbc15d8a60233b18bfbd782851", size = 116764 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/53/b8/62952729573d983d9433faacf62a52ee2e8cf46504418061ad1739967abe/ipywidgets-8.1.6-py3-none-any.whl", hash = "sha256:446e7630a1d025bdc7635e1169fcc06f2ce33b5bd41c2003edeb4a47c8d4bbb1", size = 139808 }, -] - -[[package]] -name = "isoduration" -version = "20.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "arrow" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7c/1a/3c8edc664e06e6bd06cce40c6b22da5f1429aa4224d0c590f3be21c91ead/isoduration-20.11.0.tar.gz", hash = "sha256:ac2f9015137935279eac671f94f89eb00584f940f5dc49462a0c4ee692ba1bd9", size = 11649 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/55/e5326141505c5d5e34c5e0935d2908a74e4561eca44108fbfb9c13d2911a/isoduration-20.11.0-py3-none-any.whl", hash = "sha256:b2904c2a4228c3d44f409c8ae8e2370eb21a26f7ac2ec5446df141dde3452042", size = 11321 }, -] - -[[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.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markupsafe" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/bf/f7da0350254c0ed7c72f3e33cef02e048281fec7ecec5f032d4aac52226b/jinja2-3.1.6.tar.gz", hash = "sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d", size = 245115 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl", hash = "sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67", size = 134899 }, -] - -[[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 = "joblib" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/fe/0f5a938c54105553436dbff7a61dc4fed4b1b2c98852f8833beaf4d5968f/joblib-1.5.1.tar.gz", hash = "sha256:f4f86e351f39fe3d0d32a9f2c3d8af1ee4cec285aafcb27003dda5205576b444", size = 330475 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7d/4f/1195bbac8e0c2acc5f740661631d8d750dc38d4a32b23ee5df3cde6f4e0d/joblib-1.5.1-py3-none-any.whl", hash = "sha256:4719a31f054c7d766948dcd83e9613686b27114f190f717cec7eaa2084f8a74a", size = 307746 }, -] - -[[package]] -name = "json5" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/12/be/c6c745ec4c4539b25a278b70e29793f10382947df0d9efba2fa09120895d/json5-0.12.0.tar.gz", hash = "sha256:0b4b6ff56801a1c7dc817b0241bca4ce474a0e6a163bfef3fc594d3fd263ff3a", size = 51907 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/41/9f/3500910d5a98549e3098807493851eeef2b89cdd3032227558a104dfe926/json5-0.12.0-py3-none-any.whl", hash = "sha256:6d37aa6c08b0609f16e1ec5ff94697e2cbbfbad5ac112afa05794da9ab7810db", size = 36079 }, -] - -[[package]] -name = "jsonpointer" -version = "3.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6a/0a/eebeb1fa92507ea94016a2a790b93c2ae41a7e18778f85471dc54475ed25/jsonpointer-3.0.0.tar.gz", hash = "sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef", size = 9114 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/71/92/5e77f98553e9e75130c78900d000368476aed74276eb8ae8796f65f00918/jsonpointer-3.0.0-py2.py3-none-any.whl", hash = "sha256:13e088adc14fca8b6aa8177c044e12701e6ad4b28ff10e65f2267a90109c9942", size = 7595 }, -] - -[[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.optional-dependencies] -format-nongpl = [ - { name = "fqdn" }, - { name = "idna" }, - { name = "isoduration" }, - { name = "jsonpointer" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "uri-template" }, - { name = "webcolors" }, -] - -[[package]] -name = "jsonschema-specifications" -version = "2025.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "referencing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bf/ce/46fbd9c8119cfc3581ee5643ea49464d168028cfb5caff5fc0596d0cf914/jsonschema_specifications-2025.4.1.tar.gz", hash = "sha256:630159c9f4dbea161a6a2205c3011cc4f18ff381b189fff48bb39b9bf26ae608", size = 15513 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/0e/b27cdbaccf30b890c40ed1da9fd4a3593a5cf94dae54fb34f8a4b74fcd3f/jsonschema_specifications-2025.4.1-py3-none-any.whl", hash = "sha256:4653bffbd6584f7de83a67e0d620ef16900b390ddc7939d56684d6c81e33f1af", size = 18437 }, -] - -[[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-collaboration" -version = "3.1.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-collaboration-ui" }, - { name = "jupyter-docprovider" }, - { name = "jupyter-server-ydoc" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3b/58/9694cedf52019b1c478800cb19c109fd3cc171dc4c81954541c81b631a06/jupyter_collaboration-3.1.2.tar.gz", hash = "sha256:44fc022b4a4f17362a4ba80a50592f4599ce3c04ef65f5cd2b5ed503a362db41", size = 3547 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c3/060967b1ca6d3cb44cede6e5cd9e805607873d38f44ee408a2c95f68b84b/jupyter_collaboration-3.1.2-py3-none-any.whl", hash = "sha256:7b9a04b5ea434d166ceece2e399f95b525598c5dabd3746f4c27c1969aa35231", size = 4629 }, -] - -[[package]] -name = "jupyter-collaboration-ui" -version = "1.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/7e/45a1858909862c77e1fe4f2da3cc1f6b401733cc9589879757f28b4c5c56/jupyter_collaboration_ui-1.1.2.tar.gz", hash = "sha256:5f4128379da255f121da9edee204f17311c8d021005a25d3996d22f95a8645ff", size = 63860 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/20/c3a6a92f86f8eded332a8723976a9ad1d7e988034c9ca634cfa467418290/jupyter_collaboration_ui-1.1.2-py3-none-any.whl", hash = "sha256:bd54191e64751ff168f763ed4e35af528ca59a8bbe8407584916d1d59fe6ff4e", size = 41678 }, -] - -[[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 = "jupyter-docprovider" -version = "1.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/29/1226382335a4fb494e375914361305b4c55e719761459c59acd4bcf93fa6/jupyter_docprovider-1.1.2.tar.gz", hash = "sha256:9bf6723a8257ccd60a7c47b7a72194ab03f3475607d43121b9a5ae91aaaa3e29", size = 44567 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/7c/305cd99ba0a94b2b23d1a7eb8eef8f8cf9151951b649c607090a23fd451c/jupyter_docprovider-1.1.2-py3-none-any.whl", hash = "sha256:0b5691cba281e2fbd6af61dc62a12b8959f6fa444af7ee689a14f3e56bdbf499", size = 33170 }, -] - -[[package]] -name = "jupyter-events" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema", extra = ["format-nongpl"] }, - { name = "packaging" }, - { name = "python-json-logger" }, - { name = "pyyaml" }, - { name = "referencing" }, - { name = "rfc3339-validator" }, - { name = "rfc3986-validator" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9d/c3/306d090461e4cf3cd91eceaff84bede12a8e52cd821c2d20c9a4fd728385/jupyter_events-0.12.0.tar.gz", hash = "sha256:fc3fce98865f6784c9cd0a56a20644fc6098f21c8c33834a8d9fe383c17e554b", size = 62196 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/48/577993f1f99c552f18a0428731a755e06171f9902fa118c379eb7c04ea22/jupyter_events-0.12.0-py3-none-any.whl", hash = "sha256:6464b2fa5ad10451c3d35fabc75eab39556ae1e2853ad0c0cc31b656731a97fb", size = 19430 }, -] - -[[package]] -name = "jupyter-lsp" -version = "2.2.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/85/b4/3200b0b09c12bc3b72d943d923323c398eff382d1dcc7c0dbc8b74630e40/jupyter-lsp-2.2.5.tar.gz", hash = "sha256:793147a05ad446f809fd53ef1cd19a9f5256fd0a2d6b7ce943a982cb4f545001", size = 48741 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/e0/7bd7cff65594fd9936e2f9385701e44574fc7d721331ff676ce440b14100/jupyter_lsp-2.2.5-py3-none-any.whl", hash = "sha256:45fbddbd505f3fbfb0b6cb2f1bc5e15e83ab7c79cd6e89416b248cb3c00c11da", size = 69146 }, -] - -[[package]] -name = "jupyter-server" -version = "2.16.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "argon2-cffi" }, - { name = "jinja2" }, - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "jupyter-events" }, - { name = "jupyter-server-terminals" }, - { name = "nbconvert" }, - { name = "nbformat" }, - { name = "overrides" }, - { name = "packaging" }, - { name = "prometheus-client" }, - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "pyzmq" }, - { name = "send2trash" }, - { name = "terminado" }, - { name = "tornado" }, - { name = "traitlets" }, - { name = "websocket-client" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/41/c8/ba2bbcd758c47f1124c4ca14061e8ce60d9c6fd537faee9534a95f83521a/jupyter_server-2.16.0.tar.gz", hash = "sha256:65d4b44fdf2dcbbdfe0aa1ace4a842d4aaf746a2b7b168134d5aaed35621b7f6", size = 728177 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/46/1f/5ebbced977171d09a7b0c08a285ff9a20aafb9c51bde07e52349ff1ddd71/jupyter_server-2.16.0-py3-none-any.whl", hash = "sha256:3d8db5be3bc64403b1c65b400a1d7f4647a5ce743f3b20dbdefe8ddb7b55af9e", size = 386904 }, -] - -[[package]] -name = "jupyter-server-fileid" -version = "0.9.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-events" }, - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0d/eb/7c2c09454bbf66b3727ba8c431d16159d642c0eb1aa179412a4f7af721cf/jupyter_server_fileid-0.9.3.tar.gz", hash = "sha256:521608bb87f606a8637fcbdce2f3d24a8b3cc89d2eef61751cb40e468d4e54be", size = 54959 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/d6/5e5bca083664b1dd368e261107cbe2d350e3bdc62bdba8720fdbb9b9db39/jupyter_server_fileid-0.9.3-py3-none-any.whl", hash = "sha256:f73c01c19f90005d3fff93607b91b4955ba4e1dccdde9bfe8026646f94053791", size = 16922 }, -] - -[[package]] -name = "jupyter-server-terminals" -version = "0.5.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "terminado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/fc/d5/562469734f476159e99a55426d697cbf8e7eb5efe89fb0e0b4f83a3d3459/jupyter_server_terminals-0.5.3.tar.gz", hash = "sha256:5ae0295167220e9ace0edcfdb212afd2b01ee8d179fe6f23c899590e9b8a5269", size = 31430 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/2d/2b32cdbe8d2a602f697a649798554e4f072115438e92249624e532e8aca6/jupyter_server_terminals-0.5.3-py3-none-any.whl", hash = "sha256:41ee0d7dc0ebf2809c668e0fc726dfaf258fcd3e769568996ca731b6194ae9aa", size = 13656 }, -] - -[[package]] -name = "jupyter-server-ydoc" -version = "1.1.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jsonschema" }, - { name = "jupyter-events" }, - { name = "jupyter-server" }, - { name = "jupyter-server-fileid" }, - { name = "jupyter-ydoc" }, - { name = "pycrdt" }, - { name = "pycrdt-websocket" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e2/b8/af8d5121861cac76f2b61d6bda1e4d79a15cf53a7c73da3b553023138896/jupyter_server_ydoc-1.1.2.tar.gz", hash = "sha256:299929280bb9263601a75860257531287b5aa0367c59fdf47c2d49be7ed48fa0", size = 26576 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fc/84/eca59301c5b578402fb24953fa08252363734946e20b01b84392d4725bdb/jupyter_server_ydoc-1.1.2-py3-none-any.whl", hash = "sha256:1d319dcf45c65179f34998baa487b52e9106b44d3397b66f8b307ce70f799ed1", size = 29923 }, -] - -[[package]] -name = "jupyter-ydoc" -version = "3.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycrdt" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/db/9f/eb56e55a4a1f0663ea4c1d53d9ac7c89a25b8179a3784287d0d5ea49dcfc/jupyter_ydoc-3.0.5.tar.gz", hash = "sha256:12208841a1edfe8ee16b8be3e843d54090268498de2d2e783c33a5dd33c995ff", size = 957157 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1a/8a/def3223c69dda527d9330124e3e1d2391f36323165b2fc43487d7657beb1/jupyter_ydoc-3.0.5-py3-none-any.whl", hash = "sha256:049578d1381673e44ccf22aefc2b2a1e6a5782c1c2079c262b7c4d9483af1cf6", size = 11141 }, -] - -[[package]] -name = "jupytergis" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-collaboration" }, - { name = "jupyter-collaboration-ui" }, - { name = "jupyter-docprovider" }, - { name = "jupyter-server-ydoc" }, - { name = "jupytergis-core" }, - { name = "jupytergis-lab" }, - { name = "jupytergis-qgis" }, - { name = "jupyterlab" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ba/4e/602f32543b229c4ae2469f2769bce66ffd6d9f360ffe360e7f27aecb0e25/jupytergis-0.5.0.tar.gz", hash = "sha256:39fda03510c80e0fe9c222a6db318d24cfa1aceabc96cb9d83dbd86d238db019", size = 5101 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/91/82/e99e8c1d1166835a6a20a037df03a4d5c6af354395149c6ff5f726a7ed8e/jupytergis-0.5.0-py3-none-any.whl", hash = "sha256:d9773fad34398854ce141436b79a17ee44f9076ac17d18858a4a3ed9ec069c0b", size = 4362 }, -] - -[[package]] -name = "jupytergis-core" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-ydoc" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/40/ba/244300d1ee8313fca4455bbae2d1c4ba2086d9e900b6df5dbbfc01c398d2/jupytergis_core-0.5.0.tar.gz", hash = "sha256:e83aa0d06ce6e079307abb96453c74fcb2f0ac6bfd07ec1109ccac5cdf21dc02", size = 24843248 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/21/f1/ecd63b693c98d6cd58b88d209ae995583e2f9c3332353ec2cf7cb021b3e0/jupytergis_core-0.5.0-py3-none-any.whl", hash = "sha256:c78fb488a666a4ff4ae5f44a3b7fdd01fb7fe40e113f371e5abf1bb6d2b6fd06", size = 24903322 }, -] - -[[package]] -name = "jupytergis-lab" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "comm" }, - { name = "jupyter-ydoc" }, - { name = "jupytergis-core" }, - { name = "pydantic" }, - { name = "requests" }, - { name = "sidecar" }, - { name = "yjs-widgets" }, - { name = "ypywidgets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/89/55/3c25ce7adef6fe3e515255c1ef209973dabe4602bfd11874b577596d4357/jupytergis_lab-0.5.0.tar.gz", hash = "sha256:c099f187dd94b7af49d8637e6d7c3c7f18cbae2bf74b63c1937b7d3df3f9ae4e", size = 96765 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/30/48d3d8f18c79581769014f9a181e829735f9d12bea9622e413ae3e3b387a/jupytergis_lab-0.5.0-py3-none-any.whl", hash = "sha256:3eae87dbf6ee014ac4978c5ba721409c4d8544f8fed49fa887fe8e6500431c3c", size = 35386 }, -] - -[[package]] -name = "jupytergis-qgis" -version = "0.5.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, - { name = "jupyter-ydoc" }, - { name = "jupytergis-lab" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6e/74/34e0a37a228c5d01183b4964da4dbe2b7f835c94e46da2bcec011149d559/jupytergis_qgis-0.5.0.tar.gz", hash = "sha256:b8406ecd8ad698f3c458462184a24db6141f793f6c43538d124a82176225fc4f", size = 86290 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7a/70/dea89a99d51104f0a255764a540a5c4e1ebe3e86e9c031bdddd5bbfaecb3/jupytergis_qgis-0.5.0-py3-none-any.whl", hash = "sha256:e79992707866a53ee9006dab8e92fbb1091afa1484eaf5322c12da3adb0e318a", size = 39236 }, -] - -[[package]] -name = "jupyterlab" -version = "4.4.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "async-lru" }, - { name = "httpx" }, - { name = "ipykernel" }, - { name = "jinja2" }, - { name = "jupyter-core" }, - { name = "jupyter-lsp" }, - { name = "jupyter-server" }, - { name = "jupyterlab-server" }, - { name = "notebook-shim" }, - { name = "packaging" }, - { name = "setuptools" }, - { name = "tornado" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/d3/2d/d1678dcf2db66cb4a38a80d9e5fcf48c349f3ac12f2d38882993353ae768/jupyterlab-4.4.3.tar.gz", hash = "sha256:a94c32fd7f8b93e82a49dc70a6ec45a5c18281ca2a7228d12765e4e210e5bca2", size = 23032376 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c6/4d/7dd5c2ffbb960930452a031dc8410746183c924580f2ab4e68ceb5b3043f/jupyterlab-4.4.3-py3-none-any.whl", hash = "sha256:164302f6d4b6c44773dfc38d585665a4db401a16e5296c37df5cba63904fbdea", size = 12295480 }, -] - -[[package]] -name = "jupyterlab-pygments" -version = "0.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/51/9187be60d989df97f5f0aba133fa54e7300f17616e065d1ada7d7646b6d6/jupyterlab_pygments-0.3.0.tar.gz", hash = "sha256:721aca4d9029252b11cfa9d185e5b5af4d54772bb8072f9b7036f4170054d35d", size = 512900 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/dd/ead9d8ea85bf202d90cc513b533f9c363121c7792674f78e0d8a854b63b4/jupyterlab_pygments-0.3.0-py3-none-any.whl", hash = "sha256:841a89020971da1d8693f1a99997aefc5dc424bb1b251fd6322462a1b8842780", size = 15884 }, -] - -[[package]] -name = "jupyterlab-server" -version = "2.27.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "jinja2" }, - { name = "json5" }, - { name = "jsonschema" }, - { name = "jupyter-server" }, - { name = "packaging" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0a/c9/a883ce65eb27905ce77ace410d83587c82ea64dc85a48d1f7ed52bcfa68d/jupyterlab_server-2.27.3.tar.gz", hash = "sha256:eb36caca59e74471988f0ae25c77945610b887f777255aa21f8065def9e51ed4", size = 76173 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/09/2032e7d15c544a0e3cd831c51d77a8ca57f7555b2e1b2922142eddb02a84/jupyterlab_server-2.27.3-py3-none-any.whl", hash = "sha256:e697488f66c3db49df675158a77b3b017520d772c6e1548c7d9bcc5df7944ee4", size = 59700 }, -] - -[[package]] -name = "jupyterlab-widgets" -version = "3.0.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/7d/160595ca88ee87ac6ba95d82177d29ec60aaa63821d3077babb22ce031a5/jupyterlab_widgets-3.0.15.tar.gz", hash = "sha256:2920888a0c2922351a9202817957a68c07d99673504d6cd37345299e971bb08b", size = 213149 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/43/6a/ca128561b22b60bd5a0c4ea26649e68c8556b82bc70a0c396eebc977fe86/jupyterlab_widgets-3.0.15-py3-none-any.whl", hash = "sha256:d59023d7d7ef71400d51e6fee9a88867f6e65e10a4201605d2d7f3e8f012a31c", size = 216571 }, -] - -[[package]] -name = "kerchunk" -version = "0.2.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec" }, - { name = "numcodecs" }, - { name = "numpy" }, - { name = "ujson" }, - { name = "zarr" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/36/53f64c984f75a544c3a98179a65f714ae4584af9e1adb070eb749ee5cbe2/kerchunk-0.2.8.tar.gz", hash = "sha256:85a932ffb6a26a38bebc45d5f978c962263704e34dd99f66008b402cded316af", size = 711488 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/bb/cf/cfc47e6ed7be147ca60f416624a55e0c66466b9a41175d3a9641047550f5/kerchunk-0.2.8-py3-none-any.whl", hash = "sha256:9174d4febcb53521849f3d00193e76d51470c706f622a202aa427cdff7efacdd", size = 65510 }, -] - -[[package]] -name = "kiwisolver" -version = "1.4.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/59/7c91426a8ac292e1cdd53a63b6d9439abd573c875c3f92c146767dd33faf/kiwisolver-1.4.8.tar.gz", hash = "sha256:23d5f023bdc8c7e54eb65f03ca5d5bb25b601eac4d7f1a042888a1f45237987e", size = 97538 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/ed/c913ee28936c371418cb167b128066ffb20bbf37771eecc2c97edf8a6e4c/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:a4d3601908c560bdf880f07d94f31d734afd1bb71e96585cace0e38ef44c6d84", size = 124635 }, - { url = "https://files.pythonhosted.org/packages/4c/45/4a7f896f7467aaf5f56ef093d1f329346f3b594e77c6a3c327b2d415f521/kiwisolver-1.4.8-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:856b269c4d28a5c0d5e6c1955ec36ebfd1651ac00e1ce0afa3e28da95293b561", size = 66717 }, - { url = "https://files.pythonhosted.org/packages/5f/b4/c12b3ac0852a3a68f94598d4c8d569f55361beef6159dce4e7b624160da2/kiwisolver-1.4.8-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c2b9a96e0f326205af81a15718a9073328df1173a2619a68553decb7097fd5d7", size = 65413 }, - { url = "https://files.pythonhosted.org/packages/a9/98/1df4089b1ed23d83d410adfdc5947245c753bddfbe06541c4aae330e9e70/kiwisolver-1.4.8-cp311-cp311-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c5020c83e8553f770cb3b5fc13faac40f17e0b205bd237aebd21d53d733adb03", size = 1343994 }, - { url = "https://files.pythonhosted.org/packages/8d/bf/b4b169b050c8421a7c53ea1ea74e4ef9c335ee9013216c558a047f162d20/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dace81d28c787956bfbfbbfd72fdcef014f37d9b48830829e488fdb32b49d954", size = 1434804 }, - { url = "https://files.pythonhosted.org/packages/66/5a/e13bd341fbcf73325ea60fdc8af752addf75c5079867af2e04cc41f34434/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:11e1022b524bd48ae56c9b4f9296bce77e15a2e42a502cceba602f804b32bb79", size = 1450690 }, - { url = "https://files.pythonhosted.org/packages/9b/4f/5955dcb376ba4a830384cc6fab7d7547bd6759fe75a09564910e9e3bb8ea/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3b9b4d2892fefc886f30301cdd80debd8bb01ecdf165a449eb6e78f79f0fabd6", size = 1376839 }, - { url = "https://files.pythonhosted.org/packages/3a/97/5edbed69a9d0caa2e4aa616ae7df8127e10f6586940aa683a496c2c280b9/kiwisolver-1.4.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a96c0e790ee875d65e340ab383700e2b4891677b7fcd30a699146f9384a2bb0", size = 1435109 }, - { url = "https://files.pythonhosted.org/packages/13/fc/e756382cb64e556af6c1809a1bbb22c141bbc2445049f2da06b420fe52bf/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:23454ff084b07ac54ca8be535f4174170c1094a4cff78fbae4f73a4bcc0d4dab", size = 2245269 }, - { url = "https://files.pythonhosted.org/packages/76/15/e59e45829d7f41c776d138245cabae6515cb4eb44b418f6d4109c478b481/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:87b287251ad6488e95b4f0b4a79a6d04d3ea35fde6340eb38fbd1ca9cd35bbbc", size = 2393468 }, - { url = "https://files.pythonhosted.org/packages/e9/39/483558c2a913ab8384d6e4b66a932406f87c95a6080112433da5ed668559/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:b21dbe165081142b1232a240fc6383fd32cdd877ca6cc89eab93e5f5883e1c25", size = 2355394 }, - { url = "https://files.pythonhosted.org/packages/01/aa/efad1fbca6570a161d29224f14b082960c7e08268a133fe5dc0f6906820e/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:768cade2c2df13db52475bd28d3a3fac8c9eff04b0e9e2fda0f3760f20b3f7fc", size = 2490901 }, - { url = "https://files.pythonhosted.org/packages/c9/4f/15988966ba46bcd5ab9d0c8296914436720dd67fca689ae1a75b4ec1c72f/kiwisolver-1.4.8-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d47cfb2650f0e103d4bf68b0b5804c68da97272c84bb12850d877a95c056bd67", size = 2312306 }, - { url = "https://files.pythonhosted.org/packages/2d/27/bdf1c769c83f74d98cbc34483a972f221440703054894a37d174fba8aa68/kiwisolver-1.4.8-cp311-cp311-win_amd64.whl", hash = "sha256:ed33ca2002a779a2e20eeb06aea7721b6e47f2d4b8a8ece979d8ba9e2a167e34", size = 71966 }, - { url = "https://files.pythonhosted.org/packages/4a/c9/9642ea855604aeb2968a8e145fc662edf61db7632ad2e4fb92424be6b6c0/kiwisolver-1.4.8-cp311-cp311-win_arm64.whl", hash = "sha256:16523b40aab60426ffdebe33ac374457cf62863e330a90a0383639ce14bf44b2", size = 65311 }, - { url = "https://files.pythonhosted.org/packages/fc/aa/cea685c4ab647f349c3bc92d2daf7ae34c8e8cf405a6dcd3a497f58a2ac3/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d6af5e8815fd02997cb6ad9bbed0ee1e60014438ee1a5c2444c96f87b8843502", size = 124152 }, - { url = "https://files.pythonhosted.org/packages/c5/0b/8db6d2e2452d60d5ebc4ce4b204feeb16176a851fd42462f66ade6808084/kiwisolver-1.4.8-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:bade438f86e21d91e0cf5dd7c0ed00cda0f77c8c1616bd83f9fc157fa6760d31", size = 66555 }, - { url = "https://files.pythonhosted.org/packages/60/26/d6a0db6785dd35d3ba5bf2b2df0aedc5af089962c6eb2cbf67a15b81369e/kiwisolver-1.4.8-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b83dc6769ddbc57613280118fb4ce3cd08899cc3369f7d0e0fab518a7cf37fdb", size = 65067 }, - { url = "https://files.pythonhosted.org/packages/c9/ed/1d97f7e3561e09757a196231edccc1bcf59d55ddccefa2afc9c615abd8e0/kiwisolver-1.4.8-cp312-cp312-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:111793b232842991be367ed828076b03d96202c19221b5ebab421ce8bcad016f", size = 1378443 }, - { url = "https://files.pythonhosted.org/packages/29/61/39d30b99954e6b46f760e6289c12fede2ab96a254c443639052d1b573fbc/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:257af1622860e51b1a9d0ce387bf5c2c4f36a90594cb9514f55b074bcc787cfc", size = 1472728 }, - { url = "https://files.pythonhosted.org/packages/0c/3e/804163b932f7603ef256e4a715e5843a9600802bb23a68b4e08c8c0ff61d/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:69b5637c3f316cab1ec1c9a12b8c5f4750a4c4b71af9157645bf32830e39c03a", size = 1478388 }, - { url = "https://files.pythonhosted.org/packages/8a/9e/60eaa75169a154700be74f875a4d9961b11ba048bef315fbe89cb6999056/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:782bb86f245ec18009890e7cb8d13a5ef54dcf2ebe18ed65f795e635a96a1c6a", size = 1413849 }, - { url = "https://files.pythonhosted.org/packages/bc/b3/9458adb9472e61a998c8c4d95cfdfec91c73c53a375b30b1428310f923e4/kiwisolver-1.4.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc978a80a0db3a66d25767b03688f1147a69e6237175c0f4ffffaaedf744055a", size = 1475533 }, - { url = "https://files.pythonhosted.org/packages/e4/7a/0a42d9571e35798de80aef4bb43a9b672aa7f8e58643d7bd1950398ffb0a/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:36dbbfd34838500a31f52c9786990d00150860e46cd5041386f217101350f0d3", size = 2268898 }, - { url = "https://files.pythonhosted.org/packages/d9/07/1255dc8d80271400126ed8db35a1795b1a2c098ac3a72645075d06fe5c5d/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:eaa973f1e05131de5ff3569bbba7f5fd07ea0595d3870ed4a526d486fe57fa1b", size = 2425605 }, - { url = "https://files.pythonhosted.org/packages/84/df/5a3b4cf13780ef6f6942df67b138b03b7e79e9f1f08f57c49957d5867f6e/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:a66f60f8d0c87ab7f59b6fb80e642ebb29fec354a4dfad687ca4092ae69d04f4", size = 2375801 }, - { url = "https://files.pythonhosted.org/packages/8f/10/2348d068e8b0f635c8c86892788dac7a6b5c0cb12356620ab575775aad89/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:858416b7fb777a53f0c59ca08190ce24e9abbd3cffa18886a5781b8e3e26f65d", size = 2520077 }, - { url = "https://files.pythonhosted.org/packages/32/d8/014b89fee5d4dce157d814303b0fce4d31385a2af4c41fed194b173b81ac/kiwisolver-1.4.8-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:085940635c62697391baafaaeabdf3dd7a6c3643577dde337f4d66eba021b2b8", size = 2338410 }, - { url = "https://files.pythonhosted.org/packages/bd/72/dfff0cc97f2a0776e1c9eb5bef1ddfd45f46246c6533b0191887a427bca5/kiwisolver-1.4.8-cp312-cp312-win_amd64.whl", hash = "sha256:01c3d31902c7db5fb6182832713d3b4122ad9317c2c5877d0539227d96bb2e50", size = 71853 }, - { url = "https://files.pythonhosted.org/packages/dc/85/220d13d914485c0948a00f0b9eb419efaf6da81b7d72e88ce2391f7aed8d/kiwisolver-1.4.8-cp312-cp312-win_arm64.whl", hash = "sha256:a3c44cb68861de93f0c4a8175fbaa691f0aa22550c331fefef02b618a9dcb476", size = 65424 }, -] - -[[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 = "mapclassify" -version = "2.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "networkx" }, - { name = "numpy" }, - { name = "pandas" }, - { name = "scikit-learn" }, - { name = "scipy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/af/40/f930dd57f640b957fa1067cf427d7a417eb3995e2d5d7b8f6def297d38bf/mapclassify-2.9.0.tar.gz", hash = "sha256:65fa7a7d778ed63496ff860b9f3c26d632d8f289820a6d8556ac527d14b26bd8", size = 5401963 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/fb/101891210f76158963a8bbf5a202d6c3173cc29a4dd75ca19e65ba4549dc/mapclassify-2.9.0-py3-none-any.whl", hash = "sha256:5c2902a6d83ff7a2cd4d8884238c9c111a32470b7a8bde2cf4f62fef8166a497", size = 286652 }, -] - -[[package]] -name = "markdown" -version = "3.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2f/15/222b423b0b88689c266d9eac4e61396fe2cc53464459d6a37618ac863b24/markdown-3.8.tar.gz", hash = "sha256:7df81e63f0df5c4b24b7d156eb81e4690595239b7d70937d0409f1b0de319c6f", size = 360906 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/3f/afe76f8e2246ffbc867440cbcf90525264df0e658f8a5ca1f872b3f6192a/markdown-3.8-py3-none-any.whl", hash = "sha256:794a929b79c5af141ef5ab0f2f642d0f7b1872981250230e72682346f7cc90dc", size = 106210 }, -] - -[[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 }, -] - -[[package]] -name = "matplotlib" -version = "3.10.3" -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/26/91/d49359a21893183ed2a5b6c76bec40e0b1dcbf8ca148f864d134897cfc75/matplotlib-3.10.3.tar.gz", hash = "sha256:2f82d2c5bb7ae93aaaa4cd42aca65d76ce6376f83304fa3a630b569aca274df0", size = 34799811 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f5/bd/af9f655456f60fe1d575f54fb14704ee299b16e999704817a7645dfce6b0/matplotlib-3.10.3-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:0ef061f74cd488586f552d0c336b2f078d43bc00dc473d2c3e7bfee2272f3fa8", size = 8178873 }, - { url = "https://files.pythonhosted.org/packages/c2/86/e1c86690610661cd716eda5f9d0b35eaf606ae6c9b6736687cfc8f2d0cd8/matplotlib-3.10.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d96985d14dc5f4a736bbea4b9de9afaa735f8a0fc2ca75be2fa9e96b2097369d", size = 8052205 }, - { url = "https://files.pythonhosted.org/packages/54/51/a9f8e49af3883dacddb2da1af5fca1f7468677f1188936452dd9aaaeb9ed/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7c5f0283da91e9522bdba4d6583ed9d5521566f63729ffb68334f86d0bb98049", size = 8465823 }, - { url = "https://files.pythonhosted.org/packages/e7/e3/c82963a3b86d6e6d5874cbeaa390166458a7f1961bab9feb14d3d1a10f02/matplotlib-3.10.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fdfa07c0ec58035242bc8b2c8aae37037c9a886370eef6850703d7583e19964b", size = 8606464 }, - { url = "https://files.pythonhosted.org/packages/0e/34/24da1027e7fcdd9e82da3194c470143c551852757a4b473a09a012f5b945/matplotlib-3.10.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:c0b9849a17bce080a16ebcb80a7b714b5677d0ec32161a2cc0a8e5a6030ae220", size = 9413103 }, - { url = "https://files.pythonhosted.org/packages/a6/da/948a017c3ea13fd4a97afad5fdebe2f5bbc4d28c0654510ce6fd6b06b7bd/matplotlib-3.10.3-cp311-cp311-win_amd64.whl", hash = "sha256:eef6ed6c03717083bc6d69c2d7ee8624205c29a8e6ea5a31cd3492ecdbaee1e1", size = 8065492 }, - { url = "https://files.pythonhosted.org/packages/eb/43/6b80eb47d1071f234ef0c96ca370c2ca621f91c12045f1401b5c9b28a639/matplotlib-3.10.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0ab1affc11d1f495ab9e6362b8174a25afc19c081ba5b0775ef00533a4236eea", size = 8179689 }, - { url = "https://files.pythonhosted.org/packages/0f/70/d61a591958325c357204870b5e7b164f93f2a8cca1dc6ce940f563909a13/matplotlib-3.10.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2a818d8bdcafa7ed2eed74487fdb071c09c1ae24152d403952adad11fa3c65b4", size = 8050466 }, - { url = "https://files.pythonhosted.org/packages/e7/75/70c9d2306203148cc7902a961240c5927dd8728afedf35e6a77e105a2985/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:748ebc3470c253e770b17d8b0557f0aa85cf8c63fd52f1a61af5b27ec0b7ffee", size = 8456252 }, - { url = "https://files.pythonhosted.org/packages/c4/91/ba0ae1ff4b3f30972ad01cd4a8029e70a0ec3b8ea5be04764b128b66f763/matplotlib-3.10.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ed70453fd99733293ace1aec568255bc51c6361cb0da94fa5ebf0649fdb2150a", size = 8601321 }, - { url = "https://files.pythonhosted.org/packages/d2/88/d636041eb54a84b889e11872d91f7cbf036b3b0e194a70fa064eb8b04f7a/matplotlib-3.10.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:dbed9917b44070e55640bd13419de83b4c918e52d97561544814ba463811cbc7", size = 9406972 }, - { url = "https://files.pythonhosted.org/packages/b1/79/0d1c165eac44405a86478082e225fce87874f7198300bbebc55faaf6d28d/matplotlib-3.10.3-cp312-cp312-win_amd64.whl", hash = "sha256:cf37d8c6ef1a48829443e8ba5227b44236d7fcaf7647caa3178a4ff9f7a5be05", size = 8067954 }, -] - -[[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 = "mergedeep" -version = "1.3.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3a/41/580bb4006e3ed0361b8151a01d324fb03f420815446c7def45d02f74c270/mergedeep-1.3.4.tar.gz", hash = "sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8", size = 4661 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/19/04f9b178c2d8a15b076c8b5140708fa6ffc5601fb6f1e975537072df5b2a/mergedeep-1.3.4-py3-none-any.whl", hash = "sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307", size = 6354 }, -] - -[[package]] -name = "mistune" -version = "3.1.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c4/79/bda47f7dd7c3c55770478d6d02c9960c430b0cf1773b72366ff89126ea31/mistune-3.1.3.tar.gz", hash = "sha256:a7035c21782b2becb6be62f8f25d3df81ccb4d6fa477a6525b15af06539f02a0", size = 94347 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/4d/23c4e4f09da849e127e9f123241946c23c1e30f45a88366879e064211815/mistune-3.1.3-py3-none-any.whl", hash = "sha256:1a32314113cff28aa6432e99e522677c8587fd83e3d51c29b82a52409c842bd9", size = 53410 }, -] - -[[package]] -name = "mkdocs" -version = "1.6.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "ghp-import" }, - { name = "jinja2" }, - { name = "markdown" }, - { name = "markupsafe" }, - { name = "mergedeep" }, - { name = "mkdocs-get-deps" }, - { name = "packaging" }, - { name = "pathspec" }, - { name = "pyyaml" }, - { name = "pyyaml-env-tag" }, - { name = "watchdog" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bc/c6/bbd4f061bd16b378247f12953ffcb04786a618ce5e904b8c5a01a0309061/mkdocs-1.6.1.tar.gz", hash = "sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2", size = 3889159 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/22/5b/dbc6a8cddc9cfa9c4971d59fb12bb8d42e161b7e7f8cc89e49137c5b279c/mkdocs-1.6.1-py3-none-any.whl", hash = "sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e", size = 3864451 }, -] - -[[package]] -name = "mkdocs-get-deps" -version = "0.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mergedeep" }, - { name = "platformdirs" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/f5/ed29cd50067784976f25ed0ed6fcd3c2ce9eb90650aa3b2796ddf7b6870b/mkdocs_get_deps-0.2.0.tar.gz", hash = "sha256:162b3d129c7fad9b19abfdcb9c1458a651628e4b1dea628ac68790fb3061c60c", size = 10239 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/d4/029f984e8d3f3b6b726bd33cafc473b75e9e44c0f7e80a5b29abc466bdea/mkdocs_get_deps-0.2.0-py3-none-any.whl", hash = "sha256:2bf11d0b133e77a0dd036abeeb06dec8775e46efa526dc70667d8863eefc6134", size = 9521 }, -] - -[[package]] -name = "mkdocs-material" -version = "9.6.14" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "babel" }, - { name = "backrefs" }, - { name = "colorama" }, - { name = "jinja2" }, - { name = "markdown" }, - { name = "mkdocs" }, - { name = "mkdocs-material-extensions" }, - { name = "paginate" }, - { name = "pygments" }, - { name = "pymdown-extensions" }, - { name = "requests" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, -] - -[[package]] -name = "mkdocs-material-extensions" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/79/9b/9b4c96d6593b2a541e1cb8b34899a6d021d208bb357042823d4d2cabdbe7/mkdocs_material_extensions-1.3.1.tar.gz", hash = "sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443", size = 11847 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5b/54/662a4743aa81d9582ee9339d4ffa3c8fd40a4965e033d77b9da9774d3960/mkdocs_material_extensions-1.3.1-py3-none-any.whl", hash = "sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31", size = 8728 }, -] - -[[package]] -name = "mmh3" -version = "5.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/47/1b/1fc6888c74cbd8abad1292dde2ddfcf8fc059e114c97dd6bf16d12f36293/mmh3-5.1.0.tar.gz", hash = "sha256:136e1e670500f177f49ec106a4ebf0adf20d18d96990cc36ea492c651d2b406c", size = 33728 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/56/09/fda7af7fe65928262098382e3bf55950cfbf67d30bf9e47731bf862161e9/mmh3-5.1.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0b529dcda3f951ff363a51d5866bc6d63cf57f1e73e8961f864ae5010647079d", size = 56098 }, - { url = "https://files.pythonhosted.org/packages/0c/ab/84c7bc3f366d6f3bd8b5d9325a10c367685bc17c26dac4c068e2001a4671/mmh3-5.1.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db1079b3ace965e562cdfc95847312f9273eb2ad3ebea983435c8423e06acd7", size = 40513 }, - { url = "https://files.pythonhosted.org/packages/4f/21/25ea58ca4a652bdc83d1528bec31745cce35802381fb4fe3c097905462d2/mmh3-5.1.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:22d31e3a0ff89b8eb3b826d6fc8e19532998b2aa6b9143698043a1268da413e1", size = 40112 }, - { url = "https://files.pythonhosted.org/packages/bd/78/4f12f16ae074ddda6f06745254fdb50f8cf3c85b0bbf7eaca58bed84bf58/mmh3-5.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2139bfbd354cd6cb0afed51c4b504f29bcd687a3b1460b7e89498329cc28a894", size = 102632 }, - { url = "https://files.pythonhosted.org/packages/48/11/8f09dc999cf2a09b6138d8d7fc734efb7b7bfdd9adb9383380941caadff0/mmh3-5.1.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:8c8105c6a435bc2cd6ea2ef59558ab1a2976fd4a4437026f562856d08996673a", size = 108884 }, - { url = "https://files.pythonhosted.org/packages/bd/91/e59a66538a3364176f6c3f7620eee0ab195bfe26f89a95cbcc7a1fb04b28/mmh3-5.1.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:57730067174a7f36fcd6ce012fe359bd5510fdaa5fe067bc94ed03e65dafb769", size = 106835 }, - { url = "https://files.pythonhosted.org/packages/25/14/b85836e21ab90e5cddb85fe79c494ebd8f81d96a87a664c488cc9277668b/mmh3-5.1.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bde80eb196d7fdc765a318604ded74a4378f02c5b46c17aa48a27d742edaded2", size = 93688 }, - { url = "https://files.pythonhosted.org/packages/ac/aa/8bc964067df9262740c95e4cde2d19f149f2224f426654e14199a9e47df6/mmh3-5.1.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e9c8eddcb441abddeb419c16c56fd74b3e2df9e57f7aa2903221996718435c7a", size = 101569 }, - { url = "https://files.pythonhosted.org/packages/70/b6/1fb163cbf919046a64717466c00edabebece3f95c013853fec76dbf2df92/mmh3-5.1.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:99e07e4acafbccc7a28c076a847fb060ffc1406036bc2005acb1b2af620e53c3", size = 98483 }, - { url = "https://files.pythonhosted.org/packages/70/49/ba64c050dd646060f835f1db6b2cd60a6485f3b0ea04976e7a29ace7312e/mmh3-5.1.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:9e25ba5b530e9a7d65f41a08d48f4b3fedc1e89c26486361166a5544aa4cad33", size = 96496 }, - { url = "https://files.pythonhosted.org/packages/9e/07/f2751d6a0b535bb865e1066e9c6b80852571ef8d61bce7eb44c18720fbfc/mmh3-5.1.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:bb9bf7475b4d99156ce2f0cf277c061a17560c8c10199c910a680869a278ddc7", size = 105109 }, - { url = "https://files.pythonhosted.org/packages/b7/02/30360a5a66f7abba44596d747cc1e6fb53136b168eaa335f63454ab7bb79/mmh3-5.1.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:2a1b0878dd281ea3003368ab53ff6f568e175f1b39f281df1da319e58a19c23a", size = 98231 }, - { url = "https://files.pythonhosted.org/packages/8c/60/8526b0c750ff4d7ae1266e68b795f14b97758a1d9fcc19f6ecabf9c55656/mmh3-5.1.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:25f565093ac8b8aefe0f61f8f95c9a9d11dd69e6a9e9832ff0d293511bc36258", size = 97548 }, - { url = "https://files.pythonhosted.org/packages/6d/4c/26e1222aca65769280d5427a1ce5875ef4213449718c8f03958d0bf91070/mmh3-5.1.0-cp311-cp311-win32.whl", hash = "sha256:1e3554d8792387eac73c99c6eaea0b3f884e7130eb67986e11c403e4f9b6d372", size = 40810 }, - { url = "https://files.pythonhosted.org/packages/98/d5/424ba95062d1212ea615dc8debc8d57983f2242d5e6b82e458b89a117a1e/mmh3-5.1.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad777a48197882492af50bf3098085424993ce850bdda406a358b6ab74be759", size = 41476 }, - { url = "https://files.pythonhosted.org/packages/bd/08/0315ccaf087ba55bb19a6dd3b1e8acd491e74ce7f5f9c4aaa06a90d66441/mmh3-5.1.0-cp311-cp311-win_arm64.whl", hash = "sha256:f29dc4efd99bdd29fe85ed6c81915b17b2ef2cf853abf7213a48ac6fb3eaabe1", size = 38880 }, - { url = "https://files.pythonhosted.org/packages/f4/47/e5f452bdf16028bfd2edb4e2e35d0441e4a4740f30e68ccd4cfd2fb2c57e/mmh3-5.1.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:45712987367cb9235026e3cbf4334670522a97751abfd00b5bc8bfa022c3311d", size = 56152 }, - { url = "https://files.pythonhosted.org/packages/60/38/2132d537dc7a7fdd8d2e98df90186c7fcdbd3f14f95502a24ba443c92245/mmh3-5.1.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b1020735eb35086ab24affbea59bb9082f7f6a0ad517cb89f0fc14f16cea4dae", size = 40564 }, - { url = "https://files.pythonhosted.org/packages/c0/2a/c52cf000581bfb8d94794f58865658e7accf2fa2e90789269d4ae9560b16/mmh3-5.1.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:babf2a78ce5513d120c358722a2e3aa7762d6071cd10cede026f8b32452be322", size = 40104 }, - { url = "https://files.pythonhosted.org/packages/83/33/30d163ce538c54fc98258db5621447e3ab208d133cece5d2577cf913e708/mmh3-5.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4f47f58cd5cbef968c84a7c1ddc192fef0a36b48b0b8a3cb67354531aa33b00", size = 102634 }, - { url = "https://files.pythonhosted.org/packages/94/5c/5a18acb6ecc6852be2d215c3d811aa61d7e425ab6596be940877355d7f3e/mmh3-5.1.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2044a601c113c981f2c1e14fa33adc9b826c9017034fe193e9eb49a6882dbb06", size = 108888 }, - { url = "https://files.pythonhosted.org/packages/1f/f6/11c556324c64a92aa12f28e221a727b6e082e426dc502e81f77056f6fc98/mmh3-5.1.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c94d999c9f2eb2da44d7c2826d3fbffdbbbbcde8488d353fee7c848ecc42b968", size = 106968 }, - { url = "https://files.pythonhosted.org/packages/5d/61/ca0c196a685aba7808a5c00246f17b988a9c4f55c594ee0a02c273e404f3/mmh3-5.1.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a015dcb24fa0c7a78f88e9419ac74f5001c1ed6a92e70fd1803f74afb26a4c83", size = 93771 }, - { url = "https://files.pythonhosted.org/packages/b4/55/0927c33528710085ee77b808d85bbbafdb91a1db7c8eaa89cac16d6c513e/mmh3-5.1.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:457da019c491a2d20e2022c7d4ce723675e4c081d9efc3b4d8b9f28a5ea789bd", size = 101726 }, - { url = "https://files.pythonhosted.org/packages/49/39/a92c60329fa470f41c18614a93c6cd88821412a12ee78c71c3f77e1cfc2d/mmh3-5.1.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:71408579a570193a4ac9c77344d68ddefa440b00468a0b566dcc2ba282a9c559", size = 98523 }, - { url = "https://files.pythonhosted.org/packages/81/90/26adb15345af8d9cf433ae1b6adcf12e0a4cad1e692de4fa9f8e8536c5ae/mmh3-5.1.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:8b3a04bc214a6e16c81f02f855e285c6df274a2084787eeafaa45f2fbdef1b63", size = 96628 }, - { url = "https://files.pythonhosted.org/packages/8a/4d/340d1e340df972a13fd4ec84c787367f425371720a1044220869c82364e9/mmh3-5.1.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:832dae26a35514f6d3c1e267fa48e8de3c7b978afdafa0529c808ad72e13ada3", size = 105190 }, - { url = "https://files.pythonhosted.org/packages/d3/7c/65047d1cccd3782d809936db446430fc7758bda9def5b0979887e08302a2/mmh3-5.1.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:bf658a61fc92ef8a48945ebb1076ef4ad74269e353fffcb642dfa0890b13673b", size = 98439 }, - { url = "https://files.pythonhosted.org/packages/72/d2/3c259d43097c30f062050f7e861075099404e8886b5d4dd3cebf180d6e02/mmh3-5.1.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3313577453582b03383731b66447cdcdd28a68f78df28f10d275d7d19010c1df", size = 97780 }, - { url = "https://files.pythonhosted.org/packages/29/29/831ea8d4abe96cdb3e28b79eab49cac7f04f9c6b6e36bfc686197ddba09d/mmh3-5.1.0-cp312-cp312-win32.whl", hash = "sha256:1d6508504c531ab86c4424b5a5ff07c1132d063863339cf92f6657ff7a580f76", size = 40835 }, - { url = "https://files.pythonhosted.org/packages/12/dd/7cbc30153b73f08eeac43804c1dbc770538a01979b4094edbe1a4b8eb551/mmh3-5.1.0-cp312-cp312-win_amd64.whl", hash = "sha256:aa75981fcdf3f21759d94f2c81b6a6e04a49dfbcdad88b152ba49b8e20544776", size = 41509 }, - { url = "https://files.pythonhosted.org/packages/80/9d/627375bab4c90dd066093fc2c9a26b86f87e26d980dbf71667b44cbee3eb/mmh3-5.1.0-cp312-cp312-win_arm64.whl", hash = "sha256:a4c1a76808dfea47f7407a0b07aaff9087447ef6280716fd0783409b3088bb3c", size = 38888 }, -] - -[[package]] -name = "multidict" -version = "6.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/91/2f/a3470242707058fe856fe59241eee5635d79087100b7042a867368863a27/multidict-6.4.4.tar.gz", hash = "sha256:69ee9e6ba214b5245031b76233dd95408a0fd57fdb019ddcc1ead4790932a8e8", size = 90183 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/1b/4c6e638195851524a63972c5773c7737bea7e47b1ba402186a37773acee2/multidict-6.4.4-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:4f5f29794ac0e73d2a06ac03fd18870adc0135a9d384f4a306a951188ed02f95", size = 65515 }, - { url = "https://files.pythonhosted.org/packages/25/d5/10e6bca9a44b8af3c7f920743e5fc0c2bcf8c11bf7a295d4cfe00b08fb46/multidict-6.4.4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:c04157266344158ebd57b7120d9b0b35812285d26d0e78193e17ef57bfe2979a", size = 38609 }, - { url = "https://files.pythonhosted.org/packages/26/b4/91fead447ccff56247edc7f0535fbf140733ae25187a33621771ee598a18/multidict-6.4.4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:bb61ffd3ab8310d93427e460f565322c44ef12769f51f77277b4abad7b6f7223", size = 37871 }, - { url = "https://files.pythonhosted.org/packages/3b/37/cbc977cae59277e99d15bbda84cc53b5e0c4929ffd91d958347200a42ad0/multidict-6.4.4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5e0ba18a9afd495f17c351d08ebbc4284e9c9f7971d715f196b79636a4d0de44", size = 226661 }, - { url = "https://files.pythonhosted.org/packages/15/cd/7e0b57fbd4dc2fc105169c4ecce5be1a63970f23bb4ec8c721b67e11953d/multidict-6.4.4-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:9faf1b1dcaadf9f900d23a0e6d6c8eadd6a95795a0e57fcca73acce0eb912065", size = 223422 }, - { url = "https://files.pythonhosted.org/packages/f1/01/1de268da121bac9f93242e30cd3286f6a819e5f0b8896511162d6ed4bf8d/multidict-6.4.4-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a4d1cb1327c6082c4fce4e2a438483390964c02213bc6b8d782cf782c9b1471f", size = 235447 }, - { url = "https://files.pythonhosted.org/packages/d2/8c/8b9a5e4aaaf4f2de14e86181a3a3d7b105077f668b6a06f043ec794f684c/multidict-6.4.4-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:941f1bec2f5dbd51feeb40aea654c2747f811ab01bdd3422a48a4e4576b7d76a", size = 231455 }, - { url = "https://files.pythonhosted.org/packages/35/db/e1817dcbaa10b319c412769cf999b1016890849245d38905b73e9c286862/multidict-6.4.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e5f8a146184da7ea12910a4cec51ef85e44f6268467fb489c3caf0cd512f29c2", size = 223666 }, - { url = "https://files.pythonhosted.org/packages/4a/e1/66e8579290ade8a00e0126b3d9a93029033ffd84f0e697d457ed1814d0fc/multidict-6.4.4-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:232b7237e57ec3c09be97206bfb83a0aa1c5d7d377faa019c68a210fa35831f1", size = 217392 }, - { url = "https://files.pythonhosted.org/packages/7b/6f/f8639326069c24a48c7747c2a5485d37847e142a3f741ff3340c88060a9a/multidict-6.4.4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:55ae0721c1513e5e3210bca4fc98456b980b0c2c016679d3d723119b6b202c42", size = 228969 }, - { url = "https://files.pythonhosted.org/packages/d2/c3/3d58182f76b960eeade51c89fcdce450f93379340457a328e132e2f8f9ed/multidict-6.4.4-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:51d662c072579f63137919d7bb8fc250655ce79f00c82ecf11cab678f335062e", size = 217433 }, - { url = "https://files.pythonhosted.org/packages/e1/4b/f31a562906f3bd375f3d0e83ce314e4a660c01b16c2923e8229b53fba5d7/multidict-6.4.4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0e05c39962baa0bb19a6b210e9b1422c35c093b651d64246b6c2e1a7e242d9fd", size = 225418 }, - { url = "https://files.pythonhosted.org/packages/99/89/78bb95c89c496d64b5798434a3deee21996114d4d2c28dd65850bf3a691e/multidict-6.4.4-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d5b1cc3ab8c31d9ebf0faa6e3540fb91257590da330ffe6d2393d4208e638925", size = 235042 }, - { url = "https://files.pythonhosted.org/packages/74/91/8780a6e5885a8770442a8f80db86a0887c4becca0e5a2282ba2cae702bc4/multidict-6.4.4-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:93ec84488a384cd7b8a29c2c7f467137d8a73f6fe38bb810ecf29d1ade011a7c", size = 230280 }, - { url = "https://files.pythonhosted.org/packages/68/c1/fcf69cabd542eb6f4b892469e033567ee6991d361d77abdc55e3a0f48349/multidict-6.4.4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:b308402608493638763abc95f9dc0030bbd6ac6aff784512e8ac3da73a88af08", size = 223322 }, - { url = "https://files.pythonhosted.org/packages/b8/85/5b80bf4b83d8141bd763e1d99142a9cdfd0db83f0739b4797172a4508014/multidict-6.4.4-cp311-cp311-win32.whl", hash = "sha256:343892a27d1a04d6ae455ecece12904d242d299ada01633d94c4f431d68a8c49", size = 35070 }, - { url = "https://files.pythonhosted.org/packages/09/66/0bed198ffd590ab86e001f7fa46b740d58cf8ff98c2f254e4a36bf8861ad/multidict-6.4.4-cp311-cp311-win_amd64.whl", hash = "sha256:73484a94f55359780c0f458bbd3c39cb9cf9c182552177d2136e828269dee529", size = 38667 }, - { url = "https://files.pythonhosted.org/packages/d2/b5/5675377da23d60875fe7dae6be841787755878e315e2f517235f22f59e18/multidict-6.4.4-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:dc388f75a1c00000824bf28b7633e40854f4127ede80512b44c3cfeeea1839a2", size = 64293 }, - { url = "https://files.pythonhosted.org/packages/34/a7/be384a482754bb8c95d2bbe91717bf7ccce6dc38c18569997a11f95aa554/multidict-6.4.4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:98af87593a666f739d9dba5d0ae86e01b0e1a9cfcd2e30d2d361fbbbd1a9162d", size = 38096 }, - { url = "https://files.pythonhosted.org/packages/66/6d/d59854bb4352306145bdfd1704d210731c1bb2c890bfee31fb7bbc1c4c7f/multidict-6.4.4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:aff4cafea2d120327d55eadd6b7f1136a8e5a0ecf6fb3b6863e8aca32cd8e50a", size = 37214 }, - { url = "https://files.pythonhosted.org/packages/99/e0/c29d9d462d7cfc5fc8f9bf24f9c6843b40e953c0b55e04eba2ad2cf54fba/multidict-6.4.4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:169c4ba7858176b797fe551d6e99040c531c775d2d57b31bcf4de6d7a669847f", size = 224686 }, - { url = "https://files.pythonhosted.org/packages/dc/4a/da99398d7fd8210d9de068f9a1b5f96dfaf67d51e3f2521f17cba4ee1012/multidict-6.4.4-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:b9eb4c59c54421a32b3273d4239865cb14ead53a606db066d7130ac80cc8ec93", size = 231061 }, - { url = "https://files.pythonhosted.org/packages/21/f5/ac11add39a0f447ac89353e6ca46666847051103649831c08a2800a14455/multidict-6.4.4-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7cf3bd54c56aa16fdb40028d545eaa8d051402b61533c21e84046e05513d5780", size = 232412 }, - { url = "https://files.pythonhosted.org/packages/d9/11/4b551e2110cded705a3c13a1d4b6a11f73891eb5a1c449f1b2b6259e58a6/multidict-6.4.4-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f682c42003c7264134bfe886376299db4cc0c6cd06a3295b41b347044bcb5482", size = 231563 }, - { url = "https://files.pythonhosted.org/packages/4c/02/751530c19e78fe73b24c3da66618eda0aa0d7f6e7aa512e46483de6be210/multidict-6.4.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a920f9cf2abdf6e493c519492d892c362007f113c94da4c239ae88429835bad1", size = 223811 }, - { url = "https://files.pythonhosted.org/packages/c7/cb/2be8a214643056289e51ca356026c7b2ce7225373e7a1f8c8715efee8988/multidict-6.4.4-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:530d86827a2df6504526106b4c104ba19044594f8722d3e87714e847c74a0275", size = 216524 }, - { url = "https://files.pythonhosted.org/packages/19/f3/6d5011ec375c09081f5250af58de85f172bfcaafebff286d8089243c4bd4/multidict-6.4.4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:ecde56ea2439b96ed8a8d826b50c57364612ddac0438c39e473fafad7ae1c23b", size = 229012 }, - { url = "https://files.pythonhosted.org/packages/67/9c/ca510785df5cf0eaf5b2a8132d7d04c1ce058dcf2c16233e596ce37a7f8e/multidict-6.4.4-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:dc8c9736d8574b560634775ac0def6bdc1661fc63fa27ffdfc7264c565bcb4f2", size = 226765 }, - { url = "https://files.pythonhosted.org/packages/36/c8/ca86019994e92a0f11e642bda31265854e6ea7b235642f0477e8c2e25c1f/multidict-6.4.4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:7f3d3b3c34867579ea47cbd6c1f2ce23fbfd20a273b6f9e3177e256584f1eacc", size = 222888 }, - { url = "https://files.pythonhosted.org/packages/c6/67/bc25a8e8bd522935379066950ec4e2277f9b236162a73548a2576d4b9587/multidict-6.4.4-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:87a728af265e08f96b6318ebe3c0f68b9335131f461efab2fc64cc84a44aa6ed", size = 234041 }, - { url = "https://files.pythonhosted.org/packages/f1/a0/70c4c2d12857fccbe607b334b7ee28b6b5326c322ca8f73ee54e70d76484/multidict-6.4.4-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:9f193eeda1857f8e8d3079a4abd258f42ef4a4bc87388452ed1e1c4d2b0c8740", size = 231046 }, - { url = "https://files.pythonhosted.org/packages/c1/0f/52954601d02d39742aab01d6b92f53c1dd38b2392248154c50797b4df7f1/multidict-6.4.4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:be06e73c06415199200e9a2324a11252a3d62030319919cde5e6950ffeccf72e", size = 227106 }, - { url = "https://files.pythonhosted.org/packages/af/24/679d83ec4379402d28721790dce818e5d6b9f94ce1323a556fb17fa9996c/multidict-6.4.4-cp312-cp312-win32.whl", hash = "sha256:622f26ea6a7e19b7c48dd9228071f571b2fbbd57a8cd71c061e848f281550e6b", size = 35351 }, - { url = "https://files.pythonhosted.org/packages/52/ef/40d98bc5f986f61565f9b345f102409534e29da86a6454eb6b7c00225a13/multidict-6.4.4-cp312-cp312-win_amd64.whl", hash = "sha256:5e2bcda30d5009996ff439e02a9f2b5c3d64a20151d34898c000a6281faa3781", size = 38791 }, - { url = "https://files.pythonhosted.org/packages/84/5d/e17845bb0fa76334477d5de38654d27946d5b5d3695443987a094a71b440/multidict-6.4.4-py3-none-any.whl", hash = "sha256:bd4557071b561a8b3b6075c3ce93cf9bfb6182cb241805c3d66ced3b75eff4ac", size = 10481 }, -] - -[[package]] -name = "mypy" -version = "1.15.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "mypy-extensions" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ce/43/d5e49a86afa64bd3839ea0d5b9c7103487007d728e1293f52525d6d5486a/mypy-1.15.0.tar.gz", hash = "sha256:404534629d51d3efea5c800ee7c42b72a6554d6c400e6a79eafe15d11341fd43", size = 3239717 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/03/bc/f6339726c627bd7ca1ce0fa56c9ae2d0144604a319e0e339bdadafbbb599/mypy-1.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2922d42e16d6de288022e5ca321cd0618b238cfc5570e0263e5ba0a77dbef56f", size = 10662338 }, - { url = "https://files.pythonhosted.org/packages/e2/90/8dcf506ca1a09b0d17555cc00cd69aee402c203911410136cd716559efe7/mypy-1.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2ee2d57e01a7c35de00f4634ba1bbf015185b219e4dc5909e281016df43f5ee5", size = 9787540 }, - { url = "https://files.pythonhosted.org/packages/05/05/a10f9479681e5da09ef2f9426f650d7b550d4bafbef683b69aad1ba87457/mypy-1.15.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:973500e0774b85d9689715feeffcc980193086551110fd678ebe1f4342fb7c5e", size = 11538051 }, - { url = "https://files.pythonhosted.org/packages/e9/9a/1f7d18b30edd57441a6411fcbc0c6869448d1a4bacbaee60656ac0fc29c8/mypy-1.15.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5a95fb17c13e29d2d5195869262f8125dfdb5c134dc8d9a9d0aecf7525b10c2c", size = 12286751 }, - { url = "https://files.pythonhosted.org/packages/72/af/19ff499b6f1dafcaf56f9881f7a965ac2f474f69f6f618b5175b044299f5/mypy-1.15.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:1905f494bfd7d85a23a88c5d97840888a7bd516545fc5aaedff0267e0bb54e2f", size = 12421783 }, - { url = "https://files.pythonhosted.org/packages/96/39/11b57431a1f686c1aed54bf794870efe0f6aeca11aca281a0bd87a5ad42c/mypy-1.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c9817fa23833ff189db061e6d2eff49b2f3b6ed9856b4a0a73046e41932d744f", size = 9265618 }, - { url = "https://files.pythonhosted.org/packages/98/3a/03c74331c5eb8bd025734e04c9840532226775c47a2c39b56a0c8d4f128d/mypy-1.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:aea39e0583d05124836ea645f412e88a5c7d0fd77a6d694b60d9b6b2d9f184fd", size = 10793981 }, - { url = "https://files.pythonhosted.org/packages/f0/1a/41759b18f2cfd568848a37c89030aeb03534411eef981df621d8fad08a1d/mypy-1.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:2f2147ab812b75e5b5499b01ade1f4a81489a147c01585cda36019102538615f", size = 9749175 }, - { url = "https://files.pythonhosted.org/packages/12/7e/873481abf1ef112c582db832740f4c11b2bfa510e829d6da29b0ab8c3f9c/mypy-1.15.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ce436f4c6d218a070048ed6a44c0bbb10cd2cc5e272b29e7845f6a2f57ee4464", size = 11455675 }, - { url = "https://files.pythonhosted.org/packages/b3/d0/92ae4cde706923a2d3f2d6c39629134063ff64b9dedca9c1388363da072d/mypy-1.15.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:8023ff13985661b50a5928fc7a5ca15f3d1affb41e5f0a9952cb68ef090b31ee", size = 12410020 }, - { url = "https://files.pythonhosted.org/packages/46/8b/df49974b337cce35f828ba6fda228152d6db45fed4c86ba56ffe442434fd/mypy-1.15.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:1124a18bc11a6a62887e3e137f37f53fbae476dc36c185d549d4f837a2a6a14e", size = 12498582 }, - { url = "https://files.pythonhosted.org/packages/13/50/da5203fcf6c53044a0b699939f31075c45ae8a4cadf538a9069b165c1050/mypy-1.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:171a9ca9a40cd1843abeca0e405bc1940cd9b305eaeea2dda769ba096932bb22", size = 9366614 }, - { url = "https://files.pythonhosted.org/packages/09/4e/a7d65c7322c510de2c409ff3828b03354a7c43f5a8ed458a7a131b41c7b9/mypy-1.15.0-py3-none-any.whl", hash = "sha256:5469affef548bd1895d86d3bf10ce2b44e33d86923c29e4d675b3e323437ea3e", size = 2221777 }, -] - -[[package]] -name = "mypy-boto3-glue" -version = "1.38.22" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions", marker = "python_full_version < '3.12'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/73/97/a479bc9405da1d6ae4d2bc88965e76e4d3c8c1c83188eb03c7a49d902826/mypy_boto3_glue-1.38.22.tar.gz", hash = "sha256:a9c529fafaaa9845d39c3204b3fb6cbbb633fa747faf6a084a2b2a381ef12a2b", size = 122519 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/64/33ff3fca5302bb54860d0ddd9ef89c0a2cfea80bd6d1336f10fd4857a1b7/mypy_boto3_glue-1.38.22-py3-none-any.whl", hash = "sha256:4fe34c858cbee41e8ad30382305c01b0dd9c1da4c84f894860b9249ddabb4a58", size = 130042 }, -] - -[[package]] -name = "mypy-extensions" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/6e/371856a3fb9d31ca8dac321cda606860fa4548858c0cc45d9d1d4ca2628b/mypy_extensions-1.1.0.tar.gz", hash = "sha256:52e68efc3284861e772bbcd66823fde5ae21fd2fdb51c62a211403730b916558", size = 6343 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl", hash = "sha256:1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505", size = 4963 }, -] - -[[package]] -name = "nbclient" -version = "0.10.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-client" }, - { name = "jupyter-core" }, - { name = "nbformat" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/87/66/7ffd18d58eae90d5721f9f39212327695b749e23ad44b3881744eaf4d9e8/nbclient-0.10.2.tar.gz", hash = "sha256:90b7fc6b810630db87a6d0c2250b1f0ab4cf4d3c27a299b0cde78a4ed3fd9193", size = 62424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/34/6d/e7fa07f03a4a7b221d94b4d586edb754a9b0dc3c9e2c93353e9fa4e0d117/nbclient-0.10.2-py3-none-any.whl", hash = "sha256:4ffee11e788b4a27fabeb7955547e4318a5298f34342a4bfd01f2e1faaeadc3d", size = 25434 }, -] - -[[package]] -name = "nbconvert" -version = "7.16.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "beautifulsoup4" }, - { name = "bleach", extra = ["css"] }, - { name = "defusedxml" }, - { name = "jinja2" }, - { name = "jupyter-core" }, - { name = "jupyterlab-pygments" }, - { name = "markupsafe" }, - { name = "mistune" }, - { name = "nbclient" }, - { name = "nbformat" }, - { name = "packaging" }, - { name = "pandocfilters" }, - { name = "pygments" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a3/59/f28e15fc47ffb73af68a8d9b47367a8630d76e97ae85ad18271b9db96fdf/nbconvert-7.16.6.tar.gz", hash = "sha256:576a7e37c6480da7b8465eefa66c17844243816ce1ccc372633c6b71c3c0f582", size = 857715 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/9a/cd673b2f773a12c992f41309ef81b99da1690426bd2f96957a7ade0d3ed7/nbconvert-7.16.6-py3-none-any.whl", hash = "sha256:1375a7b67e0c2883678c48e506dc320febb57685e5ee67faa51b18a90f3a712b", size = 258525 }, -] - -[[package]] -name = "nbformat" -version = "5.10.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fastjsonschema" }, - { name = "jsonschema" }, - { name = "jupyter-core" }, - { name = "traitlets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6d/fd/91545e604bc3dad7dca9ed03284086039b294c6b3d75c0d2fa45f9e9caf3/nbformat-5.10.4.tar.gz", hash = "sha256:322168b14f937a5d11362988ecac2a4952d3d8e3a2cbeb2319584631226d5b3a", size = 142749 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/82/0340caa499416c78e5d8f5f05947ae4bc3cba53c9f038ab6e9ed964e22f1/nbformat-5.10.4-py3-none-any.whl", hash = "sha256:3b48d6c8fbca4b299bf3982ea7db1af21580e4fec269ad087b9e81588891200b", size = 78454 }, -] - -[[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 = "netcdf4" -version = "1.7.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "cftime" }, - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/71/ed/4d27fcfa40ebfdad3d2088a3de7ee48dbff7f35163e815ec1870d2a7398c/netcdf4-1.7.2.tar.gz", hash = "sha256:a4c6375540b19989896136943abb6d44850ff6f1fa7d3f063253b1ad3f8b7fce", size = 835064 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d8/b7079ecbab35f7c95ab27e5146fa91daf0e39ba76093f0fc1187fc748749/netCDF4-1.7.2-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:09d61c2ddb6011afb51e77ea0f25cd0bdc28887fb426ffbbc661d920f20c9749", size = 2981078 }, - { url = "https://files.pythonhosted.org/packages/4b/c1/ae83fdcc05d1db00a340f5f3e252247d73f11f8eaa890c59e7b5c8e35b56/netCDF4-1.7.2-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:fd2a16dbddeb8fa7cf48c37bfc1967290332f2862bb82f984eec2007bb120aeb", size = 2462104 }, - { url = "https://files.pythonhosted.org/packages/f2/bd/6f76916fae5d375eedd0cb48acd713d8d8db267d0c3cf3d209a4631923a5/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f54f5d39ffbcf1726a1e6fd90cb5fa74277ecea739a5fa0f424636d71beafe24", size = 9451498 }, - { url = "https://files.pythonhosted.org/packages/18/c1/7e564dbd28228ba4a35a272bf53b9a2e8b0ba9ac06b2c84b57c03c84e87b/netCDF4-1.7.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:902aa50d70f49d002d896212a171d344c38f7b8ca520837c56c922ac1535c4a3", size = 9283073 }, - { url = "https://files.pythonhosted.org/packages/cf/ba/d26e8278ad8a2306580bab076b6d64cd16459a60e632e6c1a9cbb68dd3d9/netCDF4-1.7.2-cp311-cp311-win_amd64.whl", hash = "sha256:3291f9ad0c98c49a4dd16aefad1a9abd3a1b884171db6c81bdcee94671cfabe3", size = 7010215 }, - { url = "https://files.pythonhosted.org/packages/52/7f/3a0f18a39efca0e093b54d634b66573c25ecab5c482d73138ae14aa55c6d/netCDF4-1.7.2-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:e73e3baa0b74afc414e53ff5095748fdbec7fb346eda351e567c23f2f0d247f1", size = 2952127 }, - { url = "https://files.pythonhosted.org/packages/ed/c4/8aac0f8ca95a41bdf1364d34ff4e9bcc24494bfe69a1157301d884c2e392/netCDF4-1.7.2-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:a51da09258b31776f474c1d47e484fc7214914cdc59edf4cee789ba632184591", size = 2460781 }, - { url = "https://files.pythonhosted.org/packages/2d/1a/32b7427aaf62fed3d4e4456f874b25ce39373dbddf6cfde9edbcfc2417fc/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cb95b11804fe051897d1f2044b05d82a1847bc2549631cdd2f655dde7de77a9c", size = 9377415 }, - { url = "https://files.pythonhosted.org/packages/fd/bf/5e671495c8bdf6b628e091aa8980793579474a10e51bc6ba302a3af6a778/netCDF4-1.7.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f9d8a848373723f41ef662590b4f5e1832227501c9fd4513e8ad8da58c269977", size = 9260579 }, - { url = "https://files.pythonhosted.org/packages/d4/57/0a0bcdebcfaf72e96e7bcaa512f80ee096bf71945a3318d38253338e9c25/netCDF4-1.7.2-cp312-cp312-win_amd64.whl", hash = "sha256:568ea369e00b581302d77fc5fd0b8f78e520c7e08d0b5af5219ba51f3f1cd694", size = 6991523 }, -] - -[[package]] -name = "networkx" -version = "3.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6c/4f/ccdb8ad3a38e583f214547fd2f7ff1fc160c43a75af88e6aec213404b96a/networkx-3.5.tar.gz", hash = "sha256:d4c6f9cf81f52d69230866796b82afbccdec3db7ae4fbd1b65ea750feed50037", size = 2471065 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/eb/8d/776adee7bbf76365fdd7f2552710282c79a4ead5d2a46408c9043a2b70ba/networkx-3.5-py3-none-any.whl", hash = "sha256:0030d386a9a06dee3565298b4a734b68589749a544acbb6c412dc9e2489ec6ec", size = 2034406 }, -] - -[[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 = "notebook-shim" -version = "0.2.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "jupyter-server" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/d2/92fa3243712b9a3e8bafaf60aac366da1cada3639ca767ff4b5b3654ec28/notebook_shim-0.2.4.tar.gz", hash = "sha256:b4b2cfa1b65d98307ca24361f5b30fe785b53c3fd07b7a47e89acb5e6ac638cb", size = 13167 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/33/bd5b9137445ea4b680023eb0469b2bb969d61303dedb2aac6560ff3d14a1/notebook_shim-0.2.4-py3-none-any.whl", hash = "sha256:411a5be4e9dc882a074ccbcae671eda64cceb068767e9a3419096986560e1cef", size = 13307 }, -] - -[[package]] -name = "numcodecs" -version = "0.16.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/00/35/49da850ce5371da3930d099da364a73ce9ae4fc64075e521674b48f4804d/numcodecs-0.16.1.tar.gz", hash = "sha256:c47f20d656454568c6b4697ce02081e6bbb512f198738c6a56fafe8029c97fb1", size = 6268134 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6c/82/8d6ca1166dc9b020f383073c1c604e004f0495d243647a83e5d5fff2b7ad/numcodecs-0.16.1-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:5348a25aefbce37ea7c00c3363d36176155233c95597e5905a932e9620df960d", size = 1623980 }, - { url = "https://files.pythonhosted.org/packages/aa/4e/11258b7945c6cd3579f16228c803a13291d16ef7ef46f9551008090b6763/numcodecs-0.16.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2058b0a985470809c720d2457758b61e6c9495a49d5f20dfac9b5ebabd8848eb", size = 1153826 }, - { url = "https://files.pythonhosted.org/packages/a1/24/4099ccb29754fc1d2e55dbd9b540f58a24cab6e844dc996e37812c3fb79d/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6b216b6d7bc207b85d41fddbc25b09fd00d76e265454db6e3fb09d5da0216397", size = 8263684 }, - { url = "https://files.pythonhosted.org/packages/04/e3/816a82b984dd7fb7a0afadd16842260ccfee23cc5edbda48a92649ee161b/numcodecs-0.16.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2308d56c4f84a5b942f8668b4adedd3d9cdd6a22e6e6e20768ec356c77050f38", size = 8788927 }, - { url = "https://files.pythonhosted.org/packages/6f/54/dbea8b17928670412db0efb20efc087b30c2a67b84b1605fa8a136e482af/numcodecs-0.16.1-cp311-cp311-win_amd64.whl", hash = "sha256:acd8d68b4b815e62cb91e6064a53dac51ee99849350784ee16dd52cdbb4bc70f", size = 790259 }, - { url = "https://files.pythonhosted.org/packages/b7/ee/e2a903c88fed347dc74c70bbd7a8dab9aa22bb0dac68c5bc6393c2e9373b/numcodecs-0.16.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:1abe0651ecb6f207656ebfc802effa55c4ae3136cf172c295a067749a2699122", size = 1663434 }, - { url = "https://files.pythonhosted.org/packages/f2/f0/37819d4f6896b1ac43a164ffd3ab99d7cbf63bf63cb375fef97aedaef4f0/numcodecs-0.16.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:abb39b7102d0816c8563669cdddca40392d34d0cbf31e3e996706b244586a458", size = 1150402 }, - { url = "https://files.pythonhosted.org/packages/60/3c/5059a29750305b80b7428b1e6695878dea9ea3b537d7fba57875e4bbc2c7/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f3359a951f8b23317f12736a7ad1e7375ec3d735465f92049c76d032ebca4c40", size = 8237455 }, - { url = "https://files.pythonhosted.org/packages/1b/f5/515f98d659ab0cbe3738da153eddae22186fd38f05a808511e10f04cf679/numcodecs-0.16.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:82cc70592ec18060786b1bfa0da23afd2a7807d7975d766e626954d6628ec609", size = 8770711 }, - { url = "https://files.pythonhosted.org/packages/a2/3a/9fc6104f888af11bad804ebd32dffe0bcb83337f4525b4fe5b379942fefd/numcodecs-0.16.1-cp312-cp312-win_amd64.whl", hash = "sha256:4b48ddc8a7d132b7808bc53eb2705342de5c1e39289d725f988bd143c0fd86df", size = 788701 }, -] - -[package.optional-dependencies] -crc32c = [ - { name = "crc32c" }, -] - -[[package]] -name = "numpy" -version = "2.2.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963 }, - { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743 }, - { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616 }, - { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579 }, - { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005 }, - { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570 }, - { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548 }, - { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521 }, - { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866 }, - { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455 }, - { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348 }, - { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362 }, - { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103 }, - { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382 }, - { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462 }, - { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618 }, - { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511 }, - { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783 }, - { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506 }, - { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190 }, -] - -[[package]] -name = "overrides" -version = "7.7.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/36/86/b585f53236dec60aba864e050778b25045f857e17f6e5ea0ae95fe80edd2/overrides-7.7.0.tar.gz", hash = "sha256:55158fa3d93b98cc75299b1e67078ad9003ca27945c76162c1c0766d6f91820a", size = 22812 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2c/ab/fc8290c6a4c722e5514d80f62b2dc4c4df1a68a41d1364e625c35990fcf3/overrides-7.7.0-py3-none-any.whl", hash = "sha256:c7ed9d062f78b8e4c1a7b70bd8796b35ead4d9f510227ef9c5dc7626c60d7e49", size = 17832 }, -] - -[[package]] -name = "packaging" -version = "25.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469 }, -] - -[[package]] -name = "paginate" -version = "0.5.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ec/46/68dde5b6bc00c1296ec6466ab27dddede6aec9af1b99090e1107091b3b84/paginate-0.5.7.tar.gz", hash = "sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945", size = 19252 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/96/04b8e52da071d28f5e21a805b19cb9390aa17a47462ac87f5e2696b9566d/paginate-0.5.7-py2.py3-none-any.whl", hash = "sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591", size = 13746 }, -] - -[[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 }, -] - -[[package]] -name = "pandocfilters" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/70/6f/3dd4940bbe001c06a65f88e36bad298bc7a0de5036115639926b0c5c0458/pandocfilters-1.5.1.tar.gz", hash = "sha256:002b4a555ee4ebc03f8b66307e287fa492e4a77b4ea14d3f934328297bb4939e", size = 8454 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/af/4fbc8cab944db5d21b7e2a5b8e9211a03a79852b1157e2c102fcc61ac440/pandocfilters-1.5.1-py2.py3-none-any.whl", hash = "sha256:93be382804a9cdb0a7267585f157e5d1731bbe5545a85b268d6f5fe6232de2bc", size = 8663 }, -] - -[[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 = "pathspec" -version = "0.12.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ca/bc/f35b8446f4531a7cb215605d100cd88b7ac6f44ab3fc94870c120ab3adbf/pathspec-0.12.1.tar.gz", hash = "sha256:a482d51503a1ab33b1c67a6c3813a26953dbdc71c31dacaef9a838c4e29f5712", size = 51043 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cc/20/ff623b09d963f88bfde16306a54e12ee5ea43e9b597108672ff3a408aad6/pathspec-0.12.1-py3-none-any.whl", hash = "sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08", size = 31191 }, -] - -[[package]] -name = "pexpect" -version = "4.9.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/42/92/cc564bf6381ff43ce1f4d06852fc19a2f11d180f23dc32d9588bee2f149d/pexpect-4.9.0.tar.gz", hash = "sha256:ee7d41123f3c9911050ea2c2dac107568dc43b2d3b0c7557a33212c398ead30f", size = 166450 } -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.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/cb/bb5c01fcd2a69335b86c22142b2bccfc3464087efb7fd382eee5ffc7fdf7/pillow-11.2.1.tar.gz", hash = "sha256:a64dd61998416367b7ef979b73d3a85853ba9bec4c2925f74e588879a58716b6", size = 47026707 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/08/3fbf4b98924c73037a8e8b4c2c774784805e0fb4ebca6c5bb60795c40125/pillow-11.2.1-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:35ca289f712ccfc699508c4658a1d14652e8033e9b69839edf83cbdd0ba39e70", size = 3198450 }, - { url = "https://files.pythonhosted.org/packages/84/92/6505b1af3d2849d5e714fc75ba9e69b7255c05ee42383a35a4d58f576b16/pillow-11.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0409af9f829f87a2dfb7e259f78f317a5351f2045158be321fd135973fff7bf", size = 3030550 }, - { url = "https://files.pythonhosted.org/packages/3c/8c/ac2f99d2a70ff966bc7eb13dacacfaab57c0549b2ffb351b6537c7840b12/pillow-11.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4e5c5edee874dce4f653dbe59db7c73a600119fbea8d31f53423586ee2aafd7", size = 4415018 }, - { url = "https://files.pythonhosted.org/packages/1f/e3/0a58b5d838687f40891fff9cbaf8669f90c96b64dc8f91f87894413856c6/pillow-11.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b93a07e76d13bff9444f1a029e0af2964e654bfc2e2c2d46bfd080df5ad5f3d8", size = 4498006 }, - { url = "https://files.pythonhosted.org/packages/21/f5/6ba14718135f08fbfa33308efe027dd02b781d3f1d5c471444a395933aac/pillow-11.2.1-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:e6def7eed9e7fa90fde255afaf08060dc4b343bbe524a8f69bdd2a2f0018f600", size = 4517773 }, - { url = "https://files.pythonhosted.org/packages/20/f2/805ad600fc59ebe4f1ba6129cd3a75fb0da126975c8579b8f57abeb61e80/pillow-11.2.1-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8f4f3724c068be008c08257207210c138d5f3731af6c155a81c2b09a9eb3a788", size = 4607069 }, - { url = "https://files.pythonhosted.org/packages/71/6b/4ef8a288b4bb2e0180cba13ca0a519fa27aa982875882392b65131401099/pillow-11.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a0a6709b47019dff32e678bc12c63008311b82b9327613f534e496dacaefb71e", size = 4583460 }, - { url = "https://files.pythonhosted.org/packages/62/ae/f29c705a09cbc9e2a456590816e5c234382ae5d32584f451c3eb41a62062/pillow-11.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:f6b0c664ccb879109ee3ca702a9272d877f4fcd21e5eb63c26422fd6e415365e", size = 4661304 }, - { url = "https://files.pythonhosted.org/packages/6e/1a/c8217b6f2f73794a5e219fbad087701f412337ae6dbb956db37d69a9bc43/pillow-11.2.1-cp311-cp311-win32.whl", hash = "sha256:cc5d875d56e49f112b6def6813c4e3d3036d269c008bf8aef72cd08d20ca6df6", size = 2331809 }, - { url = "https://files.pythonhosted.org/packages/e2/72/25a8f40170dc262e86e90f37cb72cb3de5e307f75bf4b02535a61afcd519/pillow-11.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:0f5c7eda47bf8e3c8a283762cab94e496ba977a420868cb819159980b6709193", size = 2676338 }, - { url = "https://files.pythonhosted.org/packages/06/9e/76825e39efee61efea258b479391ca77d64dbd9e5804e4ad0fa453b4ba55/pillow-11.2.1-cp311-cp311-win_arm64.whl", hash = "sha256:4d375eb838755f2528ac8cbc926c3e31cc49ca4ad0cf79cff48b20e30634a4a7", size = 2414918 }, - { url = "https://files.pythonhosted.org/packages/c7/40/052610b15a1b8961f52537cc8326ca6a881408bc2bdad0d852edeb6ed33b/pillow-11.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:78afba22027b4accef10dbd5eed84425930ba41b3ea0a86fa8d20baaf19d807f", size = 3190185 }, - { url = "https://files.pythonhosted.org/packages/e5/7e/b86dbd35a5f938632093dc40d1682874c33dcfe832558fc80ca56bfcb774/pillow-11.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:78092232a4ab376a35d68c4e6d5e00dfd73454bd12b230420025fbe178ee3b0b", size = 3030306 }, - { url = "https://files.pythonhosted.org/packages/a4/5c/467a161f9ed53e5eab51a42923c33051bf8d1a2af4626ac04f5166e58e0c/pillow-11.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:25a5f306095c6780c52e6bbb6109624b95c5b18e40aab1c3041da3e9e0cd3e2d", size = 4416121 }, - { url = "https://files.pythonhosted.org/packages/62/73/972b7742e38ae0e2ac76ab137ca6005dcf877480da0d9d61d93b613065b4/pillow-11.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0c7b29dbd4281923a2bfe562acb734cee96bbb129e96e6972d315ed9f232bef4", size = 4501707 }, - { url = "https://files.pythonhosted.org/packages/e4/3a/427e4cb0b9e177efbc1a84798ed20498c4f233abde003c06d2650a6d60cb/pillow-11.2.1-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:3e645b020f3209a0181a418bffe7b4a93171eef6c4ef6cc20980b30bebf17b7d", size = 4522921 }, - { url = "https://files.pythonhosted.org/packages/fe/7c/d8b1330458e4d2f3f45d9508796d7caf0c0d3764c00c823d10f6f1a3b76d/pillow-11.2.1-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:b2dbea1012ccb784a65349f57bbc93730b96e85b42e9bf7b01ef40443db720b4", size = 4612523 }, - { url = "https://files.pythonhosted.org/packages/b3/2f/65738384e0b1acf451de5a573d8153fe84103772d139e1e0bdf1596be2ea/pillow-11.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:da3104c57bbd72948d75f6a9389e6727d2ab6333c3617f0a89d72d4940aa0443", size = 4587836 }, - { url = "https://files.pythonhosted.org/packages/6a/c5/e795c9f2ddf3debb2dedd0df889f2fe4b053308bb59a3cc02a0cd144d641/pillow-11.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:598174aef4589af795f66f9caab87ba4ff860ce08cd5bb447c6fc553ffee603c", size = 4669390 }, - { url = "https://files.pythonhosted.org/packages/96/ae/ca0099a3995976a9fce2f423166f7bff9b12244afdc7520f6ed38911539a/pillow-11.2.1-cp312-cp312-win32.whl", hash = "sha256:1d535df14716e7f8776b9e7fee118576d65572b4aad3ed639be9e4fa88a1cad3", size = 2332309 }, - { url = "https://files.pythonhosted.org/packages/7c/18/24bff2ad716257fc03da964c5e8f05d9790a779a8895d6566e493ccf0189/pillow-11.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:14e33b28bf17c7a38eede290f77db7c664e4eb01f7869e37fa98a5aa95978941", size = 2676768 }, - { url = "https://files.pythonhosted.org/packages/da/bb/e8d656c9543276517ee40184aaa39dcb41e683bca121022f9323ae11b39d/pillow-11.2.1-cp312-cp312-win_arm64.whl", hash = "sha256:21e1470ac9e5739ff880c211fc3af01e3ae505859392bf65458c224d0bf283eb", size = 2415087 }, - { url = "https://files.pythonhosted.org/packages/a4/ad/2613c04633c7257d9481ab21d6b5364b59fc5d75faafd7cb8693523945a3/pillow-11.2.1-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:80f1df8dbe9572b4b7abdfa17eb5d78dd620b1d55d9e25f834efdbee872d3aed", size = 3181734 }, - { url = "https://files.pythonhosted.org/packages/a4/fd/dcdda4471ed667de57bb5405bb42d751e6cfdd4011a12c248b455c778e03/pillow-11.2.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:ea926cfbc3957090becbcbbb65ad177161a2ff2ad578b5a6ec9bb1e1cd78753c", size = 2999841 }, - { url = "https://files.pythonhosted.org/packages/ac/89/8a2536e95e77432833f0db6fd72a8d310c8e4272a04461fb833eb021bf94/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:738db0e0941ca0376804d4de6a782c005245264edaa253ffce24e5a15cbdc7bd", size = 3437470 }, - { url = "https://files.pythonhosted.org/packages/9d/8f/abd47b73c60712f88e9eda32baced7bfc3e9bd6a7619bb64b93acff28c3e/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9db98ab6565c69082ec9b0d4e40dd9f6181dab0dd236d26f7a50b8b9bfbd5076", size = 3460013 }, - { url = "https://files.pythonhosted.org/packages/f6/20/5c0a0aa83b213b7a07ec01e71a3d6ea2cf4ad1d2c686cc0168173b6089e7/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:036e53f4170e270ddb8797d4c590e6dd14d28e15c7da375c18978045f7e6c37b", size = 3527165 }, - { url = "https://files.pythonhosted.org/packages/58/0e/2abab98a72202d91146abc839e10c14f7cf36166f12838ea0c4db3ca6ecb/pillow-11.2.1-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:14f73f7c291279bd65fda51ee87affd7c1e097709f7fdd0188957a16c264601f", size = 3571586 }, - { url = "https://files.pythonhosted.org/packages/21/2c/5e05f58658cf49b6667762cca03d6e7d85cededde2caf2ab37b81f80e574/pillow-11.2.1-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:208653868d5c9ecc2b327f9b9ef34e0e42a4cdd172c2988fd81d62d2bc9bc044", size = 2674751 }, -] - -[[package]] -name = "platformdirs" -version = "4.3.8" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/8b/3c73abc9c759ecd3f1f7ceff6685840859e8070c4d947c93fae71f6a0bf2/platformdirs-4.3.8.tar.gz", hash = "sha256:3d512d96e16bcb959a814c9f348431070822a6496326a4be0911c40b5a74c2bc", size = 21362 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fe/39/979e8e21520d4e47a0bbe349e2713c0aac6f3d853d0e5b34d76206c439aa/platformdirs-4.3.8-py3-none-any.whl", hash = "sha256:ff7059bb7eb1179e2685604f4aaf157cfd9535242bd23742eadc3c13542139b4", size = 18567 }, -] - -[[package]] -name = "pluggy" -version = "1.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538 }, -] - -[[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.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cfgv" }, - { name = "identify" }, - { name = "nodeenv" }, - { name = "pyyaml" }, - { name = "virtualenv" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/08/39/679ca9b26c7bb2999ff122d50faa301e49af82ca9c066ec061cfbc0c6784/pre_commit-4.2.0.tar.gz", hash = "sha256:601283b9757afd87d40c4c4a9b2b5de9637a8ea02eaff7adc2d0fb4e04841146", size = 193424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/88/74/a88bf1b1efeae488a0c0b7bdf71429c313722d1fc0f377537fbe554e6180/pre_commit-4.2.0-py2.py3-none-any.whl", hash = "sha256:a009ca7205f1eb497d10b845e52c838a98b6cdd2102a6c8e4540e94ee75c58bd", size = 220707 }, -] - -[[package]] -name = "prometheus-client" -version = "0.22.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/5b/5a/3fa1fa7e91a203759aaf316be394f70f2ef598d589b9785a8611b6094c00/prometheus_client-0.22.0.tar.gz", hash = "sha256:18da1d2241ac2d10c8d2110f13eedcd5c7c0c8af18c926e8731f04fc10cd575c", size = 74443 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c7/cee159ba3d7192e84a4c166ec1752f44a5fa859ac0eeda2d73a1da65ab47/prometheus_client-0.22.0-py3-none-any.whl", hash = "sha256:c8951bbe64e62b96cd8e8f5d917279d1b9b91ab766793f33d4dce6c228558713", size = 62658 }, -] - -[[package]] -name = "prompt-toolkit" -version = "3.0.51" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wcwidth" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bb/6e/9d084c929dfe9e3bfe0c6a47e31f78a25c54627d64a66e884a8bf5474f1c/prompt_toolkit-3.0.51.tar.gz", hash = "sha256:931a162e3b27fc90c86f1b48bb1fb2c528c2761475e57c9c06de13311c7b54ed", size = 428940 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ce/4f/5249960887b1fbe561d9ff265496d170b55a735b76724f10ef19f9e40716/prompt_toolkit-3.0.51-py3-none-any.whl", hash = "sha256:52742911fde84e2d423e2f9a4cf1de7d7ac4e51958f648d9540e0fb8db077b07", size = 387810 }, -] - -[[package]] -name = "propcache" -version = "0.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/c8/fdc6686a986feae3541ea23dcaa661bd93972d3940460646c6bb96e21c40/propcache-0.3.1.tar.gz", hash = "sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf", size = 43651 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/90/0f/5a5319ee83bd651f75311fcb0c492c21322a7fc8f788e4eef23f44243427/propcache-0.3.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:7f30241577d2fef2602113b70ef7231bf4c69a97e04693bde08ddab913ba0ce5", size = 80243 }, - { url = "https://files.pythonhosted.org/packages/ce/84/3db5537e0879942783e2256616ff15d870a11d7ac26541336fe1b673c818/propcache-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:43593c6772aa12abc3af7784bff4a41ffa921608dd38b77cf1dfd7f5c4e71371", size = 46503 }, - { url = "https://files.pythonhosted.org/packages/e2/c8/b649ed972433c3f0d827d7f0cf9ea47162f4ef8f4fe98c5f3641a0bc63ff/propcache-0.3.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a75801768bbe65499495660b777e018cbe90c7980f07f8aa57d6be79ea6f71da", size = 45934 }, - { url = "https://files.pythonhosted.org/packages/59/f9/4c0a5cf6974c2c43b1a6810c40d889769cc8f84cea676cbe1e62766a45f8/propcache-0.3.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6f1324db48f001c2ca26a25fa25af60711e09b9aaf4b28488602776f4f9a744", size = 233633 }, - { url = "https://files.pythonhosted.org/packages/e7/64/66f2f4d1b4f0007c6e9078bd95b609b633d3957fe6dd23eac33ebde4b584/propcache-0.3.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:5cdb0f3e1eb6dfc9965d19734d8f9c481b294b5274337a8cb5cb01b462dcb7e0", size = 241124 }, - { url = "https://files.pythonhosted.org/packages/aa/bf/7b8c9fd097d511638fa9b6af3d986adbdf567598a567b46338c925144c1b/propcache-0.3.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1eb34d90aac9bfbced9a58b266f8946cb5935869ff01b164573a7634d39fbcb5", size = 240283 }, - { url = "https://files.pythonhosted.org/packages/fa/c9/e85aeeeaae83358e2a1ef32d6ff50a483a5d5248bc38510d030a6f4e2816/propcache-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f35c7070eeec2cdaac6fd3fe245226ed2a6292d3ee8c938e5bb645b434c5f256", size = 232498 }, - { url = "https://files.pythonhosted.org/packages/8e/66/acb88e1f30ef5536d785c283af2e62931cb934a56a3ecf39105887aa8905/propcache-0.3.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b23c11c2c9e6d4e7300c92e022046ad09b91fd00e36e83c44483df4afa990073", size = 221486 }, - { url = "https://files.pythonhosted.org/packages/f5/f9/233ddb05ffdcaee4448508ee1d70aa7deff21bb41469ccdfcc339f871427/propcache-0.3.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3e19ea4ea0bf46179f8a3652ac1426e6dcbaf577ce4b4f65be581e237340420d", size = 222675 }, - { url = "https://files.pythonhosted.org/packages/98/b8/eb977e28138f9e22a5a789daf608d36e05ed93093ef12a12441030da800a/propcache-0.3.1-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:bd39c92e4c8f6cbf5f08257d6360123af72af9f4da75a690bef50da77362d25f", size = 215727 }, - { url = "https://files.pythonhosted.org/packages/89/2d/5f52d9c579f67b8ee1edd9ec073c91b23cc5b7ff7951a1e449e04ed8fdf3/propcache-0.3.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:b0313e8b923b3814d1c4a524c93dfecea5f39fa95601f6a9b1ac96cd66f89ea0", size = 217878 }, - { url = "https://files.pythonhosted.org/packages/7a/fd/5283e5ed8a82b00c7a989b99bb6ea173db1ad750bf0bf8dff08d3f4a4e28/propcache-0.3.1-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:e861ad82892408487be144906a368ddbe2dc6297074ade2d892341b35c59844a", size = 230558 }, - { url = "https://files.pythonhosted.org/packages/90/38/ab17d75938ef7ac87332c588857422ae126b1c76253f0f5b1242032923ca/propcache-0.3.1-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:61014615c1274df8da5991a1e5da85a3ccb00c2d4701ac6f3383afd3ca47ab0a", size = 233754 }, - { url = "https://files.pythonhosted.org/packages/06/5d/3b921b9c60659ae464137508d3b4c2b3f52f592ceb1964aa2533b32fcf0b/propcache-0.3.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:71ebe3fe42656a2328ab08933d420df5f3ab121772eef78f2dc63624157f0ed9", size = 226088 }, - { url = "https://files.pythonhosted.org/packages/54/6e/30a11f4417d9266b5a464ac5a8c5164ddc9dd153dfa77bf57918165eb4ae/propcache-0.3.1-cp311-cp311-win32.whl", hash = "sha256:58aa11f4ca8b60113d4b8e32d37e7e78bd8af4d1a5b5cb4979ed856a45e62005", size = 40859 }, - { url = "https://files.pythonhosted.org/packages/1d/3a/8a68dd867da9ca2ee9dfd361093e9cb08cb0f37e5ddb2276f1b5177d7731/propcache-0.3.1-cp311-cp311-win_amd64.whl", hash = "sha256:9532ea0b26a401264b1365146c440a6d78269ed41f83f23818d4b79497aeabe7", size = 45153 }, - { url = "https://files.pythonhosted.org/packages/41/aa/ca78d9be314d1e15ff517b992bebbed3bdfef5b8919e85bf4940e57b6137/propcache-0.3.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:f78eb8422acc93d7b69964012ad7048764bb45a54ba7a39bb9e146c72ea29723", size = 80430 }, - { url = "https://files.pythonhosted.org/packages/1a/d8/f0c17c44d1cda0ad1979af2e593ea290defdde9eaeb89b08abbe02a5e8e1/propcache-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:89498dd49c2f9a026ee057965cdf8192e5ae070ce7d7a7bd4b66a8e257d0c976", size = 46637 }, - { url = "https://files.pythonhosted.org/packages/ae/bd/c1e37265910752e6e5e8a4c1605d0129e5b7933c3dc3cf1b9b48ed83b364/propcache-0.3.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:09400e98545c998d57d10035ff623266927cb784d13dd2b31fd33b8a5316b85b", size = 46123 }, - { url = "https://files.pythonhosted.org/packages/d4/b0/911eda0865f90c0c7e9f0415d40a5bf681204da5fd7ca089361a64c16b28/propcache-0.3.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa8efd8c5adc5a2c9d3b952815ff8f7710cefdcaf5f2c36d26aff51aeca2f12f", size = 243031 }, - { url = "https://files.pythonhosted.org/packages/0a/06/0da53397c76a74271621807265b6eb61fb011451b1ddebf43213df763669/propcache-0.3.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c2fe5c910f6007e716a06d269608d307b4f36e7babee5f36533722660e8c4a70", size = 249100 }, - { url = "https://files.pythonhosted.org/packages/f1/eb/13090e05bf6b963fc1653cdc922133ced467cb4b8dab53158db5a37aa21e/propcache-0.3.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a0ab8cf8cdd2194f8ff979a43ab43049b1df0b37aa64ab7eca04ac14429baeb7", size = 250170 }, - { url = "https://files.pythonhosted.org/packages/3b/4c/f72c9e1022b3b043ec7dc475a0f405d4c3e10b9b1d378a7330fecf0652da/propcache-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:563f9d8c03ad645597b8d010ef4e9eab359faeb11a0a2ac9f7b4bc8c28ebef25", size = 245000 }, - { url = "https://files.pythonhosted.org/packages/e8/fd/970ca0e22acc829f1adf5de3724085e778c1ad8a75bec010049502cb3a86/propcache-0.3.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb6e0faf8cb6b4beea5d6ed7b5a578254c6d7df54c36ccd3d8b3eb00d6770277", size = 230262 }, - { url = "https://files.pythonhosted.org/packages/c4/42/817289120c6b9194a44f6c3e6b2c3277c5b70bbad39e7df648f177cc3634/propcache-0.3.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:1c5c7ab7f2bb3f573d1cb921993006ba2d39e8621019dffb1c5bc94cdbae81e8", size = 236772 }, - { url = "https://files.pythonhosted.org/packages/7c/9c/3b3942b302badd589ad6b672da3ca7b660a6c2f505cafd058133ddc73918/propcache-0.3.1-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:050b571b2e96ec942898f8eb46ea4bfbb19bd5502424747e83badc2d4a99a44e", size = 231133 }, - { url = "https://files.pythonhosted.org/packages/98/a1/75f6355f9ad039108ff000dfc2e19962c8dea0430da9a1428e7975cf24b2/propcache-0.3.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:e1c4d24b804b3a87e9350f79e2371a705a188d292fd310e663483af6ee6718ee", size = 230741 }, - { url = "https://files.pythonhosted.org/packages/67/0c/3e82563af77d1f8731132166da69fdfd95e71210e31f18edce08a1eb11ea/propcache-0.3.1-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:e4fe2a6d5ce975c117a6bb1e8ccda772d1e7029c1cca1acd209f91d30fa72815", size = 244047 }, - { url = "https://files.pythonhosted.org/packages/f7/50/9fb7cca01532a08c4d5186d7bb2da6c4c587825c0ae134b89b47c7d62628/propcache-0.3.1-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:feccd282de1f6322f56f6845bf1207a537227812f0a9bf5571df52bb418d79d5", size = 246467 }, - { url = "https://files.pythonhosted.org/packages/a9/02/ccbcf3e1c604c16cc525309161d57412c23cf2351523aedbb280eb7c9094/propcache-0.3.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:ec314cde7314d2dd0510c6787326bbffcbdc317ecee6b7401ce218b3099075a7", size = 241022 }, - { url = "https://files.pythonhosted.org/packages/db/19/e777227545e09ca1e77a6e21274ae9ec45de0f589f0ce3eca2a41f366220/propcache-0.3.1-cp312-cp312-win32.whl", hash = "sha256:7d2d5a0028d920738372630870e7d9644ce437142197f8c827194fca404bf03b", size = 40647 }, - { url = "https://files.pythonhosted.org/packages/24/bb/3b1b01da5dd04c77a204c84e538ff11f624e31431cfde7201d9110b092b1/propcache-0.3.1-cp312-cp312-win_amd64.whl", hash = "sha256:88c423efef9d7a59dae0614eaed718449c09a5ac79a5f224a8b9664d603f04a3", size = 44784 }, - { url = "https://files.pythonhosted.org/packages/b8/d3/c3cb8f1d6ae3b37f83e1de806713a9b3642c5895f0215a62e1a4bd6e5e34/propcache-0.3.1-py3-none-any.whl", hash = "sha256:9a8ecf38de50a7f518c21568c80f985e776397b902f1ce0b01f799aba1608b40", size = 12376 }, -] - -[[package]] -name = "psutil" -version = "7.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2a/80/336820c1ad9286a4ded7e845b2eccfcb27851ab8ac6abece774a6ff4d3de/psutil-7.0.0.tar.gz", hash = "sha256:7be9c3eba38beccb6495ea33afd982a44074b78f28c434a1f51cc07fd315c456", size = 497003 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ed/e6/2d26234410f8b8abdbf891c9da62bee396583f713fb9f3325a4760875d22/psutil-7.0.0-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:101d71dc322e3cffd7cea0650b09b3d08b8e7c4109dd6809fe452dfd00e58b25", size = 238051 }, - { url = "https://files.pythonhosted.org/packages/04/8b/30f930733afe425e3cbfc0e1468a30a18942350c1a8816acfade80c005c4/psutil-7.0.0-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:39db632f6bb862eeccf56660871433e111b6ea58f2caea825571951d4b6aa3da", size = 239535 }, - { url = "https://files.pythonhosted.org/packages/2a/ed/d362e84620dd22876b55389248e522338ed1bf134a5edd3b8231d7207f6d/psutil-7.0.0-cp36-abi3-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:1fcee592b4c6f146991ca55919ea3d1f8926497a713ed7faaf8225e174581e91", size = 275004 }, - { url = "https://files.pythonhosted.org/packages/bf/b9/b0eb3f3cbcb734d930fdf839431606844a825b23eaf9a6ab371edac8162c/psutil-7.0.0-cp36-abi3-manylinux_2_12_x86_64.manylinux2010_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4b1388a4f6875d7e2aff5c4ca1cc16c545ed41dd8bb596cefea80111db353a34", size = 277986 }, - { url = "https://files.pythonhosted.org/packages/eb/a2/709e0fe2f093556c17fbafda93ac032257242cabcc7ff3369e2cb76a97aa/psutil-7.0.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a5f098451abc2828f7dc6b58d44b532b22f2088f4999a937557b603ce72b1993", size = 279544 }, - { url = "https://files.pythonhosted.org/packages/50/e6/eecf58810b9d12e6427369784efe814a1eec0f492084ce8eb8f4d89d6d61/psutil-7.0.0-cp37-abi3-win32.whl", hash = "sha256:ba3fcef7523064a6c9da440fc4d6bd07da93ac726b5733c29027d7dc95b39d99", size = 241053 }, - { url = "https://files.pythonhosted.org/packages/50/1b/6921afe68c74868b4c9fa424dad3be35b095e16687989ebbb50ce4fceb7c/psutil-7.0.0-cp37-abi3-win_amd64.whl", hash = "sha256:4cf3d4eb1aa9b348dec30105c55cd9b7d4629285735a102beb4441e38db90553", size = 244885 }, -] - -[[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 = "pyarrow" -version = "20.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/ee/a7810cb9f3d6e9238e61d312076a9859bf3668fd21c69744de9532383912/pyarrow-20.0.0.tar.gz", hash = "sha256:febc4a913592573c8d5805091a6c2b5064c8bd6e002131f01061797d91c783c1", size = 1125187 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/47/a2/b7930824181ceadd0c63c1042d01fa4ef63eee233934826a7a2a9af6e463/pyarrow-20.0.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:24ca380585444cb2a31324c546a9a56abbe87e26069189e14bdba19c86c049f0", size = 30856035 }, - { url = "https://files.pythonhosted.org/packages/9b/18/c765770227d7f5bdfa8a69f64b49194352325c66a5c3bb5e332dfd5867d9/pyarrow-20.0.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:95b330059ddfdc591a3225f2d272123be26c8fa76e8c9ee1a77aad507361cfdb", size = 32309552 }, - { url = "https://files.pythonhosted.org/packages/44/fb/dfb2dfdd3e488bb14f822d7335653092dde150cffc2da97de6e7500681f9/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5f0fb1041267e9968c6d0d2ce3ff92e3928b243e2b6d11eeb84d9ac547308232", size = 41334704 }, - { url = "https://files.pythonhosted.org/packages/58/0d/08a95878d38808051a953e887332d4a76bc06c6ee04351918ee1155407eb/pyarrow-20.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8ff87cc837601532cc8242d2f7e09b4e02404de1b797aee747dd4ba4bd6313f", size = 42399836 }, - { url = "https://files.pythonhosted.org/packages/f3/cd/efa271234dfe38f0271561086eedcad7bc0f2ddd1efba423916ff0883684/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:7a3a5dcf54286e6141d5114522cf31dd67a9e7c9133d150799f30ee302a7a1ab", size = 40711789 }, - { url = "https://files.pythonhosted.org/packages/46/1f/7f02009bc7fc8955c391defee5348f510e589a020e4b40ca05edcb847854/pyarrow-20.0.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:a6ad3e7758ecf559900261a4df985662df54fb7fdb55e8e3b3aa99b23d526b62", size = 42301124 }, - { url = "https://files.pythonhosted.org/packages/4f/92/692c562be4504c262089e86757a9048739fe1acb4024f92d39615e7bab3f/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:6bb830757103a6cb300a04610e08d9636f0cd223d32f388418ea893a3e655f1c", size = 42916060 }, - { url = "https://files.pythonhosted.org/packages/a4/ec/9f5c7e7c828d8e0a3c7ef50ee62eca38a7de2fa6eb1b8fa43685c9414fef/pyarrow-20.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:96e37f0766ecb4514a899d9a3554fadda770fb57ddf42b63d80f14bc20aa7db3", size = 44547640 }, - { url = "https://files.pythonhosted.org/packages/54/96/46613131b4727f10fd2ffa6d0d6f02efcc09a0e7374eff3b5771548aa95b/pyarrow-20.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:3346babb516f4b6fd790da99b98bed9708e3f02e734c84971faccb20736848dc", size = 25781491 }, - { url = "https://files.pythonhosted.org/packages/a1/d6/0c10e0d54f6c13eb464ee9b67a68b8c71bcf2f67760ef5b6fbcddd2ab05f/pyarrow-20.0.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:75a51a5b0eef32727a247707d4755322cb970be7e935172b6a3a9f9ae98404ba", size = 30815067 }, - { url = "https://files.pythonhosted.org/packages/7e/e2/04e9874abe4094a06fd8b0cbb0f1312d8dd7d707f144c2ec1e5e8f452ffa/pyarrow-20.0.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:211d5e84cecc640c7a3ab900f930aaff5cd2702177e0d562d426fb7c4f737781", size = 32297128 }, - { url = "https://files.pythonhosted.org/packages/31/fd/c565e5dcc906a3b471a83273039cb75cb79aad4a2d4a12f76cc5ae90a4b8/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4ba3cf4182828be7a896cbd232aa8dd6a31bd1f9e32776cc3796c012855e1199", size = 41334890 }, - { url = "https://files.pythonhosted.org/packages/af/a9/3bdd799e2c9b20c1ea6dc6fa8e83f29480a97711cf806e823f808c2316ac/pyarrow-20.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c3a01f313ffe27ac4126f4c2e5ea0f36a5fc6ab51f8726cf41fee4b256680bd", size = 42421775 }, - { url = "https://files.pythonhosted.org/packages/10/f7/da98ccd86354c332f593218101ae56568d5dcedb460e342000bd89c49cc1/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:a2791f69ad72addd33510fec7bb14ee06c2a448e06b649e264c094c5b5f7ce28", size = 40687231 }, - { url = "https://files.pythonhosted.org/packages/bb/1b/2168d6050e52ff1e6cefc61d600723870bf569cbf41d13db939c8cf97a16/pyarrow-20.0.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:4250e28a22302ce8692d3a0e8ec9d9dde54ec00d237cff4dfa9c1fbf79e472a8", size = 42295639 }, - { url = "https://files.pythonhosted.org/packages/b2/66/2d976c0c7158fd25591c8ca55aee026e6d5745a021915a1835578707feb3/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:89e030dc58fc760e4010148e6ff164d2f44441490280ef1e97a542375e41058e", size = 42908549 }, - { url = "https://files.pythonhosted.org/packages/31/a9/dfb999c2fc6911201dcbf348247f9cc382a8990f9ab45c12eabfd7243a38/pyarrow-20.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6102b4864d77102dbbb72965618e204e550135a940c2534711d5ffa787df2a5a", size = 44557216 }, - { url = "https://files.pythonhosted.org/packages/a0/8e/9adee63dfa3911be2382fb4d92e4b2e7d82610f9d9f668493bebaa2af50f/pyarrow-20.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:96d6a0a37d9c98be08f5ed6a10831d88d52cac7b13f5287f1e0f625a0de8062b", size = 25660496 }, -] - -[[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 = "pycrdt" -version = "0.12.22" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/b3/1f6b9d774e06a7ac3967f337556508e033dcc2b74ee88331c63d559c58e4/pycrdt-0.12.22.tar.gz", hash = "sha256:7cadf6de12a3c5c4ae5b32858643afd50d522424b8ea486903e98167e06481d4", size = 73833 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cf/2a/e6f3cca6db20aa2f9963c6e8cce310fc227e7b783b616ddd805fb9c461c1/pycrdt-0.12.22-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:a8dc35e1411d6c4ad1ebbc9653e9e0d276268cc3ec50449ebfa1597c4a4d4a4c", size = 1671926 }, - { url = "https://files.pythonhosted.org/packages/18/73/2f6b9135514efaafa87644f1268e416cc058226ce69962598fe2c45a860d/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:694477c0c095837729b578a587122df1d980d3f4f5a71bd225c4bcad33777c77", size = 901078 }, - { url = "https://files.pythonhosted.org/packages/4f/8b/583feaab3fbcddda2264a18aa91d73fd8e6fab5bc0e47396e7e76321de8d/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:51f333ba569cf6db47d2a0b91fc06f5efc66c62437d6b41db640a9012a5f8c4c", size = 928538 }, - { url = "https://files.pythonhosted.org/packages/49/6f/05c4e14325a6ba54a4b148d1354d5e8e2193fc4456ca9b1dab19ba4ad780/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:93e3a91f5df51c2a9bcd104168883ee170daa776cea64bd1bc1702b5b6209b7f", size = 1116584 }, - { url = "https://files.pythonhosted.org/packages/a6/b2/cb721d57cb943b2b08b36056de9bc426fd830a1c711e09186e204c284891/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:cf1446f2a9853a86238701e4e40a1f2d9f718a6e48c55bbe418834e4f17c78e7", size = 972837 }, - { url = "https://files.pythonhosted.org/packages/2b/13/cccdfaf302d08a3c1eebd22230665e90b488f3b3887194ea6eafabea52af/pycrdt-0.12.22-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9eee64d635d95f4f7e9b1e78d6a23ebf853331c13ac9980f0d623b0e611bb17b", size = 923577 }, - { url = "https://files.pythonhosted.org/packages/41/3c/93eda683124a94bdfbbbd277088722f4cc2fade784aadba3a1d22ac56d10/pycrdt-0.12.22-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:d0e671faa409017f9c2b6fb19cca313a7d6333d3b2eb230259d70e8e72cde8c1", size = 1000442 }, - { url = "https://files.pythonhosted.org/packages/80/f2/a50ca937933d653c7eba653f897d1fcf32ff5fe3bbf9c1082fdd3aa75bf9/pycrdt-0.12.22-cp311-cp311-win32.whl", hash = "sha256:4709baf2cdba6de5b20f63e89e0e74f07446b996b7c63777aa187232d477e5e1", size = 668725 }, - { url = "https://files.pythonhosted.org/packages/cd/e7/032dca6ea3512834397c39f3f399d21fc42561220045d4ab6fbbf8a3c198/pycrdt-0.12.22-cp311-cp311-win_amd64.whl", hash = "sha256:477636dccd78c9588ae84e7f5f2c1abfd65665f4eb9adaea4ef50fee1d9d64df", size = 725252 }, - { url = "https://files.pythonhosted.org/packages/17/76/bc5c407255bf718bd2bae2fff5b6e1f662f25a968abb7db6cd46321b87ca/pycrdt-0.12.22-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl", hash = "sha256:da3196b2f858affa800a80c001119df434a434f4181a49e66e8b0109791d31f2", size = 1650873 }, - { url = "https://files.pythonhosted.org/packages/1f/0d/cbb3ba3d8a3513bb4ff8b33f37ffb9a3c6bf691ba9f98960e59d03959653/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2b91d173aeb4d38dafa0ca85af2450ad3d8f44f2909477bd24ab9e9c9dad6021", size = 902864 }, - { url = "https://files.pythonhosted.org/packages/55/18/839e15312909eb835bb8f0453fc46448f3b69b54d2704a13fe88a58ad162/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:aa09deecc8517d5fa444d941708e759799d001d1a527b19dd266731ff6dd65cd", size = 929371 }, - { url = "https://files.pythonhosted.org/packages/9d/08/55c42eec7df89df780d0258de90210a3626ea1736fed82e7e484f861e30f/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d81b256cb896420880005dca5e6e70792a33ea25629949f995226ee0607af51a", size = 1118987 }, - { url = "https://files.pythonhosted.org/packages/04/b6/42a525c31f39bda9f449f95eb0de3676fe5789b69d0d827014c14a3eeb5f/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c51c12eab45d4f166ebf27e2af88ab0dab55fb7115b76527ea4cecd89eec92f", size = 976533 }, - { url = "https://files.pythonhosted.org/packages/9d/38/c8e9bb0abcb4eedcc0009df25c5ac799b4bcc7f798297698e11bbac938d3/pycrdt-0.12.22-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:26cb92f3b4ad73a7eb54758e4afd34e5a35a99713b42918d04b5771b9eb41595", size = 928003 }, - { url = "https://files.pythonhosted.org/packages/9e/8f/86536297b3fe73b5794bdd03c45e7dcd0e488d895c798e2372e2bad421ed/pycrdt-0.12.22-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:f776eb11112b7772bbba930a1cc38d4efe405c181d71367b548491654d9118b5", size = 1000534 }, - { url = "https://files.pythonhosted.org/packages/e7/d5/84c9b1ad9da551830dab73f20ef70b57f9bdbca5f4432a57c6ae6f4c5ea9/pycrdt-0.12.22-cp312-cp312-win32.whl", hash = "sha256:94d57ee2dc530c5f2754aba337f287c1780ee1bfc8dcef001f7f5429fc347970", size = 668423 }, - { url = "https://files.pythonhosted.org/packages/fe/fd/3b9ec78f784a1eb53e428b455fe4060f11cd30e842b6b5edd28a31aecff1/pycrdt-0.12.22-cp312-cp312-win_amd64.whl", hash = "sha256:e87cefe71fdfc13672eb33e0f6f1668161edc4e727dfe70fdbb4e8cef76b0b76", size = 722306 }, -] - -[[package]] -name = "pycrdt-websocket" -version = "0.15.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, - { name = "pycrdt" }, - { name = "sqlite-anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/25/97/96f3a984a897f0406c66c54c790e5522879443d1f59a6d5c9563a6dabdd1/pycrdt_websocket-0.15.5.tar.gz", hash = "sha256:aff8c07693ab43b98102ccdaf421738c7d0893db376815de824ea4b4e533de7e", size = 18972 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/b8/7b2cef47f423d5e1daed3e81515fb07a74aeb9b9148033e8085de451773e/pycrdt_websocket-0.15.5-py3-none-any.whl", hash = "sha256:215c2139503dc1a4559ce8a1553239dd484ecff077429f5433658dfce35432ee", size = 20277 }, -] - -[[package]] -name = "pydantic" -version = "2.11.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "annotated-types" }, - { name = "pydantic-core" }, - { name = "typing-extensions" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, -] - -[[package]] -name = "pydantic-core" -version = "2.33.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ad/88/5f2260bdfae97aabf98f1778d43f69574390ad787afb646292a638c923d4/pydantic_core-2.33.2.tar.gz", hash = "sha256:7cb8bc3605c29176e1b105350d2e6474142d7c1bd1d9327c4a9bdb46bf827acc", size = 435195 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3f/8d/71db63483d518cbbf290261a1fc2839d17ff89fce7089e08cad07ccfce67/pydantic_core-2.33.2-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:4c5b0a576fb381edd6d27f0a85915c6daf2f8138dc5c267a57c08a62900758c7", size = 2028584 }, - { url = "https://files.pythonhosted.org/packages/24/2f/3cfa7244ae292dd850989f328722d2aef313f74ffc471184dc509e1e4e5a/pydantic_core-2.33.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e799c050df38a639db758c617ec771fd8fb7a5f8eaaa4b27b101f266b216a246", size = 1855071 }, - { url = "https://files.pythonhosted.org/packages/b3/d3/4ae42d33f5e3f50dd467761304be2fa0a9417fbf09735bc2cce003480f2a/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dc46a01bf8d62f227d5ecee74178ffc448ff4e5197c756331f71efcc66dc980f", size = 1897823 }, - { url = "https://files.pythonhosted.org/packages/f4/f3/aa5976e8352b7695ff808599794b1fba2a9ae2ee954a3426855935799488/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:a144d4f717285c6d9234a66778059f33a89096dfb9b39117663fd8413d582dcc", size = 1983792 }, - { url = "https://files.pythonhosted.org/packages/d5/7a/cda9b5a23c552037717f2b2a5257e9b2bfe45e687386df9591eff7b46d28/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:73cf6373c21bc80b2e0dc88444f41ae60b2f070ed02095754eb5a01df12256de", size = 2136338 }, - { url = "https://files.pythonhosted.org/packages/2b/9f/b8f9ec8dd1417eb9da784e91e1667d58a2a4a7b7b34cf4af765ef663a7e5/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3dc625f4aa79713512d1976fe9f0bc99f706a9dee21dfd1810b4bbbf228d0e8a", size = 2730998 }, - { url = "https://files.pythonhosted.org/packages/47/bc/cd720e078576bdb8255d5032c5d63ee5c0bf4b7173dd955185a1d658c456/pydantic_core-2.33.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:881b21b5549499972441da4758d662aeea93f1923f953e9cbaff14b8b9565aef", size = 2003200 }, - { url = "https://files.pythonhosted.org/packages/ca/22/3602b895ee2cd29d11a2b349372446ae9727c32e78a94b3d588a40fdf187/pydantic_core-2.33.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:bdc25f3681f7b78572699569514036afe3c243bc3059d3942624e936ec93450e", size = 2113890 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/e3c5908c03cf00d629eb38393a98fccc38ee0ce8ecce32f69fc7d7b558a7/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fe5b32187cbc0c862ee201ad66c30cf218e5ed468ec8dc1cf49dec66e160cc4d", size = 2073359 }, - { url = "https://files.pythonhosted.org/packages/12/e7/6a36a07c59ebefc8777d1ffdaf5ae71b06b21952582e4b07eba88a421c79/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_armv7l.whl", hash = "sha256:bc7aee6f634a6f4a95676fcb5d6559a2c2a390330098dba5e5a5f28a2e4ada30", size = 2245883 }, - { url = "https://files.pythonhosted.org/packages/16/3f/59b3187aaa6cc0c1e6616e8045b284de2b6a87b027cce2ffcea073adf1d2/pydantic_core-2.33.2-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:235f45e5dbcccf6bd99f9f472858849f73d11120d76ea8707115415f8e5ebebf", size = 2241074 }, - { url = "https://files.pythonhosted.org/packages/e0/ed/55532bb88f674d5d8f67ab121a2a13c385df382de2a1677f30ad385f7438/pydantic_core-2.33.2-cp311-cp311-win32.whl", hash = "sha256:6368900c2d3ef09b69cb0b913f9f8263b03786e5b2a387706c5afb66800efd51", size = 1910538 }, - { url = "https://files.pythonhosted.org/packages/fe/1b/25b7cccd4519c0b23c2dd636ad39d381abf113085ce4f7bec2b0dc755eb1/pydantic_core-2.33.2-cp311-cp311-win_amd64.whl", hash = "sha256:1e063337ef9e9820c77acc768546325ebe04ee38b08703244c1309cccc4f1bab", size = 1952909 }, - { url = "https://files.pythonhosted.org/packages/49/a9/d809358e49126438055884c4366a1f6227f0f84f635a9014e2deb9b9de54/pydantic_core-2.33.2-cp311-cp311-win_arm64.whl", hash = "sha256:6b99022f1d19bc32a4c2a0d544fc9a76e3be90f0b3f4af413f87d38749300e65", size = 1897786 }, - { url = "https://files.pythonhosted.org/packages/18/8a/2b41c97f554ec8c71f2a8a5f85cb56a8b0956addfe8b0efb5b3d77e8bdc3/pydantic_core-2.33.2-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:a7ec89dc587667f22b6a0b6579c249fca9026ce7c333fc142ba42411fa243cdc", size = 2009000 }, - { url = "https://files.pythonhosted.org/packages/a1/02/6224312aacb3c8ecbaa959897af57181fb6cf3a3d7917fd44d0f2917e6f2/pydantic_core-2.33.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:3c6db6e52c6d70aa0d00d45cdb9b40f0433b96380071ea80b09277dba021ddf7", size = 1847996 }, - { url = "https://files.pythonhosted.org/packages/d6/46/6dcdf084a523dbe0a0be59d054734b86a981726f221f4562aed313dbcb49/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e61206137cbc65e6d5256e1166f88331d3b6238e082d9f74613b9b765fb9025", size = 1880957 }, - { url = "https://files.pythonhosted.org/packages/ec/6b/1ec2c03837ac00886ba8160ce041ce4e325b41d06a034adbef11339ae422/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:eb8c529b2819c37140eb51b914153063d27ed88e3bdc31b71198a198e921e011", size = 1964199 }, - { url = "https://files.pythonhosted.org/packages/2d/1d/6bf34d6adb9debd9136bd197ca72642203ce9aaaa85cfcbfcf20f9696e83/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c52b02ad8b4e2cf14ca7b3d918f3eb0ee91e63b3167c32591e57c4317e134f8f", size = 2120296 }, - { url = "https://files.pythonhosted.org/packages/e0/94/2bd0aaf5a591e974b32a9f7123f16637776c304471a0ab33cf263cf5591a/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:96081f1605125ba0855dfda83f6f3df5ec90c61195421ba72223de35ccfb2f88", size = 2676109 }, - { url = "https://files.pythonhosted.org/packages/f9/41/4b043778cf9c4285d59742281a769eac371b9e47e35f98ad321349cc5d61/pydantic_core-2.33.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f57a69461af2a5fa6e6bbd7a5f60d3b7e6cebb687f55106933188e79ad155c1", size = 2002028 }, - { url = "https://files.pythonhosted.org/packages/cb/d5/7bb781bf2748ce3d03af04d5c969fa1308880e1dca35a9bd94e1a96a922e/pydantic_core-2.33.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:572c7e6c8bb4774d2ac88929e3d1f12bc45714ae5ee6d9a788a9fb35e60bb04b", size = 2100044 }, - { url = "https://files.pythonhosted.org/packages/fe/36/def5e53e1eb0ad896785702a5bbfd25eed546cdcf4087ad285021a90ed53/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:db4b41f9bd95fbe5acd76d89920336ba96f03e149097365afe1cb092fceb89a1", size = 2058881 }, - { url = "https://files.pythonhosted.org/packages/01/6c/57f8d70b2ee57fc3dc8b9610315949837fa8c11d86927b9bb044f8705419/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_armv7l.whl", hash = "sha256:fa854f5cf7e33842a892e5c73f45327760bc7bc516339fda888c75ae60edaeb6", size = 2227034 }, - { url = "https://files.pythonhosted.org/packages/27/b9/9c17f0396a82b3d5cbea4c24d742083422639e7bb1d5bf600e12cb176a13/pydantic_core-2.33.2-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:5f483cfb75ff703095c59e365360cb73e00185e01aaea067cd19acffd2ab20ea", size = 2234187 }, - { url = "https://files.pythonhosted.org/packages/b0/6a/adf5734ffd52bf86d865093ad70b2ce543415e0e356f6cacabbc0d9ad910/pydantic_core-2.33.2-cp312-cp312-win32.whl", hash = "sha256:9cb1da0f5a471435a7bc7e439b8a728e8b61e59784b2af70d7c169f8dd8ae290", size = 1892628 }, - { url = "https://files.pythonhosted.org/packages/43/e4/5479fecb3606c1368d496a825d8411e126133c41224c1e7238be58b87d7e/pydantic_core-2.33.2-cp312-cp312-win_amd64.whl", hash = "sha256:f941635f2a3d96b2973e867144fde513665c87f13fe0e193c158ac51bfaaa7b2", size = 1955866 }, - { url = "https://files.pythonhosted.org/packages/0d/24/8b11e8b3e2be9dd82df4b11408a67c61bb4dc4f8e11b5b0fc888b38118b5/pydantic_core-2.33.2-cp312-cp312-win_arm64.whl", hash = "sha256:cca3868ddfaccfbc4bfb1d608e2ccaaebe0ae628e1416aeb9c4d88c001bb45ab", size = 1888894 }, - { url = "https://files.pythonhosted.org/packages/7b/27/d4ae6487d73948d6f20dddcd94be4ea43e74349b56eba82e9bdee2d7494c/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:dd14041875d09cc0f9308e37a6f8b65f5585cf2598a53aa0123df8b129d481f8", size = 2025200 }, - { url = "https://files.pythonhosted.org/packages/f1/b8/b3cb95375f05d33801024079b9392a5ab45267a63400bf1866e7ce0f0de4/pydantic_core-2.33.2-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:d87c561733f66531dced0da6e864f44ebf89a8fba55f31407b00c2f7f9449593", size = 1859123 }, - { url = "https://files.pythonhosted.org/packages/05/bc/0d0b5adeda59a261cd30a1235a445bf55c7e46ae44aea28f7bd6ed46e091/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2f82865531efd18d6e07a04a17331af02cb7a651583c418df8266f17a63c6612", size = 1892852 }, - { url = "https://files.pythonhosted.org/packages/3e/11/d37bdebbda2e449cb3f519f6ce950927b56d62f0b84fd9cb9e372a26a3d5/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2bfb5112df54209d820d7bf9317c7a6c9025ea52e49f46b6a2060104bba37de7", size = 2067484 }, - { url = "https://files.pythonhosted.org/packages/8c/55/1f95f0a05ce72ecb02a8a8a1c3be0579bbc29b1d5ab68f1378b7bebc5057/pydantic_core-2.33.2-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:64632ff9d614e5eecfb495796ad51b0ed98c453e447a76bcbeeb69615079fc7e", size = 2108896 }, - { url = "https://files.pythonhosted.org/packages/53/89/2b2de6c81fa131f423246a9109d7b2a375e83968ad0800d6e57d0574629b/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:f889f7a40498cc077332c7ab6b4608d296d852182211787d4f3ee377aaae66e8", size = 2069475 }, - { url = "https://files.pythonhosted.org/packages/b8/e9/1f7efbe20d0b2b10f6718944b5d8ece9152390904f29a78e68d4e7961159/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_armv7l.whl", hash = "sha256:de4b83bb311557e439b9e186f733f6c645b9417c84e2eb8203f3f820a4b988bf", size = 2239013 }, - { url = "https://files.pythonhosted.org/packages/3c/b2/5309c905a93811524a49b4e031e9851a6b00ff0fb668794472ea7746b448/pydantic_core-2.33.2-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:82f68293f055f51b51ea42fafc74b6aad03e70e191799430b90c13d643059ebb", size = 2238715 }, - { url = "https://files.pythonhosted.org/packages/32/56/8a7ca5d2cd2cda1d245d34b1c9a942920a718082ae8e54e5f3e5a58b7add/pydantic_core-2.33.2-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:329467cecfb529c925cf2bbd4d60d2c509bc2fb52a20c1045bf09bb70971a9c1", size = 2066757 }, -] - -[[package]] -name = "pydantic-settings" -version = "2.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pydantic" }, - { name = "python-dotenv" }, - { name = "typing-inspection" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/1d/42628a2c33e93f8e9acbde0d5d735fa0850f3e6a2f8cb1eb6c40b9a732ac/pydantic_settings-2.9.1.tar.gz", hash = "sha256:c509bf79d27563add44e8446233359004ed85066cd096d8b510f715e6ef5d268", size = 163234 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b6/5f/d6d641b490fd3ec2c4c13b4244d68deea3a1b970a97be64f34fb5504ff72/pydantic_settings-2.9.1-py3-none-any.whl", hash = "sha256:59b4f431b1defb26fe620c71a7d3968a710d719f5f4cdbbdb7926edeb770f6ef", size = 44356 }, -] - -[[package]] -name = "pygments" -version = "2.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7c/2d/c3338d48ea6cc0feb8446d8e6937e1408088a72a39937982cc6111d17f84/pygments-2.19.1.tar.gz", hash = "sha256:61c16d2a8576dc0649d9f39e089b5f02bcd27fba10d8fb4dcc28173f7a45151f", size = 4968581 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8a/0b/9fcc47d19c48b59121088dd6da2488a49d5f72dacf8262e2790a1d2c7d15/pygments-2.19.1-py3-none-any.whl", hash = "sha256:9ea1544ad55cecf4b8242fab6dd35a93bbce657034b0611ee383099054ab6d8c", size = 1225293 }, -] - -[[package]] -name = "pyiceberg" -version = "0.9.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cachetools" }, - { name = "click" }, - { name = "fsspec" }, - { name = "mmh3" }, - { name = "pydantic" }, - { name = "pyparsing" }, - { name = "requests" }, - { name = "rich" }, - { name = "sortedcontainers" }, - { name = "strictyaml" }, - { name = "tenacity" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/bd/6a/6c1ac381ff0b8e03a9abc2f05722f6002d7452a2c05118697b3f3910e171/pyiceberg-0.9.1.tar.gz", hash = "sha256:3634134ce33859a441768b39df179b2c6f3de2bbbf506622884f553b013ee799", size = 617629 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f6/75/c8b4ebba7d345b5e736ebf4976121b97dd7091dcad401a17ca57152704c5/pyiceberg-0.9.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0e75c502dd56ac3d77036ce8a3b2566348da5ff4367c7c671981616ef6dcc883", size = 566274 }, - { url = "https://files.pythonhosted.org/packages/e0/a0/9494c7930e5e4dc951d95abba584d8ffdb7403368398796ede21ff25c26f/pyiceberg-0.9.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:0a8189c9b3ba81dd12493d6bb874a656a4d4909904552b97a629d1d43b3a0e90", size = 560157 }, - { url = "https://files.pythonhosted.org/packages/4a/d4/351776b1ae83de187d7cf37b100f4f124c7a71e35337182d3aef308156d1/pyiceberg-0.9.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7c03065d5c5b704444ab8fb18cdd232ec43994db95b9e53444008ebc2cf9dc2c", size = 1052290 }, - { url = "https://files.pythonhosted.org/packages/40/17/d8fea681afb52f20bf6a640f9044dcf621a47165f67cc5320bf3c6e82e4e/pyiceberg-0.9.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:93f2586a5da737de6e4643bf096a01772f068d1eedb7ffde6b36c60b6b9e6bd3", size = 1047503 }, - { url = "https://files.pythonhosted.org/packages/d0/e0/d173fc2aa8dc252d7aac71703ba2c0491e4988b3a160cf5abb531cfb9086/pyiceberg-0.9.1-cp311-cp311-win_amd64.whl", hash = "sha256:94e45c10051110ba7a43b85a1f0a680b4a31d1d6cee593c8e62e14d22d18c47d", size = 559491 }, - { url = "https://files.pythonhosted.org/packages/52/26/77983c2884b4a5f13f8a35e5c5e762ae699f6c511efd16730ab883000c1b/pyiceberg-0.9.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b8a958e3bbe919026533cee1f0fb6b7040928fce8d42c2ecea228de7c17578fa", size = 605755 }, - { url = "https://files.pythonhosted.org/packages/6d/67/e6ea7fcc43aebc85aea5a67a69d01c9015283478061c3121b6b8aa158ce4/pyiceberg-0.9.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b7e956b35c6822600c45fd8f3ea8cfea328cc406fefa534afeb6fdb325d05406", size = 597325 }, - { url = "https://files.pythonhosted.org/packages/7f/cf/178a9f63fac1bfdd13bc85169e7ab903955d082e2cd80507b1921a6f64dc/pyiceberg-0.9.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e4e585164d7d86f5c9a609a1bc2abeae2f0ea0680a11a2064d3a945866b5311", size = 1277399 }, - { url = "https://files.pythonhosted.org/packages/d1/6b/78d1739eb1d5b18529ee438aed75dac3e0b246f5e4d800931f9d1e37cda2/pyiceberg-0.9.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5fee08dac30e8524526f7d18468f9670f8606905b850b261314c597c6633f3b4", size = 1269083 }, - { url = "https://files.pythonhosted.org/packages/67/69/c0087d19c8d8e8530acee3ba485d54aedeebf2963784a16692ca4b439566/pyiceberg-0.9.1-cp312-cp312-win_amd64.whl", hash = "sha256:124793c54a0c2fb5ac4ab19c38da116c068e277c85cbaa7e4064e635a70b595e", size = 595512 }, -] - -[package.optional-dependencies] -glue = [ - { name = "boto3" }, - { name = "mypy-boto3-glue" }, -] -s3fs = [ - { name = "s3fs" }, -] -sql-sqlite = [ - { name = "sqlalchemy" }, -] - -[[package]] -name = "pymdown-extensions" -version = "10.15" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "markdown" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/08/92/a7296491dbf5585b3a987f3f3fc87af0e632121ff3e490c14b5f2d2b4eb5/pymdown_extensions-10.15.tar.gz", hash = "sha256:0e5994e32155f4b03504f939e501b981d306daf7ec2aa1cd2eb6bd300784f8f7", size = 852320 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/d1/c54e608505776ce4e7966d03358ae635cfd51dff1da6ee421c090dbc797b/pymdown_extensions-10.15-py3-none-any.whl", hash = "sha256:46e99bb272612b0de3b7e7caf6da8dd5f4ca5212c0b273feb9304e236c484e5f", size = 265845 }, -] - -[[package]] -name = "pyogrio" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "numpy" }, - { name = "packaging" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/54/c3/5e30f913ad8a975abe6f6582a2d3cf321bdf40fd696940d9283c63880c7a/pyogrio-0.11.0.tar.gz", hash = "sha256:a7e0a97bc10c0d7204f6bf52e1b928cba0554c35a907c32b23065aed1ed97b3f", size = 286915 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a0/d1/035667f23d8e7066471c500636e9ee77b159a9d92f32b5e4944d541aad69/pyogrio-0.11.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:862b79d36d39c1f755739bde00cfd82fd1034fd287084d9202b14e3a85576f5c", size = 19492247 }, - { url = "https://files.pythonhosted.org/packages/0b/da/558be674dbbf18b9cb2f31b8c9d5691e1a42100bdbd159b4771f608f01e2/pyogrio-0.11.0-cp311-cp311-macosx_12_0_x86_64.whl", hash = "sha256:21b1924c02513185e3df1301dfc9d313f1450d7c366f8629e26757f51ba31003", size = 20678449 }, - { url = "https://files.pythonhosted.org/packages/c4/78/3761a80818a148ba9544abaf9c41bef5353054054c5ed16872e65cbf9dd6/pyogrio-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:103313202414ffa7378016791d287442541af60ac57b78536f0c67f3a82904a4", size = 27068276 }, - { url = "https://files.pythonhosted.org/packages/ad/6c/9a6faa094b33054957b4eef389106aa4f94e9dbdd384c9db5f03d6a4d379/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:2e48956e68c41a17cbf3df32d979553de2839a082a7a9b0beef14948aa4ca5df", size = 26571289 }, - { url = "https://files.pythonhosted.org/packages/25/19/6a24c2052f2f99190482c83dcf8ecdc02bde9c8dbc2d604f088f9bbb5dbb/pyogrio-0.11.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:ec5666cc8bf97aef9993c998198f85fe209b8a9ad4737696d3d2ab573b3e9a5b", size = 27769581 }, - { url = "https://files.pythonhosted.org/packages/3d/ad/afc1cdea5dac6afb95d561c9ec73c27722d494d8faab7e0452cf71fba71f/pyogrio-0.11.0-cp311-cp311-win_amd64.whl", hash = "sha256:8ad3744e679de2a31b1a885dc5ea260e3482f0d5e71461a88f431cda8d536b17", size = 19178064 }, - { url = "https://files.pythonhosted.org/packages/22/39/927036db0c550d35efb4d998dfe90c56515bc14d6ed0166b6c01ca28be24/pyogrio-0.11.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:a6f114d32c5c8a157c6fbf74e3ecfe69be7efb29363102f2aad14c9813de637a", size = 19491944 }, - { url = "https://files.pythonhosted.org/packages/49/78/92db6ca3650996ca80287e59b799aa303ccecd4f1cd677f15832e466d9e2/pyogrio-0.11.0-cp312-cp312-macosx_12_0_x86_64.whl", hash = "sha256:596e3f26e792882e35f25715634c12c1d6658a3d8d178c0089a9462c56b48be5", size = 20674571 }, - { url = "https://files.pythonhosted.org/packages/c8/a4/bc37ddcee3f47c79197887d6386d31d97182a94cff6a5093cad37d873bc5/pyogrio-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:11d693ca24e80bd7ede7b27ea3598593be5b41fb7cec315a57f5bb24d15faef8", size = 27033355 }, - { url = "https://files.pythonhosted.org/packages/5c/6f/984a513d5deab8ca94dde440084cab3eda5684825d70395a3bd21c2a9e5d/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:961100786ae44e2f27b4049b5262e378a3cba07872fc22051905fed8b4ce42db", size = 26528521 }, - { url = "https://files.pythonhosted.org/packages/39/d6/6026ef8903aef2a15b7ba5ad84c74ca2ce67d29fc6d99e07262a65061619/pyogrio-0.11.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:334563d24defc5d706bd2a1fa7d7433e33140e64b0fb9cb4afc715e4f6035c2b", size = 27734210 }, - { url = "https://files.pythonhosted.org/packages/94/81/232d4808e54e026b9059f966bc2a4a5de7e42f42e4bd4e3897e1b31ea87f/pyogrio-0.11.0-cp312-cp312-win_amd64.whl", hash = "sha256:bf1f9128136abcbd1605d6fc6bf8c529c2092558246d8046ee6fbc383c550074", size = 19165401 }, -] - -[[package]] -name = "pyparsing" -version = "3.2.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/bb/22/f1129e69d94ffff626bdb5c835506b3a5b4f3d070f17ea295e12c2c6f60f/pyparsing-3.2.3.tar.gz", hash = "sha256:b9c13f1ab8b3b542f72e28f634bad4de758ab3ce4546e4301970ad6fa77c38be", size = 1088608 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/05/e7/df2285f3d08fee213f2d041540fa4fc9ca6c2d44cf36d3a035bf2a8d2bcc/pyparsing-3.2.3-py3-none-any.whl", hash = "sha256:a749938e02d6fd0b59b356ca504a24982314bb090c383e3cf201c95ef7e2bfcf", size = 111120 }, -] - -[[package]] -name = "pyproj" -version = "3.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/67/10/a8480ea27ea4bbe896c168808854d00f2a9b49f95c0319ddcbba693c8a90/pyproj-3.7.1.tar.gz", hash = "sha256:60d72facd7b6b79853f19744779abcd3f804c4e0d4fa8815469db20c9f640a47", size = 226339 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ab/0d/63670fc527e664068b70b7cab599aa38b7420dd009bdc29ea257e7f3dfb3/pyproj-3.7.1-cp311-cp311-macosx_13_0_x86_64.whl", hash = "sha256:a94e26c1a4950cea40116775588a2ca7cf56f1f434ff54ee35a84718f3841a3d", size = 6264315 }, - { url = "https://files.pythonhosted.org/packages/25/9d/cbaf82cfb290d1f1fa42feb9ba9464013bb3891e40c4199f8072112e4589/pyproj-3.7.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:263b54ba5004b6b957d55757d846fc5081bc02980caa0279c4fc95fa0fff6067", size = 4666267 }, - { url = "https://files.pythonhosted.org/packages/79/53/24f9f9b8918c0550f3ff49ad5de4cf3f0688c9f91ff191476db8979146fe/pyproj-3.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f6d6a2ccd5607cd15ef990c51e6f2dd27ec0a741e72069c387088bba3aab60fa", size = 9680510 }, - { url = "https://files.pythonhosted.org/packages/3c/ac/12fab74a908d40b63174dc704587febd0729414804bbfd873cabe504ff2d/pyproj-3.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8c5dcf24ede53d8abab7d8a77f69ff1936c6a8843ef4fcc574646e4be66e5739", size = 9493619 }, - { url = "https://files.pythonhosted.org/packages/c4/45/26311d6437135da2153a178125db5dfb6abce831ce04d10ec207eabac70a/pyproj-3.7.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:3c2e7449840a44ce860d8bea2c6c1c4bc63fa07cba801dcce581d14dcb031a02", size = 10709755 }, - { url = "https://files.pythonhosted.org/packages/99/52/4ecd0986f27d0e6c8ee3a7bc5c63da15acd30ac23034f871325b297e61fd/pyproj-3.7.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:0829865c1d3a3543f918b3919dc601eea572d6091c0dd175e1a054db9c109274", size = 10642970 }, - { url = "https://files.pythonhosted.org/packages/3f/a5/d3bfc018fc92195a000d1d28acc1f3f1df15ff9f09ece68f45a2636c0134/pyproj-3.7.1-cp311-cp311-win32.whl", hash = "sha256:6181960b4b812e82e588407fe5c9c68ada267c3b084db078f248db5d7f45d18a", size = 5868295 }, - { url = "https://files.pythonhosted.org/packages/92/39/ef6f06a5b223dbea308cfcbb7a0f72e7b506aef1850e061b2c73b0818715/pyproj-3.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:5ad0ff443a785d84e2b380869fdd82e6bfc11eba6057d25b4409a9bbfa867970", size = 6279871 }, - { url = "https://files.pythonhosted.org/packages/e6/c9/876d4345b8d17f37ac59ebd39f8fa52fc6a6a9891a420f72d050edb6b899/pyproj-3.7.1-cp312-cp312-macosx_13_0_x86_64.whl", hash = "sha256:2781029d90df7f8d431e29562a3f2d8eafdf233c4010d6fc0381858dc7373217", size = 6264087 }, - { url = "https://files.pythonhosted.org/packages/ff/e6/5f8691f8c90e7f402cc80a6276eb19d2ec1faa150d5ae2dd9c7b0a254da8/pyproj-3.7.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:d61bf8ab04c73c1da08eedaf21a103b72fa5b0a9b854762905f65ff8b375d394", size = 4669628 }, - { url = "https://files.pythonhosted.org/packages/42/ec/16475bbb79c1c68845c0a0d9c60c4fb31e61b8a2a20bc18b1a81e81c7f68/pyproj-3.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:04abc517a8555d1b05fcee768db3280143fe42ec39fdd926a2feef31631a1f2f", size = 9721415 }, - { url = "https://files.pythonhosted.org/packages/b3/a3/448f05b15e318bd6bea9a32cfaf11e886c4ae61fa3eee6e09ed5c3b74bb2/pyproj-3.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:084c0a475688f934d386c2ab3b6ce03398a473cd48adfda70d9ab8f87f2394a0", size = 9556447 }, - { url = "https://files.pythonhosted.org/packages/6a/ae/bd15fe8d8bd914ead6d60bca7f895a4e6f8ef7e3928295134ff9a7dad14c/pyproj-3.7.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:a20727a23b1e49c7dc7fe3c3df8e56a8a7acdade80ac2f5cca29d7ca5564c145", size = 10758317 }, - { url = "https://files.pythonhosted.org/packages/9d/d9/5ccefb8bca925f44256b188a91c31238cae29ab6ee7f53661ecc04616146/pyproj-3.7.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:bf84d766646f1ebd706d883755df4370aaf02b48187cedaa7e4239f16bc8213d", size = 10771259 }, - { url = "https://files.pythonhosted.org/packages/2a/7d/31dedff9c35fa703162f922eeb0baa6c44a3288469a5fd88d209e2892f9e/pyproj-3.7.1-cp312-cp312-win32.whl", hash = "sha256:5f0da2711364d7cb9f115b52289d4a9b61e8bca0da57f44a3a9d6fc9bdeb7274", size = 5859914 }, - { url = "https://files.pythonhosted.org/packages/3e/47/c6ab03d6564a7c937590cff81a2742b5990f096cce7c1a622d325be340ee/pyproj-3.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:aee664a9d806612af30a19dba49e55a7a78ebfec3e9d198f6a6176e1d140ec98", size = 6273196 }, -] - -[[package]] -name = "pytest" -version = "8.3.5" -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/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634 }, -] - -[[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-dotenv" -version = "1.1.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/88/2c/7bb1416c5620485aa793f2de31d3df393d3686aa8a8506d11e10e13c5baf/python_dotenv-1.1.0.tar.gz", hash = "sha256:41f90bc6f5f177fb41f53e87666db362025010eb28f60a01c9143bfa33a2b2d5", size = 39920 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/18/98a99ad95133c6a6e2005fe89faedf294a748bd5dc803008059409ac9b1e/python_dotenv-1.1.0-py3-none-any.whl", hash = "sha256:d7c01d9e2293916c18baf562d95698754b0dbbb5e74d457c45d4f6561fb9d55d", size = 20256 }, -] - -[[package]] -name = "python-json-logger" -version = "3.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/de/d3144a0bceede957f961e975f3752760fbe390d57fbe194baf709d8f1f7b/python_json_logger-3.3.0.tar.gz", hash = "sha256:12b7e74b17775e7d565129296105bbe3910842d9d0eb083fc83a6a617aa8df84", size = 16642 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/08/20/0f2523b9e50a8052bc6a8b732dfc8568abbdc42010aef03a2d750bdab3b2/python_json_logger-3.3.0-py3-none-any.whl", hash = "sha256:dd980fae8cffb24c13caf6e158d3d61c0d6d22342f932cb6e9deedab3d35eec7", size = 15163 }, -] - -[[package]] -name = "python-multipart" -version = "0.0.20" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f3/87/f44d7c9f274c7ee665a29b885ec97089ec5dc034c7f3fafa03da9e39a09e/python_multipart-0.0.20.tar.gz", hash = "sha256:8dd0cab45b8e23064ae09147625994d090fa46f5b0d1e13af944c331a7fa9d13", size = 37158 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/58/38b5afbc1a800eeea951b9285d3912613f2603bdf897a4ab0f4bd7f405fc/python_multipart-0.0.20-py3-none-any.whl", hash = "sha256:8a62d3a8335e06589fe01f2a3e178cdcc632f3fbe0d492ad9ee0ec35aab1f104", size = 24546 }, -] - -[[package]] -name = "pytz" -version = "2025.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f8/bf/abbd3cdfb8fbc7fb3d4d38d320f2441b1e7cbe29be4f23797b4a2b5d8aac/pytz-2025.2.tar.gz", hash = "sha256:360b9e3dbb49a209c21ad61809c7fb453643e048b38924c765813546746e81c3", size = 320884 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/81/c4/34e93fe5f5429d7570ec1fa436f1986fb1f00c3e0f43a589fe2bbcd22c3f/pytz-2025.2-py2.py3-none-any.whl", hash = "sha256:5ddf76296dd8c44c26eb8f4b6f35488f3ccbf6fbbd7adee0b7262d43f0ec2f00", size = 509225 }, -] - -[[package]] -name = "pywin32" -version = "310" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/b1/68aa2986129fb1011dabbe95f0136f44509afaf072b12b8f815905a39f33/pywin32-310-cp311-cp311-win32.whl", hash = "sha256:1e765f9564e83011a63321bb9d27ec456a0ed90d3732c4b2e312b855365ed8bd", size = 8784284 }, - { url = "https://files.pythonhosted.org/packages/b3/bd/d1592635992dd8db5bb8ace0551bc3a769de1ac8850200cfa517e72739fb/pywin32-310-cp311-cp311-win_amd64.whl", hash = "sha256:126298077a9d7c95c53823934f000599f66ec9296b09167810eb24875f32689c", size = 9520748 }, - { url = "https://files.pythonhosted.org/packages/90/b1/ac8b1ffce6603849eb45a91cf126c0fa5431f186c2e768bf56889c46f51c/pywin32-310-cp311-cp311-win_arm64.whl", hash = "sha256:19ec5fc9b1d51c4350be7bb00760ffce46e6c95eaf2f0b2f1150657b1a43c582", size = 8455941 }, - { url = "https://files.pythonhosted.org/packages/6b/ec/4fdbe47932f671d6e348474ea35ed94227fb5df56a7c30cbbb42cd396ed0/pywin32-310-cp312-cp312-win32.whl", hash = "sha256:8a75a5cc3893e83a108c05d82198880704c44bbaee4d06e442e471d3c9ea4f3d", size = 8796239 }, - { url = "https://files.pythonhosted.org/packages/e3/e5/b0627f8bb84e06991bea89ad8153a9e50ace40b2e1195d68e9dff6b03d0f/pywin32-310-cp312-cp312-win_amd64.whl", hash = "sha256:bf5c397c9a9a19a6f62f3fb821fbf36cac08f03770056711f765ec1503972060", size = 9503839 }, - { url = "https://files.pythonhosted.org/packages/1f/32/9ccf53748df72301a89713936645a664ec001abd35ecc8578beda593d37d/pywin32-310-cp312-cp312-win_arm64.whl", hash = "sha256:2349cc906eae872d0663d4d6290d13b90621eaf78964bb1578632ff20e152966", size = 8459470 }, -] - -[[package]] -name = "pywinpty" -version = "2.0.15" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/2d/7c/917f9c4681bb8d34bfbe0b79d36bbcd902651aeab48790df3d30ba0202fb/pywinpty-2.0.15.tar.gz", hash = "sha256:312cf39153a8736c617d45ce8b6ad6cd2107de121df91c455b10ce6bba7a39b2", size = 29017 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5e/ac/6884dcb7108af66ad53f73ef4dad096e768c9203a6e6ce5e6b0c4a46e238/pywinpty-2.0.15-cp311-cp311-win_amd64.whl", hash = "sha256:9a6bcec2df2707aaa9d08b86071970ee32c5026e10bcc3cc5f6f391d85baf7ca", size = 1405249 }, - { url = "https://files.pythonhosted.org/packages/88/e5/9714def18c3a411809771a3fbcec70bffa764b9675afb00048a620fca604/pywinpty-2.0.15-cp312-cp312-win_amd64.whl", hash = "sha256:83a8f20b430bbc5d8957249f875341a60219a4e971580f2ba694fbfb54a45ebc", size = 1405243 }, -] - -[[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 }, -] - -[[package]] -name = "pyyaml-env-tag" -version = "1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, -] - -[[package]] -name = "pyzmq" -version = "26.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "implementation_name == 'pypy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b1/11/b9213d25230ac18a71b39b3723494e57adebe36e066397b961657b3b41c1/pyzmq-26.4.0.tar.gz", hash = "sha256:4bd13f85f80962f91a651a7356fe0472791a5f7a92f227822b5acf44795c626d", size = 278293 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/6d/234e3b0aa82fd0290b1896e9992f56bdddf1f97266110be54d0177a9d2d9/pyzmq-26.4.0-cp311-cp311-macosx_10_15_universal2.whl", hash = "sha256:bfcf82644c9b45ddd7cd2a041f3ff8dce4a0904429b74d73a439e8cab1bd9e54", size = 1339723 }, - { url = "https://files.pythonhosted.org/packages/4f/11/6d561efe29ad83f7149a7cd48e498e539ed09019c6cd7ecc73f4cc725028/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e9bcae3979b2654d5289d3490742378b2f3ce804b0b5fd42036074e2bf35b030", size = 672645 }, - { url = "https://files.pythonhosted.org/packages/19/fd/81bfe3e23f418644660bad1a90f0d22f0b3eebe33dd65a79385530bceb3d/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ccdff8ac4246b6fb60dcf3982dfaeeff5dd04f36051fe0632748fc0aa0679c01", size = 910133 }, - { url = "https://files.pythonhosted.org/packages/97/68/321b9c775595ea3df832a9516252b653fe32818db66fdc8fa31c9b9fce37/pyzmq-26.4.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4550af385b442dc2d55ab7717837812799d3674cb12f9a3aa897611839c18e9e", size = 867428 }, - { url = "https://files.pythonhosted.org/packages/4e/6e/159cbf2055ef36aa2aa297e01b24523176e5b48ead283c23a94179fb2ba2/pyzmq-26.4.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:2f9f7ffe9db1187a253fca95191854b3fda24696f086e8789d1d449308a34b88", size = 862409 }, - { url = "https://files.pythonhosted.org/packages/05/1c/45fb8db7be5a7d0cadea1070a9cbded5199a2d578de2208197e592f219bd/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:3709c9ff7ba61589b7372923fd82b99a81932b592a5c7f1a24147c91da9a68d6", size = 1205007 }, - { url = "https://files.pythonhosted.org/packages/f8/fa/658c7f583af6498b463f2fa600f34e298e1b330886f82f1feba0dc2dd6c3/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:f8f3c30fb2d26ae5ce36b59768ba60fb72507ea9efc72f8f69fa088450cff1df", size = 1514599 }, - { url = "https://files.pythonhosted.org/packages/4d/d7/44d641522353ce0a2bbd150379cb5ec32f7120944e6bfba4846586945658/pyzmq-26.4.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:382a4a48c8080e273427fc692037e3f7d2851959ffe40864f2db32646eeb3cef", size = 1414546 }, - { url = "https://files.pythonhosted.org/packages/72/76/c8ed7263218b3d1e9bce07b9058502024188bd52cc0b0a267a9513b431fc/pyzmq-26.4.0-cp311-cp311-win32.whl", hash = "sha256:d56aad0517d4c09e3b4f15adebba8f6372c5102c27742a5bdbfc74a7dceb8fca", size = 579247 }, - { url = "https://files.pythonhosted.org/packages/c3/d0/2d9abfa2571a0b1a67c0ada79a8aa1ba1cce57992d80f771abcdf99bb32c/pyzmq-26.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:963977ac8baed7058c1e126014f3fe58b3773f45c78cce7af5c26c09b6823896", size = 644727 }, - { url = "https://files.pythonhosted.org/packages/0d/d1/c8ad82393be6ccedfc3c9f3adb07f8f3976e3c4802640fe3f71441941e70/pyzmq-26.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:c0c8e8cadc81e44cc5088fcd53b9b3b4ce9344815f6c4a03aec653509296fae3", size = 559942 }, - { url = "https://files.pythonhosted.org/packages/10/44/a778555ebfdf6c7fc00816aad12d185d10a74d975800341b1bc36bad1187/pyzmq-26.4.0-cp312-cp312-macosx_10_15_universal2.whl", hash = "sha256:5227cb8da4b6f68acfd48d20c588197fd67745c278827d5238c707daf579227b", size = 1341586 }, - { url = "https://files.pythonhosted.org/packages/9c/4f/f3a58dc69ac757e5103be3bd41fb78721a5e17da7cc617ddb56d973a365c/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1c07a7fa7f7ba86554a2b1bef198c9fed570c08ee062fd2fd6a4dcacd45f905", size = 665880 }, - { url = "https://files.pythonhosted.org/packages/fe/45/50230bcfb3ae5cb98bee683b6edeba1919f2565d7cc1851d3c38e2260795/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ae775fa83f52f52de73183f7ef5395186f7105d5ed65b1ae65ba27cb1260de2b", size = 902216 }, - { url = "https://files.pythonhosted.org/packages/41/59/56bbdc5689be5e13727491ad2ba5efd7cd564365750514f9bc8f212eef82/pyzmq-26.4.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:66c760d0226ebd52f1e6b644a9e839b5db1e107a23f2fcd46ec0569a4fdd4e63", size = 859814 }, - { url = "https://files.pythonhosted.org/packages/81/b1/57db58cfc8af592ce94f40649bd1804369c05b2190e4cbc0a2dad572baeb/pyzmq-26.4.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:ef8c6ecc1d520debc147173eaa3765d53f06cd8dbe7bd377064cdbc53ab456f5", size = 855889 }, - { url = "https://files.pythonhosted.org/packages/e8/92/47542e629cbac8f221c230a6d0f38dd3d9cff9f6f589ed45fdf572ffd726/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:3150ef4084e163dec29ae667b10d96aad309b668fac6810c9e8c27cf543d6e0b", size = 1197153 }, - { url = "https://files.pythonhosted.org/packages/07/e5/b10a979d1d565d54410afc87499b16c96b4a181af46e7645ab4831b1088c/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:4448c9e55bf8329fa1dcedd32f661bf611214fa70c8e02fee4347bc589d39a84", size = 1507352 }, - { url = "https://files.pythonhosted.org/packages/ab/58/5a23db84507ab9c01c04b1232a7a763be66e992aa2e66498521bbbc72a71/pyzmq-26.4.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:e07dde3647afb084d985310d067a3efa6efad0621ee10826f2cb2f9a31b89d2f", size = 1406834 }, - { url = "https://files.pythonhosted.org/packages/22/74/aaa837b331580c13b79ac39396601fb361454ee184ca85e8861914769b99/pyzmq-26.4.0-cp312-cp312-win32.whl", hash = "sha256:ba034a32ecf9af72adfa5ee383ad0fd4f4e38cdb62b13624278ef768fe5b5b44", size = 577992 }, - { url = "https://files.pythonhosted.org/packages/30/0f/55f8c02c182856743b82dde46b2dc3e314edda7f1098c12a8227eeda0833/pyzmq-26.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:056a97aab4064f526ecb32f4343917a4022a5d9efb6b9df990ff72e1879e40be", size = 640466 }, - { url = "https://files.pythonhosted.org/packages/e4/29/073779afc3ef6f830b8de95026ef20b2d1ec22d0324d767748d806e57379/pyzmq-26.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:2f23c750e485ce1eb639dbd576d27d168595908aa2d60b149e2d9e34c9df40e0", size = 556342 }, - { url = "https://files.pythonhosted.org/packages/04/52/a70fcd5592715702248306d8e1729c10742c2eac44529984413b05c68658/pyzmq-26.4.0-pp311-pypy311_pp73-macosx_10_15_x86_64.whl", hash = "sha256:4478b14cb54a805088299c25a79f27eaf530564a7a4f72bf432a040042b554eb", size = 834405 }, - { url = "https://files.pythonhosted.org/packages/25/f9/1a03f1accff16b3af1a6fa22cbf7ced074776abbf688b2e9cb4629700c62/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8a28ac29c60e4ba84b5f58605ace8ad495414a724fe7aceb7cf06cd0598d04e1", size = 569578 }, - { url = "https://files.pythonhosted.org/packages/76/0c/3a633acd762aa6655fcb71fa841907eae0ab1e8582ff494b137266de341d/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:43b03c1ceea27c6520124f4fb2ba9c647409b9abdf9a62388117148a90419494", size = 798248 }, - { url = "https://files.pythonhosted.org/packages/cd/cc/6c99c84aa60ac1cc56747bed6be8ce6305b9b861d7475772e7a25ce019d3/pyzmq-26.4.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:7731abd23a782851426d4e37deb2057bf9410848a4459b5ede4fe89342e687a9", size = 756757 }, - { url = "https://files.pythonhosted.org/packages/13/9c/d8073bd898eb896e94c679abe82e47506e2b750eb261cf6010ced869797c/pyzmq-26.4.0-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:a222ad02fbe80166b0526c038776e8042cd4e5f0dec1489a006a1df47e9040e0", size = 555371 }, -] - -[[package]] -name = "rasterio" -version = "1.4.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "affine" }, - { name = "attrs" }, - { name = "certifi" }, - { name = "click" }, - { name = "click-plugins" }, - { name = "cligj" }, - { name = "numpy" }, - { name = "pyparsing" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/de/19/ab4326e419b543da623ce4191f68e3f36a4d9adc64f3df5c78f044d8d9ca/rasterio-1.4.3.tar.gz", hash = "sha256:201f05dbc7c4739dacb2c78a1cf4e09c0b7265b0a4d16ccbd1753ce4f2af350a", size = 442990 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/fd/ba3850e4cbccc47d03037f2c96889f7f221a674a7be6665c7da7cd483a07/rasterio-1.4.3-cp311-cp311-macosx_10_15_x86_64.whl", hash = "sha256:9c30114d95ebba4ff49f078b3c193d29ff56d832588649400a3fa78f1dda1c96", size = 21540767 }, - { url = "https://files.pythonhosted.org/packages/b3/59/ca86697161206233eea6353237b0c0f02f6f70434144db162f964a7e1b19/rasterio-1.4.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:812c854e7177064aeb58def2d59752887ad6b3d39ff3f858ed9df3f2ddc95613", size = 18762975 }, - { url = "https://files.pythonhosted.org/packages/aa/fa/723fa6a48a419b044146cd92fa6a66ead8532d96c352fbc2f2a1546cb5b6/rasterio-1.4.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:54eef32d20a0dfbba59a8bb9828e562c3e9e97e2355b8dfe4a5274117976059f", size = 22204391 }, - { url = "https://files.pythonhosted.org/packages/7e/1f/56462740694de764fde264051224fcbf800dad43cac92a66753153128866/rasterio-1.4.3-cp311-cp311-win_amd64.whl", hash = "sha256:4009f7ce4e0883d8e5b400970daa3f1ca309caac8916d955722ee4486654d452", size = 25452478 }, - { url = "https://files.pythonhosted.org/packages/5a/f2/b7417292ceace70d815760f7e41fe5b0244ebff78ede11b1ffa9ca01c370/rasterio-1.4.3-cp312-cp312-macosx_10_15_x86_64.whl", hash = "sha256:e703e4b2c74c678786d5d110a3f30e26f3acfd65f09ccf35f69683a532f7a772", size = 21514543 }, - { url = "https://files.pythonhosted.org/packages/b2/ea/e21010457847b26bb4aea3983e9b44afbcefef07defc5e9a3285a8fe2f0c/rasterio-1.4.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:38a126f8dbf405cd3450b5bd10c6cc493a2e1be4cf83442d26f5e4f412372d36", size = 18735924 }, - { url = "https://files.pythonhosted.org/packages/67/72/331727423b28fffdfd8bf18bdc55c18d374c0fefd2dde390cd833f8f4477/rasterio-1.4.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8e90c2c300294265c16becc9822337ded0f01fb8664500b4d77890d633d8cd0e", size = 22251721 }, - { url = "https://files.pythonhosted.org/packages/be/cc/453816b489af94b9a243eda889865973d518989ba6923b2381f6d6722b43/rasterio-1.4.3-cp312-cp312-win_amd64.whl", hash = "sha256:a962ad4c29feaf38b1d7a94389313127de3646a5b9b734fbf9a04e16051a27ff", size = 25430154 }, -] - -[[package]] -name = "reacttrs" -version = "0.2.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/90/33daccaa6587d18e60ccc48a70d3c36e9e2b48db2606f7829b6c687b31fa/reacttrs-0.2.1.tar.gz", hash = "sha256:6a2cbf7a209deb0be056cc30e7c7c5f1ff5a744cba18c427d5418cc32bb1e53c", size = 3472 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/45/0b/888bee634da04d8fd8a7d177d48bca3888388145b8445810550e77de8b34/reacttrs-0.2.1-py3-none-any.whl", hash = "sha256:1425357d8d7b0d8bc89fc1dce2544410296b605429571e11b682492a3060caed", size = 4398 }, -] - -[[package]] -name = "referencing" -version = "0.36.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "attrs" }, - { name = "rpds-py" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/2f/db/98b5c277be99dd18bfd91dd04e1b759cad18d1a338188c936e92f921c7e2/referencing-0.36.2.tar.gz", hash = "sha256:df2e89862cd09deabbdba16944cc3f10feb6b3e6f18e902f7cc25609a34775aa", size = 74744 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/b1/3baf80dc6d2b7bc27a95a67752d0208e410351e3feb4eb78de5f77454d8d/referencing-0.36.2-py3-none-any.whl", hash = "sha256:e8699adbbf8b5c7de96d8ffa0eb5c158b3beafce084968e2ea8bb08c6794dcd0", size = 26775 }, -] - -[[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 = "rfc3339-validator" -version = "0.1.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/28/ea/a9387748e2d111c3c2b275ba970b735e04e15cdb1eb30693b6b5708c4dbd/rfc3339_validator-0.1.4.tar.gz", hash = "sha256:138a2abdf93304ad60530167e51d2dfb9549521a836871b88d7f4695d0022f6b", size = 5513 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/44/4e421b96b67b2daff264473f7465db72fbdf36a07e05494f50300cc7b0c6/rfc3339_validator-0.1.4-py2.py3-none-any.whl", hash = "sha256:24f6ec1eda14ef823da9e36ec7113124b39c04d50a4d3d3a3c2859577e7791fa", size = 3490 }, -] - -[[package]] -name = "rfc3986-validator" -version = "0.1.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/88/f270de456dd7d11dcc808abfa291ecdd3f45ff44e3b549ffa01b126464d0/rfc3986_validator-0.1.1.tar.gz", hash = "sha256:3d44bde7921b3b9ec3ae4e3adca370438eccebc676456449b145d533b240d055", size = 6760 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9e/51/17023c0f8f1869d8806b979a2bffa3f861f26a3f1a66b094288323fba52f/rfc3986_validator-0.1.1-py2.py3-none-any.whl", hash = "sha256:2f235c432ef459970b4306369336b9d5dbdda31b510ca1e327636e01f528bfa9", size = 4242 }, -] - -[[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 = "rich-toolkit" -version = "0.14.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f6/31/b6d055f291a660a7bcaec4bcc9457b9fef8ecb6293e527b1eef1840aefd4/rich_toolkit-0.14.6.tar.gz", hash = "sha256:9dbd40e83414b84e828bf899115fff8877ce5951b73175f44db142902f07645d", size = 110805 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/3c/7a824c0514e87c61000583ac22c8321da6dc8e58a93d5f56e583482a2ee0/rich_toolkit-0.14.6-py3-none-any.whl", hash = "sha256:764f3a5f9e4b539ce805596863299e8982599514906dc5e3ccc2d390ef74c301", size = 24815 }, -] - -[[package]] -name = "rioxarray" -version = "0.19.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "packaging" }, - { name = "pyproj" }, - { name = "rasterio" }, - { name = "xarray" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3d/8e/fe4e87460f8c62d8d5c683e09f19fbde5d9cfcfd0342d02df1f452999b5d/rioxarray-0.19.0.tar.gz", hash = "sha256:7819a0036fd874c8c8e280447cbbe43d8dc72fc4a14ac7852a665b1bdb7d4b04", size = 54600 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2a/2f/63d2cacc0e525f8e3398bcf32bd3620385f22cd1600834ec49d7f3597a7b/rioxarray-0.19.0-py3-none-any.whl", hash = "sha256:494ee4fff1781072d55ee5276f5d07b63d93b05093cb33b926a12186ba5bb8ef", size = 62151 }, -] - -[[package]] -name = "rpds-py" -version = "0.25.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8c/a6/60184b7fc00dd3ca80ac635dd5b8577d444c57e8e8742cecabfacb829921/rpds_py-0.25.1.tar.gz", hash = "sha256:8960b6dac09b62dac26e75d7e2c4a22efb835d827a7278c34f72b2b84fa160e3", size = 27304 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/95/e1/df13fe3ddbbea43567e07437f097863b20c99318ae1f58a0fe389f763738/rpds_py-0.25.1-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:5f048bbf18b1f9120685c6d6bb70cc1a52c8cc11bdd04e643d28d3be0baf666d", size = 373341 }, - { url = "https://files.pythonhosted.org/packages/7a/58/deef4d30fcbcbfef3b6d82d17c64490d5c94585a2310544ce8e2d3024f83/rpds_py-0.25.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4fbb0dbba559959fcb5d0735a0f87cdbca9e95dac87982e9b95c0f8f7ad10255", size = 359111 }, - { url = "https://files.pythonhosted.org/packages/bb/7e/39f1f4431b03e96ebaf159e29a0f82a77259d8f38b2dd474721eb3a8ac9b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d4ca54b9cf9d80b4016a67a0193ebe0bcf29f6b0a96f09db942087e294d3d4c2", size = 386112 }, - { url = "https://files.pythonhosted.org/packages/db/e7/847068a48d63aec2ae695a1646089620b3b03f8ccf9f02c122ebaf778f3c/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:1ee3e26eb83d39b886d2cb6e06ea701bba82ef30a0de044d34626ede51ec98b0", size = 400362 }, - { url = "https://files.pythonhosted.org/packages/3b/3d/9441d5db4343d0cee759a7ab4d67420a476cebb032081763de934719727b/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:89706d0683c73a26f76a5315d893c051324d771196ae8b13e6ffa1ffaf5e574f", size = 522214 }, - { url = "https://files.pythonhosted.org/packages/a2/ec/2cc5b30d95f9f1a432c79c7a2f65d85e52812a8f6cbf8768724571710786/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:c2013ee878c76269c7b557a9a9c042335d732e89d482606990b70a839635feb7", size = 411491 }, - { url = "https://files.pythonhosted.org/packages/dc/6c/44695c1f035077a017dd472b6a3253553780837af2fac9b6ac25f6a5cb4d/rpds_py-0.25.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:45e484db65e5380804afbec784522de84fa95e6bb92ef1bd3325d33d13efaebd", size = 386978 }, - { url = "https://files.pythonhosted.org/packages/b1/74/b4357090bb1096db5392157b4e7ed8bb2417dc7799200fcbaee633a032c9/rpds_py-0.25.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:48d64155d02127c249695abb87d39f0faf410733428d499867606be138161d65", size = 420662 }, - { url = "https://files.pythonhosted.org/packages/26/dd/8cadbebf47b96e59dfe8b35868e5c38a42272699324e95ed522da09d3a40/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:048893e902132fd6548a2e661fb38bf4896a89eea95ac5816cf443524a85556f", size = 563385 }, - { url = "https://files.pythonhosted.org/packages/c3/ea/92960bb7f0e7a57a5ab233662f12152085c7dc0d5468534c65991a3d48c9/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:0317177b1e8691ab5879f4f33f4b6dc55ad3b344399e23df2e499de7b10a548d", size = 592047 }, - { url = "https://files.pythonhosted.org/packages/61/ad/71aabc93df0d05dabcb4b0c749277881f8e74548582d96aa1bf24379493a/rpds_py-0.25.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:bffcf57826d77a4151962bf1701374e0fc87f536e56ec46f1abdd6a903354042", size = 557863 }, - { url = "https://files.pythonhosted.org/packages/93/0f/89df0067c41f122b90b76f3660028a466eb287cbe38efec3ea70e637ca78/rpds_py-0.25.1-cp311-cp311-win32.whl", hash = "sha256:cda776f1967cb304816173b30994faaf2fd5bcb37e73118a47964a02c348e1bc", size = 219627 }, - { url = "https://files.pythonhosted.org/packages/7c/8d/93b1a4c1baa903d0229374d9e7aa3466d751f1d65e268c52e6039c6e338e/rpds_py-0.25.1-cp311-cp311-win_amd64.whl", hash = "sha256:dc3c1ff0abc91444cd20ec643d0f805df9a3661fcacf9c95000329f3ddf268a4", size = 231603 }, - { url = "https://files.pythonhosted.org/packages/cb/11/392605e5247bead2f23e6888e77229fbd714ac241ebbebb39a1e822c8815/rpds_py-0.25.1-cp311-cp311-win_arm64.whl", hash = "sha256:5a3ddb74b0985c4387719fc536faced33cadf2172769540c62e2a94b7b9be1c4", size = 223967 }, - { url = "https://files.pythonhosted.org/packages/7f/81/28ab0408391b1dc57393653b6a0cf2014cc282cc2909e4615e63e58262be/rpds_py-0.25.1-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5ffe453cde61f73fea9430223c81d29e2fbf412a6073951102146c84e19e34c", size = 364647 }, - { url = "https://files.pythonhosted.org/packages/2c/9a/7797f04cad0d5e56310e1238434f71fc6939d0bc517192a18bb99a72a95f/rpds_py-0.25.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:115874ae5e2fdcfc16b2aedc95b5eef4aebe91b28e7e21951eda8a5dc0d3461b", size = 350454 }, - { url = "https://files.pythonhosted.org/packages/69/3c/93d2ef941b04898011e5d6eaa56a1acf46a3b4c9f4b3ad1bbcbafa0bee1f/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a714bf6e5e81b0e570d01f56e0c89c6375101b8463999ead3a93a5d2a4af91fa", size = 389665 }, - { url = "https://files.pythonhosted.org/packages/c1/57/ad0e31e928751dde8903a11102559628d24173428a0f85e25e187defb2c1/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:35634369325906bcd01577da4c19e3b9541a15e99f31e91a02d010816b49bfda", size = 403873 }, - { url = "https://files.pythonhosted.org/packages/16/ad/c0c652fa9bba778b4f54980a02962748479dc09632e1fd34e5282cf2556c/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d4cb2b3ddc16710548801c6fcc0cfcdeeff9dafbc983f77265877793f2660309", size = 525866 }, - { url = "https://files.pythonhosted.org/packages/2a/39/3e1839bc527e6fcf48d5fec4770070f872cdee6c6fbc9b259932f4e88a38/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9ceca1cf097ed77e1a51f1dbc8d174d10cb5931c188a4505ff9f3e119dfe519b", size = 416886 }, - { url = "https://files.pythonhosted.org/packages/7a/95/dd6b91cd4560da41df9d7030a038298a67d24f8ca38e150562644c829c48/rpds_py-0.25.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2c2cd1a4b0c2b8c5e31ffff50d09f39906fe351389ba143c195566056c13a7ea", size = 390666 }, - { url = "https://files.pythonhosted.org/packages/64/48/1be88a820e7494ce0a15c2d390ccb7c52212370badabf128e6a7bb4cb802/rpds_py-0.25.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:1de336a4b164c9188cb23f3703adb74a7623ab32d20090d0e9bf499a2203ad65", size = 425109 }, - { url = "https://files.pythonhosted.org/packages/cf/07/3e2a17927ef6d7720b9949ec1b37d1e963b829ad0387f7af18d923d5cfa5/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:9fca84a15333e925dd59ce01da0ffe2ffe0d6e5d29a9eeba2148916d1824948c", size = 567244 }, - { url = "https://files.pythonhosted.org/packages/d2/e5/76cf010998deccc4f95305d827847e2eae9c568099c06b405cf96384762b/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:88ec04afe0c59fa64e2f6ea0dd9657e04fc83e38de90f6de201954b4d4eb59bd", size = 596023 }, - { url = "https://files.pythonhosted.org/packages/52/9a/df55efd84403736ba37a5a6377b70aad0fd1cb469a9109ee8a1e21299a1c/rpds_py-0.25.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a8bd2f19e312ce3e1d2c635618e8a8d8132892bb746a7cf74780a489f0f6cdcb", size = 561634 }, - { url = "https://files.pythonhosted.org/packages/ab/aa/dc3620dd8db84454aaf9374bd318f1aa02578bba5e567f5bf6b79492aca4/rpds_py-0.25.1-cp312-cp312-win32.whl", hash = "sha256:e5e2f7280d8d0d3ef06f3ec1b4fd598d386cc6f0721e54f09109a8132182fbfe", size = 222713 }, - { url = "https://files.pythonhosted.org/packages/a3/7f/7cef485269a50ed5b4e9bae145f512d2a111ca638ae70cc101f661b4defd/rpds_py-0.25.1-cp312-cp312-win_amd64.whl", hash = "sha256:db58483f71c5db67d643857404da360dce3573031586034b7d59f245144cc192", size = 235280 }, - { url = "https://files.pythonhosted.org/packages/99/f2/c2d64f6564f32af913bf5f3f7ae41c7c263c5ae4c4e8f1a17af8af66cd46/rpds_py-0.25.1-cp312-cp312-win_arm64.whl", hash = "sha256:6d50841c425d16faf3206ddbba44c21aa3310a0cebc3c1cdfc3e3f4f9f6f5728", size = 225399 }, - { url = "https://files.pythonhosted.org/packages/49/74/48f3df0715a585cbf5d34919c9c757a4c92c1a9eba059f2d334e72471f70/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:ee86d81551ec68a5c25373c5643d343150cc54672b5e9a0cafc93c1870a53954", size = 374208 }, - { url = "https://files.pythonhosted.org/packages/55/b0/9b01bb11ce01ec03d05e627249cc2c06039d6aa24ea5a22a39c312167c10/rpds_py-0.25.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:89c24300cd4a8e4a51e55c31a8ff3918e6651b241ee8876a42cc2b2a078533ba", size = 359262 }, - { url = "https://files.pythonhosted.org/packages/a9/eb/5395621618f723ebd5116c53282052943a726dba111b49cd2071f785b665/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:771c16060ff4e79584dc48902a91ba79fd93eade3aa3a12d6d2a4aadaf7d542b", size = 387366 }, - { url = "https://files.pythonhosted.org/packages/68/73/3d51442bdb246db619d75039a50ea1cf8b5b4ee250c3e5cd5c3af5981cd4/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:785ffacd0ee61c3e60bdfde93baa6d7c10d86f15655bd706c89da08068dc5038", size = 400759 }, - { url = "https://files.pythonhosted.org/packages/b7/4c/3a32d5955d7e6cb117314597bc0f2224efc798428318b13073efe306512a/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:2a40046a529cc15cef88ac5ab589f83f739e2d332cb4d7399072242400ed68c9", size = 523128 }, - { url = "https://files.pythonhosted.org/packages/be/95/1ffccd3b0bb901ae60b1dd4b1be2ab98bb4eb834cd9b15199888f5702f7b/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:85fc223d9c76cabe5d0bff82214459189720dc135db45f9f66aa7cffbf9ff6c1", size = 411597 }, - { url = "https://files.pythonhosted.org/packages/ef/6d/6e6cd310180689db8b0d2de7f7d1eabf3fb013f239e156ae0d5a1a85c27f/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b0be9965f93c222fb9b4cc254235b3b2b215796c03ef5ee64f995b1b69af0762", size = 388053 }, - { url = "https://files.pythonhosted.org/packages/4a/87/ec4186b1fe6365ced6fa470960e68fc7804bafbe7c0cf5a36237aa240efa/rpds_py-0.25.1-pp311-pypy311_pp73-manylinux_2_5_i686.manylinux1_i686.whl", hash = "sha256:8378fa4a940f3fb509c081e06cb7f7f2adae8cf46ef258b0e0ed7519facd573e", size = 421821 }, - { url = "https://files.pythonhosted.org/packages/7a/60/84f821f6bf4e0e710acc5039d91f8f594fae0d93fc368704920d8971680d/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl", hash = "sha256:33358883a4490287e67a2c391dfaea4d9359860281db3292b6886bf0be3d8692", size = 564534 }, - { url = "https://files.pythonhosted.org/packages/41/3a/bc654eb15d3b38f9330fe0f545016ba154d89cdabc6177b0295910cd0ebe/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_i686.whl", hash = "sha256:1d1fadd539298e70cac2f2cb36f5b8a65f742b9b9f1014dd4ea1f7785e2470bf", size = 592674 }, - { url = "https://files.pythonhosted.org/packages/2e/ba/31239736f29e4dfc7a58a45955c5db852864c306131fd6320aea214d5437/rpds_py-0.25.1-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl", hash = "sha256:9a46c2fb2545e21181445515960006e85d22025bd2fe6db23e76daec6eb689fe", size = 558781 }, -] - -[[package]] -name = "ruff" -version = "0.11.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/77/2b/7ca27e854d92df5e681e6527dc0f9254c9dc06c8408317893cf96c851cdd/ruff-0.11.0.tar.gz", hash = "sha256:e55c620690a4a7ee6f1cccb256ec2157dc597d109400ae75bbf944fc9d6462e2", size = 3799407 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/40/3d0340a9e5edc77d37852c0cd98c5985a5a8081fc3befaeb2ae90aaafd2b/ruff-0.11.0-py3-none-linux_armv6l.whl", hash = "sha256:dc67e32bc3b29557513eb7eeabb23efdb25753684b913bebb8a0c62495095acb", size = 10098158 }, - { url = "https://files.pythonhosted.org/packages/ec/a9/d8f5abb3b87b973b007649ac7bf63665a05b2ae2b2af39217b09f52abbbf/ruff-0.11.0-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:38c23fd9bdec4eb437b4c1e3595905a0a8edfccd63a790f818b28c78fe345639", size = 10879071 }, - { url = "https://files.pythonhosted.org/packages/ab/62/aaa198614c6211677913ec480415c5e6509586d7b796356cec73a2f8a3e6/ruff-0.11.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c8661b0be91a38bd56db593e9331beaf9064a79028adee2d5f392674bbc5e88", size = 10247944 }, - { url = "https://files.pythonhosted.org/packages/9f/52/59e0a9f2cf1ce5e6cbe336b6dd0144725c8ea3b97cac60688f4e7880bf13/ruff-0.11.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b6c0e8d3d2db7e9f6efd884f44b8dc542d5b6b590fc4bb334fdbc624d93a29a2", size = 10421725 }, - { url = "https://files.pythonhosted.org/packages/a6/c3/dcd71acc6dff72ce66d13f4be5bca1dbed4db678dff2f0f6f307b04e5c02/ruff-0.11.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3c3156d3f4b42e57247275a0a7e15a851c165a4fc89c5e8fa30ea6da4f7407b8", size = 9954435 }, - { url = "https://files.pythonhosted.org/packages/a6/9a/342d336c7c52dbd136dee97d4c7797e66c3f92df804f8f3b30da59b92e9c/ruff-0.11.0-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:490b1e147c1260545f6d041c4092483e3f6d8eba81dc2875eaebcf9140b53905", size = 11492664 }, - { url = "https://files.pythonhosted.org/packages/84/35/6e7defd2d7ca95cc385ac1bd9f7f2e4a61b9cc35d60a263aebc8e590c462/ruff-0.11.0-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:1bc09a7419e09662983b1312f6fa5dab829d6ab5d11f18c3760be7ca521c9329", size = 12207856 }, - { url = "https://files.pythonhosted.org/packages/22/78/da669c8731bacf40001c880ada6d31bcfb81f89cc996230c3b80d319993e/ruff-0.11.0-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bcfa478daf61ac8002214eb2ca5f3e9365048506a9d52b11bea3ecea822bb844", size = 11645156 }, - { url = "https://files.pythonhosted.org/packages/ee/47/e27d17d83530a208f4a9ab2e94f758574a04c51e492aa58f91a3ed7cbbcb/ruff-0.11.0-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6fbb2aed66fe742a6a3a0075ed467a459b7cedc5ae01008340075909d819df1e", size = 13884167 }, - { url = "https://files.pythonhosted.org/packages/9f/5e/42ffbb0a5d4b07bbc642b7d58357b4e19a0f4774275ca6ca7d1f7b5452cd/ruff-0.11.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:92c0c1ff014351c0b0cdfdb1e35fa83b780f1e065667167bb9502d47ca41e6db", size = 11348311 }, - { url = "https://files.pythonhosted.org/packages/c8/51/dc3ce0c5ce1a586727a3444a32f98b83ba99599bb1ebca29d9302886e87f/ruff-0.11.0-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:e4fd5ff5de5f83e0458a138e8a869c7c5e907541aec32b707f57cf9a5e124445", size = 10305039 }, - { url = "https://files.pythonhosted.org/packages/60/e0/475f0c2f26280f46f2d6d1df1ba96b3399e0234cf368cc4c88e6ad10dcd9/ruff-0.11.0-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:96bc89a5c5fd21a04939773f9e0e276308be0935de06845110f43fd5c2e4ead7", size = 9937939 }, - { url = "https://files.pythonhosted.org/packages/e2/d3/3e61b7fd3e9cdd1e5b8c7ac188bec12975c824e51c5cd3d64caf81b0331e/ruff-0.11.0-py3-none-musllinux_1_2_i686.whl", hash = "sha256:a9352b9d767889ec5df1483f94870564e8102d4d7e99da52ebf564b882cdc2c7", size = 10923259 }, - { url = "https://files.pythonhosted.org/packages/30/32/cd74149ebb40b62ddd14bd2d1842149aeb7f74191fb0f49bd45c76909ff2/ruff-0.11.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:049a191969a10897fe052ef9cc7491b3ef6de79acd7790af7d7897b7a9bfbcb6", size = 11406212 }, - { url = "https://files.pythonhosted.org/packages/00/ef/033022a6b104be32e899b00de704d7c6d1723a54d4c9e09d147368f14b62/ruff-0.11.0-py3-none-win32.whl", hash = "sha256:3191e9116b6b5bbe187447656f0c8526f0d36b6fd89ad78ccaad6bdc2fad7df2", size = 10310905 }, - { url = "https://files.pythonhosted.org/packages/ed/8a/163f2e78c37757d035bd56cd60c8d96312904ca4a6deeab8442d7b3cbf89/ruff-0.11.0-py3-none-win_amd64.whl", hash = "sha256:c58bfa00e740ca0a6c43d41fb004cd22d165302f360aaa56f7126d544db31a21", size = 11411730 }, - { url = "https://files.pythonhosted.org/packages/4e/f7/096f6efabe69b49d7ca61052fc70289c05d8d35735c137ef5ba5ef423662/ruff-0.11.0-py3-none-win_arm64.whl", hash = "sha256:868364fc23f5aa122b00c6f794211e85f7e78f5dffdf7c590ab90b8c4e69b657", size = 10538956 }, -] - -[[package]] -name = "s3fs" -version = "2025.5.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "aiobotocore" }, - { name = "aiohttp" }, - { name = "fsspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7f/6f/d0ee452580d7d0643a1a776b95dfef2144023f3fc077038e07d651995d34/s3fs-2025.5.1.tar.gz", hash = "sha256:84beffa231b8ed94f8d667e93387b38351e1c4447aedea5c2c19dd88b7fcb658", size = 77276 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/c0/f5cc95ec88694429fcb841a37456be0a27463bc39d43edbd36e3164120ed/s3fs-2025.5.1-py3-none-any.whl", hash = "sha256:7475e7c40a3a112f17144907ffae50782ab6c03487fe0b45a9c3942bb7a5c606", size = 30476 }, -] - -[[package]] -name = "s3transfer" -version = "0.11.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "botocore" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/39/24/1390172471d569e281fcfd29b92f2f73774e95972c965d14b6c802ff2352/s3transfer-0.11.3.tar.gz", hash = "sha256:edae4977e3a122445660c7c114bba949f9d191bae3b34a096f18a1c8c354527a", size = 148042 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e4/81/48c41b554a54d75d4407740abb60e3a102ae416284df04d1dbdcbe3dbf24/s3transfer-0.11.3-py3-none-any.whl", hash = "sha256:ca855bdeb885174b5ffa95b9913622459d4ad8e331fc98eb01e6d5eb6a30655d", size = 84246 }, -] - -[[package]] -name = "scikit-learn" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "joblib" }, - { name = "numpy" }, - { name = "scipy" }, - { name = "threadpoolctl" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/df/3b/29fa87e76b1d7b3b77cc1fcbe82e6e6b8cd704410705b008822de530277c/scikit_learn-1.7.0.tar.gz", hash = "sha256:c01e869b15aec88e2cdb73d27f15bdbe03bce8e2fb43afbe77c45d399e73a5a3", size = 7178217 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/42/c6b41711c2bee01c4800ad8da2862c0b6d2956a399d23ce4d77f2ca7f0c7/scikit_learn-1.7.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:8ef09b1615e1ad04dc0d0054ad50634514818a8eb3ee3dee99af3bffc0ef5007", size = 11719657 }, - { url = "https://files.pythonhosted.org/packages/a3/24/44acca76449e391b6b2522e67a63c0454b7c1f060531bdc6d0118fb40851/scikit_learn-1.7.0-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:7d7240c7b19edf6ed93403f43b0fcb0fe95b53bc0b17821f8fb88edab97085ef", size = 10712636 }, - { url = "https://files.pythonhosted.org/packages/9f/1b/fcad1ccb29bdc9b96bcaa2ed8345d56afb77b16c0c47bafe392cc5d1d213/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:80bd3bd4e95381efc47073a720d4cbab485fc483966f1709f1fd559afac57ab8", size = 12242817 }, - { url = "https://files.pythonhosted.org/packages/c6/38/48b75c3d8d268a3f19837cb8a89155ead6e97c6892bb64837183ea41db2b/scikit_learn-1.7.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9dbe48d69aa38ecfc5a6cda6c5df5abef0c0ebdb2468e92437e2053f84abb8bc", size = 12873961 }, - { url = "https://files.pythonhosted.org/packages/f4/5a/ba91b8c57aa37dbd80d5ff958576a9a8c14317b04b671ae7f0d09b00993a/scikit_learn-1.7.0-cp311-cp311-win_amd64.whl", hash = "sha256:8fa979313b2ffdfa049ed07252dc94038def3ecd49ea2a814db5401c07f1ecfa", size = 10717277 }, - { url = "https://files.pythonhosted.org/packages/70/3a/bffab14e974a665a3ee2d79766e7389572ffcaad941a246931c824afcdb2/scikit_learn-1.7.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c2c7243d34aaede0efca7a5a96d67fddaebb4ad7e14a70991b9abee9dc5c0379", size = 11646758 }, - { url = "https://files.pythonhosted.org/packages/58/d8/f3249232fa79a70cb40595282813e61453c1e76da3e1a44b77a63dd8d0cb/scikit_learn-1.7.0-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:9f39f6a811bf3f15177b66c82cbe0d7b1ebad9f190737dcdef77cfca1ea3c19c", size = 10673971 }, - { url = "https://files.pythonhosted.org/packages/67/93/eb14c50533bea2f77758abe7d60a10057e5f2e2cdcf0a75a14c6bc19c734/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:63017a5f9a74963d24aac7590287149a8d0f1a0799bbe7173c0d8ba1523293c0", size = 11818428 }, - { url = "https://files.pythonhosted.org/packages/08/17/804cc13b22a8663564bb0b55fb89e661a577e4e88a61a39740d58b909efe/scikit_learn-1.7.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0b2f8a0b1e73e9a08b7cc498bb2aeab36cdc1f571f8ab2b35c6e5d1c7115d97d", size = 12505887 }, - { url = "https://files.pythonhosted.org/packages/68/c7/4e956281a077f4835458c3f9656c666300282d5199039f26d9de1dabd9be/scikit_learn-1.7.0-cp312-cp312-win_amd64.whl", hash = "sha256:34cc8d9d010d29fb2b7cbcd5ccc24ffdd80515f65fe9f1e4894ace36b267ce19", size = 10668129 }, -] - -[[package]] -name = "scipy" -version = "1.15.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/0f/37/6964b830433e654ec7485e45a00fc9a27cf868d622838f6b6d9c5ec0d532/scipy-1.15.3.tar.gz", hash = "sha256:eae3cf522bc7df64b42cad3925c876e1b0b6c35c1337c93e12c0f366f55b0eaf", size = 59419214 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/ab/5cc9f80f28f6a7dff646c5756e559823614a42b1939d86dd0ed550470210/scipy-1.15.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:993439ce220d25e3696d1b23b233dd010169b62f6456488567e830654ee37a6b", size = 38714255 }, - { url = "https://files.pythonhosted.org/packages/4a/4a/66ba30abe5ad1a3ad15bfb0b59d22174012e8056ff448cb1644deccbfed2/scipy-1.15.3-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:34716e281f181a02341ddeaad584205bd2fd3c242063bd3423d61ac259ca7eba", size = 30111035 }, - { url = "https://files.pythonhosted.org/packages/4b/fa/a7e5b95afd80d24313307f03624acc65801846fa75599034f8ceb9e2cbf6/scipy-1.15.3-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3b0334816afb8b91dab859281b1b9786934392aa3d527cd847e41bb6f45bee65", size = 22384499 }, - { url = "https://files.pythonhosted.org/packages/17/99/f3aaddccf3588bb4aea70ba35328c204cadd89517a1612ecfda5b2dd9d7a/scipy-1.15.3-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:6db907c7368e3092e24919b5e31c76998b0ce1684d51a90943cb0ed1b4ffd6c1", size = 25152602 }, - { url = "https://files.pythonhosted.org/packages/56/c5/1032cdb565f146109212153339f9cb8b993701e9fe56b1c97699eee12586/scipy-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:721d6b4ef5dc82ca8968c25b111e307083d7ca9091bc38163fb89243e85e3889", size = 35503415 }, - { url = "https://files.pythonhosted.org/packages/bd/37/89f19c8c05505d0601ed5650156e50eb881ae3918786c8fd7262b4ee66d3/scipy-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:39cb9c62e471b1bb3750066ecc3a3f3052b37751c7c3dfd0fd7e48900ed52982", size = 37652622 }, - { url = "https://files.pythonhosted.org/packages/7e/31/be59513aa9695519b18e1851bb9e487de66f2d31f835201f1b42f5d4d475/scipy-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:795c46999bae845966368a3c013e0e00947932d68e235702b5c3f6ea799aa8c9", size = 37244796 }, - { url = "https://files.pythonhosted.org/packages/10/c0/4f5f3eeccc235632aab79b27a74a9130c6c35df358129f7ac8b29f562ac7/scipy-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:18aaacb735ab38b38db42cb01f6b92a2d0d4b6aabefeb07f02849e47f8fb3594", size = 40047684 }, - { url = "https://files.pythonhosted.org/packages/ab/a7/0ddaf514ce8a8714f6ed243a2b391b41dbb65251affe21ee3077ec45ea9a/scipy-1.15.3-cp311-cp311-win_amd64.whl", hash = "sha256:ae48a786a28412d744c62fd7816a4118ef97e5be0bee968ce8f0a2fba7acf3bb", size = 41246504 }, - { url = "https://files.pythonhosted.org/packages/37/4b/683aa044c4162e10ed7a7ea30527f2cbd92e6999c10a8ed8edb253836e9c/scipy-1.15.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6ac6310fdbfb7aa6612408bd2f07295bcbd3fda00d2d702178434751fe48e019", size = 38766735 }, - { url = "https://files.pythonhosted.org/packages/7b/7e/f30be3d03de07f25dc0ec926d1681fed5c732d759ac8f51079708c79e680/scipy-1.15.3-cp312-cp312-macosx_12_0_arm64.whl", hash = "sha256:185cd3d6d05ca4b44a8f1595af87f9c372bb6acf9c808e99aa3e9aa03bd98cf6", size = 30173284 }, - { url = "https://files.pythonhosted.org/packages/07/9c/0ddb0d0abdabe0d181c1793db51f02cd59e4901da6f9f7848e1f96759f0d/scipy-1.15.3-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:05dc6abcd105e1a29f95eada46d4a3f251743cfd7d3ae8ddb4088047f24ea477", size = 22446958 }, - { url = "https://files.pythonhosted.org/packages/af/43/0bce905a965f36c58ff80d8bea33f1f9351b05fad4beaad4eae34699b7a1/scipy-1.15.3-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:06efcba926324df1696931a57a176c80848ccd67ce6ad020c810736bfd58eb1c", size = 25242454 }, - { url = "https://files.pythonhosted.org/packages/56/30/a6f08f84ee5b7b28b4c597aca4cbe545535c39fe911845a96414700b64ba/scipy-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c05045d8b9bfd807ee1b9f38761993297b10b245f012b11b13b91ba8945f7e45", size = 35210199 }, - { url = "https://files.pythonhosted.org/packages/0b/1f/03f52c282437a168ee2c7c14a1a0d0781a9a4a8962d84ac05c06b4c5b555/scipy-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:271e3713e645149ea5ea3e97b57fdab61ce61333f97cfae392c28ba786f9bb49", size = 37309455 }, - { url = "https://files.pythonhosted.org/packages/89/b1/fbb53137f42c4bf630b1ffdfc2151a62d1d1b903b249f030d2b1c0280af8/scipy-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6cfd56fc1a8e53f6e89ba3a7a7251f7396412d655bca2aa5611c8ec9a6784a1e", size = 36885140 }, - { url = "https://files.pythonhosted.org/packages/2e/2e/025e39e339f5090df1ff266d021892694dbb7e63568edcfe43f892fa381d/scipy-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0ff17c0bb1cb32952c09217d8d1eed9b53d1463e5f1dd6052c7857f83127d539", size = 39710549 }, - { url = "https://files.pythonhosted.org/packages/e6/eb/3bf6ea8ab7f1503dca3a10df2e4b9c3f6b3316df07f6c0ded94b281c7101/scipy-1.15.3-cp312-cp312-win_amd64.whl", hash = "sha256:52092bc0472cfd17df49ff17e70624345efece4e1a12b23783a1ac59a1b728ed", size = 40966184 }, -] - -[[package]] -name = "send2trash" -version = "1.8.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fd/3a/aec9b02217bb79b87bbc1a21bc6abc51e3d5dcf65c30487ac96c0908c722/Send2Trash-1.8.3.tar.gz", hash = "sha256:b18e7a3966d99871aefeb00cfbcfdced55ce4871194810fc71f4aa484b953abf", size = 17394 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/40/b0/4562db6223154aa4e22f939003cb92514c79f3d4dccca3444253fd17f902/Send2Trash-1.8.3-py3-none-any.whl", hash = "sha256:0c31227e0bd08961c7665474a3d1ef7193929fedda4233843689baa056be46c9", size = 18072 }, -] - -[[package]] -name = "setuptools" -version = "80.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8d/d2/ec1acaaff45caed5c2dedb33b67055ba9d4e96b091094df90762e60135fe/setuptools-80.8.0.tar.gz", hash = "sha256:49f7af965996f26d43c8ae34539c8d99c5042fbff34302ea151eaa9c207cd257", size = 1319720 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/58/29/93c53c098d301132196c3238c312825324740851d77a8500a2462c0fd888/setuptools-80.8.0-py3-none-any.whl", hash = "sha256:95a60484590d24103af13b686121328cc2736bee85de8936383111e421b9edc0", size = 1201470 }, -] - -[[package]] -name = "shapely" -version = "2.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ca/3c/2da625233f4e605155926566c0e7ea8dda361877f48e8b1655e53456f252/shapely-2.1.1.tar.gz", hash = "sha256:500621967f2ffe9642454808009044c21e5b35db89ce69f8a2042c2ffd0e2772", size = 315422 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/97/2df985b1e03f90c503796ad5ecd3d9ed305123b64d4ccb54616b30295b29/shapely-2.1.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:587a1aa72bc858fab9b8c20427b5f6027b7cbc92743b8e2c73b9de55aa71c7a7", size = 1819368 }, - { url = "https://files.pythonhosted.org/packages/56/17/504518860370f0a28908b18864f43d72f03581e2b6680540ca668f07aa42/shapely-2.1.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9fa5c53b0791a4b998f9ad84aad456c988600757a96b0a05e14bba10cebaaaea", size = 1625362 }, - { url = "https://files.pythonhosted.org/packages/36/a1/9677337d729b79fce1ef3296aac6b8ef4743419086f669e8a8070eff8f40/shapely-2.1.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aabecd038841ab5310d23495253f01c2a82a3aedae5ab9ca489be214aa458aa7", size = 2999005 }, - { url = "https://files.pythonhosted.org/packages/a2/17/e09357274699c6e012bbb5a8ea14765a4d5860bb658df1931c9f90d53bd3/shapely-2.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:586f6aee1edec04e16227517a866df3e9a2e43c1f635efc32978bb3dc9c63753", size = 3108489 }, - { url = "https://files.pythonhosted.org/packages/17/5d/93a6c37c4b4e9955ad40834f42b17260ca74ecf36df2e81bb14d12221b90/shapely-2.1.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:b9878b9e37ad26c72aada8de0c9cfe418d9e2ff36992a1693b7f65a075b28647", size = 3945727 }, - { url = "https://files.pythonhosted.org/packages/a3/1a/ad696648f16fd82dd6bfcca0b3b8fbafa7aacc13431c7fc4c9b49e481681/shapely-2.1.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d9a531c48f289ba355e37b134e98e28c557ff13965d4653a5228d0f42a09aed0", size = 4109311 }, - { url = "https://files.pythonhosted.org/packages/d4/38/150dd245beab179ec0d4472bf6799bf18f21b1efbef59ac87de3377dbf1c/shapely-2.1.1-cp311-cp311-win32.whl", hash = "sha256:4866de2673a971820c75c0167b1f1cd8fb76f2d641101c23d3ca021ad0449bab", size = 1522982 }, - { url = "https://files.pythonhosted.org/packages/93/5b/842022c00fbb051083c1c85430f3bb55565b7fd2d775f4f398c0ba8052ce/shapely-2.1.1-cp311-cp311-win_amd64.whl", hash = "sha256:20a9d79958b3d6c70d8a886b250047ea32ff40489d7abb47d01498c704557a93", size = 1703872 }, - { url = "https://files.pythonhosted.org/packages/fb/64/9544dc07dfe80a2d489060791300827c941c451e2910f7364b19607ea352/shapely-2.1.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2827365b58bf98efb60affc94a8e01c56dd1995a80aabe4b701465d86dcbba43", size = 1833021 }, - { url = "https://files.pythonhosted.org/packages/07/aa/fb5f545e72e89b6a0f04a0effda144f5be956c9c312c7d4e00dfddbddbcf/shapely-2.1.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9c551f7fa7f1e917af2347fe983f21f212863f1d04f08eece01e9c275903fad", size = 1643018 }, - { url = "https://files.pythonhosted.org/packages/03/46/61e03edba81de729f09d880ce7ae5c1af873a0814206bbfb4402ab5c3388/shapely-2.1.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:78dec4d4fbe7b1db8dc36de3031767e7ece5911fb7782bc9e95c5cdec58fb1e9", size = 2986417 }, - { url = "https://files.pythonhosted.org/packages/1f/1e/83ec268ab8254a446b4178b45616ab5822d7b9d2b7eb6e27cf0b82f45601/shapely-2.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:872d3c0a7b8b37da0e23d80496ec5973c4692920b90de9f502b5beb994bbaaef", size = 3098224 }, - { url = "https://files.pythonhosted.org/packages/f1/44/0c21e7717c243e067c9ef8fa9126de24239f8345a5bba9280f7bb9935959/shapely-2.1.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2e2b9125ebfbc28ecf5353511de62f75a8515ae9470521c9a693e4bb9fbe0cf1", size = 3925982 }, - { url = "https://files.pythonhosted.org/packages/15/50/d3b4e15fefc103a0eb13d83bad5f65cd6e07a5d8b2ae920e767932a247d1/shapely-2.1.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:4b96cea171b3d7f6786976a0520f178c42792897653ecca0c5422fb1e6946e6d", size = 4089122 }, - { url = "https://files.pythonhosted.org/packages/bd/05/9a68f27fc6110baeedeeebc14fd86e73fa38738c5b741302408fb6355577/shapely-2.1.1-cp312-cp312-win32.whl", hash = "sha256:39dca52201e02996df02e447f729da97cfb6ff41a03cb50f5547f19d02905af8", size = 1522437 }, - { url = "https://files.pythonhosted.org/packages/bc/e9/a4560e12b9338842a1f82c9016d2543eaa084fce30a1ca11991143086b57/shapely-2.1.1-cp312-cp312-win_amd64.whl", hash = "sha256:13d643256f81d55a50013eff6321142781cf777eb6a9e207c2c9e6315ba6044a", size = 1703479 }, -] - -[[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 = "sidecar" -version = "0.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ipywidgets" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/23/8c/1143344be27a8c72ab8f02e6b55270e89eca6387bae542f958b056a18764/sidecar-0.7.0.tar.gz", hash = "sha256:c3fa1694b5611c1fab9d7a96c07577ba0764068a89b7b39be9b9ce9770e9d363", size = 3333537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/8e/3a325661f42c7d7aa246b16cbf1113caf94d418e5c367a2483ee1e1f9603/sidecar-0.7.0-py3-none-any.whl", hash = "sha256:a18e5972b45f5b6a81d6738a223471b3e1627bff1e26053834fd843006e67446", size = 17821 }, -] - -[[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 = "sniffio" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a2/87/a6771e1546d97e7e041b6ae58d80074f81b7d5121207425c964ddf5cfdbd/sniffio-1.3.1.tar.gz", hash = "sha256:f4324edc670a0f49750a81b895f35c3adb843cca46f0530f79fc1babb23789dc", size = 20372 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e9/44/75a9c9421471a6c4805dbf2356f7c181a29c1879239abab1ea2cc8f38b40/sniffio-1.3.1-py3-none-any.whl", hash = "sha256:2f6da418d1f1e0fddd844478f41680e794e6051915791a034ff65e5f100525a2", size = 10235 }, -] - -[[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 = "soupsieve" -version = "2.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/f4/4a80cd6ef364b2e8b65b15816a843c0980f7a5a2b4dc701fc574952aa19f/soupsieve-2.7.tar.gz", hash = "sha256:ad282f9b6926286d2ead4750552c8a6142bc4c783fd66b0293547c8fe6ae126a", size = 103418 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/9c/0e6afc12c269578be5c0c1c9f4b49a8d32770a080260c333ac04cc1c832d/soupsieve-2.7-py3-none-any.whl", hash = "sha256:6e60cc5c1ffaf1cebcc12e8188320b72071e922c2e897f737cadce79ad5d30c4", size = 36677 }, -] - -[[package]] -name = "sqlalchemy" -version = "2.0.41" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "greenlet", marker = "platform_machine == 'AMD64' or platform_machine == 'WIN32' or platform_machine == 'aarch64' or platform_machine == 'amd64' or platform_machine == 'ppc64le' or platform_machine == 'win32' or platform_machine == 'x86_64'" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/63/66/45b165c595ec89aa7dcc2c1cd222ab269bc753f1fc7a1e68f8481bd957bf/sqlalchemy-2.0.41.tar.gz", hash = "sha256:edba70118c4be3c2b1f90754d308d0b79c6fe2c0fdc52d8ddf603916f83f4db9", size = 9689424 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/37/4e/b00e3ffae32b74b5180e15d2ab4040531ee1bef4c19755fe7926622dc958/sqlalchemy-2.0.41-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:6375cd674fe82d7aa9816d1cb96ec592bac1726c11e0cafbf40eeee9a4516b5f", size = 2121232 }, - { url = "https://files.pythonhosted.org/packages/ef/30/6547ebb10875302074a37e1970a5dce7985240665778cfdee2323709f749/sqlalchemy-2.0.41-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9f8c9fdd15a55d9465e590a402f42082705d66b05afc3ffd2d2eb3c6ba919560", size = 2110897 }, - { url = "https://files.pythonhosted.org/packages/9e/21/59df2b41b0f6c62da55cd64798232d7349a9378befa7f1bb18cf1dfd510a/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:32f9dc8c44acdee06c8fc6440db9eae8b4af8b01e4b1aee7bdd7241c22edff4f", size = 3273313 }, - { url = "https://files.pythonhosted.org/packages/62/e4/b9a7a0e5c6f79d49bcd6efb6e90d7536dc604dab64582a9dec220dab54b6/sqlalchemy-2.0.41-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:90c11ceb9a1f482c752a71f203a81858625d8df5746d787a4786bca4ffdf71c6", size = 3273807 }, - { url = "https://files.pythonhosted.org/packages/39/d8/79f2427251b44ddee18676c04eab038d043cff0e764d2d8bb08261d6135d/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:911cc493ebd60de5f285bcae0491a60b4f2a9f0f5c270edd1c4dbaef7a38fc04", size = 3209632 }, - { url = "https://files.pythonhosted.org/packages/d4/16/730a82dda30765f63e0454918c982fb7193f6b398b31d63c7c3bd3652ae5/sqlalchemy-2.0.41-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:03968a349db483936c249f4d9cd14ff2c296adfa1290b660ba6516f973139582", size = 3233642 }, - { url = "https://files.pythonhosted.org/packages/04/61/c0d4607f7799efa8b8ea3c49b4621e861c8f5c41fd4b5b636c534fcb7d73/sqlalchemy-2.0.41-cp311-cp311-win32.whl", hash = "sha256:293cd444d82b18da48c9f71cd7005844dbbd06ca19be1ccf6779154439eec0b8", size = 2086475 }, - { url = "https://files.pythonhosted.org/packages/9d/8e/8344f8ae1cb6a479d0741c02cd4f666925b2bf02e2468ddaf5ce44111f30/sqlalchemy-2.0.41-cp311-cp311-win_amd64.whl", hash = "sha256:3d3549fc3e40667ec7199033a4e40a2f669898a00a7b18a931d3efb4c7900504", size = 2110903 }, - { url = "https://files.pythonhosted.org/packages/3e/2a/f1f4e068b371154740dd10fb81afb5240d5af4aa0087b88d8b308b5429c2/sqlalchemy-2.0.41-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:81f413674d85cfd0dfcd6512e10e0f33c19c21860342a4890c3a2b59479929f9", size = 2119645 }, - { url = "https://files.pythonhosted.org/packages/9b/e8/c664a7e73d36fbfc4730f8cf2bf930444ea87270f2825efbe17bf808b998/sqlalchemy-2.0.41-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:598d9ebc1e796431bbd068e41e4de4dc34312b7aa3292571bb3674a0cb415dd1", size = 2107399 }, - { url = "https://files.pythonhosted.org/packages/5c/78/8a9cf6c5e7135540cb682128d091d6afa1b9e48bd049b0d691bf54114f70/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a104c5694dfd2d864a6f91b0956eb5d5883234119cb40010115fd45a16da5e70", size = 3293269 }, - { url = "https://files.pythonhosted.org/packages/3c/35/f74add3978c20de6323fb11cb5162702670cc7a9420033befb43d8d5b7a4/sqlalchemy-2.0.41-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6145afea51ff0af7f2564a05fa95eb46f542919e6523729663a5d285ecb3cf5e", size = 3303364 }, - { url = "https://files.pythonhosted.org/packages/6a/d4/c990f37f52c3f7748ebe98883e2a0f7d038108c2c5a82468d1ff3eec50b7/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b46fa6eae1cd1c20e6e6f44e19984d438b6b2d8616d21d783d150df714f44078", size = 3229072 }, - { url = "https://files.pythonhosted.org/packages/15/69/cab11fecc7eb64bc561011be2bd03d065b762d87add52a4ca0aca2e12904/sqlalchemy-2.0.41-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41836fe661cc98abfae476e14ba1906220f92c4e528771a8a3ae6a151242d2ae", size = 3268074 }, - { url = "https://files.pythonhosted.org/packages/5c/ca/0c19ec16858585d37767b167fc9602593f98998a68a798450558239fb04a/sqlalchemy-2.0.41-cp312-cp312-win32.whl", hash = "sha256:a8808d5cf866c781150d36a3c8eb3adccfa41a8105d031bf27e92c251e3969d6", size = 2084514 }, - { url = "https://files.pythonhosted.org/packages/7f/23/4c2833d78ff3010a4e17f984c734f52b531a8c9060a50429c9d4b0211be6/sqlalchemy-2.0.41-cp312-cp312-win_amd64.whl", hash = "sha256:5b14e97886199c1f52c14629c11d90c11fbb09e9334fa7bb5f6d068d9ced0ce0", size = 2111557 }, - { url = "https://files.pythonhosted.org/packages/1c/fc/9ba22f01b5cdacc8f5ed0d22304718d2c758fce3fd49a5372b886a86f37c/sqlalchemy-2.0.41-py3-none-any.whl", hash = "sha256:57df5dc6fdb5ed1a88a1ed2195fd31927e705cad62dedd86b46972752a80f576", size = 1911224 }, -] - -[[package]] -name = "sqlite-anyio" -version = "0.2.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ba/7c/fddd3d72346519b4e93ea28152ff7626e533278ed914d82df292c850dfe0/sqlite_anyio-0.2.3.tar.gz", hash = "sha256:12a8b0ececaa63d70d5cc5f91edbd932fc1eca9da70ebce2b31d3a199767b3d3", size = 5409 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d5/bb/6b3d94f713b8cf11f1f802bf625c5df8b98d1a176b9b4ce33c2da12dc977/sqlite_anyio-0.2.3-py3-none-any.whl", hash = "sha256:aa10fa23b7e2ce9c792376630572e1e5837e6f6a9892d90c9ad57419daf4bc01", size = 4711 }, -] - -[[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 = "starlette" -version = "0.46.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ce/20/08dfcd9c983f6a6f4a1000d934b9e6d626cff8d2eeb77a89a68eef20a2b7/starlette-0.46.2.tar.gz", hash = "sha256:7f7361f34eed179294600af672f565727419830b54b7b084efe44bb82d2fccd5", size = 2580846 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/0c/9d30a4ebeb6db2b25a841afbb80f6ef9a854fc3b41be131d249a977b4959/starlette-0.46.2-py3-none-any.whl", hash = "sha256:595633ce89f8ffa71a015caed34a5b2dc1c0cdb3f0f1fbd1e69339cf2abeec35", size = 72037 }, -] - -[[package]] -name = "strictyaml" -version = "1.7.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "python-dateutil" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/b3/08/efd28d49162ce89c2ad61a88bd80e11fb77bc9f6c145402589112d38f8af/strictyaml-1.7.3.tar.gz", hash = "sha256:22f854a5fcab42b5ddba8030a0e4be51ca89af0267961c8d6cfa86395586c407", size = 115206 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/96/7c/a81ef5ef10978dd073a854e0fa93b5d8021d0594b639cc8f6453c3c78a1d/strictyaml-1.7.3-py3-none-any.whl", hash = "sha256:fb5c8a4edb43bebb765959e420f9b3978d7f1af88c80606c03fb420888f5d1c7", size = 123917 }, -] - -[[package]] -name = "tenacity" -version = "9.1.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0a/d4/2b0cd0fe285e14b36db076e78c93766ff1d529d70408bd1d2a5a84f1d929/tenacity-9.1.2.tar.gz", hash = "sha256:1169d376c297e7de388d18b4481760d478b0e99a777cad3a9c86e556f4b697cb", size = 48036 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/30/643397144bfbfec6f6ef821f36f33e57d35946c44a2352d3c9f0ae847619/tenacity-9.1.2-py3-none-any.whl", hash = "sha256:f77bf36710d8b73a50b2dd155c97b870017ad21afe6ab300326b0371b3b05138", size = 28248 }, -] - -[[package]] -name = "terminado" -version = "0.18.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "ptyprocess", marker = "os_name != 'nt'" }, - { name = "pywinpty", marker = "os_name == 'nt'" }, - { name = "tornado" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/8a/11/965c6fd8e5cc254f1fe142d547387da17a8ebfd75a3455f637c663fb38a0/terminado-0.18.1.tar.gz", hash = "sha256:de09f2c4b85de4765f7714688fff57d3e75bad1f909b589fde880460c753fd2e", size = 32701 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6a/9e/2064975477fdc887e47ad42157e214526dcad8f317a948dee17e1659a62f/terminado-0.18.1-py3-none-any.whl", hash = "sha256:a4468e1b37bb318f8a86514f65814e1afc977cf29b3992a4500d9dd305dcceb0", size = 14154 }, -] - -[[package]] -name = "threadpoolctl" -version = "3.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b7/4d/08c89e34946fce2aec4fbb45c9016efd5f4d7f24af8e5d93296e935631d8/threadpoolctl-3.6.0.tar.gz", hash = "sha256:8ab8b4aa3491d812b623328249fab5302a68d2d71745c8a4c719a2fcaba9f44e", size = 21274 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl", hash = "sha256:43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb", size = 18638 }, -] - -[[package]] -name = "tifffile" -version = "2025.5.21" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/74/23/e42a6ffaf293472c5bbd8360335452f5a2b2d2f7e05cb671c34d12f4fca8/tifffile-2025.5.21.tar.gz", hash = "sha256:49d3ec73fa5aa8735e63626d9d982a7db029b3886da4b23796e1984b1f992b33", size = 368347 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8f/89/8df63629e3c9f71df59c2d795aa30248ebb4b8547df148145e373b0c8ce5/tifffile-2025.5.21-py3-none-any.whl", hash = "sha256:de06c487773796bf3ed9503525530f8d039c2db6e4bdafd4118b20ee8d3a338e", size = 229593 }, -] - -[[package]] -name = "tinycss2" -version = "1.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "webencodings" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7a/fd/7a5ee21fd08ff70d3d33a5781c255cbe779659bd03278feb98b19ee550f4/tinycss2-1.4.0.tar.gz", hash = "sha256:10c0972f6fc0fbee87c3edb76549357415e94548c1ae10ebccdea16fb404a9b7", size = 87085 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e6/34/ebdc18bae6aa14fbee1a08b63c015c72b64868ff7dae68808ab500c492e2/tinycss2-1.4.0-py3-none-any.whl", hash = "sha256:3a49cf47b7675da0b15d0c6e1df8df4ebd96e9394bb905a5775adb0d884c5289", size = 26610 }, -] - -[[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.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/51/89/c72771c81d25d53fe33e3dca61c233b665b2780f21820ba6fd2c6793c12b/tornado-6.5.1.tar.gz", hash = "sha256:84ceece391e8eb9b2b95578db65e920d2a61070260594819589609ba9bc6308c", size = 509934 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/77/89/f4532dee6843c9e0ebc4e28d4be04c67f54f60813e4bf73d595fe7567452/tornado-6.5.1-cp39-abi3-macosx_10_9_universal2.whl", hash = "sha256:d50065ba7fd11d3bd41bcad0825227cc9a95154bad83239357094c36708001f7", size = 441948 }, - { url = "https://files.pythonhosted.org/packages/15/9a/557406b62cffa395d18772e0cdcf03bed2fff03b374677348eef9f6a3792/tornado-6.5.1-cp39-abi3-macosx_10_9_x86_64.whl", hash = "sha256:9e9ca370f717997cb85606d074b0e5b247282cf5e2e1611568b8821afe0342d6", size = 440112 }, - { url = "https://files.pythonhosted.org/packages/55/82/7721b7319013a3cf881f4dffa4f60ceff07b31b394e459984e7a36dc99ec/tornado-6.5.1-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b77e9dfa7ed69754a54c89d82ef746398be82f749df69c4d3abe75c4d1ff4888", size = 443672 }, - { url = "https://files.pythonhosted.org/packages/7d/42/d11c4376e7d101171b94e03cef0cbce43e823ed6567ceda571f54cf6e3ce/tornado-6.5.1-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:253b76040ee3bab8bcf7ba9feb136436a3787208717a1fb9f2c16b744fba7331", size = 443019 }, - { url = "https://files.pythonhosted.org/packages/7d/f7/0c48ba992d875521ac761e6e04b0a1750f8150ae42ea26df1852d6a98942/tornado-6.5.1-cp39-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:308473f4cc5a76227157cdf904de33ac268af770b2c5f05ca6c1161d82fdd95e", size = 443252 }, - { url = "https://files.pythonhosted.org/packages/89/46/d8d7413d11987e316df4ad42e16023cd62666a3c0dfa1518ffa30b8df06c/tornado-6.5.1-cp39-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:caec6314ce8a81cf69bd89909f4b633b9f523834dc1a352021775d45e51d9401", size = 443930 }, - { url = "https://files.pythonhosted.org/packages/78/b2/f8049221c96a06df89bed68260e8ca94beca5ea532ffc63b1175ad31f9cc/tornado-6.5.1-cp39-abi3-musllinux_1_2_i686.whl", hash = "sha256:13ce6e3396c24e2808774741331638ee6c2f50b114b97a55c5b442df65fd9692", size = 443351 }, - { url = "https://files.pythonhosted.org/packages/76/ff/6a0079e65b326cc222a54720a748e04a4db246870c4da54ece4577bfa702/tornado-6.5.1-cp39-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:5cae6145f4cdf5ab24744526cc0f55a17d76f02c98f4cff9daa08ae9a217448a", size = 443328 }, - { url = "https://files.pythonhosted.org/packages/49/18/e3f902a1d21f14035b5bc6246a8c0f51e0eef562ace3a2cea403c1fb7021/tornado-6.5.1-cp39-abi3-win32.whl", hash = "sha256:e0a36e1bc684dca10b1aa75a31df8bdfed656831489bc1e6a6ebed05dc1ec365", size = 444396 }, - { url = "https://files.pythonhosted.org/packages/7b/09/6526e32bf1049ee7de3bebba81572673b19a2a8541f795d887e92af1a8bc/tornado-6.5.1-cp39-abi3-win_amd64.whl", hash = "sha256:908e7d64567cecd4c2b458075589a775063453aeb1d2a1853eedb806922f568b", size = 444840 }, - { url = "https://files.pythonhosted.org/packages/55/a7/535c44c7bea4578e48281d83c615219f3ab19e6abc67625ef637c73987be/tornado-6.5.1-cp39-abi3-win_arm64.whl", hash = "sha256:02420a0eb7bf617257b9935e2b754d1b63897525d8a289c9d65690d580b4dcf7", size = 443596 }, -] - -[[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 = "typer" -version = "0.15.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "rich" }, - { name = "shellingham" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/98/1a/5f36851f439884bcfe8539f6a20ff7516e7b60f319bbaf69a90dc35cc2eb/typer-0.15.3.tar.gz", hash = "sha256:818873625d0569653438316567861899f7e9972f2e6e0c16dab608345ced713c", size = 101641 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/48/20/9d953de6f4367163d23ec823200eb3ecb0050a2609691e512c8b95827a9b/typer-0.15.3-py3-none-any.whl", hash = "sha256:c86a65ad77ca531f03de08d1b9cb67cd09ad02ddddf4b34745b5008f43b239bd", size = 45253 }, -] - -[[package]] -name = "types-python-dateutil" -version = "2.9.0.20250516" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/ef/88/d65ed807393285204ab6e2801e5d11fbbea811adcaa979a2ed3b67a5ef41/types_python_dateutil-2.9.0.20250516.tar.gz", hash = "sha256:13e80d6c9c47df23ad773d54b2826bd52dbbb41be87c3f339381c1700ad21ee5", size = 13943 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c5/3f/b0e8db149896005adc938a1e7f371d6d7e9eca4053a29b108978ed15e0c2/types_python_dateutil-2.9.0.20250516-py3-none-any.whl", hash = "sha256:2b2b3f57f9c6a61fba26a9c0ffb9ea5681c9b83e69cd897c6b5f668d9c0cab93", size = 14356 }, -] - -[[package]] -name = "typing-extensions" -version = "4.13.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, -] - -[[package]] -name = "typing-inspection" -version = "0.4.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, -] - -[[package]] -name = "tzdata" -version = "2025.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/32/1a225d6164441be760d75c2c42e2780dc0873fe382da3e98a2e1e48361e5/tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9", size = 196380 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/23/c7abc0ca0a1526a0774eca151daeb8de62ec457e77262b66b359c3c7679e/tzdata-2025.2-py2.py3-none-any.whl", hash = "sha256:1a403fada01ff9221ca8044d701868fa132215d84beb92242d9acd2147f667a8", size = 347839 }, -] - -[[package]] -name = "ujson" -version = "5.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f0/00/3110fd566786bfa542adb7932d62035e0c0ef662a8ff6544b6643b3d6fd7/ujson-5.10.0.tar.gz", hash = "sha256:b3cd8f3c5d8c7738257f1018880444f7b7d9b66232c64649f562d7ba86ad4bc1", size = 7154885 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/23/ec/3c551ecfe048bcb3948725251fb0214b5844a12aa60bee08d78315bb1c39/ujson-5.10.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:a5b366812c90e69d0f379a53648be10a5db38f9d4ad212b60af00bd4048d0f00", size = 55353 }, - { url = "https://files.pythonhosted.org/packages/8d/9f/4731ef0671a0653e9f5ba18db7c4596d8ecbf80c7922dd5fe4150f1aea76/ujson-5.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:502bf475781e8167f0f9d0e41cd32879d120a524b22358e7f205294224c71126", size = 51813 }, - { url = "https://files.pythonhosted.org/packages/1f/2b/44d6b9c1688330bf011f9abfdb08911a9dc74f76926dde74e718d87600da/ujson-5.10.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5b91b5d0d9d283e085e821651184a647699430705b15bf274c7896f23fe9c9d8", size = 51988 }, - { url = "https://files.pythonhosted.org/packages/29/45/f5f5667427c1ec3383478092a414063ddd0dfbebbcc533538fe37068a0a3/ujson-5.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:129e39af3a6d85b9c26d5577169c21d53821d8cf68e079060602e861c6e5da1b", size = 53561 }, - { url = "https://files.pythonhosted.org/packages/26/21/a0c265cda4dd225ec1be595f844661732c13560ad06378760036fc622587/ujson-5.10.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f77b74475c462cb8b88680471193064d3e715c7c6074b1c8c412cb526466efe9", size = 58497 }, - { url = "https://files.pythonhosted.org/packages/28/36/8fde862094fd2342ccc427a6a8584fed294055fdee341661c78660f7aef3/ujson-5.10.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:7ec0ca8c415e81aa4123501fee7f761abf4b7f386aad348501a26940beb1860f", size = 997877 }, - { url = "https://files.pythonhosted.org/packages/90/37/9208e40d53baa6da9b6a1c719e0670c3f474c8fc7cc2f1e939ec21c1bc93/ujson-5.10.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:ab13a2a9e0b2865a6c6db9271f4b46af1c7476bfd51af1f64585e919b7c07fd4", size = 1140632 }, - { url = "https://files.pythonhosted.org/packages/89/d5/2626c87c59802863d44d19e35ad16b7e658e4ac190b0dead17ff25460b4c/ujson-5.10.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:57aaf98b92d72fc70886b5a0e1a1ca52c2320377360341715dd3933a18e827b1", size = 1043513 }, - { url = "https://files.pythonhosted.org/packages/2f/ee/03662ce9b3f16855770f0d70f10f0978ba6210805aa310c4eebe66d36476/ujson-5.10.0-cp311-cp311-win32.whl", hash = "sha256:2987713a490ceb27edff77fb184ed09acdc565db700ee852823c3dc3cffe455f", size = 38616 }, - { url = "https://files.pythonhosted.org/packages/3e/20/952dbed5895835ea0b82e81a7be4ebb83f93b079d4d1ead93fcddb3075af/ujson-5.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:f00ea7e00447918ee0eff2422c4add4c5752b1b60e88fcb3c067d4a21049a720", size = 42071 }, - { url = "https://files.pythonhosted.org/packages/e8/a6/fd3f8bbd80842267e2d06c3583279555e8354c5986c952385199d57a5b6c/ujson-5.10.0-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:98ba15d8cbc481ce55695beee9f063189dce91a4b08bc1d03e7f0152cd4bbdd5", size = 55642 }, - { url = "https://files.pythonhosted.org/packages/a8/47/dd03fd2b5ae727e16d5d18919b383959c6d269c7b948a380fdd879518640/ujson-5.10.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a9d2edbf1556e4f56e50fab7d8ff993dbad7f54bac68eacdd27a8f55f433578e", size = 51807 }, - { url = "https://files.pythonhosted.org/packages/25/23/079a4cc6fd7e2655a473ed9e776ddbb7144e27f04e8fc484a0fb45fe6f71/ujson-5.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6627029ae4f52d0e1a2451768c2c37c0c814ffc04f796eb36244cf16b8e57043", size = 51972 }, - { url = "https://files.pythonhosted.org/packages/04/81/668707e5f2177791869b624be4c06fb2473bf97ee33296b18d1cf3092af7/ujson-5.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8ccb77b3e40b151e20519c6ae6d89bfe3f4c14e8e210d910287f778368bb3d1", size = 53686 }, - { url = "https://files.pythonhosted.org/packages/bd/50/056d518a386d80aaf4505ccf3cee1c40d312a46901ed494d5711dd939bc3/ujson-5.10.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f3caf9cd64abfeb11a3b661329085c5e167abbe15256b3b68cb5d914ba7396f3", size = 58591 }, - { url = "https://files.pythonhosted.org/packages/fc/d6/aeaf3e2d6fb1f4cfb6bf25f454d60490ed8146ddc0600fae44bfe7eb5a72/ujson-5.10.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6e32abdce572e3a8c3d02c886c704a38a1b015a1fb858004e03d20ca7cecbb21", size = 997853 }, - { url = "https://files.pythonhosted.org/packages/f8/d5/1f2a5d2699f447f7d990334ca96e90065ea7f99b142ce96e85f26d7e78e2/ujson-5.10.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a65b6af4d903103ee7b6f4f5b85f1bfd0c90ba4eeac6421aae436c9988aa64a2", size = 1140689 }, - { url = "https://files.pythonhosted.org/packages/f2/2c/6990f4ccb41ed93744aaaa3786394bca0875503f97690622f3cafc0adfde/ujson-5.10.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:604a046d966457b6cdcacc5aa2ec5314f0e8c42bae52842c1e6fa02ea4bda42e", size = 1043576 }, - { url = "https://files.pythonhosted.org/packages/14/f5/a2368463dbb09fbdbf6a696062d0c0f62e4ae6fa65f38f829611da2e8fdd/ujson-5.10.0-cp312-cp312-win32.whl", hash = "sha256:6dea1c8b4fc921bf78a8ff00bbd2bfe166345f5536c510671bccececb187c80e", size = 38764 }, - { url = "https://files.pythonhosted.org/packages/59/2d/691f741ffd72b6c84438a93749ac57bf1a3f217ac4b0ea4fd0e96119e118/ujson-5.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:38665e7d8290188b1e0d57d584eb8110951a9591363316dd41cf8686ab1d0abc", size = 42211 }, -] - -[[package]] -name = "universal-pathlib" -version = "0.2.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "fsspec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/eb/21/dd871495af3933e585261adce42678dcdf1168c9d6fa0a8f7b6565e54472/universal_pathlib-0.2.6.tar.gz", hash = "sha256:50817aaeaa9f4163cb1e76f5bdf84207fa05ce728b23fd779479b3462e5430ac", size = 175427 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e5/4d/2e577f6db7aa0f932d19f799c18f604b2b302c65f733419b900ec07dbade/universal_pathlib-0.2.6-py3-none-any.whl", hash = "sha256:700dec2b58ef34b87998513de6d2ae153b22f083197dfafb8544744edabd1b18", size = 50087 }, -] - -[[package]] -name = "uri-template" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/31/c7/0336f2bd0bcbada6ccef7aaa25e443c118a704f828a0620c6fa0207c1b64/uri-template-1.3.0.tar.gz", hash = "sha256:0e00f8eb65e18c7de20d595a14336e9f337ead580c70934141624b6d1ffdacc7", size = 21678 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/00/3fca040d7cf8a32776d3d81a00c8ee7457e00f80c649f1e4a863c8321ae9/uri_template-1.3.0-py3-none-any.whl", hash = "sha256:a44a133ea12d44a0c0f06d7d42a52d71282e77e2f937d8abd5655b8d56fc1363", size = 11140 }, -] - -[[package]] -name = "urllib3" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/8a/78/16493d9c386d8e60e442a35feac5e00f0913c0f4b7c217c11e8ec2ff53e0/urllib3-2.4.0.tar.gz", hash = "sha256:414bc6535b787febd7567804cc015fee39daab8ad86268f1310a9250697de466", size = 390672 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/6b/11/cc635220681e93a0183390e26485430ca2c7b5f9d33b15c74c2861cb8091/urllib3-2.4.0-py3-none-any.whl", hash = "sha256:4e16665048960a0900c702d4a66415956a584919c03361cac9f1df5c5dd7e813", size = 128680 }, -] - -[[package]] -name = "uvicorn" -version = "0.34.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "h11" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/a6/ae/9bbb19b9e1c450cf9ecaef06463e40234d98d95bf572fab11b4f19ae5ded/uvicorn-0.34.2.tar.gz", hash = "sha256:0e929828f6186353a80b58ea719861d2629d766293b6d19baf086ba31d4f3328", size = 76815 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b1/4b/4cef6ce21a2aaca9d852a6e84ef4f135d99fcd74fa75105e2fc0c8308acd/uvicorn-0.34.2-py3-none-any.whl", hash = "sha256:deb49af569084536d269fe0a6d67e3754f104cf03aba7c11c40f01aadf33c403", size = 62483 }, -] - -[package.optional-dependencies] -standard = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, - { name = "httptools" }, - { name = "python-dotenv" }, - { name = "pyyaml" }, - { name = "uvloop", marker = "platform_python_implementation != 'PyPy' and sys_platform != 'cygwin' and sys_platform != 'win32'" }, - { name = "watchfiles" }, - { name = "websockets" }, -] - -[[package]] -name = "uvloop" -version = "0.21.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/c0/854216d09d33c543f12a44b393c402e89a920b1a0a7dc634c42de91b9cf6/uvloop-0.21.0.tar.gz", hash = "sha256:3bf12b0fda68447806a7ad847bfa591613177275d35b6724b1ee573faa3704e3", size = 2492741 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/57/a7/4cf0334105c1160dd6819f3297f8700fda7fc30ab4f61fbf3e725acbc7cc/uvloop-0.21.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:c0f3fa6200b3108919f8bdabb9a7f87f20e7097ea3c543754cabc7d717d95cf8", size = 1447410 }, - { url = "https://files.pythonhosted.org/packages/8c/7c/1517b0bbc2dbe784b563d6ab54f2ef88c890fdad77232c98ed490aa07132/uvloop-0.21.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:0878c2640cf341b269b7e128b1a5fed890adc4455513ca710d77d5e93aa6d6a0", size = 805476 }, - { url = "https://files.pythonhosted.org/packages/ee/ea/0bfae1aceb82a503f358d8d2fa126ca9dbdb2ba9c7866974faec1cb5875c/uvloop-0.21.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b9fb766bb57b7388745d8bcc53a359b116b8a04c83a2288069809d2b3466c37e", size = 3960855 }, - { url = "https://files.pythonhosted.org/packages/8a/ca/0864176a649838b838f36d44bf31c451597ab363b60dc9e09c9630619d41/uvloop-0.21.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a375441696e2eda1c43c44ccb66e04d61ceeffcd76e4929e527b7fa401b90fb", size = 3973185 }, - { url = "https://files.pythonhosted.org/packages/30/bf/08ad29979a936d63787ba47a540de2132169f140d54aa25bc8c3df3e67f4/uvloop-0.21.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:baa0e6291d91649c6ba4ed4b2f982f9fa165b5bbd50a9e203c416a2797bab3c6", size = 3820256 }, - { url = "https://files.pythonhosted.org/packages/da/e2/5cf6ef37e3daf2f06e651aae5ea108ad30df3cb269102678b61ebf1fdf42/uvloop-0.21.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:4509360fcc4c3bd2c70d87573ad472de40c13387f5fda8cb58350a1d7475e58d", size = 3937323 }, - { url = "https://files.pythonhosted.org/packages/8c/4c/03f93178830dc7ce8b4cdee1d36770d2f5ebb6f3d37d354e061eefc73545/uvloop-0.21.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:359ec2c888397b9e592a889c4d72ba3d6befba8b2bb01743f72fffbde663b59c", size = 1471284 }, - { url = "https://files.pythonhosted.org/packages/43/3e/92c03f4d05e50f09251bd8b2b2b584a2a7f8fe600008bcc4523337abe676/uvloop-0.21.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f7089d2dc73179ce5ac255bdf37c236a9f914b264825fdaacaded6990a7fb4c2", size = 821349 }, - { url = "https://files.pythonhosted.org/packages/a6/ef/a02ec5da49909dbbfb1fd205a9a1ac4e88ea92dcae885e7c961847cd51e2/uvloop-0.21.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:baa4dcdbd9ae0a372f2167a207cd98c9f9a1ea1188a8a526431eef2f8116cc8d", size = 4580089 }, - { url = "https://files.pythonhosted.org/packages/06/a7/b4e6a19925c900be9f98bec0a75e6e8f79bb53bdeb891916609ab3958967/uvloop-0.21.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:86975dca1c773a2c9864f4c52c5a55631038e387b47eaf56210f873887b6c8dc", size = 4693770 }, - { url = "https://files.pythonhosted.org/packages/ce/0c/f07435a18a4b94ce6bd0677d8319cd3de61f3a9eeb1e5f8ab4e8b5edfcb3/uvloop-0.21.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:461d9ae6660fbbafedd07559c6a2e57cd553b34b0065b6550685f6653a98c1cb", size = 4451321 }, - { url = "https://files.pythonhosted.org/packages/8f/eb/f7032be105877bcf924709c97b1bf3b90255b4ec251f9340cef912559f28/uvloop-0.21.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:183aef7c8730e54c9a3ee3227464daed66e37ba13040bb3f350bc2ddc040f22f", size = 4659022 }, -] - -[[package]] -name = "virtualenv" -version = "20.31.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "distlib" }, - { name = "filelock" }, - { name = "platformdirs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/56/2c/444f465fb2c65f40c3a104fd0c495184c4f2336d65baf398e3c75d72ea94/virtualenv-20.31.2.tar.gz", hash = "sha256:e10c0a9d02835e592521be48b332b6caee6887f332c111aa79a09b9e79efc2af", size = 6076316 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f3/40/b1c265d4b2b62b58576588510fc4d1fe60a86319c8de99fd8e9fec617d2c/virtualenv-20.31.2-py3-none-any.whl", hash = "sha256:36efd0d9650ee985f0cad72065001e66d49a6f24eb44d98980f630686243cf11", size = 6057982 }, -] - -[[package]] -name = "virtualizarr" -version = "1.3.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numcodecs" }, - { name = "numpy" }, - { name = "packaging" }, - { name = "ujson" }, - { name = "universal-pathlib" }, - { name = "xarray" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/51/98/a71366dd1c4883b0c39895a0803b442750ebbbd6a5611ef0d30a9175a0ce/virtualizarr-1.3.2.tar.gz", hash = "sha256:ac3d15cdec201cb471f3c99ec9d5c9d3c97d0f48c0815cd787126b84917b4b63", size = 146650 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/19/af/8d61c35ca50232e845be5161eefadb335e9aa2a8d3b42964d409aed66db5/virtualizarr-1.3.2-py3-none-any.whl", hash = "sha256:b9881be5417b3552d350651a94ece7333d427f01a72b09eec7e918ec975529bc", size = 137890 }, -] - -[[package]] -name = "watchdog" -version = "6.0.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/db/7d/7f3d619e951c88ed75c6037b246ddcf2d322812ee8ea189be89511721d54/watchdog-6.0.0.tar.gz", hash = "sha256:9ddf7c82fda3ae8e24decda1338ede66e1c99883db93711d8fb941eaa2d8c282", size = 131220 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e0/24/d9be5cd6642a6aa68352ded4b4b10fb0d7889cb7f45814fb92cecd35f101/watchdog-6.0.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:6eb11feb5a0d452ee41f824e271ca311a09e250441c262ca2fd7ebcf2461a06c", size = 96393 }, - { url = "https://files.pythonhosted.org/packages/63/7a/6013b0d8dbc56adca7fdd4f0beed381c59f6752341b12fa0886fa7afc78b/watchdog-6.0.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2", size = 88392 }, - { url = "https://files.pythonhosted.org/packages/d1/40/b75381494851556de56281e053700e46bff5b37bf4c7267e858640af5a7f/watchdog-6.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:afd0fe1b2270917c5e23c2a65ce50c2a4abb63daafb0d419fde368e272a76b7c", size = 89019 }, - { url = "https://files.pythonhosted.org/packages/39/ea/3930d07dafc9e286ed356a679aa02d777c06e9bfd1164fa7c19c288a5483/watchdog-6.0.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:bdd4e6f14b8b18c334febb9c4425a878a2ac20efd1e0b231978e7b150f92a948", size = 96471 }, - { url = "https://files.pythonhosted.org/packages/12/87/48361531f70b1f87928b045df868a9fd4e253d9ae087fa4cf3f7113be363/watchdog-6.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c7c15dda13c4eb00d6fb6fc508b3c0ed88b9d5d374056b239c4ad1611125c860", size = 88449 }, - { url = "https://files.pythonhosted.org/packages/5b/7e/8f322f5e600812e6f9a31b75d242631068ca8f4ef0582dd3ae6e72daecc8/watchdog-6.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6f10cb2d5902447c7d0da897e2c6768bca89174d0c6e1e30abec5421af97a5b0", size = 89054 }, - { url = "https://files.pythonhosted.org/packages/a9/c7/ca4bf3e518cb57a686b2feb4f55a1892fd9a3dd13f470fca14e00f80ea36/watchdog-6.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:7607498efa04a3542ae3e05e64da8202e58159aa1fa4acddf7678d34a35d4f13", size = 79079 }, - { url = "https://files.pythonhosted.org/packages/5c/51/d46dc9332f9a647593c947b4b88e2381c8dfc0942d15b8edc0310fa4abb1/watchdog-6.0.0-py3-none-manylinux2014_armv7l.whl", hash = "sha256:9041567ee8953024c83343288ccc458fd0a2d811d6a0fd68c4c22609e3490379", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/d4/57/04edbf5e169cd318d5f07b4766fee38e825d64b6913ca157ca32d1a42267/watchdog-6.0.0-py3-none-manylinux2014_i686.whl", hash = "sha256:82dc3e3143c7e38ec49d61af98d6558288c415eac98486a5c581726e0737c00e", size = 79076 }, - { url = "https://files.pythonhosted.org/packages/ab/cc/da8422b300e13cb187d2203f20b9253e91058aaf7db65b74142013478e66/watchdog-6.0.0-py3-none-manylinux2014_ppc64.whl", hash = "sha256:212ac9b8bf1161dc91bd09c048048a95ca3a4c4f5e5d4a7d1b1a7d5752a7f96f", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/2c/3b/b8964e04ae1a025c44ba8e4291f86e97fac443bca31de8bd98d3263d2fcf/watchdog-6.0.0-py3-none-manylinux2014_ppc64le.whl", hash = "sha256:e3df4cbb9a450c6d49318f6d14f4bbc80d763fa587ba46ec86f99f9e6876bb26", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/62/ae/a696eb424bedff7407801c257d4b1afda455fe40821a2be430e173660e81/watchdog-6.0.0-py3-none-manylinux2014_s390x.whl", hash = "sha256:2cce7cfc2008eb51feb6aab51251fd79b85d9894e98ba847408f662b3395ca3c", size = 79077 }, - { url = "https://files.pythonhosted.org/packages/b5/e8/dbf020b4d98251a9860752a094d09a65e1b436ad181faf929983f697048f/watchdog-6.0.0-py3-none-manylinux2014_x86_64.whl", hash = "sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2", size = 79078 }, - { url = "https://files.pythonhosted.org/packages/07/f6/d0e5b343768e8bcb4cda79f0f2f55051bf26177ecd5651f84c07567461cf/watchdog-6.0.0-py3-none-win32.whl", hash = "sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a", size = 79065 }, - { url = "https://files.pythonhosted.org/packages/db/d9/c495884c6e548fce18a8f40568ff120bc3a4b7b99813081c8ac0c936fa64/watchdog-6.0.0-py3-none-win_amd64.whl", hash = "sha256:cbafb470cf848d93b5d013e2ecb245d4aa1c8fd0504e863ccefa32445359d680", size = 79070 }, - { url = "https://files.pythonhosted.org/packages/33/e8/e40370e6d74ddba47f002a32919d91310d6074130fe4e17dabcafc15cbf1/watchdog-6.0.0-py3-none-win_ia64.whl", hash = "sha256:a1914259fa9e1454315171103c6a30961236f508b9b623eae470268bbcc6a22f", size = 79067 }, -] - -[[package]] -name = "watchfiles" -version = "1.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "anyio" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/03/e2/8ed598c42057de7aa5d97c472254af4906ff0a59a66699d426fc9ef795d7/watchfiles-1.0.5.tar.gz", hash = "sha256:b7529b5dcc114679d43827d8c35a07c493ad6f083633d573d81c660abc5979e9", size = 94537 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/f4/41b591f59021786ef517e1cdc3b510383551846703e03f204827854a96f8/watchfiles-1.0.5-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:237f9be419e977a0f8f6b2e7b0475ababe78ff1ab06822df95d914a945eac827", size = 405336 }, - { url = "https://files.pythonhosted.org/packages/ae/06/93789c135be4d6d0e4f63e96eea56dc54050b243eacc28439a26482b5235/watchfiles-1.0.5-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e0da39ff917af8b27a4bdc5a97ac577552a38aac0d260a859c1517ea3dc1a7c4", size = 395977 }, - { url = "https://files.pythonhosted.org/packages/d2/db/1cd89bd83728ca37054512d4d35ab69b5f12b8aa2ac9be3b0276b3bf06cc/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2cfcb3952350e95603f232a7a15f6c5f86c5375e46f0bd4ae70d43e3e063c13d", size = 455232 }, - { url = "https://files.pythonhosted.org/packages/40/90/d8a4d44ffe960517e487c9c04f77b06b8abf05eb680bed71c82b5f2cad62/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:68b2dddba7a4e6151384e252a5632efcaa9bc5d1c4b567f3cb621306b2ca9f63", size = 459151 }, - { url = "https://files.pythonhosted.org/packages/6c/da/267a1546f26465dead1719caaba3ce660657f83c9d9c052ba98fb8856e13/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:95cf944fcfc394c5f9de794ce581914900f82ff1f855326f25ebcf24d5397418", size = 489054 }, - { url = "https://files.pythonhosted.org/packages/b1/31/33850dfd5c6efb6f27d2465cc4c6b27c5a6f5ed53c6fa63b7263cf5f60f6/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:ecf6cd9f83d7c023b1aba15d13f705ca7b7d38675c121f3cc4a6e25bd0857ee9", size = 523955 }, - { url = "https://files.pythonhosted.org/packages/09/84/b7d7b67856efb183a421f1416b44ca975cb2ea6c4544827955dfb01f7dc2/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:852de68acd6212cd6d33edf21e6f9e56e5d98c6add46f48244bd479d97c967c6", size = 502234 }, - { url = "https://files.pythonhosted.org/packages/71/87/6dc5ec6882a2254cfdd8b0718b684504e737273903b65d7338efaba08b52/watchfiles-1.0.5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d5730f3aa35e646103b53389d5bc77edfbf578ab6dab2e005142b5b80a35ef25", size = 454750 }, - { url = "https://files.pythonhosted.org/packages/3d/6c/3786c50213451a0ad15170d091570d4a6554976cf0df19878002fc96075a/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:18b3bd29954bc4abeeb4e9d9cf0b30227f0f206c86657674f544cb032296acd5", size = 631591 }, - { url = "https://files.pythonhosted.org/packages/1b/b3/1427425ade4e359a0deacce01a47a26024b2ccdb53098f9d64d497f6684c/watchfiles-1.0.5-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ba5552a1b07c8edbf197055bc9d518b8f0d98a1c6a73a293bc0726dce068ed01", size = 625370 }, - { url = "https://files.pythonhosted.org/packages/15/ba/f60e053b0b5b8145d682672024aa91370a29c5c921a88977eb565de34086/watchfiles-1.0.5-cp311-cp311-win32.whl", hash = "sha256:2f1fefb2e90e89959447bc0420fddd1e76f625784340d64a2f7d5983ef9ad246", size = 277791 }, - { url = "https://files.pythonhosted.org/packages/50/ed/7603c4e164225c12c0d4e8700b64bb00e01a6c4eeea372292a3856be33a4/watchfiles-1.0.5-cp311-cp311-win_amd64.whl", hash = "sha256:b6e76ceb1dd18c8e29c73f47d41866972e891fc4cc7ba014f487def72c1cf096", size = 291622 }, - { url = "https://files.pythonhosted.org/packages/a2/c2/99bb7c96b4450e36877fde33690ded286ff555b5a5c1d925855d556968a1/watchfiles-1.0.5-cp311-cp311-win_arm64.whl", hash = "sha256:266710eb6fddc1f5e51843c70e3bebfb0f5e77cf4f27129278c70554104d19ed", size = 283699 }, - { url = "https://files.pythonhosted.org/packages/2a/8c/4f0b9bdb75a1bfbd9c78fad7d8854369283f74fe7cf03eb16be77054536d/watchfiles-1.0.5-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:b5eb568c2aa6018e26da9e6c86f3ec3fd958cee7f0311b35c2630fa4217d17f2", size = 401511 }, - { url = "https://files.pythonhosted.org/packages/dc/4e/7e15825def77f8bd359b6d3f379f0c9dac4eb09dd4ddd58fd7d14127179c/watchfiles-1.0.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0a04059f4923ce4e856b4b4e5e783a70f49d9663d22a4c3b3298165996d1377f", size = 392715 }, - { url = "https://files.pythonhosted.org/packages/58/65/b72fb817518728e08de5840d5d38571466c1b4a3f724d190cec909ee6f3f/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3e380c89983ce6e6fe2dd1e1921b9952fb4e6da882931abd1824c092ed495dec", size = 454138 }, - { url = "https://files.pythonhosted.org/packages/3e/a4/86833fd2ea2e50ae28989f5950b5c3f91022d67092bfec08f8300d8b347b/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fe43139b2c0fdc4a14d4f8d5b5d967f7a2777fd3d38ecf5b1ec669b0d7e43c21", size = 458592 }, - { url = "https://files.pythonhosted.org/packages/38/7e/42cb8df8be9a37e50dd3a818816501cf7a20d635d76d6bd65aae3dbbff68/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ee0822ce1b8a14fe5a066f93edd20aada932acfe348bede8aa2149f1a4489512", size = 487532 }, - { url = "https://files.pythonhosted.org/packages/fc/fd/13d26721c85d7f3df6169d8b495fcac8ab0dc8f0945ebea8845de4681dab/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:a0dbcb1c2d8f2ab6e0a81c6699b236932bd264d4cef1ac475858d16c403de74d", size = 522865 }, - { url = "https://files.pythonhosted.org/packages/a1/0d/7f9ae243c04e96c5455d111e21b09087d0eeaf9a1369e13a01c7d3d82478/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:a2014a2b18ad3ca53b1f6c23f8cd94a18ce930c1837bd891262c182640eb40a6", size = 499887 }, - { url = "https://files.pythonhosted.org/packages/8e/0f/a257766998e26aca4b3acf2ae97dff04b57071e991a510857d3799247c67/watchfiles-1.0.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10f6ae86d5cb647bf58f9f655fcf577f713915a5d69057a0371bc257e2553234", size = 454498 }, - { url = "https://files.pythonhosted.org/packages/81/79/8bf142575a03e0af9c3d5f8bcae911ee6683ae93a625d349d4ecf4c8f7df/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:1a7bac2bde1d661fb31f4d4e8e539e178774b76db3c2c17c4bb3e960a5de07a2", size = 630663 }, - { url = "https://files.pythonhosted.org/packages/f1/80/abe2e79f610e45c63a70d271caea90c49bbf93eb00fa947fa9b803a1d51f/watchfiles-1.0.5-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:4ab626da2fc1ac277bbf752446470b367f84b50295264d2d313e28dc4405d663", size = 625410 }, - { url = "https://files.pythonhosted.org/packages/91/6f/bc7fbecb84a41a9069c2c6eb6319f7f7df113adf113e358c57fc1aff7ff5/watchfiles-1.0.5-cp312-cp312-win32.whl", hash = "sha256:9f4571a783914feda92018ef3901dab8caf5b029325b5fe4558c074582815249", size = 277965 }, - { url = "https://files.pythonhosted.org/packages/99/a5/bf1c297ea6649ec59e935ab311f63d8af5faa8f0b86993e3282b984263e3/watchfiles-1.0.5-cp312-cp312-win_amd64.whl", hash = "sha256:360a398c3a19672cf93527f7e8d8b60d8275119c5d900f2e184d32483117a705", size = 291693 }, - { url = "https://files.pythonhosted.org/packages/7f/7b/fd01087cc21db5c47e5beae507b87965db341cce8a86f9eb12bf5219d4e0/watchfiles-1.0.5-cp312-cp312-win_arm64.whl", hash = "sha256:1a2902ede862969077b97523987c38db28abbe09fb19866e711485d9fbf0d417", size = 283287 }, -] - -[[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 = "webcolors" -version = "24.11.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/7b/29/061ec845fb58521848f3739e466efd8250b4b7b98c1b6c5bf4d40b419b7e/webcolors-24.11.1.tar.gz", hash = "sha256:ecb3d768f32202af770477b8b65f318fa4f566c22948673a977b00d589dd80f6", size = 45064 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/e8/c0e05e4684d13459f93d312077a9a2efbe04d59c393bc2b8802248c908d4/webcolors-24.11.1-py3-none-any.whl", hash = "sha256:515291393b4cdf0eb19c155749a096f779f7d909f7cceea072791cb9095b92e9", size = 14934 }, -] - -[[package]] -name = "webencodings" -version = "0.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0b/02/ae6ceac1baeda530866a85075641cec12989bd8d31af6d5ab4a3e8c92f47/webencodings-0.5.1.tar.gz", hash = "sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923", size = 9721 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl", hash = "sha256:a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78", size = 11774 }, -] - -[[package]] -name = "websocket-client" -version = "1.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e6/30/fba0d96b4b5fbf5948ed3f4681f7da2f9f64512e1d303f94b4cc174c24a5/websocket_client-1.8.0.tar.gz", hash = "sha256:3239df9f44da632f96012472805d40a23281a991027ce11d2f45a6f24ac4c3da", size = 54648 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/84/44687a29792a70e111c5c477230a72c4b957d88d16141199bf9acb7537a3/websocket_client-1.8.0-py3-none-any.whl", hash = "sha256:17b44cc997f5c498e809b22cdf2d9c7a9e71c02c8cc2b6c56e7c2d1239bfa526", size = 58826 }, -] - -[[package]] -name = "websockets" -version = "15.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/21/e6/26d09fab466b7ca9c7737474c52be4f76a40301b08362eb2dbc19dcc16c1/websockets-15.0.1.tar.gz", hash = "sha256:82544de02076bafba038ce055ee6412d68da13ab47f0c60cab827346de828dee", size = 177016 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9f/32/18fcd5919c293a398db67443acd33fde142f283853076049824fc58e6f75/websockets-15.0.1-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:823c248b690b2fd9303ba00c4f66cd5e2d8c3ba4aa968b2779be9532a4dad431", size = 175423 }, - { url = "https://files.pythonhosted.org/packages/76/70/ba1ad96b07869275ef42e2ce21f07a5b0148936688c2baf7e4a1f60d5058/websockets-15.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678999709e68425ae2593acf2e3ebcbcf2e69885a5ee78f9eb80e6e371f1bf57", size = 173082 }, - { url = "https://files.pythonhosted.org/packages/86/f2/10b55821dd40eb696ce4704a87d57774696f9451108cff0d2824c97e0f97/websockets-15.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:d50fd1ee42388dcfb2b3676132c78116490976f1300da28eb629272d5d93e905", size = 173330 }, - { url = "https://files.pythonhosted.org/packages/a5/90/1c37ae8b8a113d3daf1065222b6af61cc44102da95388ac0018fcb7d93d9/websockets-15.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d99e5546bf73dbad5bf3547174cd6cb8ba7273062a23808ffea025ecb1cf8562", size = 182878 }, - { url = "https://files.pythonhosted.org/packages/8e/8d/96e8e288b2a41dffafb78e8904ea7367ee4f891dafc2ab8d87e2124cb3d3/websockets-15.0.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:66dd88c918e3287efc22409d426c8f729688d89a0c587c88971a0faa2c2f3792", size = 181883 }, - { url = "https://files.pythonhosted.org/packages/93/1f/5d6dbf551766308f6f50f8baf8e9860be6182911e8106da7a7f73785f4c4/websockets-15.0.1-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8dd8327c795b3e3f219760fa603dcae1dcc148172290a8ab15158cf85a953413", size = 182252 }, - { url = "https://files.pythonhosted.org/packages/d4/78/2d4fed9123e6620cbf1706c0de8a1632e1a28e7774d94346d7de1bba2ca3/websockets-15.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8fdc51055e6ff4adeb88d58a11042ec9a5eae317a0a53d12c062c8a8865909e8", size = 182521 }, - { url = "https://files.pythonhosted.org/packages/e7/3b/66d4c1b444dd1a9823c4a81f50231b921bab54eee2f69e70319b4e21f1ca/websockets-15.0.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:693f0192126df6c2327cce3baa7c06f2a117575e32ab2308f7f8216c29d9e2e3", size = 181958 }, - { url = "https://files.pythonhosted.org/packages/08/ff/e9eed2ee5fed6f76fdd6032ca5cd38c57ca9661430bb3d5fb2872dc8703c/websockets-15.0.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:54479983bd5fb469c38f2f5c7e3a24f9a4e70594cd68cd1fa6b9340dadaff7cf", size = 181918 }, - { url = "https://files.pythonhosted.org/packages/d8/75/994634a49b7e12532be6a42103597b71098fd25900f7437d6055ed39930a/websockets-15.0.1-cp311-cp311-win32.whl", hash = "sha256:16b6c1b3e57799b9d38427dda63edcbe4926352c47cf88588c0be4ace18dac85", size = 176388 }, - { url = "https://files.pythonhosted.org/packages/98/93/e36c73f78400a65f5e236cd376713c34182e6663f6889cd45a4a04d8f203/websockets-15.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:27ccee0071a0e75d22cb35849b1db43f2ecd3e161041ac1ee9d2352ddf72f065", size = 176828 }, - { url = "https://files.pythonhosted.org/packages/51/6b/4545a0d843594f5d0771e86463606a3988b5a09ca5123136f8a76580dd63/websockets-15.0.1-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:3e90baa811a5d73f3ca0bcbf32064d663ed81318ab225ee4f427ad4e26e5aff3", size = 175437 }, - { url = "https://files.pythonhosted.org/packages/f4/71/809a0f5f6a06522af902e0f2ea2757f71ead94610010cf570ab5c98e99ed/websockets-15.0.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:592f1a9fe869c778694f0aa806ba0374e97648ab57936f092fd9d87f8bc03665", size = 173096 }, - { url = "https://files.pythonhosted.org/packages/3d/69/1a681dd6f02180916f116894181eab8b2e25b31e484c5d0eae637ec01f7c/websockets-15.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:0701bc3cfcb9164d04a14b149fd74be7347a530ad3bbf15ab2c678a2cd3dd9a2", size = 173332 }, - { url = "https://files.pythonhosted.org/packages/a6/02/0073b3952f5bce97eafbb35757f8d0d54812b6174ed8dd952aa08429bcc3/websockets-15.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e8b56bdcdb4505c8078cb6c7157d9811a85790f2f2b3632c7d1462ab5783d215", size = 183152 }, - { url = "https://files.pythonhosted.org/packages/74/45/c205c8480eafd114b428284840da0b1be9ffd0e4f87338dc95dc6ff961a1/websockets-15.0.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0af68c55afbd5f07986df82831c7bff04846928ea8d1fd7f30052638788bc9b5", size = 182096 }, - { url = "https://files.pythonhosted.org/packages/14/8f/aa61f528fba38578ec553c145857a181384c72b98156f858ca5c8e82d9d3/websockets-15.0.1-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:64dee438fed052b52e4f98f76c5790513235efaa1ef7f3f2192c392cd7c91b65", size = 182523 }, - { url = "https://files.pythonhosted.org/packages/ec/6d/0267396610add5bc0d0d3e77f546d4cd287200804fe02323797de77dbce9/websockets-15.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:d5f6b181bb38171a8ad1d6aa58a67a6aa9d4b38d0f8c5f496b9e42561dfc62fe", size = 182790 }, - { url = "https://files.pythonhosted.org/packages/02/05/c68c5adbf679cf610ae2f74a9b871ae84564462955d991178f95a1ddb7dd/websockets-15.0.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:5d54b09eba2bada6011aea5375542a157637b91029687eb4fdb2dab11059c1b4", size = 182165 }, - { url = "https://files.pythonhosted.org/packages/29/93/bb672df7b2f5faac89761cb5fa34f5cec45a4026c383a4b5761c6cea5c16/websockets-15.0.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:3be571a8b5afed347da347bfcf27ba12b069d9d7f42cb8c7028b5e98bbb12597", size = 182160 }, - { url = "https://files.pythonhosted.org/packages/ff/83/de1f7709376dc3ca9b7eeb4b9a07b4526b14876b6d372a4dc62312bebee0/websockets-15.0.1-cp312-cp312-win32.whl", hash = "sha256:c338ffa0520bdb12fbc527265235639fb76e7bc7faafbb93f6ba80d9c06578a9", size = 176395 }, - { url = "https://files.pythonhosted.org/packages/7d/71/abf2ebc3bbfa40f391ce1428c7168fb20582d0ff57019b69ea20fa698043/websockets-15.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:fcd5cf9e305d7b8338754470cf69cf81f420459dbae8a3b40cee57417f4614a7", size = 176841 }, - { url = "https://files.pythonhosted.org/packages/fa/a8/5b41e0da817d64113292ab1f8247140aac61cbf6cfd085d6a0fa77f4984f/websockets-15.0.1-py3-none-any.whl", hash = "sha256:f7a866fbc1e97b5c617ee4116daaa09b722101d4a3c170c787450ba409f9736f", size = 169743 }, -] - -[[package]] -name = "widgetsnbextension" -version = "4.0.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/53/2e0253c5efd69c9656b1843892052a31c36d37ad42812b5da45c62191f7e/widgetsnbextension-4.0.14.tar.gz", hash = "sha256:a3629b04e3edb893212df862038c7232f62973373869db5084aed739b437b5af", size = 1097428 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ca/51/5447876806d1088a0f8f71e16542bf350918128d0a69437df26047c8e46f/widgetsnbextension-4.0.14-py3-none-any.whl", hash = "sha256:4875a9eaf72fbf5079dc372a51a9f268fc38d46f767cbf85c43a36da5cb9b575", size = 2196503 }, -] - -[[package]] -name = "wrapt" -version = "1.17.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c3/fc/e91cc220803d7bc4db93fb02facd8461c37364151b8494762cc88b0fbcef/wrapt-1.17.2.tar.gz", hash = "sha256:41388e9d4d1522446fe79d3213196bd9e3b301a336965b9e27ca2788ebd122f3", size = 55531 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cd/f7/a2aab2cbc7a665efab072344a8949a71081eed1d2f451f7f7d2b966594a2/wrapt-1.17.2-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:ff04ef6eec3eee8a5efef2401495967a916feaa353643defcc03fc74fe213b58", size = 53308 }, - { url = "https://files.pythonhosted.org/packages/50/ff/149aba8365fdacef52b31a258c4dc1c57c79759c335eff0b3316a2664a64/wrapt-1.17.2-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:4db983e7bca53819efdbd64590ee96c9213894272c776966ca6306b73e4affda", size = 38488 }, - { url = "https://files.pythonhosted.org/packages/65/46/5a917ce85b5c3b490d35c02bf71aedaa9f2f63f2d15d9949cc4ba56e8ba9/wrapt-1.17.2-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:9abc77a4ce4c6f2a3168ff34b1da9b0f311a8f1cfd694ec96b0603dff1c79438", size = 38776 }, - { url = "https://files.pythonhosted.org/packages/ca/74/336c918d2915a4943501c77566db41d1bd6e9f4dbc317f356b9a244dfe83/wrapt-1.17.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0b929ac182f5ace000d459c59c2c9c33047e20e935f8e39371fa6e3b85d56f4a", size = 83776 }, - { url = "https://files.pythonhosted.org/packages/09/99/c0c844a5ccde0fe5761d4305485297f91d67cf2a1a824c5f282e661ec7ff/wrapt-1.17.2-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f09b286faeff3c750a879d336fb6d8713206fc97af3adc14def0cdd349df6000", size = 75420 }, - { url = "https://files.pythonhosted.org/packages/b4/b0/9fc566b0fe08b282c850063591a756057c3247b2362b9286429ec5bf1721/wrapt-1.17.2-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a7ed2d9d039bd41e889f6fb9364554052ca21ce823580f6a07c4ec245c1f5d6", size = 83199 }, - { url = "https://files.pythonhosted.org/packages/9d/4b/71996e62d543b0a0bd95dda485219856def3347e3e9380cc0d6cf10cfb2f/wrapt-1.17.2-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:129a150f5c445165ff941fc02ee27df65940fcb8a22a61828b1853c98763a64b", size = 82307 }, - { url = "https://files.pythonhosted.org/packages/39/35/0282c0d8789c0dc9bcc738911776c762a701f95cfe113fb8f0b40e45c2b9/wrapt-1.17.2-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:1fb5699e4464afe5c7e65fa51d4f99e0b2eadcc176e4aa33600a3df7801d6662", size = 75025 }, - { url = "https://files.pythonhosted.org/packages/4f/6d/90c9fd2c3c6fee181feecb620d95105370198b6b98a0770cba090441a828/wrapt-1.17.2-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9a2bce789a5ea90e51a02dfcc39e31b7f1e662bc3317979aa7e5538e3a034f72", size = 81879 }, - { url = "https://files.pythonhosted.org/packages/8f/fa/9fb6e594f2ce03ef03eddbdb5f4f90acb1452221a5351116c7c4708ac865/wrapt-1.17.2-cp311-cp311-win32.whl", hash = "sha256:4afd5814270fdf6380616b321fd31435a462019d834f83c8611a0ce7484c7317", size = 36419 }, - { url = "https://files.pythonhosted.org/packages/47/f8/fb1773491a253cbc123c5d5dc15c86041f746ed30416535f2a8df1f4a392/wrapt-1.17.2-cp311-cp311-win_amd64.whl", hash = "sha256:acc130bc0375999da18e3d19e5a86403667ac0c4042a094fefb7eec8ebac7cf3", size = 38773 }, - { url = "https://files.pythonhosted.org/packages/a1/bd/ab55f849fd1f9a58ed7ea47f5559ff09741b25f00c191231f9f059c83949/wrapt-1.17.2-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:d5e2439eecc762cd85e7bd37161d4714aa03a33c5ba884e26c81559817ca0925", size = 53799 }, - { url = "https://files.pythonhosted.org/packages/53/18/75ddc64c3f63988f5a1d7e10fb204ffe5762bc663f8023f18ecaf31a332e/wrapt-1.17.2-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:3fc7cb4c1c744f8c05cd5f9438a3caa6ab94ce8344e952d7c45a8ed59dd88392", size = 38821 }, - { url = "https://files.pythonhosted.org/packages/48/2a/97928387d6ed1c1ebbfd4efc4133a0633546bec8481a2dd5ec961313a1c7/wrapt-1.17.2-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8fdbdb757d5390f7c675e558fd3186d590973244fab0c5fe63d373ade3e99d40", size = 38919 }, - { url = "https://files.pythonhosted.org/packages/73/54/3bfe5a1febbbccb7a2f77de47b989c0b85ed3a6a41614b104204a788c20e/wrapt-1.17.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5bb1d0dbf99411f3d871deb6faa9aabb9d4e744d67dcaaa05399af89d847a91d", size = 88721 }, - { url = "https://files.pythonhosted.org/packages/25/cb/7262bc1b0300b4b64af50c2720ef958c2c1917525238d661c3e9a2b71b7b/wrapt-1.17.2-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d18a4865f46b8579d44e4fe1e2bcbc6472ad83d98e22a26c963d46e4c125ef0b", size = 80899 }, - { url = "https://files.pythonhosted.org/packages/2a/5a/04cde32b07a7431d4ed0553a76fdb7a61270e78c5fd5a603e190ac389f14/wrapt-1.17.2-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bc570b5f14a79734437cb7b0500376b6b791153314986074486e0b0fa8d71d98", size = 89222 }, - { url = "https://files.pythonhosted.org/packages/09/28/2e45a4f4771fcfb109e244d5dbe54259e970362a311b67a965555ba65026/wrapt-1.17.2-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6d9187b01bebc3875bac9b087948a2bccefe464a7d8f627cf6e48b1bbae30f82", size = 86707 }, - { url = "https://files.pythonhosted.org/packages/c6/d2/dcb56bf5f32fcd4bd9aacc77b50a539abdd5b6536872413fd3f428b21bed/wrapt-1.17.2-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:9e8659775f1adf02eb1e6f109751268e493c73716ca5761f8acb695e52a756ae", size = 79685 }, - { url = "https://files.pythonhosted.org/packages/80/4e/eb8b353e36711347893f502ce91c770b0b0929f8f0bed2670a6856e667a9/wrapt-1.17.2-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:e8b2816ebef96d83657b56306152a93909a83f23994f4b30ad4573b00bd11bb9", size = 87567 }, - { url = "https://files.pythonhosted.org/packages/17/27/4fe749a54e7fae6e7146f1c7d914d28ef599dacd4416566c055564080fe2/wrapt-1.17.2-cp312-cp312-win32.whl", hash = "sha256:468090021f391fe0056ad3e807e3d9034e0fd01adcd3bdfba977b6fdf4213ea9", size = 36672 }, - { url = "https://files.pythonhosted.org/packages/15/06/1dbf478ea45c03e78a6a8c4be4fdc3c3bddea5c8de8a93bc971415e47f0f/wrapt-1.17.2-cp312-cp312-win_amd64.whl", hash = "sha256:ec89ed91f2fa8e3f52ae53cd3cf640d6feff92ba90d62236a81e4e563ac0e991", size = 38865 }, - { url = "https://files.pythonhosted.org/packages/2d/82/f56956041adef78f849db6b289b282e72b55ab8045a75abad81898c28d19/wrapt-1.17.2-py3-none-any.whl", hash = "sha256:b18f2d1533a71f069c7f82d524a52599053d4c7166e9dd374ae2136b7f40f7c8", size = 23594 }, -] - -[[package]] -name = "xarray" -version = "2025.4.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "numpy" }, - { name = "packaging" }, - { name = "pandas" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/9b/29/37761364e137db13898cf5a790574dd7883f7355d5dfb42b66ee7a9a6318/xarray-2025.4.0.tar.gz", hash = "sha256:2a89cd6a1dfd589aa90ac45f4e483246f31fc641836db45dd2790bb78bd333dc", size = 2974151 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/1e/96fd96419fec1a37da998a1ca3d558f2cae2f6f3cd5015170371b05a2b6b/xarray-2025.4.0-py3-none-any.whl", hash = "sha256:b27defd082c5cb85d32c695708de6bb05c2838fb7caaf3f952982e602a35b9b8", size = 1290171 }, -] - -[[package]] -name = "xyzservices" -version = "2025.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/af/c0f7f97bb320d14c089476f487b81f733238cc5603e0914f2e409f49d589/xyzservices-2025.4.0.tar.gz", hash = "sha256:6fe764713648fac53450fbc61a3c366cb6ae5335a1b2ae0c3796b495de3709d8", size = 1134722 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d6/7d/b77455d7c7c51255b2992b429107fab811b2e36ceaf76da1e55a045dc568/xyzservices-2025.4.0-py3-none-any.whl", hash = "sha256:8d4db9a59213ccb4ce1cf70210584f30b10795bff47627cdfb862b39ff6e10c9", size = 90391 }, -] - -[[package]] -name = "yarl" -version = "1.20.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "idna" }, - { name = "multidict" }, - { name = "propcache" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/62/51/c0edba5219027f6eab262e139f73e2417b0f4efffa23bf562f6e18f76ca5/yarl-1.20.0.tar.gz", hash = "sha256:686d51e51ee5dfe62dec86e4866ee0e9ed66df700d55c828a615640adc885307", size = 185258 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/60/82/a59d8e21b20ffc836775fa7daedac51d16bb8f3010c4fcb495c4496aa922/yarl-1.20.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:fdb5204d17cb32b2de2d1e21c7461cabfacf17f3645e4b9039f210c5d3378bf3", size = 145178 }, - { url = "https://files.pythonhosted.org/packages/ba/81/315a3f6f95947cfbf37c92d6fbce42a1a6207b6c38e8c2b452499ec7d449/yarl-1.20.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:eaddd7804d8e77d67c28d154ae5fab203163bd0998769569861258e525039d2a", size = 96859 }, - { url = "https://files.pythonhosted.org/packages/ad/17/9b64e575583158551b72272a1023cdbd65af54fe13421d856b2850a6ddb7/yarl-1.20.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:634b7ba6b4a85cf67e9df7c13a7fb2e44fa37b5d34501038d174a63eaac25ee2", size = 94647 }, - { url = "https://files.pythonhosted.org/packages/2c/29/8f291e7922a58a21349683f6120a85701aeefaa02e9f7c8a2dc24fe3f431/yarl-1.20.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:6d409e321e4addf7d97ee84162538c7258e53792eb7c6defd0c33647d754172e", size = 355788 }, - { url = "https://files.pythonhosted.org/packages/26/6d/b4892c80b805c42c228c6d11e03cafabf81662d371b0853e7f0f513837d5/yarl-1.20.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:ea52f7328a36960ba3231c6677380fa67811b414798a6e071c7085c57b6d20a9", size = 344613 }, - { url = "https://files.pythonhosted.org/packages/d7/0e/517aa28d3f848589bae9593717b063a544b86ba0a807d943c70f48fcf3bb/yarl-1.20.0-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:c8703517b924463994c344dcdf99a2d5ce9eca2b6882bb640aa555fb5efc706a", size = 370953 }, - { url = "https://files.pythonhosted.org/packages/5f/9b/5bd09d2f1ad6e6f7c2beae9e50db78edd2cca4d194d227b958955573e240/yarl-1.20.0-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:077989b09ffd2f48fb2d8f6a86c5fef02f63ffe6b1dd4824c76de7bb01e4f2e2", size = 369204 }, - { url = "https://files.pythonhosted.org/packages/9c/85/d793a703cf4bd0d4cd04e4b13cc3d44149470f790230430331a0c1f52df5/yarl-1.20.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0acfaf1da020253f3533526e8b7dd212838fdc4109959a2c53cafc6db611bff2", size = 358108 }, - { url = "https://files.pythonhosted.org/packages/6f/54/b6c71e13549c1f6048fbc14ce8d930ac5fb8bafe4f1a252e621a24f3f1f9/yarl-1.20.0-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:b4230ac0b97ec5eeb91d96b324d66060a43fd0d2a9b603e3327ed65f084e41f8", size = 346610 }, - { url = "https://files.pythonhosted.org/packages/a0/1a/d6087d58bdd0d8a2a37bbcdffac9d9721af6ebe50d85304d9f9b57dfd862/yarl-1.20.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a6a1e6ae21cdd84011c24c78d7a126425148b24d437b5702328e4ba640a8902", size = 365378 }, - { url = "https://files.pythonhosted.org/packages/02/84/e25ddff4cbc001dbc4af76f8d41a3e23818212dd1f0a52044cbc60568872/yarl-1.20.0-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:86de313371ec04dd2531f30bc41a5a1a96f25a02823558ee0f2af0beaa7ca791", size = 356919 }, - { url = "https://files.pythonhosted.org/packages/04/76/898ae362353bf8f64636495d222c8014c8e5267df39b1a9fe1e1572fb7d0/yarl-1.20.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:dd59c9dd58ae16eaa0f48c3d0cbe6be8ab4dc7247c3ff7db678edecbaf59327f", size = 364248 }, - { url = "https://files.pythonhosted.org/packages/1b/b0/9d9198d83a622f1c40fdbf7bd13b224a6979f2e1fc2cf50bfb1d8773c495/yarl-1.20.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:a0bc5e05f457b7c1994cc29e83b58f540b76234ba6b9648a4971ddc7f6aa52da", size = 378418 }, - { url = "https://files.pythonhosted.org/packages/c7/ce/1f50c1cc594cf5d3f5bf4a9b616fca68680deaec8ad349d928445ac52eb8/yarl-1.20.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:c9471ca18e6aeb0e03276b5e9b27b14a54c052d370a9c0c04a68cefbd1455eb4", size = 383850 }, - { url = "https://files.pythonhosted.org/packages/89/1e/a59253a87b35bfec1a25bb5801fb69943330b67cfd266278eb07e0609012/yarl-1.20.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:40ed574b4df723583a26c04b298b283ff171bcc387bc34c2683235e2487a65a5", size = 381218 }, - { url = "https://files.pythonhosted.org/packages/85/b0/26f87df2b3044b0ef1a7cf66d321102bdca091db64c5ae853fcb2171c031/yarl-1.20.0-cp311-cp311-win32.whl", hash = "sha256:db243357c6c2bf3cd7e17080034ade668d54ce304d820c2a58514a4e51d0cfd6", size = 86606 }, - { url = "https://files.pythonhosted.org/packages/33/46/ca335c2e1f90446a77640a45eeb1cd8f6934f2c6e4df7db0f0f36ef9f025/yarl-1.20.0-cp311-cp311-win_amd64.whl", hash = "sha256:8c12cd754d9dbd14204c328915e23b0c361b88f3cffd124129955e60a4fbfcfb", size = 93374 }, - { url = "https://files.pythonhosted.org/packages/c3/e8/3efdcb83073df978bb5b1a9cc0360ce596680e6c3fac01f2a994ccbb8939/yarl-1.20.0-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:e06b9f6cdd772f9b665e5ba8161968e11e403774114420737f7884b5bd7bdf6f", size = 147089 }, - { url = "https://files.pythonhosted.org/packages/60/c3/9e776e98ea350f76f94dd80b408eaa54e5092643dbf65fd9babcffb60509/yarl-1.20.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:b9ae2fbe54d859b3ade40290f60fe40e7f969d83d482e84d2c31b9bff03e359e", size = 97706 }, - { url = "https://files.pythonhosted.org/packages/0c/5b/45cdfb64a3b855ce074ae607b9fc40bc82e7613b94e7612b030255c93a09/yarl-1.20.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6d12b8945250d80c67688602c891237994d203d42427cb14e36d1a732eda480e", size = 95719 }, - { url = "https://files.pythonhosted.org/packages/2d/4e/929633b249611eeed04e2f861a14ed001acca3ef9ec2a984a757b1515889/yarl-1.20.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:087e9731884621b162a3e06dc0d2d626e1542a617f65ba7cc7aeab279d55ad33", size = 343972 }, - { url = "https://files.pythonhosted.org/packages/49/fd/047535d326c913f1a90407a3baf7ff535b10098611eaef2c527e32e81ca1/yarl-1.20.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.manylinux_2_31_armv7l.whl", hash = "sha256:69df35468b66c1a6e6556248e6443ef0ec5f11a7a4428cf1f6281f1879220f58", size = 339639 }, - { url = "https://files.pythonhosted.org/packages/48/2f/11566f1176a78f4bafb0937c0072410b1b0d3640b297944a6a7a556e1d0b/yarl-1.20.0-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3b2992fe29002fd0d4cbaea9428b09af9b8686a9024c840b8a2b8f4ea4abc16f", size = 353745 }, - { url = "https://files.pythonhosted.org/packages/26/17/07dfcf034d6ae8837b33988be66045dd52f878dfb1c4e8f80a7343f677be/yarl-1.20.0-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:4c903e0b42aab48abfbac668b5a9d7b6938e721a6341751331bcd7553de2dcae", size = 354178 }, - { url = "https://files.pythonhosted.org/packages/15/45/212604d3142d84b4065d5f8cab6582ed3d78e4cc250568ef2a36fe1cf0a5/yarl-1.20.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bf099e2432131093cc611623e0b0bcc399b8cddd9a91eded8bfb50402ec35018", size = 349219 }, - { url = "https://files.pythonhosted.org/packages/e6/e0/a10b30f294111c5f1c682461e9459935c17d467a760c21e1f7db400ff499/yarl-1.20.0-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8a7f62f5dc70a6c763bec9ebf922be52aa22863d9496a9a30124d65b489ea672", size = 337266 }, - { url = "https://files.pythonhosted.org/packages/33/a6/6efa1d85a675d25a46a167f9f3e80104cde317dfdf7f53f112ae6b16a60a/yarl-1.20.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:54ac15a8b60382b2bcefd9a289ee26dc0920cf59b05368c9b2b72450751c6eb8", size = 360873 }, - { url = "https://files.pythonhosted.org/packages/77/67/c8ab718cb98dfa2ae9ba0f97bf3cbb7d45d37f13fe1fbad25ac92940954e/yarl-1.20.0-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:25b3bc0763a7aca16a0f1b5e8ef0f23829df11fb539a1b70476dcab28bd83da7", size = 360524 }, - { url = "https://files.pythonhosted.org/packages/bd/e8/c3f18660cea1bc73d9f8a2b3ef423def8dadbbae6c4afabdb920b73e0ead/yarl-1.20.0-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:b2586e36dc070fc8fad6270f93242124df68b379c3a251af534030a4a33ef594", size = 365370 }, - { url = "https://files.pythonhosted.org/packages/c9/99/33f3b97b065e62ff2d52817155a89cfa030a1a9b43fee7843ef560ad9603/yarl-1.20.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:866349da9d8c5290cfefb7fcc47721e94de3f315433613e01b435473be63daa6", size = 373297 }, - { url = "https://files.pythonhosted.org/packages/3d/89/7519e79e264a5f08653d2446b26d4724b01198a93a74d2e259291d538ab1/yarl-1.20.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:33bb660b390a0554d41f8ebec5cd4475502d84104b27e9b42f5321c5192bfcd1", size = 378771 }, - { url = "https://files.pythonhosted.org/packages/3a/58/6c460bbb884abd2917c3eef6f663a4a873f8dc6f498561fc0ad92231c113/yarl-1.20.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:737e9f171e5a07031cbee5e9180f6ce21a6c599b9d4b2c24d35df20a52fabf4b", size = 375000 }, - { url = "https://files.pythonhosted.org/packages/3b/2a/dd7ed1aa23fea996834278d7ff178f215b24324ee527df53d45e34d21d28/yarl-1.20.0-cp312-cp312-win32.whl", hash = "sha256:839de4c574169b6598d47ad61534e6981979ca2c820ccb77bf70f4311dd2cc64", size = 86355 }, - { url = "https://files.pythonhosted.org/packages/ca/c6/333fe0338305c0ac1c16d5aa7cc4841208d3252bbe62172e0051006b5445/yarl-1.20.0-cp312-cp312-win_amd64.whl", hash = "sha256:3d7dbbe44b443b0c4aa0971cb07dcb2c2060e4a9bf8d1301140a33a93c98e18c", size = 92904 }, - { url = "https://files.pythonhosted.org/packages/ea/1f/70c57b3d7278e94ed22d85e09685d3f0a38ebdd8c5c73b65ba4c0d0fe002/yarl-1.20.0-py3-none-any.whl", hash = "sha256:5d0fe6af927a47a230f31e6004621fd0959eaa915fc62acfafa67ff7229a3124", size = 46124 }, -] - -[[package]] -name = "yjs-widgets" -version = "0.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/17/0b/3cccdf4f401d3f3ef20073d4e969bebcb617ca3c0b83994b0581a9603f85/yjs_widgets-0.4.0.tar.gz", hash = "sha256:31448f51b3f16c8e6790c613630a280ecb22761c4b790f218eefabde27bde472", size = 149444 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/df/22/6899489c9a87757769f4ad36f48325385998f91142d4c57117e828783b1d/yjs_widgets-0.4.0-py3-none-any.whl", hash = "sha256:91f11e24688379a3392d34765deb7cb08ffd60c0cbc022c67fccd21818786b7a", size = 18007 }, -] - -[[package]] -name = "ypywidgets" -version = "0.9.7" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "comm" }, - { name = "pycrdt" }, - { name = "reacttrs" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/46/54/548106c7c40ddc7f4d74cae984e0dd68d57dabb542e3ed4748021c4ce2a9/ypywidgets-0.9.7.tar.gz", hash = "sha256:c80d8aa72fd0d1f0880ae66f2b57c311f64ae14a2615d84fbd9fba36628d43d4", size = 5728 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3a/07/436016f1d704bde674b44e90d95101c8f8fabcc636294f30b356fc71b097/ypywidgets-0.9.7-py3-none-any.whl", hash = "sha256:98afc04ae01db3d924b832199c60db993680786fe63ad9dabcf50698223e127b", size = 5180 }, -] - -[[package]] -name = "zarr" -version = "3.0.8" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "donfig" }, - { name = "numcodecs", extra = ["crc32c"] }, - { name = "numpy" }, - { name = "packaging" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/52/60/9652fd0536fbaca8d08cbc1a5572c52e0ce01773297df75da8bb47e45907/zarr-3.0.8.tar.gz", hash = "sha256:88505d095af899a88ae8ac4db02f4650ef0801d2ff6f65b6d1f0a45dcf760a6d", size = 256825 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/00/3b/e20bdf84088c11f2c396d034506cbffadd53e024111c1aa4585c2aba1523/zarr-3.0.8-py3-none-any.whl", hash = "sha256:7f81e7aec086437d98882aa432209107114bd7f3a9f4958b2af9c6b5928a70a7", size = 205364 }, -] - -[[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 4d263dd1e41eb56bb47dd0580414e7d61791c3ae Mon Sep 17 00:00:00 2001 From: taddyb Date: Tue, 1 Jul 2025 16:23:48 -0400 Subject: [PATCH 69/97] added dotenv() to load creds for API --- README.md | 6 +++--- src/icefabric_api/app/main.py | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3e3111f..1b4b45c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ An [Apache Iceberg](https://py.iceberg.apache.org/) implementation of the Hydrofabric to disseminate continental hydrologic data > [!NOTE] -> To run any of the functions in this repo your AWS test account credentials need to be in your `.env` file and your `.pyiceberg.yaml` settings need to up to date +> To run any of the functions in this repo your AWS test account credentials need to be in your `.env` file and your `.pyiceberg.yaml` settings need to up to date with `AWS_DEFAULT_REGION="us-east-1"` set ### Getting Started This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: @@ -21,11 +21,11 @@ uv sync ### Running the API locally To run the API locally, ensure your `.env` file in your project root has the right credentials, then run ```sh -uv pip install -e src/icefabric_api +uv sync cd src/icefabric_api python -m app.main ``` -This should spin up the API services +This should spin up the API services. ### Building the API through Docker To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run diff --git a/src/icefabric_api/app/main.py b/src/icefabric_api/app/main.py index 31833ba..771825a 100644 --- a/src/icefabric_api/app/main.py +++ b/src/icefabric_api/app/main.py @@ -2,6 +2,7 @@ from pathlib import Path import uvicorn +from dotenv import load_dotenv from fastapi import FastAPI, status from pydantic import BaseModel @@ -17,6 +18,9 @@ redoc_url="/redoc", ) +env_path = Path(__file__).parents[3] / ".env" +load_dotenv(dotenv_path=env_path) + class HealthCheck(BaseModel): """Response model to validate and return when performing a health check.""" From 4d86adf0d3a48a40cfb9f0d618f6667c8956a1b6 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Wed, 2 Jul 2025 12:10:52 -0400 Subject: [PATCH 70/97] initial commit: added jira story issue template and PR template (#42) --- .../ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md | 31 +++++++++++++++ .github/ISSUE_TEMPLATE/capability.md | 38 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md create mode 100644 .github/ISSUE_TEMPLATE/capability.md diff --git a/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md b/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..d73c01d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,31 @@ +## Issue Addressed + + + +Fixes # (issue number) + +## Description + + + +## Type of Change + +- [ ] Bug fix (non-breaking change which fixes an issue) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Code cleanup/refactor +- [ ] Documentation update + +Other (please specify): + +## Checklist + +- [ ] Branch is up to date with master +- [ ] Updated tests or added new tests +- [ ] Tests & pre-commit hooks pass +- [ ] Updated documentation (if applicable) +- [ ] Code follows established style and conventions diff --git a/.github/ISSUE_TEMPLATE/capability.md b/.github/ISSUE_TEMPLATE/capability.md new file mode 100644 index 0000000..41378f6 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/capability.md @@ -0,0 +1,38 @@ +--- +name: JIRA Story/Capability +about: The structure for outlining work being done on a JIRA story +labels: JIRA Story +--- + +# Capability + + + +## Task + + + +## Plan/Outline + + + + +### TODOS + + +- [ ] + +### Additional components / Context + + From 54a733f1f79517b80b4243dc301b5bb9919ceb6d Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Wed, 2 Jul 2025 12:12:47 -0400 Subject: [PATCH 71/97] chore: update PULL_REQUEST_TEMPLATE.md path --- .github/{ISSUE_TEMPLATE => }/PULL_REQUEST_TEMPLATE.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/{ISSUE_TEMPLATE => }/PULL_REQUEST_TEMPLATE.md (100%) diff --git a/.github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 100% rename from .github/ISSUE_TEMPLATE/PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md From 9f39384aca58c8c07c2d4804d4068eb4a496ba78 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Mon, 7 Jul 2025 17:31:30 -0400 Subject: [PATCH 72/97] NGWPC 6903: initial commit: refactored the repo based on #41 (#43) * initial commit: refactored the repo based on #41 * patch: updated pyiceberg security settings * updated load_creds() to replace doad_dotenv() * docs: updating api/manage/tools docs in the mkdocs user guide * patch: updating martin compose to look in local dir rather than PWD * tests: added local tests for icechunk topobathy --- .gitignore | 4 +- LICENSE | 757 +- README.md | 13 +- {src/icefabric_api/app => app}/__init__.py | 0 {src/icefabric_api/app => app}/main.py | 13 +- .../app => app}/routers/__init__.py | 0 .../routers/hydrofabric/__init__.py | 0 .../app => app}/routers/hydrofabric/router.py | 3 +- .../routers/module_params/__init__.py | 0 .../routers/module_params/router.py | 2 +- .../streamflow_observations/__init__.py | 0 .../routers/streamflow_observations/router.py | 10 +- conftest.py | 124 - data/LICENSE | 540 ++ .../data => data/module_ipes}/cfe_params.csv | 0 .../data => data/module_ipes}/lasam_out.csv | 0 .../module_ipes}/lasam_params.csv | 0 .../data => data/module_ipes}/modules.csv | 0 .../module_ipes}/noah_owp_modular_params.csv | 0 .../module_ipes}/sac_sma_params.csv | 0 .../data => data/module_ipes}/sft_params.csv | 0 .../data => data/module_ipes}/smp_params.csv | 0 .../module_ipes}/snow17_params.csv | 0 .../module_ipes}/topmodel_params.csv | 0 .../data => data/module_ipes}/ueb_params.csv | 0 docs/index.md | 23 +- docs/user_guide/icefabric_api.md | 6 +- docs/user_guide/icefabric_manage.md | 57 - .../Demo_Verification_TIF_to_xrDataset.ipynb | 635 -- .../XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb | 7043 ----------------- examples/geopackage_viewer/requirements.txt | 9 - .../{geopackage.ipynb => viewer.ipynb} | 192 +- examples/iceberg/Demo_Iceberg.ipynb | 339 - ...avel.ipynb => pyiceberg_time_travel.ipynb} | 28 +- .../querying_ras_xs.ipynb} | 69 +- examples/iceberg/quick_start.ipynb | 1071 --- examples/icechunk/README.icechunk.md | 19 - .../icechunk/icechunk_data_ret_and_plot.ipynb | 43 +- examples/icechunk/icechunk_to_tiff.ipynb | 23 +- .../icechunk_version_control_examples.ipynb | 54 +- .../martin/compose.martin.yaml | 2 +- .../icechunk_data_viewer/requirements.txt | 3 - examples/quick_start.ipynb | 44 + mkdocs.yml | 5 +- pyproject.toml | 103 +- scripts/get_module_parameters.py | 29 - scripts/gpkg_to_parquet.py | 14 - scripts/gpkg_to_parquet_all_domains.py | 28 - src/icefabric/__init__.py | 6 + src/icefabric/builds/__init__.py | 10 + .../_api.py => icefabric/builds/build.py} | 4 +- .../builds}/iceberg_table.py | 0 .../builds}/icechunk_s3_module.py | 131 +- .../builds}/map_fim_data.py | 0 src/icefabric/helpers/__init__.py | 24 + .../helpers}/arch_weather_file_utils.py | 29 +- src/icefabric/helpers/creds.py | 29 + src/icefabric/helpers/geopackage.py | 72 + .../helpers}/nc_conv_utils.py | 4 +- .../helpers}/topobathy_ic_to_tif.py | 20 +- src/icefabric/hydrofabric/__init__.py | 9 + .../hydrofabric/origin.py} | 72 +- .../hydrofabric/subset.py} | 46 +- src/icefabric/modules/__init__.py | 11 + .../modules}/create_ipes.py | 68 +- .../iceberg => icefabric/modules}/rnr.py | 2 +- src/icefabric/schemas/__init__.py | 6 + src/icefabric/schemas/hydrofabric.py | 28 + src/icefabric/schemas/topobathy.py | 81 + src/icefabric/ui/__init__.py | 9 + .../geo => icefabric/ui}/geo_utils.py | 52 +- src/icefabric_api/README.md | 102 - src/icefabric_api/pyproject.toml | 15 - .../src/icefabric_api/__init__.py | 6 - src/icefabric_manage/README.md | 9 - src/icefabric_manage/pyproject.toml | 32 - .../src/icefabric_manage/__init__.py | 5 - src/icefabric_tools/README.md | 6 - src/icefabric_tools/pyproject.toml | 54 - .../src/icefabric_tools/__init__.py | 12 - .../src/icefabric_tools/geo/__init__.py | 0 .../src/icefabric_tools/iceberg/__init__.py | 0 .../src/icefabric_tools/icechunk/__init__.py | 6 - .../icechunk/icechunk_s3_migration.py | 58 - .../terraform => terraform}/README.md | 0 .../environments/test/.terraform.lock.hcl | 0 .../environments/test/backend.tf | 0 .../environments/test/main.tf | 0 .../environments/test/terraform.tfvars | 2 +- .../environments/test/variables.tf | 2 +- .../terraform => terraform}/iceberg_demo.py | 0 .../modules/iceberg/main.tf | 2 +- .../modules/iceberg/variables.tf | 2 +- tests/README.md | 7 - .../builds => tests}/__init__.py | 0 .../app}/test_hydrofabric_router.py | 0 .../tests => tests/app}/test_main.py | 0 .../test_streamflow_observations_router.py | 0 tests/conftest.py | 159 + tests/data/gages-06710385.gpkg | Bin 0 -> 319488 bytes ...ta_from_20211231_1400_to_20220101_1400.csv | 26 + ...rom_20211231_1400_to_20220101_1400.parquet | Bin 0 -> 3415 bytes tests/integration/test_topobathy_icechunk.py | 52 +- .../tests => tests}/test_subset.py | 3 +- .../tests => tests}/test_utils.py | 3 +- tools/hydrofabric/hfsubset.py | 32 + tools/icechunk/convert_to_tif.py | 18 + tools/icechunk/icechunk_s3_migration.py | 72 + .../icechunk/icechunk_testing.py | 42 +- tools/ipes/get_module_parameters.py | 52 + tools/pyiceberg/gpkg_to_parquet.py | 36 + .../pyiceberg/remote_builds}/README.md | 0 .../remote_builds}/build_fema_ble.py | 4 +- .../remote_builds}/build_fema_mip.py | 4 +- .../remote_builds}/build_hydrofabric.py | 4 +- .../build_iceberg_bathymetry_ml_auxiliary.py | 4 +- .../remote_builds}/build_parameters.py | 23 +- .../build_usgs_streamflow_observations.py | 4 +- 118 files changed, 2008 insertions(+), 10868 deletions(-) rename {src/icefabric_api/app => app}/__init__.py (100%) rename {src/icefabric_api/app => app}/main.py (79%) rename {src/icefabric_api/app => app}/routers/__init__.py (100%) rename {src/icefabric_api/app => app}/routers/hydrofabric/__init__.py (100%) rename {src/icefabric_api/app => app}/routers/hydrofabric/router.py (97%) rename {src/icefabric_api/app => app}/routers/module_params/__init__.py (100%) rename {src/icefabric_api/app => app}/routers/module_params/router.py (94%) rename {src/icefabric_api/app => app}/routers/streamflow_observations/__init__.py (100%) rename {src/icefabric_api/app => app}/routers/streamflow_observations/router.py (97%) delete mode 100644 conftest.py create mode 100644 data/LICENSE rename {src/icefabric_api/data => data/module_ipes}/cfe_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/lasam_out.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/lasam_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/modules.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/noah_owp_modular_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/sac_sma_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/sft_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/smp_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/snow17_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/topmodel_params.csv (100%) rename {src/icefabric_api/data => data/module_ipes}/ueb_params.csv (100%) delete mode 100644 docs/user_guide/icefabric_manage.md delete mode 100644 examples/Demo_Verification_TIF_to_xrDataset.ipynb delete mode 100644 examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb delete mode 100644 examples/geopackage_viewer/requirements.txt rename examples/geopackage_viewer/{geopackage.ipynb => viewer.ipynb} (98%) delete mode 100644 examples/iceberg/Demo_Iceberg.ipynb rename examples/iceberg/{pyiceberg_timetravel.ipynb => pyiceberg_time_travel.ipynb} (95%) rename examples/{ras_xs/querying.ipynb => iceberg/querying_ras_xs.ipynb} (86%) delete mode 100644 examples/iceberg/quick_start.ipynb delete mode 100644 examples/icechunk/README.icechunk.md delete mode 100644 examples/icechunk_data_viewer/requirements.txt create mode 100644 examples/quick_start.ipynb delete mode 100644 scripts/get_module_parameters.py delete mode 100644 scripts/gpkg_to_parquet.py delete mode 100644 scripts/gpkg_to_parquet_all_domains.py create mode 100644 src/icefabric/__init__.py create mode 100644 src/icefabric/builds/__init__.py rename src/{icefabric_manage/src/icefabric_manage/_api.py => icefabric/builds/build.py} (92%) rename src/{icefabric_manage/src/icefabric_manage => icefabric/builds}/iceberg_table.py (100%) rename src/{icefabric_tools/src/icefabric_tools/icechunk => icefabric/builds}/icechunk_s3_module.py (79%) rename src/{icefabric_manage/src/icefabric_manage => icefabric/builds}/map_fim_data.py (100%) create mode 100644 src/icefabric/helpers/__init__.py rename src/{icefabric_tools/src/icefabric_tools/icechunk => icefabric/helpers}/arch_weather_file_utils.py (93%) create mode 100644 src/icefabric/helpers/creds.py create mode 100644 src/icefabric/helpers/geopackage.py rename src/{icefabric_tools/src/icefabric_tools/icechunk => icefabric/helpers}/nc_conv_utils.py (97%) rename src/{icefabric_tools/src/icefabric_tools/icechunk => icefabric/helpers}/topobathy_ic_to_tif.py (57%) create mode 100644 src/icefabric/hydrofabric/__init__.py rename src/{icefabric_tools/src/icefabric_tools/iceberg/utils.py => icefabric/hydrofabric/origin.py} (51%) rename src/{icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py => icefabric/hydrofabric/subset.py} (94%) create mode 100644 src/icefabric/modules/__init__.py rename src/{icefabric_api/src/icefabric_api => icefabric/modules}/create_ipes.py (88%) rename src/{icefabric_tools/src/icefabric_tools/iceberg => icefabric/modules}/rnr.py (98%) create mode 100644 src/icefabric/schemas/__init__.py create mode 100644 src/icefabric/schemas/hydrofabric.py create mode 100644 src/icefabric/schemas/topobathy.py create mode 100644 src/icefabric/ui/__init__.py rename src/{icefabric_tools/src/icefabric_tools/geo => icefabric/ui}/geo_utils.py (60%) delete mode 100644 src/icefabric_api/README.md delete mode 100644 src/icefabric_api/pyproject.toml delete mode 100644 src/icefabric_api/src/icefabric_api/__init__.py delete mode 100644 src/icefabric_manage/README.md delete mode 100644 src/icefabric_manage/pyproject.toml delete mode 100644 src/icefabric_manage/src/icefabric_manage/__init__.py delete mode 100644 src/icefabric_tools/README.md delete mode 100644 src/icefabric_tools/pyproject.toml delete mode 100644 src/icefabric_tools/src/icefabric_tools/__init__.py delete mode 100644 src/icefabric_tools/src/icefabric_tools/geo/__init__.py delete mode 100644 src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py delete mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py delete mode 100644 src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py rename {src/icefabric_manage/terraform => terraform}/README.md (100%) rename {src/icefabric_manage/terraform => terraform}/environments/test/.terraform.lock.hcl (100%) rename {src/icefabric_manage/terraform => terraform}/environments/test/backend.tf (100%) rename {src/icefabric_manage/terraform => terraform}/environments/test/main.tf (100%) rename {src/icefabric_manage/terraform => terraform}/environments/test/terraform.tfvars (96%) rename {src/icefabric_manage/terraform => terraform}/environments/test/variables.tf (99%) rename {src/icefabric_manage/terraform => terraform}/iceberg_demo.py (100%) rename {src/icefabric_manage/terraform => terraform}/modules/iceberg/main.tf (99%) rename {src/icefabric_manage/terraform => terraform}/modules/iceberg/variables.tf (99%) delete mode 100644 tests/README.md rename {src/icefabric_manage/builds => tests}/__init__.py (100%) rename {src/icefabric_api/tests => tests/app}/test_hydrofabric_router.py (100%) rename {src/icefabric_api/tests => tests/app}/test_main.py (100%) rename {src/icefabric_api/tests => tests/app}/test_streamflow_observations_router.py (100%) create mode 100644 tests/conftest.py create mode 100644 tests/data/gages-06710385.gpkg create mode 100644 tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv create mode 100644 tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet rename {src/icefabric_tools/tests => tests}/test_subset.py (94%) rename {src/icefabric_tools/tests => tests}/test_utils.py (89%) create mode 100644 tools/hydrofabric/hfsubset.py create mode 100644 tools/icechunk/convert_to_tif.py create mode 100644 tools/icechunk/icechunk_s3_migration.py rename {src/icefabric_tools/src/icefabric_tools => tools}/icechunk/icechunk_testing.py (85%) create mode 100644 tools/ipes/get_module_parameters.py create mode 100644 tools/pyiceberg/gpkg_to_parquet.py rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/README.md (100%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_fema_ble.py (94%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_fema_mip.py (94%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_hydrofabric.py (95%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_iceberg_bathymetry_ml_auxiliary.py (96%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_parameters.py (69%) rename {src/icefabric_manage/builds => tools/pyiceberg/remote_builds}/build_usgs_streamflow_observations.py (94%) diff --git a/.gitignore b/.gitignore index 54e6449..c126ca8 100644 --- a/.gitignore +++ b/.gitignore @@ -178,8 +178,7 @@ cython_debug/ Pipfile .qodo -_version.py -data/ +src/icefabric/_version.py *.db *.zarr .zarr @@ -208,3 +207,4 @@ crash.log examples/icechunk_data_viewer/martin/tiles/quantiles/* examples/icechunk_data_viewer/martin/tiles/legends/* examples/icechunk_data_viewer/martin/tiles/legend.png +tests/data/topo_tifs diff --git a/LICENSE b/LICENSE index b03120f..51ef095 100644 --- a/LICENSE +++ b/LICENSE @@ -1,540 +1,217 @@ -## ODC Open Database License (ODbL) - -### Preamble - -The Open Database License (ODbL) is a license agreement intended to -allow users to freely share, modify, and use this Database while -maintaining this same freedom for others. Many databases are covered by -copyright, and therefore this document licenses these rights. Some -jurisdictions, mainly in the European Union, have specific rights that -cover databases, and so the ODbL addresses these rights, too. Finally, -the ODbL is also an agreement in contract for users of this Database to -act in certain ways in return for accessing this Database. - -Databases can contain a wide variety of types of content (images, -audiovisual material, and sounds all in the same database, for example), -and so the ODbL only governs the rights over the Database, and not the -contents of the Database individually. Licensors should use the ODbL -together with another license for the contents, if the contents have a -single set of rights that uniformly covers all of the contents. If the -contents have multiple sets of different rights, Licensors should -describe what rights govern what contents together in the individual -record or in some other way that clarifies what rights apply. - -Sometimes the contents of a database, or the database itself, can be -covered by other rights not addressed here (such as private contracts, -trade mark over the name, or privacy rights / data protection rights -over information in the contents), and so you are advised that you may -have to consult other documents or clear other rights before doing -activities not covered by this License. - ------- - -The Licensor (as defined below) - -and - -You (as defined below) - -agree as follows: - -### 1.0 Definitions of Capitalised Words - -"Collective Database" – Means this Database in unmodified form as part -of a collection of independent databases in themselves that together are -assembled into a collective whole. A work that constitutes a Collective -Database will not be considered a Derivative Database. - -"Convey" – As a verb, means Using the Database, a Derivative Database, -or the Database as part of a Collective Database in any way that enables -a Person to make or receive copies of the Database or a Derivative -Database. Conveying does not include interaction with a user through a -computer network, or creating and Using a Produced Work, where no -transfer of a copy of the Database or a Derivative Database occurs. -"Contents" – The contents of this Database, which includes the -information, independent works, or other material collected into the -Database. For example, the contents of the Database could be factual -data or works such as images, audiovisual material, text, or sounds. - -"Database" – A collection of material (the Contents) arranged in a -systematic or methodical way and individually accessible by electronic -or other means offered under the terms of this License. - -"Database Directive" – Means Directive 96/9/EC of the European -Parliament and of the Council of 11 March 1996 on the legal protection -of databases, as amended or succeeded. - -"Database Right" – Means rights resulting from the Chapter III ("sui -generis") rights in the Database Directive (as amended and as transposed -by member states), which includes the Extraction and Re-utilisation of -the whole or a Substantial part of the Contents, as well as any similar -rights available in the relevant jurisdiction under Section 10.4. - -"Derivative Database" – Means a database based upon the Database, and -includes any translation, adaptation, arrangement, modification, or any -other alteration of the Database or of a Substantial part of the -Contents. This includes, but is not limited to, Extracting or -Re-utilising the whole or a Substantial part of the Contents in a new -Database. - -"Extraction" – Means the permanent or temporary transfer of all or a -Substantial part of the Contents to another medium by any means or in -any form. - -"License" – Means this license agreement and is both a license of rights -such as copyright and Database Rights and an agreement in contract. - -"Licensor" – Means the Person that offers the Database under the terms -of this License. - -"Person" – Means a natural or legal person or a body of persons -corporate or incorporate. - -"Produced Work" – a work (such as an image, audiovisual material, text, -or sounds) resulting from using the whole or a Substantial part of the -Contents (via a search or other query) from this Database, a Derivative -Database, or this Database as part of a Collective Database. - -"Publicly" – means to Persons other than You or under Your control by -either more than 50% ownership or by the power to direct their -activities (such as contracting with an independent consultant). - -"Re-utilisation" – means any form of making available to the public all -or a Substantial part of the Contents by the distribution of copies, by -renting, by online or other forms of transmission. - -"Substantial" – Means substantial in terms of quantity or quality or a -combination of both. The repeated and systematic Extraction or -Re-utilisation of insubstantial parts of the Contents may amount to the -Extraction or Re-utilisation of a Substantial part of the Contents. - -"Use" – As a verb, means doing any act that is restricted by copyright -or Database Rights whether in the original medium or any other; and -includes without limitation distributing, copying, publicly performing, -publicly displaying, and preparing derivative works of the Database, as -well as modifying the Database as may be technically necessary to use it -in a different mode or format. - -"You" – Means a Person exercising rights under this License who has not -previously violated the terms of this License with respect to the -Database, or who has received express permission from the Licensor to -exercise rights under this License despite a previous violation. - -Words in the singular include the plural and vice versa. - -### 2.0 What this License covers - -2.1. Legal effect of this document. This License is: - - a. A license of applicable copyright and neighbouring rights; - - b. A license of the Database Right; and - - c. An agreement in contract between You and the Licensor. - -2.2 Legal rights covered. This License covers the legal rights in the -Database, including: - - a. Copyright. Any copyright or neighbouring rights in the Database. - The copyright licensed includes any individual elements of the - Database, but does not cover the copyright over the Contents - independent of this Database. See Section 2.4 for details. Copyright - law varies between jurisdictions, but is likely to cover: the Database - model or schema, which is the structure, arrangement, and organisation - of the Database, and can also include the Database tables and table - indexes; the data entry and output sheets; and the Field names of - Contents stored in the Database; - - b. Database Rights. Database Rights only extend to the Extraction and - Re-utilisation of the whole or a Substantial part of the Contents. - Database Rights can apply even when there is no copyright over the - Database. Database Rights can also apply when the Contents are removed - from the Database and are selected and arranged in a way that would - not infringe any applicable copyright; and - - c. Contract. This is an agreement between You and the Licensor for - access to the Database. In return you agree to certain conditions of - use on this access as outlined in this License. - -2.3 Rights not covered. - - a. This License does not apply to computer programs used in the making - or operation of the Database; - - b. This License does not cover any patents over the Contents or the - Database; and - - c. This License does not cover any trademarks associated with the - Database. - -2.4 Relationship to Contents in the Database. The individual items of -the Contents contained in this Database may be covered by other rights, -including copyright, patent, data protection, privacy, or personality -rights, and this License does not cover any rights (other than Database -Rights or in contract) in individual Contents contained in the Database. -For example, if used on a Database of images (the Contents), this -License would not apply to copyright over individual images, which could -have their own separate licenses, or one single license covering all of -the rights over the images. - -### 3.0 Rights granted - -3.1 Subject to the terms and conditions of this License, the Licensor -grants to You a worldwide, royalty-free, non-exclusive, terminable (but -only under Section 9) license to Use the Database for the duration of -any applicable copyright and Database Rights. These rights explicitly -include commercial use, and do not exclude any field of endeavour. To -the extent possible in the relevant jurisdiction, these rights may be -exercised in all media and formats whether now known or created in the -future. - -The rights granted cover, for example: - - a. Extraction and Re-utilisation of the whole or a Substantial part of - the Contents; - - b. Creation of Derivative Databases; - - c. Creation of Collective Databases; - - d. Creation of temporary or permanent reproductions by any means and - in any form, in whole or in part, including of any Derivative - Databases or as a part of Collective Databases; and - - e. Distribution, communication, display, lending, making available, or - performance to the public by any means and in any form, in whole or in - part, including of any Derivative Database or as a part of Collective - Databases. - -3.2 Compulsory license schemes. For the avoidance of doubt: - - a. Non-waivable compulsory license schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme cannot be waived, the Licensor reserves - the exclusive right to collect such royalties for any exercise by You - of the rights granted under this License; - - b. Waivable compulsory license schemes. In those jurisdictions in - which the right to collect royalties through any statutory or - compulsory licensing scheme can be waived, the Licensor waives the - exclusive right to collect such royalties for any exercise by You of - the rights granted under this License; and, - - c. Voluntary license schemes. The Licensor waives the right to collect - royalties, whether individually or, in the event that the Licensor is - a member of a collecting society that administers voluntary licensing - schemes, via that society, from any exercise by You of the rights - granted under this License. - -3.3 The right to release the Database under different terms, or to stop -distributing or making available the Database, is reserved. Note that -this Database may be multiple-licensed, and so You may have the choice -of using alternative licenses for this Database. Subject to Section -10.4, all other rights not expressly granted by Licensor are reserved. - -### 4.0 Conditions of Use - -4.1 The rights granted in Section 3 above are expressly made subject to -Your complying with the following conditions of use. These are important -conditions of this License, and if You fail to follow them, You will be -in material breach of its terms. - -4.2 Notices. If You Publicly Convey this Database, any Derivative -Database, or the Database as part of a Collective Database, then You -must: - - a. Do so only under the terms of this License or another license - permitted under Section 4.4; - - b. Include a copy of this License (or, as applicable, a license - permitted under Section 4.4) or its Uniform Resource Identifier (URI) - with the Database or Derivative Database, including both in the - Database or Derivative Database and in any relevant documentation; and - - c. Keep intact any copyright or Database Right notices and notices - that refer to this License. - - d. If it is not possible to put the required notices in a particular - file due to its structure, then You must include the notices in a - location (such as a relevant directory) where users would be likely to - look for it. - -4.3 Notice for using output (Contents). Creating and Using a Produced -Work does not require the notice in Section 4.2. However, if you -Publicly Use a Produced Work, You must include a notice associated with -the Produced Work reasonably calculated to make any Person that uses, -views, accesses, interacts with, or is otherwise exposed to the Produced -Work aware that Content was obtained from the Database, Derivative -Database, or the Database as part of a Collective Database, and that it -is available under this License. - - a. Example notice. The following text will satisfy notice under - Section 4.3: - - Contains information from DATABASE NAME, which is made available - here under the Open Database License (ODbL). - -DATABASE NAME should be replaced with the name of the Database and a -hyperlink to the URI of the Database. "Open Database License" should -contain a hyperlink to the URI of the text of this License. If -hyperlinks are not possible, You should include the plain text of the -required URI's with the above notice. - -4.4 Share alike. - - a. Any Derivative Database that You Publicly Use must be only under - the terms of: - - i. This License; - - ii. A later version of this License similar in spirit to this - License; or - - iii. A compatible license. - - If You license the Derivative Database under one of the licenses - mentioned in (iii), You must comply with the terms of that license. - - b. For the avoidance of doubt, Extraction or Re-utilisation of the - whole or a Substantial part of the Contents into a new database is a - Derivative Database and must comply with Section 4.4. - - c. Derivative Databases and Produced Works. A Derivative Database is - Publicly Used and so must comply with Section 4.4. if a Produced Work - created from the Derivative Database is Publicly Used. - - d. Share Alike and additional Contents. For the avoidance of doubt, - You must not add Contents to Derivative Databases under Section 4.4 a - that are incompatible with the rights granted under this License. - - e. Compatible licenses. Licensors may authorise a proxy to determine - compatible licenses under Section 4.4 a iii. If they do so, the - authorised proxy's public statement of acceptance of a compatible - license grants You permission to use the compatible license. - - -4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply -in the following: - - a. For the avoidance of doubt, You are not required to license - Collective Databases under this License if You incorporate this - Database or a Derivative Database in the collection, but this License - still applies to this Database or a Derivative Database as a part of - the Collective Database; - - b. Using this Database, a Derivative Database, or this Database as - part of a Collective Database to create a Produced Work does not - create a Derivative Database for purposes of Section 4.4; and - - c. Use of a Derivative Database internally within an organisation is - not to the public and therefore does not fall under the requirements - of Section 4.4. - -4.6 Access to Derivative Databases. If You Publicly Use a Derivative -Database or a Produced Work from a Derivative Database, You must also -offer to recipients of the Derivative Database or Produced Work a copy -in a machine readable form of: - - a. The entire Derivative Database; or - - b. A file containing all of the alterations made to the Database or - the method of making the alterations to the Database (such as an - algorithm), including any additional Contents, that make up all the - differences between the Database and the Derivative Database. - -The Derivative Database (under a.) or alteration file (under b.) must be -available at no more than a reasonable production cost for physical -distributions and free of charge if distributed over the internet. - -4.7 Technological measures and additional terms - - a. This License does not allow You to impose (except subject to - Section 4.7 b.) any terms or any technological measures on the - Database, a Derivative Database, or the whole or a Substantial part of - the Contents that alter or restrict the terms of this License, or any - rights granted under it, or have the effect or intent of restricting - the ability of any person to exercise those rights. - - b. Parallel distribution. You may impose terms or technological - measures on the Database, a Derivative Database, or the whole or a - Substantial part of the Contents (a "Restricted Database") in - contravention of Section 4.74 a. only if You also make a copy of the - Database or a Derivative Database available to the recipient of the - Restricted Database: - - i. That is available without additional fee; - - ii. That is available in a medium that does not alter or restrict - the terms of this License, or any rights granted under it, or have - the effect or intent of restricting the ability of any person to - exercise those rights (an "Unrestricted Database"); and - - iii. The Unrestricted Database is at least as accessible to the - recipient as a practical matter as the Restricted Database. - - c. For the avoidance of doubt, You may place this Database or a - Derivative Database in an authenticated environment, behind a - password, or within a similar access control scheme provided that You - do not alter or restrict the terms of this License or any rights - granted under it or have the effect or intent of restricting the - ability of any person to exercise those rights. - -4.8 Licensing of others. You may not sublicense the Database. Each time -You communicate the Database, the whole or Substantial part of the -Contents, or any Derivative Database to anyone else in any way, the -Licensor offers to the recipient a license to the Database on the same -terms and conditions as this License. You are not responsible for -enforcing compliance by third parties with this License, but You may -enforce any rights that You have over a Derivative Database. You are -solely responsible for any modifications of a Derivative Database made -by You or another Person at Your direction. You may not impose any -further restrictions on the exercise of the rights granted or affirmed -under this License. - -### 5.0 Moral rights - -5.1 Moral rights. This section covers moral rights, including any rights -to be identified as the author of the Database or to object to treatment -that would otherwise prejudice the author's honour and reputation, or -any other derogatory treatment: - - a. For jurisdictions allowing waiver of moral rights, Licensor waives - all moral rights that Licensor may have in the Database to the fullest - extent possible by the law of the relevant jurisdiction under Section - 10.4; - - b. If waiver of moral rights under Section 5.1 a in the relevant - jurisdiction is not possible, Licensor agrees not to assert any moral - rights over the Database and waives all claims in moral rights to the - fullest extent possible by the law of the relevant jurisdiction under - Section 10.4; and - - c. For jurisdictions not allowing waiver or an agreement not to assert - moral rights under Section 5.1 a and b, the author may retain their - moral rights over certain aspects of the Database. - -Please note that some jurisdictions do not allow for the waiver of moral -rights, and so moral rights may still subsist over the Database in some -jurisdictions. - -### 6.0 Fair dealing, Database exceptions, and other rights not affected - -6.1 This License does not affect any rights that You or anyone else may -independently have under any applicable law to make any use of this -Database, including without limitation: - - a. Exceptions to the Database Right including: Extraction of Contents - from non-electronic Databases for private purposes, Extraction for - purposes of illustration for teaching or scientific research, and - Extraction or Re-utilisation for public security or an administrative - or judicial procedure. - - b. Fair dealing, fair use, or any other legally recognised limitation - or exception to infringement of copyright or other applicable laws. - -6.2 This License does not affect any rights of lawful users to Extract -and Re-utilise insubstantial parts of the Contents, evaluated -quantitatively or qualitatively, for any purposes whatsoever, including -creating a Derivative Database (subject to other rights over the -Contents, see Section 2.4). The repeated and systematic Extraction or -Re-utilisation of insubstantial parts of the Contents may however amount -to the Extraction or Re-utilisation of a Substantial part of the -Contents. - -### 7.0 Warranties and Disclaimer - -7.1 The Database is licensed by the Licensor "as is" and without any -warranty of any kind, either express, implied, or arising by statute, -custom, course of dealing, or trade usage. Licensor specifically -disclaims any and all implied warranties or conditions of title, -non-infringement, accuracy or completeness, the presence or absence of -errors, fitness for a particular purpose, merchantability, or otherwise. -Some jurisdictions do not allow the exclusion of implied warranties, so -this exclusion may not apply to You. - -### 8.0 Limitation of liability - -8.1 Subject to any liability that may not be excluded or limited by law, -the Licensor is not liable for, and expressly excludes, all liability -for loss or damage however and whenever caused to anyone by any use -under this License, whether by You or by anyone else, and whether caused -by any fault on the part of the Licensor or not. This exclusion of -liability includes, but is not limited to, any special, incidental, -consequential, punitive, or exemplary damages such as loss of revenue, -data, anticipated profits, and lost business. This exclusion applies -even if the Licensor has been advised of the possibility of such -damages. - -8.2 If liability may not be excluded by law, it is limited to actual and -direct financial loss to the extent it is caused by proved negligence on -the part of the Licensor. - -### 9.0 Termination of Your rights under this License - -9.1 Any breach by You of the terms and conditions of this License -automatically terminates this License with immediate effect and without -notice to You. For the avoidance of doubt, Persons who have received the -Database, the whole or a Substantial part of the Contents, Derivative -Databases, or the Database as part of a Collective Database from You -under this License will not have their licenses terminated provided -their use is in full compliance with this License or a license granted -under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will -survive any termination of this License. - -9.2 If You are not in breach of the terms of this License, the Licensor -will not terminate Your rights under it. - -9.3 Unless terminated under Section 9.1, this License is granted to You -for the duration of applicable rights in the Database. - -9.4 Reinstatement of rights. If you cease any breach of the terms and -conditions of this License, then your full rights under this License -will be reinstated: - - a. Provisionally and subject to permanent termination until the 60th - day after cessation of breach; - - b. Permanently on the 60th day after cessation of breach unless - otherwise reasonably notified by the Licensor; or - - c. Permanently if reasonably notified by the Licensor of the - violation, this is the first time You have received notice of - violation of this License from the Licensor, and You cure the - violation prior to 30 days after your receipt of the notice. - -Persons subject to permanent termination of rights are not eligible to -be a recipient and receive a license under Section 4.8. - -9.5 Notwithstanding the above, Licensor reserves the right to release -the Database under different license terms or to stop distributing or -making available the Database. Releasing the Database under different -license terms or stopping the distribution of the Database will not -withdraw this License (or any other license that has been, or is -required to be, granted under the terms of this License), and this -License will continue in full force and effect unless terminated as -stated above. - -### 10.0 General - -10.1 If any provision of this License is held to be invalid or -unenforceable, that must not affect the validity or enforceability of -the remainder of the terms and conditions of this License and each -remaining provision of this License shall be valid and enforced to the -fullest extent permitted by law. - -10.2 This License is the entire agreement between the parties with -respect to the rights granted here over the Database. It replaces any -earlier understandings, agreements or representations with respect to -the Database. - -10.3 If You are in breach of the terms of this License, You will not be -entitled to rely on the terms of this License or to complain of any -breach by the Licensor. - -10.4 Choice of law. This License takes effect in and will be governed by -the laws of the relevant jurisdiction in which the License terms are -sought to be enforced. If the standard suite of rights granted under -applicable copyright law and Database Rights in the relevant -jurisdiction includes additional rights not granted under this License, -these additional rights are granted in this License in order to meet the -terms of this License. +Copyright 2025 Raytheon Company + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +Licensed under: https://opensource.org/license/bsd-2-clause + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +All rights reserved. Based on Government sponsored work under contract GS-35F-204GA. + +----------------- + + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 1b4b45c..8121f0b 100644 --- a/README.md +++ b/README.md @@ -13,16 +13,13 @@ An [Apache Iceberg](https://py.iceberg.apache.org/) implementation of the Hydrof ### Getting Started This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: ```sh -uv venv -source .venv/bin/activate uv sync +source .venv/bin/activate ``` ### Running the API locally To run the API locally, ensure your `.env` file in your project root has the right credentials, then run ```sh -uv sync -cd src/icefabric_api python -m app.main ``` This should spin up the API services. @@ -46,3 +43,11 @@ uv pip install ".[docs]" mkdocs serve -a localhost:8080 ``` Docs will be spun up at localhost:8080/ + +### Pytests + +The `tests` folder is for all testing data so the global confest can pick it up. This allows all tests in the namespace packages to share the same scope without having to reference one another in tests + +To run tests, run `pytest -s` from project root. + +To run the subsetter tests, run `pytest --run-slow` as these tests take some time. Otherwise, they will be skipped diff --git a/src/icefabric_api/app/__init__.py b/app/__init__.py similarity index 100% rename from src/icefabric_api/app/__init__.py rename to app/__init__.py diff --git a/src/icefabric_api/app/main.py b/app/main.py similarity index 79% rename from src/icefabric_api/app/main.py rename to app/main.py index 771825a..270d4a7 100644 --- a/src/icefabric_api/app/main.py +++ b/app/main.py @@ -18,8 +18,15 @@ redoc_url="/redoc", ) -env_path = Path(__file__).parents[3] / ".env" -load_dotenv(dotenv_path=env_path) +# Setting .env/.pyiceberg creds based on project root +load_dotenv(dotenv_path=Path.cwd() / ".env") +pyiceberg_file = Path.cwd() / ".pyiceberg.yaml" +if pyiceberg_file.exists(): + os.environ["PYICEBERG_HOME"] = str(pyiceberg_file) +else: + raise FileNotFoundError( + "Cannot find .pyiceberg.yaml. Please download this from NGWPC confluence or create " + ) class HealthCheck(BaseModel): @@ -48,6 +55,4 @@ def get_health() -> HealthCheck: if __name__ == "__main__": - os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[3]) - print(os.environ["PYICEBERG_HOME"]) uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="info") diff --git a/src/icefabric_api/app/routers/__init__.py b/app/routers/__init__.py similarity index 100% rename from src/icefabric_api/app/routers/__init__.py rename to app/routers/__init__.py diff --git a/src/icefabric_api/app/routers/hydrofabric/__init__.py b/app/routers/hydrofabric/__init__.py similarity index 100% rename from src/icefabric_api/app/routers/hydrofabric/__init__.py rename to app/routers/hydrofabric/__init__.py diff --git a/src/icefabric_api/app/routers/hydrofabric/router.py b/app/routers/hydrofabric/router.py similarity index 97% rename from src/icefabric_api/app/routers/hydrofabric/router.py rename to app/routers/hydrofabric/router.py index e284ce9..6c23345 100644 --- a/src/icefabric_api/app/routers/hydrofabric/router.py +++ b/app/routers/hydrofabric/router.py @@ -7,7 +7,8 @@ from pyiceberg.catalog import load_catalog from starlette.background import BackgroundTask -from icefabric_tools import IdType, subset +from icefabric.hydrofabric import subset +from icefabric.schemas import IdType api_router = APIRouter(prefix="/hydrofabric") diff --git a/src/icefabric_api/app/routers/module_params/__init__.py b/app/routers/module_params/__init__.py similarity index 100% rename from src/icefabric_api/app/routers/module_params/__init__.py rename to app/routers/module_params/__init__.py diff --git a/src/icefabric_api/app/routers/module_params/router.py b/app/routers/module_params/router.py similarity index 94% rename from src/icefabric_api/app/routers/module_params/router.py rename to app/routers/module_params/router.py index 1f3eb22..ff38f12 100644 --- a/src/icefabric_api/app/routers/module_params/router.py +++ b/app/routers/module_params/router.py @@ -5,7 +5,7 @@ from fastapi import APIRouter, HTTPException from pydantic import BaseModel -from icefabric_api.create_ipes import get_hydrofabric_attributes, module_ipe +from icefabric.modules import get_hydrofabric_attributes, module_ipe api_router = APIRouter(prefix="/modules") ROOT_DIR = os.path.abspath(os.curdir) diff --git a/src/icefabric_api/app/routers/streamflow_observations/__init__.py b/app/routers/streamflow_observations/__init__.py similarity index 100% rename from src/icefabric_api/app/routers/streamflow_observations/__init__.py rename to app/routers/streamflow_observations/__init__.py diff --git a/src/icefabric_api/app/routers/streamflow_observations/router.py b/app/routers/streamflow_observations/router.py similarity index 97% rename from src/icefabric_api/app/routers/streamflow_observations/router.py rename to app/routers/streamflow_observations/router.py index fc0ee79..f869482 100644 --- a/src/icefabric_api/app/routers/streamflow_observations/router.py +++ b/app/routers/streamflow_observations/router.py @@ -2,6 +2,7 @@ from datetime import datetime from enum import Enum +from botocore.exceptions import ClientError from fastapi import APIRouter, HTTPException, Path, Query from fastapi.responses import Response from pyiceberg.catalog import load_catalog @@ -31,8 +32,13 @@ class DataSource(str, Enum): def get_catalog_and_table(data_source: DataSource): """Get catalog and table for a given data source""" config = DATA_SOURCE_CONFIG[data_source] - catalog = load_catalog("glue") - table = catalog.load_table(f"{config['namespace']}.{config['table']}") + try: + catalog = load_catalog("glue") + table = catalog.load_table(f"{config['namespace']}.{config['table']}") + except ClientError as e: + msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" + print(msg) + raise e return catalog, table, config diff --git a/conftest.py b/conftest.py deleted file mode 100644 index 279747d..0000000 --- a/conftest.py +++ /dev/null @@ -1,124 +0,0 @@ -import os -import sys -from pathlib import Path - -# Hard coding a reference to the icefabric_api/ folder to test the API -project_root = Path(__file__).parents[1] -sys.path.insert(0, str(project_root / "src" / "icefabric_api")) - -os.environ["AWS_DEFAULT_REGION"] = "us-east-1" -os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[1]) - -import pandas as pd # noqa: E402 -import pytest # noqa: E402 -from app.main import app # noqa: E402 -from fastapi.testclient import TestClient # noqa: E402 -from pyiceberg.catalog import Catalog, load_catalog # noqa: E402 - -sample_gauges = [ - "01010000", - "02450825", - "03173000", - "04100500", - "05473450", - "06823500", - "07060710", - "08070000", - "09253000", - "10316500", - "11456000", - "12411000", - "13337000", - "14020000", -] - -sample_hf_uri = [ - "gages-01010000", - "gages-02450825", - "gages-03173000", - "gages-04100500", - "gages-05473450", - "gages-06823500", - "gages-07060710", - "gages-08070000", - "gages-09253000", - "gages-10316500", - "gages-11456000", - "gages-12411000", - "gages-13337000", - "gages-14020000", -] - - -@pytest.fixture(params=sample_gauges) -def gauge_ids(request) -> str: - """Returns individual gauge identifiers for parameterized testing""" - return request.param - - -@pytest.fixture(params=sample_hf_uri) -def gauge_hf_uri(request) -> str: - """Returns individual gauge identifiers for parameterized testing""" - return request.param - - -@pytest.fixture -def testing_dir() -> Path: - """Returns the testing data dir""" - return Path(__file__).parent / "tests/data/" - - -@pytest.fixture(scope="session") -def client(): - """Create a test client for the FastAPI app.""" - return TestClient(app) - - -@pytest.fixture -def local_usgs_streamflow_csv(): - """Returns a locally downloaded CSV file from a specific gauge and time""" - file_path = ( - Path(__file__).parent / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv" - ) - return pd.read_csv(file_path) - - -@pytest.fixture -def local_usgs_streamflow_parquet(): - """Returns a locally downloaded CSV file from a specific gauge and time""" - file_path = ( - Path(__file__).parent / "tests/data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet" - ) - return pd.read_parquet(file_path) - - -@pytest.fixture -def hydrofabric_catalog() -> Catalog: - """Returns an iceberg catalog object for the hydrofabric""" - return load_catalog("glue") - - -def pytest_addoption(parser): - """Adds the --run-slow tag""" - parser.addoption( - "--run-slow", - action="store_true", - default=False, - help="Run slow tests", - ) - - -def pytest_collection_modifyitems(config, items): - """Allows pytest to read the --run-slow tag""" - if not config.getoption("--run-slow"): - skipper = pytest.mark.skip(reason="Only run when --run-slow is given") - for item in items: - if "slow" in item.keywords: - item.add_marker(skipper) - - -def pytest_configure(config): - """Configure pytest markers.""" - config.addinivalue_line("markers", "performance: marks tests as performance tests") - config.addinivalue_line("markers", "integration: marks tests as integration tests") - config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/data/LICENSE b/data/LICENSE new file mode 100644 index 0000000..b03120f --- /dev/null +++ b/data/LICENSE @@ -0,0 +1,540 @@ +## ODC Open Database License (ODbL) + +### Preamble + +The Open Database License (ODbL) is a license agreement intended to +allow users to freely share, modify, and use this Database while +maintaining this same freedom for others. Many databases are covered by +copyright, and therefore this document licenses these rights. Some +jurisdictions, mainly in the European Union, have specific rights that +cover databases, and so the ODbL addresses these rights, too. Finally, +the ODbL is also an agreement in contract for users of this Database to +act in certain ways in return for accessing this Database. + +Databases can contain a wide variety of types of content (images, +audiovisual material, and sounds all in the same database, for example), +and so the ODbL only governs the rights over the Database, and not the +contents of the Database individually. Licensors should use the ODbL +together with another license for the contents, if the contents have a +single set of rights that uniformly covers all of the contents. If the +contents have multiple sets of different rights, Licensors should +describe what rights govern what contents together in the individual +record or in some other way that clarifies what rights apply. + +Sometimes the contents of a database, or the database itself, can be +covered by other rights not addressed here (such as private contracts, +trade mark over the name, or privacy rights / data protection rights +over information in the contents), and so you are advised that you may +have to consult other documents or clear other rights before doing +activities not covered by this License. + +------ + +The Licensor (as defined below) + +and + +You (as defined below) + +agree as follows: + +### 1.0 Definitions of Capitalised Words + +"Collective Database" – Means this Database in unmodified form as part +of a collection of independent databases in themselves that together are +assembled into a collective whole. A work that constitutes a Collective +Database will not be considered a Derivative Database. + +"Convey" – As a verb, means Using the Database, a Derivative Database, +or the Database as part of a Collective Database in any way that enables +a Person to make or receive copies of the Database or a Derivative +Database. Conveying does not include interaction with a user through a +computer network, or creating and Using a Produced Work, where no +transfer of a copy of the Database or a Derivative Database occurs. +"Contents" – The contents of this Database, which includes the +information, independent works, or other material collected into the +Database. For example, the contents of the Database could be factual +data or works such as images, audiovisual material, text, or sounds. + +"Database" – A collection of material (the Contents) arranged in a +systematic or methodical way and individually accessible by electronic +or other means offered under the terms of this License. + +"Database Directive" – Means Directive 96/9/EC of the European +Parliament and of the Council of 11 March 1996 on the legal protection +of databases, as amended or succeeded. + +"Database Right" – Means rights resulting from the Chapter III ("sui +generis") rights in the Database Directive (as amended and as transposed +by member states), which includes the Extraction and Re-utilisation of +the whole or a Substantial part of the Contents, as well as any similar +rights available in the relevant jurisdiction under Section 10.4. + +"Derivative Database" – Means a database based upon the Database, and +includes any translation, adaptation, arrangement, modification, or any +other alteration of the Database or of a Substantial part of the +Contents. This includes, but is not limited to, Extracting or +Re-utilising the whole or a Substantial part of the Contents in a new +Database. + +"Extraction" – Means the permanent or temporary transfer of all or a +Substantial part of the Contents to another medium by any means or in +any form. + +"License" – Means this license agreement and is both a license of rights +such as copyright and Database Rights and an agreement in contract. + +"Licensor" – Means the Person that offers the Database under the terms +of this License. + +"Person" – Means a natural or legal person or a body of persons +corporate or incorporate. + +"Produced Work" – a work (such as an image, audiovisual material, text, +or sounds) resulting from using the whole or a Substantial part of the +Contents (via a search or other query) from this Database, a Derivative +Database, or this Database as part of a Collective Database. + +"Publicly" – means to Persons other than You or under Your control by +either more than 50% ownership or by the power to direct their +activities (such as contracting with an independent consultant). + +"Re-utilisation" – means any form of making available to the public all +or a Substantial part of the Contents by the distribution of copies, by +renting, by online or other forms of transmission. + +"Substantial" – Means substantial in terms of quantity or quality or a +combination of both. The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may amount to the +Extraction or Re-utilisation of a Substantial part of the Contents. + +"Use" – As a verb, means doing any act that is restricted by copyright +or Database Rights whether in the original medium or any other; and +includes without limitation distributing, copying, publicly performing, +publicly displaying, and preparing derivative works of the Database, as +well as modifying the Database as may be technically necessary to use it +in a different mode or format. + +"You" – Means a Person exercising rights under this License who has not +previously violated the terms of this License with respect to the +Database, or who has received express permission from the Licensor to +exercise rights under this License despite a previous violation. + +Words in the singular include the plural and vice versa. + +### 2.0 What this License covers + +2.1. Legal effect of this document. This License is: + + a. A license of applicable copyright and neighbouring rights; + + b. A license of the Database Right; and + + c. An agreement in contract between You and the Licensor. + +2.2 Legal rights covered. This License covers the legal rights in the +Database, including: + + a. Copyright. Any copyright or neighbouring rights in the Database. + The copyright licensed includes any individual elements of the + Database, but does not cover the copyright over the Contents + independent of this Database. See Section 2.4 for details. Copyright + law varies between jurisdictions, but is likely to cover: the Database + model or schema, which is the structure, arrangement, and organisation + of the Database, and can also include the Database tables and table + indexes; the data entry and output sheets; and the Field names of + Contents stored in the Database; + + b. Database Rights. Database Rights only extend to the Extraction and + Re-utilisation of the whole or a Substantial part of the Contents. + Database Rights can apply even when there is no copyright over the + Database. Database Rights can also apply when the Contents are removed + from the Database and are selected and arranged in a way that would + not infringe any applicable copyright; and + + c. Contract. This is an agreement between You and the Licensor for + access to the Database. In return you agree to certain conditions of + use on this access as outlined in this License. + +2.3 Rights not covered. + + a. This License does not apply to computer programs used in the making + or operation of the Database; + + b. This License does not cover any patents over the Contents or the + Database; and + + c. This License does not cover any trademarks associated with the + Database. + +2.4 Relationship to Contents in the Database. The individual items of +the Contents contained in this Database may be covered by other rights, +including copyright, patent, data protection, privacy, or personality +rights, and this License does not cover any rights (other than Database +Rights or in contract) in individual Contents contained in the Database. +For example, if used on a Database of images (the Contents), this +License would not apply to copyright over individual images, which could +have their own separate licenses, or one single license covering all of +the rights over the images. + +### 3.0 Rights granted + +3.1 Subject to the terms and conditions of this License, the Licensor +grants to You a worldwide, royalty-free, non-exclusive, terminable (but +only under Section 9) license to Use the Database for the duration of +any applicable copyright and Database Rights. These rights explicitly +include commercial use, and do not exclude any field of endeavour. To +the extent possible in the relevant jurisdiction, these rights may be +exercised in all media and formats whether now known or created in the +future. + +The rights granted cover, for example: + + a. Extraction and Re-utilisation of the whole or a Substantial part of + the Contents; + + b. Creation of Derivative Databases; + + c. Creation of Collective Databases; + + d. Creation of temporary or permanent reproductions by any means and + in any form, in whole or in part, including of any Derivative + Databases or as a part of Collective Databases; and + + e. Distribution, communication, display, lending, making available, or + performance to the public by any means and in any form, in whole or in + part, including of any Derivative Database or as a part of Collective + Databases. + +3.2 Compulsory license schemes. For the avoidance of doubt: + + a. Non-waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; + + b. Waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You of + the rights granted under this License; and, + + c. Voluntary license schemes. The Licensor waives the right to collect + royalties, whether individually or, in the event that the Licensor is + a member of a collecting society that administers voluntary licensing + schemes, via that society, from any exercise by You of the rights + granted under this License. + +3.3 The right to release the Database under different terms, or to stop +distributing or making available the Database, is reserved. Note that +this Database may be multiple-licensed, and so You may have the choice +of using alternative licenses for this Database. Subject to Section +10.4, all other rights not expressly granted by Licensor are reserved. + +### 4.0 Conditions of Use + +4.1 The rights granted in Section 3 above are expressly made subject to +Your complying with the following conditions of use. These are important +conditions of this License, and if You fail to follow them, You will be +in material breach of its terms. + +4.2 Notices. If You Publicly Convey this Database, any Derivative +Database, or the Database as part of a Collective Database, then You +must: + + a. Do so only under the terms of this License or another license + permitted under Section 4.4; + + b. Include a copy of this License (or, as applicable, a license + permitted under Section 4.4) or its Uniform Resource Identifier (URI) + with the Database or Derivative Database, including both in the + Database or Derivative Database and in any relevant documentation; and + + c. Keep intact any copyright or Database Right notices and notices + that refer to this License. + + d. If it is not possible to put the required notices in a particular + file due to its structure, then You must include the notices in a + location (such as a relevant directory) where users would be likely to + look for it. + +4.3 Notice for using output (Contents). Creating and Using a Produced +Work does not require the notice in Section 4.2. However, if you +Publicly Use a Produced Work, You must include a notice associated with +the Produced Work reasonably calculated to make any Person that uses, +views, accesses, interacts with, or is otherwise exposed to the Produced +Work aware that Content was obtained from the Database, Derivative +Database, or the Database as part of a Collective Database, and that it +is available under this License. + + a. Example notice. The following text will satisfy notice under + Section 4.3: + + Contains information from DATABASE NAME, which is made available + here under the Open Database License (ODbL). + +DATABASE NAME should be replaced with the name of the Database and a +hyperlink to the URI of the Database. "Open Database License" should +contain a hyperlink to the URI of the text of this License. If +hyperlinks are not possible, You should include the plain text of the +required URI's with the above notice. + +4.4 Share alike. + + a. Any Derivative Database that You Publicly Use must be only under + the terms of: + + i. This License; + + ii. A later version of this License similar in spirit to this + License; or + + iii. A compatible license. + + If You license the Derivative Database under one of the licenses + mentioned in (iii), You must comply with the terms of that license. + + b. For the avoidance of doubt, Extraction or Re-utilisation of the + whole or a Substantial part of the Contents into a new database is a + Derivative Database and must comply with Section 4.4. + + c. Derivative Databases and Produced Works. A Derivative Database is + Publicly Used and so must comply with Section 4.4. if a Produced Work + created from the Derivative Database is Publicly Used. + + d. Share Alike and additional Contents. For the avoidance of doubt, + You must not add Contents to Derivative Databases under Section 4.4 a + that are incompatible with the rights granted under this License. + + e. Compatible licenses. Licensors may authorise a proxy to determine + compatible licenses under Section 4.4 a iii. If they do so, the + authorised proxy's public statement of acceptance of a compatible + license grants You permission to use the compatible license. + + +4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply +in the following: + + a. For the avoidance of doubt, You are not required to license + Collective Databases under this License if You incorporate this + Database or a Derivative Database in the collection, but this License + still applies to this Database or a Derivative Database as a part of + the Collective Database; + + b. Using this Database, a Derivative Database, or this Database as + part of a Collective Database to create a Produced Work does not + create a Derivative Database for purposes of Section 4.4; and + + c. Use of a Derivative Database internally within an organisation is + not to the public and therefore does not fall under the requirements + of Section 4.4. + +4.6 Access to Derivative Databases. If You Publicly Use a Derivative +Database or a Produced Work from a Derivative Database, You must also +offer to recipients of the Derivative Database or Produced Work a copy +in a machine readable form of: + + a. The entire Derivative Database; or + + b. A file containing all of the alterations made to the Database or + the method of making the alterations to the Database (such as an + algorithm), including any additional Contents, that make up all the + differences between the Database and the Derivative Database. + +The Derivative Database (under a.) or alteration file (under b.) must be +available at no more than a reasonable production cost for physical +distributions and free of charge if distributed over the internet. + +4.7 Technological measures and additional terms + + a. This License does not allow You to impose (except subject to + Section 4.7 b.) any terms or any technological measures on the + Database, a Derivative Database, or the whole or a Substantial part of + the Contents that alter or restrict the terms of this License, or any + rights granted under it, or have the effect or intent of restricting + the ability of any person to exercise those rights. + + b. Parallel distribution. You may impose terms or technological + measures on the Database, a Derivative Database, or the whole or a + Substantial part of the Contents (a "Restricted Database") in + contravention of Section 4.74 a. only if You also make a copy of the + Database or a Derivative Database available to the recipient of the + Restricted Database: + + i. That is available without additional fee; + + ii. That is available in a medium that does not alter or restrict + the terms of this License, or any rights granted under it, or have + the effect or intent of restricting the ability of any person to + exercise those rights (an "Unrestricted Database"); and + + iii. The Unrestricted Database is at least as accessible to the + recipient as a practical matter as the Restricted Database. + + c. For the avoidance of doubt, You may place this Database or a + Derivative Database in an authenticated environment, behind a + password, or within a similar access control scheme provided that You + do not alter or restrict the terms of this License or any rights + granted under it or have the effect or intent of restricting the + ability of any person to exercise those rights. + +4.8 Licensing of others. You may not sublicense the Database. Each time +You communicate the Database, the whole or Substantial part of the +Contents, or any Derivative Database to anyone else in any way, the +Licensor offers to the recipient a license to the Database on the same +terms and conditions as this License. You are not responsible for +enforcing compliance by third parties with this License, but You may +enforce any rights that You have over a Derivative Database. You are +solely responsible for any modifications of a Derivative Database made +by You or another Person at Your direction. You may not impose any +further restrictions on the exercise of the rights granted or affirmed +under this License. + +### 5.0 Moral rights + +5.1 Moral rights. This section covers moral rights, including any rights +to be identified as the author of the Database or to object to treatment +that would otherwise prejudice the author's honour and reputation, or +any other derogatory treatment: + + a. For jurisdictions allowing waiver of moral rights, Licensor waives + all moral rights that Licensor may have in the Database to the fullest + extent possible by the law of the relevant jurisdiction under Section + 10.4; + + b. If waiver of moral rights under Section 5.1 a in the relevant + jurisdiction is not possible, Licensor agrees not to assert any moral + rights over the Database and waives all claims in moral rights to the + fullest extent possible by the law of the relevant jurisdiction under + Section 10.4; and + + c. For jurisdictions not allowing waiver or an agreement not to assert + moral rights under Section 5.1 a and b, the author may retain their + moral rights over certain aspects of the Database. + +Please note that some jurisdictions do not allow for the waiver of moral +rights, and so moral rights may still subsist over the Database in some +jurisdictions. + +### 6.0 Fair dealing, Database exceptions, and other rights not affected + +6.1 This License does not affect any rights that You or anyone else may +independently have under any applicable law to make any use of this +Database, including without limitation: + + a. Exceptions to the Database Right including: Extraction of Contents + from non-electronic Databases for private purposes, Extraction for + purposes of illustration for teaching or scientific research, and + Extraction or Re-utilisation for public security or an administrative + or judicial procedure. + + b. Fair dealing, fair use, or any other legally recognised limitation + or exception to infringement of copyright or other applicable laws. + +6.2 This License does not affect any rights of lawful users to Extract +and Re-utilise insubstantial parts of the Contents, evaluated +quantitatively or qualitatively, for any purposes whatsoever, including +creating a Derivative Database (subject to other rights over the +Contents, see Section 2.4). The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may however amount +to the Extraction or Re-utilisation of a Substantial part of the +Contents. + +### 7.0 Warranties and Disclaimer + +7.1 The Database is licensed by the Licensor "as is" and without any +warranty of any kind, either express, implied, or arising by statute, +custom, course of dealing, or trade usage. Licensor specifically +disclaims any and all implied warranties or conditions of title, +non-infringement, accuracy or completeness, the presence or absence of +errors, fitness for a particular purpose, merchantability, or otherwise. +Some jurisdictions do not allow the exclusion of implied warranties, so +this exclusion may not apply to You. + +### 8.0 Limitation of liability + +8.1 Subject to any liability that may not be excluded or limited by law, +the Licensor is not liable for, and expressly excludes, all liability +for loss or damage however and whenever caused to anyone by any use +under this License, whether by You or by anyone else, and whether caused +by any fault on the part of the Licensor or not. This exclusion of +liability includes, but is not limited to, any special, incidental, +consequential, punitive, or exemplary damages such as loss of revenue, +data, anticipated profits, and lost business. This exclusion applies +even if the Licensor has been advised of the possibility of such +damages. + +8.2 If liability may not be excluded by law, it is limited to actual and +direct financial loss to the extent it is caused by proved negligence on +the part of the Licensor. + +### 9.0 Termination of Your rights under this License + +9.1 Any breach by You of the terms and conditions of this License +automatically terminates this License with immediate effect and without +notice to You. For the avoidance of doubt, Persons who have received the +Database, the whole or a Substantial part of the Contents, Derivative +Databases, or the Database as part of a Collective Database from You +under this License will not have their licenses terminated provided +their use is in full compliance with this License or a license granted +under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will +survive any termination of this License. + +9.2 If You are not in breach of the terms of this License, the Licensor +will not terminate Your rights under it. + +9.3 Unless terminated under Section 9.1, this License is granted to You +for the duration of applicable rights in the Database. + +9.4 Reinstatement of rights. If you cease any breach of the terms and +conditions of this License, then your full rights under this License +will be reinstated: + + a. Provisionally and subject to permanent termination until the 60th + day after cessation of breach; + + b. Permanently on the 60th day after cessation of breach unless + otherwise reasonably notified by the Licensor; or + + c. Permanently if reasonably notified by the Licensor of the + violation, this is the first time You have received notice of + violation of this License from the Licensor, and You cure the + violation prior to 30 days after your receipt of the notice. + +Persons subject to permanent termination of rights are not eligible to +be a recipient and receive a license under Section 4.8. + +9.5 Notwithstanding the above, Licensor reserves the right to release +the Database under different license terms or to stop distributing or +making available the Database. Releasing the Database under different +license terms or stopping the distribution of the Database will not +withdraw this License (or any other license that has been, or is +required to be, granted under the terms of this License), and this +License will continue in full force and effect unless terminated as +stated above. + +### 10.0 General + +10.1 If any provision of this License is held to be invalid or +unenforceable, that must not affect the validity or enforceability of +the remainder of the terms and conditions of this License and each +remaining provision of this License shall be valid and enforced to the +fullest extent permitted by law. + +10.2 This License is the entire agreement between the parties with +respect to the rights granted here over the Database. It replaces any +earlier understandings, agreements or representations with respect to +the Database. + +10.3 If You are in breach of the terms of this License, You will not be +entitled to rely on the terms of this License or to complain of any +breach by the Licensor. + +10.4 Choice of law. This License takes effect in and will be governed by +the laws of the relevant jurisdiction in which the License terms are +sought to be enforced. If the standard suite of rights granted under +applicable copyright law and Database Rights in the relevant +jurisdiction includes additional rights not granted under this License, +these additional rights are granted in this License in order to meet the +terms of this License. diff --git a/src/icefabric_api/data/cfe_params.csv b/data/module_ipes/cfe_params.csv similarity index 100% rename from src/icefabric_api/data/cfe_params.csv rename to data/module_ipes/cfe_params.csv diff --git a/src/icefabric_api/data/lasam_out.csv b/data/module_ipes/lasam_out.csv similarity index 100% rename from src/icefabric_api/data/lasam_out.csv rename to data/module_ipes/lasam_out.csv diff --git a/src/icefabric_api/data/lasam_params.csv b/data/module_ipes/lasam_params.csv similarity index 100% rename from src/icefabric_api/data/lasam_params.csv rename to data/module_ipes/lasam_params.csv diff --git a/src/icefabric_api/data/modules.csv b/data/module_ipes/modules.csv similarity index 100% rename from src/icefabric_api/data/modules.csv rename to data/module_ipes/modules.csv diff --git a/src/icefabric_api/data/noah_owp_modular_params.csv b/data/module_ipes/noah_owp_modular_params.csv similarity index 100% rename from src/icefabric_api/data/noah_owp_modular_params.csv rename to data/module_ipes/noah_owp_modular_params.csv diff --git a/src/icefabric_api/data/sac_sma_params.csv b/data/module_ipes/sac_sma_params.csv similarity index 100% rename from src/icefabric_api/data/sac_sma_params.csv rename to data/module_ipes/sac_sma_params.csv diff --git a/src/icefabric_api/data/sft_params.csv b/data/module_ipes/sft_params.csv similarity index 100% rename from src/icefabric_api/data/sft_params.csv rename to data/module_ipes/sft_params.csv diff --git a/src/icefabric_api/data/smp_params.csv b/data/module_ipes/smp_params.csv similarity index 100% rename from src/icefabric_api/data/smp_params.csv rename to data/module_ipes/smp_params.csv diff --git a/src/icefabric_api/data/snow17_params.csv b/data/module_ipes/snow17_params.csv similarity index 100% rename from src/icefabric_api/data/snow17_params.csv rename to data/module_ipes/snow17_params.csv diff --git a/src/icefabric_api/data/topmodel_params.csv b/data/module_ipes/topmodel_params.csv similarity index 100% rename from src/icefabric_api/data/topmodel_params.csv rename to data/module_ipes/topmodel_params.csv diff --git a/src/icefabric_api/data/ueb_params.csv b/data/module_ipes/ueb_params.csv similarity index 100% rename from src/icefabric_api/data/ueb_params.csv rename to data/module_ipes/ueb_params.csv diff --git a/docs/index.md b/docs/index.md index 6892352..ff196b6 100644 --- a/docs/index.md +++ b/docs/index.md @@ -13,19 +13,16 @@ An [Apache Iceberg](https://py.iceberg.apache.org/)/[Icechunk](https://icechunk. ### Getting Started This repo is managed through [UV](https://docs.astral.sh/uv/getting-started/installation/) and can be installed through: ```sh -uv venv -source .venv/bin/activate uv sync +source .venv/bin/activate ``` ### Running the API locally To run the API locally, ensure your `.env` file in your project root has the right credentials, then run ```sh -uv pip install -e src/icefabric_api -cd src/icefabric_api python -m app.main ``` -This should spin up the API services +This should spin up the API services. ### Building the API through Docker To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run @@ -38,3 +35,19 @@ This should spin up the API services ### Development To ensure that icefabric follows the specified structure, be sure to install the local dev dependencies and run `pre-commit install` + +### Documentation +To build the user guide documentation for Icefabric locally, run the following commands: +```sh +uv sync --extra docs +mkdocs serve -a localhost:8080 +``` +Docs will be spun up at localhost:8080/ + +### Pytests + +The `tests` folder is for all testing data so the global confest can pick it up. This allows all tests in the namespace packages to share the same scope without having to reference one another in tests + +To run tests, run `pytest -s` from project root. + +To run the subsetter tests, run `pytest --run-slow` as these tests take some time. Otherwise, they will be skipped diff --git a/docs/user_guide/icefabric_api.md b/docs/user_guide/icefabric_api.md index df2d212..86a8850 100644 --- a/docs/user_guide/icefabric_api.md +++ b/docs/user_guide/icefabric_api.md @@ -15,8 +15,8 @@ The API consists of several key components: ### Running the API locally To run the API locally, ensure your `.env` file in your project root has the right credentials, then run ```sh -uv pip install -e src/icefabric_api -cd src/icefabric_api +uv sync +source python -m app.main ``` This should spin up the API services @@ -130,7 +130,7 @@ else: uv sync # Start development server -python src/icefabric_api/app/main.py +python -m app.main ``` ### Adding New Data Observation Sources diff --git a/docs/user_guide/icefabric_manage.md b/docs/user_guide/icefabric_manage.md deleted file mode 100644 index 20eaac2..0000000 --- a/docs/user_guide/icefabric_manage.md +++ /dev/null @@ -1,57 +0,0 @@ -# Table Building Guide - -## Overview - -IceFabric Manage is a Python package that simplifies building Apache Iceberg catalogs from Parquet files stored on S3 or locally. - -## Architecture - -The system consists of two main components from within the `icefabric/src/icefabric_manage/` structure: - -1. **Source Code** (`src/icefabric_manage/`) - Contains the table building logic and objects -2. **Build Scripts** (`builds/`) - Orchestrates the catalog creation process from the S3 Tables - -## How It Works - -!!! info "Build Process Overview" - The system converts local Parquet file into queryable Iceberg tables through a simple file-by-file conversion process. - -### The Build Process - -1. **Create Namespace** - Creates the specified namespace if it doesn't exist -2. **Create Tables** - For each specified Parquet file, creates a corresponding Iceberg table -3. **Populate Data** - Appends the Parquet data to the newly created Iceberg tables - -See `builds/README.md` for a template on how to create your own build script - -## Usage - -### Prerequisites - -!!! warning "Important Requirements" - - The `icefabric_manage` package must be installed through `uv sync` - - AWS credentials configured for S3 access (if using S3 files) - - Environment variables loaded via `.env` file - -### Running the Build Scripts - -Build scripts have to be only run once as the files will live/persist in S3. - -To build the hydrofabric dataset, run from the `scripts/` directory: -```bash -python build_hydrofabric.py -``` - -To build USGS streamflow observations: -```bash -python builds/build_hydrofabric.py -``` - -!!! success "Expected Output" - ```text - building layer: divide-attributes - building layer: divides - building layer: flowpath-attributes-ml - ... - Build successful - ``` diff --git a/examples/Demo_Verification_TIF_to_xrDataset.ipynb b/examples/Demo_Verification_TIF_to_xrDataset.ipynb deleted file mode 100644 index fbd1742..0000000 --- a/examples/Demo_Verification_TIF_to_xrDataset.ipynb +++ /dev/null @@ -1,635 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "4ccf1cb2-05ff-4a86-ad4f-87a209349c86", - "metadata": {}, - "source": [ - "# Demo: Verification of TIF to xr.Dataset Conversion\n", - "\n", - "_Note:_\n", - "\n", - "1) To verify TIFF conversion to xr.dataset, drop this notebook into \"/src/icefabric_tools/src/icefabric_tools/icechunk\"\n", - "\n", - "2) Just for the purpose of using this notebook, one could replace \"from icefabric_tools.icechunk import S3Path\" to \"from \n", - "icechunk_s3_module import S3Path\" from within the \"/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py\"\n", - "\n", - "3) One can now verify that TIFFs can be converted to xr.Dataset as seen as below.\n" - ] - }, - { - "cell_type": "markdown", - "id": "3eb9f5ee-29a3-44bd-8cc0-47ad146705df", - "metadata": {}, - "source": [ - "# Import Modules" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "a51dff72-3f4a-4015-9d2d-fb7590709a94", - "metadata": {}, - "outputs": [], - "source": [ - "from dotenv import load_dotenv\n", - "from icefabric_tools.icechunk.arch_weather_file_utils import load_tiff_file\n", - "from icefabric_tools.icechunk.icechunk_s3_module import IcechunkS3Repo, NGWPCLocations\n", - "load_dotenv()" - ] - }, - { - "cell_type": "markdown", - "id": "02e4a87f-7384-475e-a938-e64e69f54754", - "metadata": {}, - "source": [ - "# Retrieves a TIFF from S3 & Saves to Local" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "e54f73ed-a735-4ad7-9470-47c511ff4c40", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved dataset to ./hawaii_topo_30.tif\n" - ] - } - ], - "source": [ - "repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", - "ds = repo.retrieve_dataset()\n", - "\n", - "var_name = \"__xarray_dataarray_variable__\"\n", - "fp = \"./hawaii_topo_30.tif\"\n", - "repo.retrieve_and_convert_to_tif(dest=fp,\n", - " var_name=var_name)" - ] - }, - { - "cell_type": "markdown", - "id": "018b944c-3adc-4454-88b7-55b149187607", - "metadata": {}, - "source": [ - "# After Code Modification, the following code is able to convert TIFF to xr.Dataset\n", - "\n", - "- This conversion effectively allows _xarray_data_variable_ to be converted to `elevation`. \n" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "826c5ffa-99cc-49db-b153-c6dc0466e871", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset> Size: 1GB\n",
    -       "Dimensions:      (band: 1, x: 22226, y: 14819)\n",
    -       "Coordinates:\n",
    -       "  * band         (band) int64 8B 1\n",
    -       "  * x            (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n",
    -       "  * y            (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n",
    -       "    spatial_ref  int64 8B 0\n",
    -       "Data variables:\n",
    -       "    elevation    (band, y, x) float32 1GB ...
    " - ], - "text/plain": [ - " Size: 1GB\n", - "Dimensions: (band: 1, x: 22226, y: 14819)\n", - "Coordinates:\n", - " * band (band) int64 8B 1\n", - " * x (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n", - " * y (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n", - " spatial_ref int64 8B 0\n", - "Data variables:\n", - " elevation (band, y, x) float32 1GB ..." - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "fp = \"./hawaii_topo_30.tif\"\n", - "attr_name = \"elevation\"\n", - "ds = load_tiff_file(fp,\n", - " attr_name)\n", - "ds" - ] - }, - { - "attachments": { - "098a3552-002d-4ea7-9b15-bfc1264a18c8.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "fc36554a-1ac0-4260-9553-72dd07795f93", - "metadata": {}, - "source": [ - "# Prior to Code Modification, the following was being generated for TIFF\n", - "\n", - "![image.png](attachment:098a3552-002d-4ea7-9b15-bfc1264a18c8.png)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "23b5e6ec-1887-4595-88a8-ffa5916968d1", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "“icefabric_uv”", - "language": "python", - "name": "icefabric_uv" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.10" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb b/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb deleted file mode 100644 index 18efcf7..0000000 --- a/examples/XS_Mapping_With_IDs_&_Iceberg_Demo.ipynb +++ /dev/null @@ -1,7043 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a24f20d0-abb4-413a-a70b-0fb6d3ca1e22", - "metadata": {}, - "source": [ - "# Introduction:\n", - "#### - Mapping cross-sections with IDs\n", - "#### - Converting the proccessed cross-sections to parquets, geopackages, Iceberg tables by HUC \n", - "#### - Querying for cross-sections By IDs " - ] - }, - { - "cell_type": "markdown", - "id": "4318dbc0-f266-4078-a4e6-59898e1e2c43", - "metadata": {}, - "source": [ - "## Modules" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6788bf1c-12cf-4d48-a880-2e30762b0378", - "metadata": {}, - "outputs": [], - "source": [ - "import collections\n", - "import os\n", - "import pickle\n", - "import warnings\n", - "\n", - "import pandas as pd\n", - "import pyarrow.parquet as pq\n", - "\n", - "from icefabric_manage import MapData\n", - "\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "markdown", - "id": "a4372bf1-9031-41c8-8567-5cfe3c56a0b1", - "metadata": {}, - "source": [ - "## Demo I:\n", - "### Mapping FIM-C Data to Model ID, HUC #, Reach ID, Network ID, etc" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3bd859e1-1b0a-45e9-a3aa-03aaca2cc5e2", - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "The model_id @ HUC# (('SHR6_1', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('SandHillRiver7', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('SandHillRiver7_1', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('SHR6', '09020301')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Kelly_Creek_T1', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Duck_River_Trib4', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Bell_Buckle_CrT1', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Trib_to_Holland', '06040002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Stream0510', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Martin_Stream', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Stream0526', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('Stream0527', '01020002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT115_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT79_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT61_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT119_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT45_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT84_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT91_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT115_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT66_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT120_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT107_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT34_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT84_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT55_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT2_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT106_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT103_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT71_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT103_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT120_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT25_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT8_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT65_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT110_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT105_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT73_in_BluffCr_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT55_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT72_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT72_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT35_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT129_in_Edith_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT89_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT25_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT89_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT102_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT120_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT114_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT33_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT95_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT62_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT70_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT52_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT110_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT35_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT85_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT146_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT53_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT34_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT94_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT96_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT52_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT148_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT112_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT127_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT119_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT112_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT94_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT104_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT120_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT100_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT95_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT33_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT147_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT61_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT129_in_Edith_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT162_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT45_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT235_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT82_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT98_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT86_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT2_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT53_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT86_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT118_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT85_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT235_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT62_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT98_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT100_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT152_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT73_in_BluffCr_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT118_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT96_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT108_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT127_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT107_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT103_in_Liberal_Watershed_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT108_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT66_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT147_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT106_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT71_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT105_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT102_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT79_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT70_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT114_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT113_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT82_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT103_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT113_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT91_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT65_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT8_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT152_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT104_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT162_in_Liberal_Watershed', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT146_in_UPPER_SALT_FRK_HUC8', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UNT148_in_UPPER_SALT_FRK_HUC8_1', '11060002')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioTusasTrib2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaJarita', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeBorracho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoMiranda', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeRancho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPunche', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPuncheT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadelaOrill', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT3b1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaSarcoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('FernandodeTaos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AguajePetacaT1a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioTusas_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPuncheT3a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioPuebloTrib1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPino', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT11b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioOjoCalienteT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitosT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT12c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyolaMina', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT6', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AguajedelaPetacaT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaAnchaNorth', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoRancho', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoelRitoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaPueblo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RedRiver', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT13', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10f', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CabrestoCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RiodeTruchas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1b4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT11c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioOjoCaliente_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaCorral', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PuebloArroyo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('FernandodeTaosT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10e', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioTusasTrib3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeApodaca', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AguajePetacaT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT7', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadelAgua', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPuncheT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('EmbudoCreekTrib1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LaMaderaT1a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT9', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitos_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PiedraLumbre', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1b2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitosT2b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoLagunitas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AngelCanyon', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LagunitasT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoelRito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT9a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LaMaderaT1b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioPueblo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10d1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaLemitas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1d', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPuncheT3b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitosT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ChamizalCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeOso', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaEntranasT', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitosT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioOjoCaliente', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaTioPula', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT4a1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeOso_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaAlamos', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioHondo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioOjoCalienteT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RedRiverTrib2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaOjoSarco', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaAbeque', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioLucero', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LatirCreekTrib2a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT8a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RiodeTruchasT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaMontecito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioTusas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT12', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeOjito', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AlmagreT3a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT12a', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1b1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrande', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT12b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeLorenzo', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT4b', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeRancho_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AcequiadelJaral', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT9c2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('JarosoCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaEntranas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ArroyoPuncheT6', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRito_1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LagunitasT2', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RiodelasTrampas', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT3', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('GrandeRanchoT1c', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioVallecitosT9', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaPinoReale', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioTusasTrib4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadadeJacinto', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT11c1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('LatirCreek', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('PueblodeTaosT4', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('ElRitoT5', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CanadaAncha', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('AnchaNorthT1', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('RioGrandeT10d', '13020102')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KingsCreekTrib1B_4', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KingsCreekTrib1B_1', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KingsCreekTrib1B_3', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KingsCreekTrib1B_2', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KingsCreekTrib1B', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('KC1_KC1B_LOMR', '12030107')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('NP708', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('NP720', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('NP719', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('NP180', '05020006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CB18_CorrectedEffective', '02060006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('CB18_Proposed', '02060006')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UT81Milw', '04030101')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The model_id @ HUC# (('UT5Milw', '04030101')) IS NOT featured in current model @ HUC's conflation json file.\n", - "The consolidated XS geopandas dataframes now has a standardized CRS of:\n", - "NAD83 / Conus Albers\n" - ] - } - ], - "source": [ - "# Instantiate class\n", - "obj = MapData(data_dir=f\"{os.getcwd()}/segment_data/\", subfolder_key_prefix=\"ble\")\n", - "\n", - "# Extract list of fim-c data sample's directories.\n", - "fim_data_dirs = obj.fim_data_dirs\n", - "\n", - "# Categorize FIM-C data sample files (e.g. geopackage of a given model @ HUC#, json, source_models.gpkg, ripple.gpkg)\n", - "model_gpkg_dirs, src_models_gpkg_dirs, rip_gpkg_dirs = (\n", - " obj.model_gpkg_dirs,\n", - " obj.src_models_gpkg_dirs,\n", - " obj.rip_gpkg_dirs,\n", - ")\n", - "gpkg_dirs, json_dirs = obj.gpkg_dirs, obj.json_dirs\n", - "\n", - "model_gpkg_tablenames, src_models_gpkg_tablenames, rip_gpkg_tablenames = (\n", - " obj.model_gpkg_tablenames,\n", - " obj.src_models_gpkg_tablenames,\n", - " obj.rip_gpkg_tablenames,\n", - ")\n", - "gpkg_tablenames, json_tablenames = obj.gpkg_tablenames, obj.json_tablenames\n", - "\n", - "# Generate a dictionary to map each conflation json files to their corresponding model_id & HUC #.\n", - "model2huc_map = obj.id2json\n", - "\n", - "# Generated maps of model_id & HUC # to xs (for both us & ds cross-section) to reach ID & \"network_to_id\"\n", - "us_xs2id_map = obj.us_ref_dict\n", - "ds_xs2id_map = obj.ds_ref_dict\n", - "\n", - "# Generated map of model_id & HUC # to each HEC-RAS model's geopackage.\n", - "model_id2gpkg_map = obj.model_id2gpkg\n", - "\n", - "# Generated map of HUC # to each ripple geopackage.\n", - "rip_huc2gpkg_map = obj.rip_huc2gpkg\n", - "\n", - "# Map IDs to each model's cross-section instance\n", - "id2xs_dfs = obj.xs_df_list\n", - "\n", - "# [OPTIONAL: If a user wants to extract individual river geopandas, parquet, &/or gpkg]\n", - "# Map of XS as geopandas per river per HUC w/ their inherited CRS by HUC\n", - "# xsbyriver_map = obj.groupbyriver_dict\n", - "\n", - "# [OPTIONAL: Map of inherited CRS to HUC, model_id, river name]\n", - "crs_map = obj.crs_dict\n", - "\n", - "# Conslidate all HEC-RAS models' cross-sections featuring their corresponding IDs.\n", - "consolidated_id2xs = obj.consolidated_id2xs" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "86bfa6f3-0c8d-4cdc-8f1d-2b4e73b4d00b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
    0BapCrReach1BapCr ,Reach148077.80BapCr Reach1 48077.8743.50756.11207.08207.08207.08...3607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436369.214 1962609.838, 436369.691...07130010sa_11380162613801634NoneNone
    1BapCrReach1BapCr ,Reach147870.72BapCr Reach1 47870.72742.54755.74259.78259.78259.78...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436352.44 1962575.103, 436311.185 ...07130010sa_1NoneNoneNoneNone
    2BapCrReach1BapCr ,Reach147610.94BapCr Reach1 47610.94741.94755.17374.57374.57374.57...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436323.593 1962531.597, 436264.538...07130010sa_1NoneNoneNoneNone
    3BapCrReach1BapCr ,Reach147236.37BapCr Reach1 47236.37740.62754.18333.59333.59333.59...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436310.242 1962416.052, 436236.357...07130010sa_1NoneNoneNoneNone
    4BapCrReach1BapCr ,Reach146902.78BapCr Reach1 46902.78739.04757.19375.07375.07375.07...2607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436292.364 1962322.688, 436219.117...07130010sa_1NoneNoneNoneNone
    \n", - "

    5 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " river reach river_reach river_station \\\n", - "0 BapCr Reach1 BapCr ,Reach1 48077.80 \n", - "1 BapCr Reach1 BapCr ,Reach1 47870.72 \n", - "2 BapCr Reach1 BapCr ,Reach1 47610.94 \n", - "3 BapCr Reach1 BapCr ,Reach1 47236.37 \n", - "4 BapCr Reach1 BapCr ,Reach1 46902.78 \n", - "\n", - " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", - "0 BapCr Reach1 48077.8 743.50 756.11 207.08 \n", - "1 BapCr Reach1 47870.72 742.54 755.74 259.78 \n", - "2 BapCr Reach1 47610.94 741.94 755.17 374.57 \n", - "3 BapCr Reach1 47236.37 740.62 754.18 333.59 \n", - "4 BapCr Reach1 46902.78 739.04 757.19 375.07 \n", - "\n", - " right_reach_length channel_reach_length ... number_of_coords \\\n", - "0 207.08 207.08 ... 3 \n", - "1 259.78 259.78 ... 2 \n", - "2 374.57 374.57 ... 2 \n", - "3 333.59 333.59 ... 2 \n", - "4 375.07 375.07 ... 2 \n", - "\n", - " flows profile_names \\\n", - "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "1 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "2 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "3 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "4 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "\n", - " geometry huc model_id \\\n", - "0 LINESTRING (436369.214 1962609.838, 436369.691... 07130010 sa_1 \n", - "1 LINESTRING (436352.44 1962575.103, 436311.185 ... 07130010 sa_1 \n", - "2 LINESTRING (436323.593 1962531.597, 436264.538... 07130010 sa_1 \n", - "3 LINESTRING (436310.242 1962416.052, 436236.357... 07130010 sa_1 \n", - "4 LINESTRING (436292.364 1962322.688, 436219.117... 07130010 sa_1 \n", - "\n", - " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", - "0 13801626 13801634 None None \n", - "1 None None None None \n", - "2 None None None None \n", - "3 None None None None \n", - "4 None None None None \n", - "\n", - "[5 rows x 24 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "consolidated_id2xs.head(5)\n", - "# consolidated_id2xs.shape" - ] - }, - { - "attachments": { - "6667e33a-9f14-4aeb-9078-49fc7dd265d2.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "00d552bf-d39e-40f0-ace5-54a09f1f35e8", - "metadata": {}, - "source": [ - "## Demo I Result:\n", - "![image.png](attachment:6667e33a-9f14-4aeb-9078-49fc7dd265d2.png)\n" - ] - }, - { - "cell_type": "markdown", - "id": "2959553a-f779-46ef-9dca-2f2a20eb6554", - "metadata": {}, - "source": [ - "## Demo II: \n", - "### Querying XS Instance by Network ID" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "8d337a5c-0f7a-42c4-91cf-72e7f0da98cb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
    28507BattleCrCypress1BattleCrCypress ,113227.35BattleCrCypress 1 13227.3517.8882.69464.51459.84462.47...21230.0\\n1330.01%\\n1% UltimateLINESTRING (1665550.543 1889977.407, 1664479.0...02060006BattleCreekCypressSwamp1190819011908200NoneNone
    \n", - "

    1 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " river reach river_reach \\\n", - "28507 BattleCrCypress 1 BattleCrCypress ,1 \n", - "\n", - " river_station river_reach_rs thalweg xs_max_elevation \\\n", - "28507 13227.35 BattleCrCypress 1 13227.35 17.88 82.69 \n", - "\n", - " left_reach_length right_reach_length channel_reach_length ... \\\n", - "28507 464.51 459.84 462.47 ... \n", - "\n", - " number_of_coords flows profile_names \\\n", - "28507 2 1230.0\\n1330.0 1%\\n1% Ultimate \n", - "\n", - " geometry huc \\\n", - "28507 LINESTRING (1665550.543 1889977.407, 1664479.0... 02060006 \n", - "\n", - " model_id us_reach_id us_network_to_id ds_reach_id \\\n", - "28507 BattleCreekCypressSwamp 11908190 11908200 None \n", - "\n", - " ds_network_to_id \n", - "28507 None \n", - "\n", - "[1 rows x 24 columns]" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario I\n", - "us_network_to_id = \"11908200\"\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", - "queried_xsbyid" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0e5adb81-5ba0-41ad-a1f1-1196b822f1f7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
    0BapCrReach1BapCr ,Reach148077.8BapCr Reach1 48077.8743.5756.11207.08207.08207.08...3607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (436369.214 1962609.838, 436369.691...07130010sa_11380162613801634NoneNone
    \n", - "

    1 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " river reach river_reach river_station \\\n", - "0 BapCr Reach1 BapCr ,Reach1 48077.8 \n", - "\n", - " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", - "0 BapCr Reach1 48077.8 743.5 756.11 207.08 \n", - "\n", - " right_reach_length channel_reach_length ... number_of_coords \\\n", - "0 207.08 207.08 ... 3 \n", - "\n", - " flows profile_names \\\n", - "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "\n", - " geometry huc model_id \\\n", - "0 LINESTRING (436369.214 1962609.838, 436369.691... 07130010 sa_1 \n", - "\n", - " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", - "0 13801626 13801634 None None \n", - "\n", - "[1 rows x 24 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario II\n", - "us_network_to_id = \"13801634\"\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", - "queried_xsbyid" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "38a9c0ba-388b-41a5-a282-2c245e42c12c", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
    307961242151242,15789.62141242 15 789.62143520.5583568.42085.1441693.2765793.45487...10193.0\\n359.0\\n522.0\\n723.0\\n919.0\\n569.0\\n1347.010yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5...LINESTRING (-1355141.15 1253454.057, -1355086....150400071242_ras2129430921294311NoneNone
    3087811951091195 ,1096071.47501195 109 6071.4753534.4503616.780206.69170147.98750195.85400...81746.0\\n3146.0\\n4514.0\\n6152.0\\n7819.0\\n4840.0...10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n500yrLINESTRING (-1355056.984 1253633.24, -1355173....150400071195_ras21294309212943112129424321294309
    309661236611236,61725.29791236 61 725.29793533.8293587.055151.74160139.83360148.79750...7433.0\\n796.0\\n1152.0\\n1584.0\\n2014.0\\n1247.0\\n...10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5...LINESTRING (-1355130.287 1253615.579, -1355168...150400071236_ras21294309212943112129555121294309
    \n", - "

    3 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " river reach river_reach river_station \\\n", - "30796 1242 15 1242,15 789.6214 \n", - "30878 1195 109 1195 ,109 6071.4750 \n", - "30966 1236 61 1236,61 725.2979 \n", - "\n", - " river_reach_rs thalweg xs_max_elevation left_reach_length \\\n", - "30796 1242 15 789.6214 3520.558 3568.420 85.14416 \n", - "30878 1195 109 6071.475 3534.450 3616.780 206.69170 \n", - "30966 1236 61 725.2979 3533.829 3587.055 151.74160 \n", - "\n", - " right_reach_length channel_reach_length ... number_of_coords \\\n", - "30796 93.27657 93.45487 ... 10 \n", - "30878 147.98750 195.85400 ... 8 \n", - "30966 139.83360 148.79750 ... 7 \n", - "\n", - " flows \\\n", - "30796 193.0\\n359.0\\n522.0\\n723.0\\n919.0\\n569.0\\n1347.0 \n", - "30878 1746.0\\n3146.0\\n4514.0\\n6152.0\\n7819.0\\n4840.0... \n", - "30966 433.0\\n796.0\\n1152.0\\n1584.0\\n2014.0\\n1247.0\\n... \n", - "\n", - " profile_names \\\n", - "30796 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5... \n", - "30878 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n500yr \n", - "30966 10yr\\n25yr\\n50yr\\n100yr\\n100plus\\n100minus\\n5... \n", - "\n", - " geometry huc model_id \\\n", - "30796 LINESTRING (-1355141.15 1253454.057, -1355086.... 15040007 1242_ras \n", - "30878 LINESTRING (-1355056.984 1253633.24, -1355173.... 15040007 1195_ras \n", - "30966 LINESTRING (-1355130.287 1253615.579, -1355168... 15040007 1236_ras \n", - "\n", - " us_reach_id us_network_to_id ds_reach_id ds_network_to_id \n", - "30796 21294309 21294311 None None \n", - "30878 21294309 21294311 21294243 21294309 \n", - "30966 21294309 21294311 21295551 21294309 \n", - "\n", - "[3 rows x 24 columns]" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario III\n", - "us_network_to_id = \"21294311\"\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", - "queried_xsbyid" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "94b5df36-a194-402b-b795-e47487fef291", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    riverreachriver_reachriver_stationriver_reach_rsthalwegxs_max_elevationleft_reach_lengthright_reach_lengthchannel_reach_length...number_of_coordsflowsprofile_namesgeometryhucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_id
    19216cottonwood_creek45cottonwood_creek,451773.175cottonwood_creek 45 1773.1751342.2951450.915166.0375330.7853294.9549...147096.0\\n9743.0\\n4449.0100yr\\n100yrplus\\n100yrminusLINESTRING (-1536837.566 2728068.167, -1536849...17060305cottonwood_creek_1_ras23597195235971932359719723597195
    \n", - "

    1 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " river reach river_reach river_station \\\n", - "19216 cottonwood_creek 45 cottonwood_creek,45 1773.175 \n", - "\n", - " river_reach_rs thalweg xs_max_elevation \\\n", - "19216 cottonwood_creek 45 1773.175 1342.295 1450.915 \n", - "\n", - " left_reach_length right_reach_length channel_reach_length ... \\\n", - "19216 166.0375 330.7853 294.9549 ... \n", - "\n", - " number_of_coords flows profile_names \\\n", - "19216 14 7096.0\\n9743.0\\n4449.0 100yr\\n100yrplus\\n100yrminus \n", - "\n", - " geometry huc \\\n", - "19216 LINESTRING (-1536837.566 2728068.167, -1536849... 17060305 \n", - "\n", - " model_id us_reach_id us_network_to_id ds_reach_id \\\n", - "19216 cottonwood_creek_1_ras 23597195 23597193 23597197 \n", - "\n", - " ds_network_to_id \n", - "19216 23597195 \n", - "\n", - "[1 rows x 24 columns]" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario IV\n", - "us_network_to_id = \"23597193\"\n", - "queried_xsbyid = consolidated_id2xs[consolidated_id2xs[\"us_network_to_id\"] == us_network_to_id]\n", - "queried_xsbyid" - ] - }, - { - "cell_type": "markdown", - "id": "64d121ff-4622-4863-ab1e-16514c28581f", - "metadata": {}, - "source": [ - "## Demo III: \n", - "### Querying Each XS Layer by Model ID & HUC Number" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c8659230-af75-48ff-b988-d1b0dffc260b", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
    009020301GF_EGF_FIS_Submittal120493982327066766NoneNoneRRN GFEGF 170.0774.37834.80170.0...700.0934.0Type RM Length L Ch R = 1 ,170 ,900,934,70...[(44883.4, 834.0), (47186.0, 832.44), (49148.8...['50124', '50484']238749000.0\\n71000.0\\n89000.0\\n139000.010-Year\\n50-Year\\n100-Year\\n500 YearLINESTRING (2818284.13 354233.597, 2818770.518...
    109020301GF_EGF_FIS_Submittal1204NoneNoneNoneNoneRRN GFEGF 169.0772.69842.37169.0...340.0344.0Type RM Length L Ch R = 1 ,169 ,450,344,34...[(45195.48, 833.55), (45220.07, 833.6), (45256...['50192', '50563']263849000.0\\n71000.0\\n89000.0\\n139000.010-Year\\n50-Year\\n100-Year\\n500 YearLINESTRING (2815855.489 354032.803, 2816473.50...
    \n", - "

    2 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " huc model_id us_reach_id us_network_to_id \\\n", - "0 09020301 GF_EGF_FIS_Submittal1204 9398232 7066766 \n", - "1 09020301 GF_EGF_FIS_Submittal1204 None None \n", - "\n", - " ds_reach_id ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", - "0 None None RRN GFEGF 170.0 774.37 834.80 \n", - "1 None None RRN GFEGF 169.0 772.69 842.37 \n", - "\n", - " river_station ... right_reach_length channel_reach_length \\\n", - "0 170.0 ... 700.0 934.0 \n", - "1 169.0 ... 340.0 344.0 \n", - "\n", - " ras_data \\\n", - "0 Type RM Length L Ch R = 1 ,170 ,900,934,70... \n", - "1 Type RM Length L Ch R = 1 ,169 ,450,344,34... \n", - "\n", - " station_elevation_points bank_stations \\\n", - "0 [(44883.4, 834.0), (47186.0, 832.44), (49148.8... ['50124', '50484'] \n", - "1 [(45195.48, 833.55), (45220.07, 833.6), (45256... ['50192', '50563'] \n", - "\n", - " number_of_station_elevation_points number_of_coords \\\n", - "0 238 7 \n", - "1 263 8 \n", - "\n", - " flows profile_names \\\n", - "0 49000.0\\n71000.0\\n89000.0\\n139000.0 10-Year\\n50-Year\\n100-Year\\n500 Year \n", - "1 49000.0\\n71000.0\\n89000.0\\n139000.0 10-Year\\n50-Year\\n100-Year\\n500 Year \n", - "\n", - " geometry \n", - "0 LINESTRING (2818284.13 354233.597, 2818770.518... \n", - "1 LINESTRING (2815855.489 354032.803, 2816473.50... \n", - "\n", - "[2 rows x 24 columns]" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario I\n", - "model_id = \"GF_EGF_FIS_Submittal1204\"\n", - "huc_num = \"09020301\"\n", - "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", - "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", - "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", - "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", - "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", - "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", - "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", - "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", - "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", - "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", - "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", - "tt.head(2)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "eb406b80-c188-47ec-8025-2446f54e0575", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
    007130010sa_11380162613801634NoneNoneBapCr Reach1 48077.8743.50756.1148077.80...207.08207.08Type RM Length L Ch R = 1 ,48077.80,207.08,207...[(0.0, 754.17), (3.42, 753.96), (6.85, 753.88)...['99.27', '143.86']673607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (2120750.469 1421598.418, 2120758.2...
    107130010sa_1NoneNoneNoneNoneBapCr Reach1 47870.72742.54755.7447870.72...259.78259.78Type RM Length L Ch R = 1 ,47870.72,259.78,259...[(0.0, 755.74), (6.92, 755.26), (10.38, 755.11...['65.75', '107.27']582607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.010%\\n4%\\n2%\\n1%\\n0.2%\\n1%+LINESTRING (2120687.969 1421489.043, 2120560.3...
    \n", - "

    2 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", - "0 07130010 sa_1 13801626 13801634 None \n", - "1 07130010 sa_1 None None None \n", - "\n", - " ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", - "0 None BapCr Reach1 48077.8 743.50 756.11 \n", - "1 None BapCr Reach1 47870.72 742.54 755.74 \n", - "\n", - " river_station ... right_reach_length channel_reach_length \\\n", - "0 48077.80 ... 207.08 207.08 \n", - "1 47870.72 ... 259.78 259.78 \n", - "\n", - " ras_data \\\n", - "0 Type RM Length L Ch R = 1 ,48077.80,207.08,207... \n", - "1 Type RM Length L Ch R = 1 ,47870.72,259.78,259... \n", - "\n", - " station_elevation_points bank_stations \\\n", - "0 [(0.0, 754.17), (3.42, 753.96), (6.85, 753.88)... ['99.27', '143.86'] \n", - "1 [(0.0, 755.74), (6.92, 755.26), (10.38, 755.11... ['65.75', '107.27'] \n", - "\n", - " number_of_station_elevation_points number_of_coords \\\n", - "0 67 3 \n", - "1 58 2 \n", - "\n", - " flows profile_names \\\n", - "0 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "1 607.0\\n798.0\\n943.0\\n1100.0\\n1460.0\\n1650.0 10%\\n4%\\n2%\\n1%\\n0.2%\\n1%+ \n", - "\n", - " geometry \n", - "0 LINESTRING (2120750.469 1421598.418, 2120758.2... \n", - "1 LINESTRING (2120687.969 1421489.043, 2120560.3... \n", - "\n", - "[2 rows x 24 columns]" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario II\n", - "model_id = \"sa_1\"\n", - "huc_num = \"07130010\"\n", - "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", - "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", - "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", - "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", - "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", - "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", - "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", - "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", - "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", - "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", - "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", - "tt.head(2)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "f65f2e37-c7b3-4061-8990-b0f73a98e01e", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
    018070204BorregoCyn_ExistingNoneNoneNoneNoneBorrego Cyn Reach 1 US 1345.913681.12697.361345.913...149.24148.80Type RM Length L Ch R = 1 ,1345.913,155.13,148...[(0.0, 692.38), (121.89, 691.88), (205.0, 692....['205', '255']2321126.0PF 1LINESTRING (6127868.943 2194456.933, 6127820.9...
    118070204BorregoCyn_ExistingNoneNoneNoneNoneBorrego Cyn Reach 1 US 1197.11680.18697.561197.110...200.51200.29Type RM Length L Ch R = 1 ,1197.11 ,203.67,200...[(0.0, 692.64), (14.99, 692.64), (16.4, 692.64...['164', '256']3721126.0PF 1LINESTRING (6127720.709 2194447.582, 6127672.7...
    \n", - "

    2 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", - "0 18070204 BorregoCyn_Existing None None None \n", - "1 18070204 BorregoCyn_Existing None None None \n", - "\n", - " ds_network_to_id river_reach_rs thalweg \\\n", - "0 None Borrego Cyn Reach 1 US 1345.913 681.12 \n", - "1 None Borrego Cyn Reach 1 US 1197.11 680.18 \n", - "\n", - " xs_max_elevation river_station ... right_reach_length \\\n", - "0 697.36 1345.913 ... 149.24 \n", - "1 697.56 1197.110 ... 200.51 \n", - "\n", - " channel_reach_length ras_data \\\n", - "0 148.80 Type RM Length L Ch R = 1 ,1345.913,155.13,148... \n", - "1 200.29 Type RM Length L Ch R = 1 ,1197.11 ,203.67,200... \n", - "\n", - " station_elevation_points bank_stations \\\n", - "0 [(0.0, 692.38), (121.89, 691.88), (205.0, 692.... ['205', '255'] \n", - "1 [(0.0, 692.64), (14.99, 692.64), (16.4, 692.64... ['164', '256'] \n", - "\n", - " number_of_station_elevation_points number_of_coords flows profile_names \\\n", - "0 23 2 1126.0 PF 1 \n", - "1 37 2 1126.0 PF 1 \n", - "\n", - " geometry \n", - "0 LINESTRING (6127868.943 2194456.933, 6127820.9... \n", - "1 LINESTRING (6127720.709 2194447.582, 6127672.7... \n", - "\n", - "[2 rows x 24 columns]" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario III\n", - "model_id = \"BorregoCyn_Existing\"\n", - "huc_num = \"18070204\"\n", - "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", - "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", - "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", - "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", - "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", - "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", - "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", - "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", - "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", - "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", - "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", - "tt.head(2)" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "28c8bfb6-9cf9-4215-9bcd-605dcd0797c8", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucmodel_idus_reach_idus_network_to_idds_reach_idds_network_to_idriver_reach_rsthalwegxs_max_elevationriver_station...right_reach_lengthchannel_reach_lengthras_datastation_elevation_pointsbank_stationsnumber_of_station_elevation_pointsnumber_of_coordsflowsprofile_namesgeometry
    017060305cottonwood_creek_ras2359728323597281NoneNonecottonwood_creek 874 89457.283764.9973862.72489457.28...99.942199.9421Type RM Length L Ch R = 1 ,89457.28,99.942100,...[(9649.015, 3806.544), (9649.124, 3806.528), (...['9649.015', '10350.99']86892.0PF 1LINESTRING (2462395.976 1602716.665, 2462389.5...
    117060305cottonwood_creek_rasNoneNoneNoneNonecottonwood_creek 874 89357.333762.6663867.24889357.33...99.942199.9421Type RM Length L Ch R = 1 ,89357.33,99.942100,...[(9649.021, 3808.923), (9652.402, 3808.42), (9...['9649.021', '10350.98']83992.0PF 1LINESTRING (2462481.133 1602698.905, 2462480.8...
    \n", - "

    2 rows × 24 columns

    \n", - "
    " - ], - "text/plain": [ - " huc model_id us_reach_id us_network_to_id ds_reach_id \\\n", - "0 17060305 cottonwood_creek_ras 23597283 23597281 None \n", - "1 17060305 cottonwood_creek_ras None None None \n", - "\n", - " ds_network_to_id river_reach_rs thalweg xs_max_elevation \\\n", - "0 None cottonwood_creek 874 89457.28 3764.997 3862.724 \n", - "1 None cottonwood_creek 874 89357.33 3762.666 3867.248 \n", - "\n", - " river_station ... right_reach_length channel_reach_length \\\n", - "0 89457.28 ... 99.9421 99.9421 \n", - "1 89357.33 ... 99.9421 99.9421 \n", - "\n", - " ras_data \\\n", - "0 Type RM Length L Ch R = 1 ,89457.28,99.942100,... \n", - "1 Type RM Length L Ch R = 1 ,89357.33,99.942100,... \n", - "\n", - " station_elevation_points \\\n", - "0 [(9649.015, 3806.544), (9649.124, 3806.528), (... \n", - "1 [(9649.021, 3808.923), (9652.402, 3808.42), (9... \n", - "\n", - " bank_stations number_of_station_elevation_points \\\n", - "0 ['9649.015', '10350.99'] 86 \n", - "1 ['9649.021', '10350.98'] 83 \n", - "\n", - " number_of_coords flows profile_names \\\n", - "0 8 92.0 PF 1 \n", - "1 9 92.0 PF 1 \n", - "\n", - " geometry \n", - "0 LINESTRING (2462395.976 1602716.665, 2462389.5... \n", - "1 LINESTRING (2462481.133 1602698.905, 2462480.8... \n", - "\n", - "[2 rows x 24 columns]" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario IV\n", - "model_id = \"cottonwood_creek_ras\"\n", - "huc_num = \"17060305\"\n", - "\n", - "tt = model_id2gpkg_map[(model_id, huc_num)][\"XS\"]\n", - "tt.insert(0, \"huc\", tt.pop(\"huc\"))\n", - "tt.insert(1, \"model_id\", tt.pop(\"model_id\"))\n", - "tt.insert(2, \"us_reach_id\", tt.pop(\"us_reach_id\"))\n", - "tt.insert(3, \"us_network_to_id\", tt.pop(\"us_network_to_id\"))\n", - "tt.insert(4, \"ds_reach_id\", tt.pop(\"ds_reach_id\"))\n", - "tt.insert(5, \"ds_network_to_id\", tt.pop(\"ds_network_to_id\"))\n", - "tt.insert(6, \"river_reach_rs\", tt.pop(\"river_reach_rs\"))\n", - "tt.insert(7, \"thalweg\", tt.pop(\"thalweg\"))\n", - "tt.insert(8, \"xs_max_elevation\", tt.pop(\"xs_max_elevation\"))\n", - "tt.insert(9, \"river_station\", tt.pop(\"river_station\"))\n", - "tt.head(2)\n", - "# tt.tail()" - ] - }, - { - "cell_type": "markdown", - "id": "dcbab67e-335d-4d5c-89b6-892228fd1e67", - "metadata": {}, - "source": [ - "## Demo IVa: \n", - "### Per HUC, save & verify each river's XS data as parquet & geopackage" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "ccc7bb03-6669-4bca-8f2e-161f683c6b9a", - "metadata": {}, - "outputs": [], - "source": [ - "# # # Scenario I\n", - "# # Read Parquet file\n", - "# df1 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_07130010/BapCr.parquet',\n", - "# engine='pyarrow')\n", - "\n", - "# # Display the first few rows\n", - "# print(df1.head())" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "c907f518-7d65-490a-a31b-395fc02eaa81", - "metadata": {}, - "outputs": [], - "source": [ - "# # # Scenario II\n", - "\n", - "# # Read Parquet file\n", - "# df2 = pd.read_parquet('/home/sylvia.chin/Desktop/iceberg/xs_data/huc_01020002/Martin Stream.parquet',\n", - "# engine='pyarrow')\n", - "\n", - "# # Display the first few rows\n", - "# print(df2.head())" - ] - }, - { - "cell_type": "markdown", - "id": "bbd6c174-53b6-4472-b5a2-1ed76e736600", - "metadata": {}, - "source": [ - "## Demo IVb: \n", - "### Per HUC, save & verify each HUC's XS data as parquet & geopackage " - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "8304726d-8564-4f4a-9729-f3fe887757d4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucrivermodel_idus_reach_idds_reach_id
    704210120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
    704310120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
    704410120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
    704510120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
    704610120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSE_1NoneNone
    ..................
    722510120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
    722610120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
    722710120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
    722810120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
    722910120203Spearfish CreekSpearfish_Cr_LOMR_FEMA_RESPONSENoneNone
    \n", - "

    188 rows × 5 columns

    \n", - "
    " - ], - "text/plain": [ - " huc river model_id \\\n", - "7042 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", - "7043 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", - "7044 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", - "7045 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", - "7046 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE_1 \n", - "... ... ... ... \n", - "7225 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", - "7226 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", - "7227 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", - "7228 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", - "7229 10120203 Spearfish Creek Spearfish_Cr_LOMR_FEMA_RESPONSE \n", - "\n", - " us_reach_id ds_reach_id \n", - "7042 None None \n", - "7043 None None \n", - "7044 None None \n", - "7045 None None \n", - "7046 None None \n", - "... ... ... \n", - "7225 None None \n", - "7226 None None \n", - "7227 None None \n", - "7228 None None \n", - "7229 None None \n", - "\n", - "[188 rows x 5 columns]" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# # Scenario I\n", - "# Read Parquet file\n", - "df1 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_10120203/huc_10120203.parquet\", engine=\"pyarrow\")\n", - "\n", - "# set(df1['river'])\n", - "# set(df1['huc'])\n", - "df1[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" - ] - }, - { - "cell_type": "markdown", - "id": "32a5e23d-ba5e-45fc-ab95-a894d69f70a3", - "metadata": {}, - "source": [ - "#### Cross-checking iceberg table with parquet @ huc_10120203\n", - "\n", - "huc: [[\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\",...,\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\"]]\n", - "model_id: [[\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",...,\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\"]]\n", - "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "__index_level_0__: [[7042,7043,7044,7045,7046,...,7225,7226,7227,7228,7229]]" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "id": "a5806256-a6a2-4e47-b206-cd1c4d378ebb", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucrivermodel_idus_reach_idds_reach_id
    1917817060305cottonwood_creekcottonwood_creek_1_ras23597201None
    1917917060305cottonwood_creekcottonwood_creek_1_rasNoneNone
    1918017060305cottonwood_creekcottonwood_creek_1_ras2359719923597201
    1918117060305cottonwood_creekcottonwood_creek_1_rasNoneNone
    1918217060305cottonwood_creekcottonwood_creek_1_rasNoneNone
    ..................
    2440317060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
    2440417060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
    2440517060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
    2440617060305south_fork_clearsouth_fork_clearwater_river_1_rasNoneNone
    2440717060305south_fork_clearsouth_fork_clearwater_river_1_rasNone23597347
    \n", - "

    5230 rows × 5 columns

    \n", - "
    " - ], - "text/plain": [ - " huc river model_id \\\n", - "19178 17060305 cottonwood_creek cottonwood_creek_1_ras \n", - "19179 17060305 cottonwood_creek cottonwood_creek_1_ras \n", - "19180 17060305 cottonwood_creek cottonwood_creek_1_ras \n", - "19181 17060305 cottonwood_creek cottonwood_creek_1_ras \n", - "19182 17060305 cottonwood_creek cottonwood_creek_1_ras \n", - "... ... ... ... \n", - "24403 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", - "24404 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", - "24405 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", - "24406 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", - "24407 17060305 south_fork_clear south_fork_clearwater_river_1_ras \n", - "\n", - " us_reach_id ds_reach_id \n", - "19178 23597201 None \n", - "19179 None None \n", - "19180 23597199 23597201 \n", - "19181 None None \n", - "19182 None None \n", - "... ... ... \n", - "24403 None None \n", - "24404 None None \n", - "24405 None None \n", - "24406 None None \n", - "24407 None 23597347 \n", - "\n", - "[5230 rows x 5 columns]" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario II\n", - "# Read Parquet file\n", - "df2 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_17060305/huc_17060305.parquet\", engine=\"pyarrow\")\n", - "\n", - "# set(df2['river'])\n", - "# set(df2['huc'])\n", - "df2[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" - ] - }, - { - "cell_type": "markdown", - "id": "8784d040-695c-421a-85bf-27f585b4186e", - "metadata": {}, - "source": [ - "#### Cross-checking iceberg table with parquet @ huc_17060305\n", - "\n", - "huc: [[\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\",...,\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\"]]\n", - "model_id: [[\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",...,\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\"]]\n", - "us_reach_id: [[\"23597201\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"23597201\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597347\"]]" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "id": "abc4da53-c0d5-45a1-a0d6-0c4ee28df1b0", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    hucrivermodel_idus_reach_idds_reach_id
    307871504000712421242_rasNoneNone
    307881504000712421242_rasNoneNone
    307891504000712421242_rasNoneNone
    307901504000712421242_rasNoneNone
    307911504000712421242_rasNoneNone
    ..................
    309661504000712361236_ras2129430921295551
    309671504000712361236_rasNoneNone
    309681504000712361236_rasNoneNone
    309691504000712361236_rasNoneNone
    309701504000712361236_rasNone21294309
    \n", - "

    184 rows × 5 columns

    \n", - "
    " - ], - "text/plain": [ - " huc river model_id us_reach_id ds_reach_id\n", - "30787 15040007 1242 1242_ras None None\n", - "30788 15040007 1242 1242_ras None None\n", - "30789 15040007 1242 1242_ras None None\n", - "30790 15040007 1242 1242_ras None None\n", - "30791 15040007 1242 1242_ras None None\n", - "... ... ... ... ... ...\n", - "30966 15040007 1236 1236_ras 21294309 21295551\n", - "30967 15040007 1236 1236_ras None None\n", - "30968 15040007 1236 1236_ras None None\n", - "30969 15040007 1236 1236_ras None None\n", - "30970 15040007 1236 1236_ras None 21294309\n", - "\n", - "[184 rows x 5 columns]" - ] - }, - "execution_count": 17, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Scenario III\n", - "# Read Parquet file\n", - "df3 = pd.read_parquet(f\"/{os.getcwd()}/xs_data/mip_15040007/huc_15040007.parquet\", engine=\"pyarrow\")\n", - "\n", - "# set(df2['river'])\n", - "# set(df2['huc'])\n", - "df3[[\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\"]]" - ] - }, - { - "cell_type": "markdown", - "id": "d576de82-bed6-4d89-953f-cde2eeb7ba81", - "metadata": {}, - "source": [ - "#### Cross-checking iceberg table with parquet @ huc_15040007\n", - "\n", - "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", - "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", - "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", - "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294311\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]\n", - "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"21294311\"]]\n", - "__index_level_0__: [[30787,30788,30789,30790,30791,...,30966,30967,30968,30969,30970]]" - ] - }, - { - "cell_type": "markdown", - "id": "a4738ea4-8890-4f50-a372-a66eb5865830", - "metadata": { - "scrolled": true - }, - "source": [ - "## Demo Va: \n", - "### Transform parquet into Iceberg tables via calling iceberg_xs_table.py (scenario for sourcing parquet from local)" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "id": "a2bf23b0-3449-43e9-a461-934a1fabd0d7", - "metadata": {}, - "outputs": [], - "source": [ - "from iceberg_table import *\n", - "\n", - "# Instantiate iceberg class\n", - "iceberg_obj = IcebergTable()\n", - "\n", - "# Extract list of parquets\n", - "file_list = iceberg_obj.read_data_dirs(data_dir=f\"{os.getcwd()}/xs_data/\")\n", - "parquet_list = [file for file in file_list if file.endswith(\".parquet\")]\n", - "\n", - "# Establish new Iceberg catalog for XS data\n", - "iceberg_obj.establish_catalog(catalog_name=\"xs\", namespace=\"mip\")\n", - "\n", - "# Generate tables w/in the new Iceberg catalog for all parquets detected\n", - "iceberg_obj.create_table_for_all_parquets(parquet_list, app_name=\"mip_xs\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "39a187bf-cfba-4aaa-9c8f-69146b699307", - "metadata": {}, - "source": [ - "## Demo Vb: \n", - "### Establish A New Iceberg Catalog & Generate Tables For All Parquets in S3 (scenario for sourcing parquet from s3)" - ] - }, - { - "cell_type": "code", - "execution_count": 20, - "id": "5082de29-3548-48e6-a741-ddd6342d3341", - "metadata": {}, - "outputs": [], - "source": [ - "# # Instantiate class\n", - "# obj = IcebergTable()\n", - "\n", - "# # Establish new Iceberg catalog\n", - "# obj.establish_catalog(catalog_name='xs_dev2',\n", - "# namespace='mip')\n", - "\n", - "# # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - "# obj.create_table_for_all_s3parquets(app_name='mip_xs',\n", - "# bucket_name='ngwpc-xs',\n", - "# profile_name='default')" - ] - }, - { - "attachments": { - "ca580451-2f38-43d8-8a8e-7e8767aedc95.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "365d1563-c753-4b72-a202-04cf8c7a95d8", - "metadata": {}, - "source": [ - "## Demo V Result:\n", - "![image.png](attachment:ca580451-2f38-43d8-8a8e-7e8767aedc95.png)" - ] - }, - { - "cell_type": "markdown", - "id": "f20bbfc9-6806-434d-afbe-45fd932105a2", - "metadata": {}, - "source": [ - "### Query XS by HUC & additional attributes of interest @ a given HUC from Iceberg Tables" - ] - }, - { - "cell_type": "code", - "execution_count": 21, - "id": "7bf79944-1da0-4aa2-a6d3-c6f9a976e3ae", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "river: large_string\n", - "reach: large_string\n", - "river_reach: large_string\n", - "river_station: double\n", - "river_reach_rs: large_string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: large_string\n", - "station_elevation_points: large_string\n", - "bank_stations: large_string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: large_string\n", - "profile_names: large_string\n", - "geometry: large_binary\n", - "huc: large_string\n", - "model_id: large_string\n", - "us_reach_id: large_string\n", - "us_network_to_id: large_string\n", - "ds_reach_id: large_string\n", - "ds_network_to_id: large_string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",...,\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\",\"Spearfish Creek\"]]\n", - "reach: [[\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",\"Breakout Channel\",...,\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\",\"Old US14 Breakou\"]]\n", - "river_reach: [[\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",\"Spearfish Creek ,Breakout Channel\",...,\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\",\"Spearfish Creek ,Old US14 Breakou\"]]\n", - "river_station: [[733,665,553,356,254,...,1796,1502,1236,814,253]]\n", - "river_reach_rs: [[\"Spearfish Creek Breakout Channel 733.0\",\"Spearfish Creek Breakout Channel 665.0\",\"Spearfish Creek Breakout Channel 553.0\",\"Spearfish Creek Breakout Channel 356.0\",\"Spearfish Creek Breakout Channel 254.0\",...,\"Spearfish Creek Old US14 Breakou 1796.0\",\"Spearfish Creek Old US14 Breakou 1502.0\",\"Spearfish Creek Old US14 Breakou 1236.0\",\"Spearfish Creek Old US14 Breakou 814.0\",\"Spearfish Creek Old US14 Breakou 253.0\"]]\n", - "thalweg: [[3563.87,3562.9,3561.47,3558.17,3557.05,...,3488.63,3486.35,3484.18,3481.92,3477.64]]\n", - "xs_max_elevation: [[3574.46,3573.83,3570.78,3568.95,3566,...,3499.78,3496.02,3490.04,3488,3482]]\n", - "left_reach_length: [[73.3,113.86,195.76,101.29,62.19,...,289.59,293.56,321.77,551.53,0]]\n", - "right_reach_length: [[64.03,108.6,199.45,101.26,67.59,...,304.33,193.56,284.8,570.49,0]]\n", - "channel_reach_length: [[68.79,111.37,197.46,101.84,65.19,...,293.78,265.51,422.78,560.74,0]]\n", - "ras_data: [[\"Type RM Length L Ch R = 1 ,733 ,73.3,68.79,64.03\n", - "XS GIS Cut Line=6\n", - "960048.214101717268250.980046898960110.800918803268271.043983147\n", - " 960143.17913489 268329.91263181960142.516406551268354.240339056\n", - "960184.587844715268375.098565057960362.015967548 268336.91753906\n", - "Node Last Edited Time=Sep/04/2015 10:51:51\n", - "#Sta/Elev= 134 \n", - " 0 3574.41 2.99 3574.46 5.97 3574.38 8.96 3574.3 11.95 3574.26\n", - " 14.94 3574.29 17.92 3574.21 20.91 3574.12 23.9 3574.1 26.89 3574.15\n", - " 29.87 3574.2 32.86 3574.21 35.85 3574.1 38.84 3573.99 41.82 3574.02\n", - " 44.81 3573.91 47.8 3573.74 50.79 3573.66 53.77 3573.6 56.76 3573.39\n", - " 59.75 3573.24 62.74 3573.13 65.72 3572.96 68.65 3572.78 71.57 3572.64\n", - " 74.49 3572.58 77.41 3572.28 80.33 3572.15 83.25 3572.04 86.17 3571.89\n", - " 89.09 3571.76 92.01 3571.57 94.94 3571.33 97.86 3571.17 100.78 3571.08\n", - " 103.7 3570.9 106.62 3570.73 109.54 3570.64 112.46 3570.53 115.38 3570.39\n", - " 118.3 3570.28 121.23 3570.09 124.15 3569.84 127.07 3569.54 129.99 3569.35\n", - " 132.91 3569.06 135.61 3568.76 138.32 3568.55 141.02 3568.31 143.73 3568.06\n", - " 146.43 3567.8 149.13 3567.56 151.84 3567.36 154.54 3567.21 157.25 3567.02\n", - " 160.18 3566.79 163.12 3566.64 166.05 3566.52 166.06 3566.52 168.99 3566.11\n", - " 171.92 3565.19 174.86 3564.5 177.79 3564.13 180.73 3563.93 183.66 3563.87\n", - " 186.6 3563.95 189.53 3564.27 192.46 3564.58 193.82 3564.71 195.4 3564.86\n", - " 198.33 3565.06 201.27 3565.12 204.2 3565 207.18 3565.01 210.15 3565.06\n", - " 213.13 3565.15 216.11 3565.32 219.08 3565.42 222.06 3565.53 225.03 3565.65\n", - " 228.01 3565.71 230.98 3565.72 233.96 3565.74 236.93 3565.77 239.91 3565.88\n", - " 242.88 3566.02 245.86 3566.22 248.83 3566.48 251.81 3566.79 254.78 3567.09\n", - " 257.76 3567.32 260.73 3567.56 263.71 3567.78 266.68 3568.01 269.66 3568.22\n", - " 272.64 3568.35 275.61 3568.51 278.59 3568.61 281.56 3568.69 284.54 3568.74\n", - " 287.51 3568.86 290.49 3569.03 293.46 3569.18 296.44 3569.26 299.41 3569.36\n", - " 302.39 3569.47 305.36 3569.52 308.34 3569.63 311.31 3569.71 314.29 3569.84\n", - " 317.26 3569.98 320.24 3570.07 323.21 3570.1 326.19 3570.23 329.16 3570.3\n", - " 332.14 3570.47 335.12 3570.49 338.09 3570.6 341.07 3570.65 344.04 3570.73\n", - " 347.02 3570.84 349.99 3570.94 352.97 3571.02 355.94 3571 358.92 3570.94\n", - " 361.89 3570.85 364.87 3570.83 367.84 3571.01 370.82 3571.24 373.79 3571.35\n", - " 376.77 3571.52 379.74 3571.52 382.72 3571.53 385.69 3571.63\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .05 0 171.92 .035 0 201.27 .05 0\n", - "Bank Sta=171.92,201.27\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,665 ,113.86,111.37,108.6\n", - "XS GIS Cut Line=4\n", - "959963.651606798268352.968359977960118.028922722268425.752335146\n", - "960197.031061307268438.418320313960326.476996645268399.388870806\n", - "Node Last Edited Time=Sep/17/2015 21:01:33\n", - "#Sta/Elev= 133 \n", - " 0 3573.83 2.99 3573.73 5.99 3573.64 8.98 3573.59 11.98 3573.52\n", - " 14.97 3573.43 17.97 3573.35 20.96 3573.27 23.95 3573.19 26.95 3573.15\n", - " 29.94 3573.07 32.94 3573 35.93 3572.88 38.93 3572.75 41.92 3572.6\n", - " 44.91 3572.47 47.91 3572.33 50.9 3572.27 53.9 3572.11 56.89 3572.04\n", - " 59.89 3571.88 62.88 3571.78 65.87 3571.61 68.87 3571.5 71.86 3571.43\n", - " 74.86 3571.35 77.85 3571.19 80.85 3571.02 83.84 3570.89 86.83 3570.71\n", - " 89.83 3570.61 92.82 3570.53 95.82 3570.4 98.81 3570.36 101.81 3570.32\n", - " 104.8 3570.21 107.79 3570.06 110.79 3569.88 113.78 3569.74 116.78 3569.53\n", - " 119.77 3569.46 122.77 3569.35 125.76 3569.2 128.75 3569 131.75 3568.93\n", - " 134.74 3568.8 137.74 3568.58 140.73 3568.35 143.73 3568.31 146.72 3568.24\n", - " 149.71 3568.16 152.71 3568.02 155.7 3567.87 158.7 3567.75 161.69 3567.67\n", - " 164.69 3567.51 167.68 3567.23 170.67 3567.03 173.64 3566.75 176.6 3566.31\n", - " 179.56 3565.72 182.53 3565.25 184.9 3564.95 185.49 3564.87 188.46 3564.75\n", - " 191.42 3564.48 194.38 3564.03 197.35 3563.46 200.31 3563.18 203.27 3562.95\n", - " 206.24 3562.9 209.2 3562.95 212.16 3563.24 215.13 3563.64 218.09 3563.91\n", - " 221.05 3564.27 222.45 3564.39 224.02 3564.52 226.98 3564.69 229.94 3564.95\n", - " 232.91 3565.16 235.87 3565.3 238.83 3565.39 241.8 3565.53 244.76 3565.61\n", - " 247.72 3565.66 250.69 3565.9 253.62 3566.02 256.56 3566.12 259.5 3566.15\n", - " 262.44 3566.16 265.38 3566.21 268.32 3566.27 271.26 3566.39 274.2 3566.52\n", - " 277.14 3566.55 280.08 3566.59 283.02 3566.71 285.96 3566.87 288.9 3567.05\n", - " 291.83 3567.22 294.77 3567.39 297.71 3567.51 300.65 3567.66 303.59 3567.79\n", - " 306.53 3567.85 309.47 3567.92 312.41 3568.06 315.35 3568.16 318.29 3568.19\n", - " 321.23 3568.21 324.16 3568.2 327.1 3568.32 330.04 3568.45 332.98 3568.68\n", - " 335.92 3568.85 338.86 3569.06 341.8 3569.2 344.74 3569.26 347.68 3569.32\n", - " 350.62 3569.44 353.56 3569.58 356.5 3569.64 359.43 3569.78 362.37 3569.94\n", - " 365.31 3570.04 368.25 3569.95 371.19 3570.05 374.13 3570.09 377.07 3570.2\n", - " 380.01 3570.18 382.95 3570.13 385.89 3570.06\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 191.42 .016 0 222.45 .035 0\n", - "Bank Sta=191.42,222.45\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,553 ,195.76,197.46,199.45\n", - "XS GIS Cut Line=5\n", - " 959968.78676714268478.844748646960110.713976726 268541.34462364\n", - "960190.140983224268542.646786392960266.963992298268490.563557222\n", - "960335.974352971268474.938260391\n", - "Node Last Edited Time=Sep/17/2015 21:02:28\n", - "#Sta/Elev= 137 \n", - " 0 3570.7 2.98 3570.67 5.96 3570.54 8.95 3570.46 11.93 3570.37\n", - " 14.91 3570.31 17.89 3570.32 20.88 3570.41 23.86 3570.38 26.84 3570.33\n", - " 29.82 3570.23 32.81 3570.09 35.79 3570.01 38.77 3569.89 41.75 3569.84\n", - " 44.73 3569.74 47.72 3569.6 50.7 3569.57 53.68 3569.5 56.66 3569.43\n", - " 59.65 3569.35 62.63 3569.29 65.61 3569.25 68.59 3569.22 71.57 3569.13\n", - " 74.56 3569.04 77.54 3568.99 80.52 3568.82 83.5 3568.78 86.49 3568.64\n", - " 89.47 3568.44 92.45 3568.22 95.43 3568.09 98.42 3568.07 101.4 3567.9\n", - " 104.38 3567.66 107.36 3567.43 110.34 3567.29 113.33 3567.14 116.31 3567.01\n", - " 119.29 3566.81 122.27 3566.66 125.26 3566.47 128.24 3566.27 131.22 3566.08\n", - " 134.2 3565.8 137.19 3565.57 140.17 3565.64 143.15 3565.47 146.13 3565.26\n", - " 149.11 3565.11 152.1 3564.97 155.08 3564.75 158.02 3564.61 160.96 3564.31\n", - " 163.91 3563.79 166.85 3563.39 168.12 3563.29 169.79 3563.16 172.73 3562.91\n", - " 175.67 3562.73 178.62 3562.48 181.56 3562.03 184.5 3561.71 187.44 3561.54\n", - " 190.38 3561.47 193.33 3561.53 196.27 3561.93 199.21 3562.46 202.15 3562.81\n", - " 204.26 3562.99 205.1 3563.06 208.04 3563.26 210.98 3563.46 213.92 3563.65\n", - " 216.86 3563.83 219.81 3564.03 222.75 3564.18 225.69 3564.38 228.63 3564.53\n", - " 231.57 3564.53 234.52 3564.51 237.51 3564.54 240.5 3564.69 243.5 3564.75\n", - " 246.49 3564.81 249.49 3564.9 252.48 3565.03 255.47 3565.14 258.47 3565.19\n", - " 261.46 3565.27 264.46 3565.32 267.45 3565.38 270.44 3565.45 273.44 3565.56\n", - " 276.43 3565.58 279.43 3565.67 282.42 3565.78 285.41 3565.84 288.41 3565.78\n", - " 291.4 3565.67 294.4 3565.81 297.39 3566.03 300.38 3566.24 303.38 3566.34\n", - " 306.37 3566.5 309.37 3566.61 312.36 3566.65 315.35 3566.65 318.35 3566.71\n", - " 321.34 3566.81 324.34 3566.91 327.33 3566.81 330.28 3566.73 333.23 3566.61\n", - " 336.18 3566.45 339.12 3566.43 342.07 3566.56 345.02 3566.79 347.97 3567.08\n", - " 350.92 3567.41 353.86 3567.81 356.81 3568.22 359.76 3568.63 362.71 3569.06\n", - " 365.66 3569.42 368.61 3569.76 371.55 3570.05 374.5 3570.21 377.45 3570.34\n", - " 380.4 3570.39 383.35 3570.54 386.3 3570.67 389.24 3570.69 392.19 3570.75\n", - " 395.14 3570.75 398.09 3570.78\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 172.73 .016 0 204.26 .035 0\n", - "Bank Sta=172.73,204.26\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,356 ,101.29,101.84,101.26\n", - "Node Name=Q\n", - "XS GIS Cut Line=5\n", - "959963.578444228268601.240501225960097.693005383268735.355062395\n", - "960161.495043144268743.167710811960259.151343882268653.323730394\n", - "960343.787001386 268632.49043873\n", - "Node Last Edited Time=Sep/17/2015 21:02:30\n", - "#Sta/Elev= 164 \n", - " 0 3568.28 2.96 3568.25 5.93 3568.17 8.89 3568.1 11.85 3568.07\n", - " 14.82 3567.98 17.78 3567.89 20.75 3567.93 23.71 3567.88 26.67 3567.74\n", - " 29.64 3567.71 32.6 3567.67 35.56 3567.68 38.53 3567.64 41.49 3567.61\n", - " 44.45 3567.61 47.42 3567.61 50.38 3567.64 53.34 3567.67 56.31 3567.68\n", - " 59.27 3567.71 62.23 3567.7 65.2 3567.64 68.16 3567.58 71.12 3567.6\n", - " 74.09 3567.58 77.05 3567.51 80.02 3567.41 82.98 3567.34 85.94 3567.22\n", - " 88.91 3567.11 91.87 3567.06 94.83 3566.93 97.8 3566.8 100.76 3566.71\n", - " 103.72 3566.64 106.69 3566.52 109.65 3566.42 112.61 3566.36 115.58 3566.32\n", - " 118.54 3566.31 121.51 3566.28 124.47 3566.29 127.43 3566.23 130.4 3566.19\n", - " 133.36 3566.08 136.32 3565.96 139.29 3565.79 142.25 3565.65 145.21 3565.53\n", - " 148.18 3565.37 151.14 3565.17 154.1 3565 157.07 3564.95 160.03 3564.88\n", - " 162.99 3564.73 165.96 3564.68 168.92 3564.61 171.89 3564.38 174.85 3564.18\n", - " 177.81 3563.99 180.78 3563.8 183.74 3563.5 186.7 3563.23 189.67 3562.81\n", - " 192.59 3562.07 195.51 3561.34 198.43 3560.82 201.35 3560.51 201.51 3560.49\n", - " 204.28 3560.21 207.2 3560.04 210.12 3559.89 213.04 3559.3 215.96 3558.68\n", - " 218.88 3558.47 221.81 3558.17 224.73 3558.18 227.65 3558.32 230.57 3558.75\n", - " 233.49 3559.13 234.76 3559.3 236.41 3559.53 239.34 3559.91 242.26 3560.17\n", - " 245.18 3560.32 248.1 3560.49 251.02 3560.57 253.95 3560.62 256.89 3560.76\n", - " 259.84 3560.95 262.79 3561.15 265.74 3561.33 268.69 3561.52 271.64 3561.62\n", - " 274.59 3561.61 277.54 3561.62 280.48 3561.66 283.43 3561.74 286.38 3561.89\n", - " 289.33 3561.98 292.28 3562.06 295.23 3562.19 298.18 3562.2 301.13 3562.24\n", - " 304.08 3562.3 307.02 3562.34 309.97 3562.36 312.92 3562.42 315.87 3562.49\n", - " 318.82 3562.57 321.77 3562.71 324.72 3562.9 327.67 3563 330.62 3563.11\n", - " 333.56 3563.23 336.51 3563.44 339.46 3563.69 342.41 3563.88 345.36 3563.88\n", - " 348.31 3563.89 351.26 3563.94 354.21 3564.01 357.15 3564.13 360.1 3564.19\n", - " 363.05 3564.19 366 3564.22 368.95 3564.31 371.9 3564.44 374.85 3564.69\n", - " 377.8 3564.71 380.75 3564.65 383.69 3564.69 386.64 3564.81 389.55 3564.91\n", - " 392.45 3564.81 395.36 3564.75 398.26 3564.81 401.17 3564.45 404.08 3564.39\n", - " 406.98 3564.28 409.89 3564.27 412.79 3564.45 415.7 3564.69 418.6 3565.01\n", - " 421.51 3565.34 424.41 3565.59 427.32 3565.81 430.22 3566.07 433.13 3566.35\n", - " 436.03 3566.59 438.94 3566.74 441.85 3567.05 444.75 3567.19 447.66 3567.22\n", - " 450.56 3567.28 453.47 3567.38 456.37 3567.41 459.28 3567.47 462.18 3567.43\n", - " 465.09 3567.47 467.99 3568.3 470.9 3568.92 473.8 3568.95\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 213.04 .016 0 234.76 .035 0\n", - "Bank Sta=213.04,234.76\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,254 ,62.19,65.19,67.59\n", - "XS GIS Cut Line=7\n", - "960051.049069807268716.112318724960078.876770049 268794.23322548\n", - "960092.627726808268835.981501564960164.099368632268846.032334477\n", - "960274.776312634268825.198714733 960325.67743562268790.328950138\n", - "960429.483335241268797.924503769\n", - "Node Last Edited Time=Sep/17/2015 21:02:32\n", - "#Sta/Elev= 131 \n", - " 0 3565.98 2.96 3565.75 5.92 3565.56 8.89 3565.4 11.85 3565.21\n", - " 14.81 3564.97 17.77 3564.71 20.73 3564.5 23.69 3564.37 26.66 3564.25\n", - " 29.62 3564.14 32.58 3564.02 35.54 3563.97 38.5 3563.87 41.46 3563.61\n", - " 44.43 3563.51 47.39 3563.55 50.35 3563.54 53.31 3563.49 56.27 3563.46\n", - " 59.24 3563.37 62.2 3563.22 65.16 3563.06 68.12 3562.89 71.08 3562.76\n", - " 74.04 3562.66 77.01 3562.58 79.97 3562.48 82.93 3562.33 85.86 3562.2\n", - " 88.79 3562.09 91.72 3562.01 94.65 3561.9 97.58 3561.86 100.51 3561.84\n", - " 103.44 3561.75 106.37 3561.71 109.3 3561.72 112.23 3561.7 115.16 3561.63\n", - " 118.09 3561.51 121.02 3561.34 123.95 3561.15 126.88 3560.98 129.77 3560.58\n", - " 132.66 3560.17 135.54 3559.8 138.43 3559.51 140.72 3559.31 141.32 3559.26\n", - " 144.21 3559.02 147.09 3558.67 149.98 3558.03 152.87 3557.32 155.75 3557.05\n", - " 158.64 3557.08 161.53 3557.14 164.41 3557.6 167.3 3558.09 167.51 3558.11\n", - " 170.19 3558.41 173.08 3558.6 175.96 3558.67 178.85 3558.82 181.74 3559.05\n", - " 184.62 3559.19 187.51 3559.28 190.4 3559.47 193.28 3559.63 196.17 3559.64\n", - " 199.06 3559.65 202.02 3559.73 204.99 3559.83 207.95 3559.89 210.91 3559.93\n", - " 213.88 3560.01 216.84 3560.13 219.8 3560.25 222.77 3560.38 225.73 3560.49\n", - " 228.7 3560.52 231.66 3560.53 234.62 3560.6 237.59 3560.65 240.55 3560.72\n", - " 243.51 3560.82 246.48 3560.9 249.44 3560.98 252.41 3561.11 255.37 3561.21\n", - " 258.33 3561.38 261.3 3561.41 264.26 3561.41 267.22 3561.53 270.19 3561.6\n", - " 273.15 3561.56 276.11 3561.67 279.08 3561.89 282.04 3562.09 285.01 3562.13\n", - " 287.97 3562.01 290.93 3562.09 293.9 3562.25 296.86 3562.29 299.82 3562.34\n", - " 302.79 3562.5 305.75 3562.61 308.72 3562.64 311.68 3562.64 314.59 3562.57\n", - " 317.51 3562.52 320.42 3562.5 323.34 3562.44 326.25 3562.41 329.17 3562.41\n", - " 332.08 3562.49 335 3562.69 337.91 3563.01 340.83 3563.15 343.74 3563.31\n", - " 346.66 3563.41 349.57 3563.54 352.49 3563.65 355.4 3563.77 358.32 3563.95\n", - " 361.23 3564.03 364.15 3564.16 367.06 3564.27 369.98 3564.34 372.89 3564.34\n", - " 478 3566\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 149.98 .016 0 167.51 .035 0\n", - "Bank Sta=149.98,167.51\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",...,\"Type RM Length L Ch R = 1 ,1796 ,289.59,293.78,304.33\n", - "Node Name=C\n", - "XS GIS Cut Line=5\n", - "957019.704410717274956.661189303957880.381495133274810.827819556\n", - "958159.027263299274750.931941971958409.027419478274678.015421137\n", - "959028.818830803274605.098572224\n", - "Node Last Edited Time=Sep/17/2015 21:28:25\n", - "#Sta/Elev= 230 \n", - " 0 3499.57 5 3499.78 11 3499.56 21 3499.33 24 3499.05\n", - " 35 3498.91 43 3498.68 48 3498.42 53 3498.67 55 3498.43\n", - " 57 3498.17 60 3498.44 71 3498.25 76 3498.04 81 3497.81\n", - " 89.99 3497.59 95.99 3497.37 102.99 3497.59 108.99 3497.35 117.99 3497.15\n", - " 123.99 3496.92 133.99 3496.78 138.99 3497.02 143.99 3496.79 146.99 3496.57\n", - " 150.99 3496.36 161.99 3496.22 172.99 3496.13 183.99 3496.17 191.99 3495.92\n", - " 202.99 3495.75 211.99 3495.54 222.99 3495.65 226.99 3495.35 237.99 3495.22\n", - " 250.98 3494.95 260.98 3494.73 272.98 3494.72 283.98 3494.61 289.98 3494.41\n", - " 300.98 3494.39 311.98 3494.44 318.98 3494.21 329.98 3494.14 340.98 3494.21\n", - " 351.98 3494.2 362.98 3493.97 368.98 3493.74 379.98 3493.73 390.98 3493.72\n", - " 401.98 3493.59 412.98 3493.43 423.97 3493.36 434.97 3493.18 445.97 3493.11\n", - " 456.97 3493.02 465.97 3493.25 471.97 3492.96 478.97 3492.75 489.97 3492.75\n", - " 497.97 3492.51 508.97 3492.45 519.97 3492.31 530.97 3492.28 536.97 3492.05\n", - " 547.97 3491.93 558.97 3491.98 569.97 3491.84 576.97 3491.57 587.97 3491.66\n", - " 598.96 3491.49 601.96 3491.28 612.96 3491.15 623.96 3491.08 634.96 3491.32\n", - " 642.96 3491.08 653.96 3490.92 664.96 3490.9 675.96 3490.91 686.96 3490.74\n", - " 692.96 3490.95 703.96 3491 714.96 3491.05 722.96 3490.81 733.96 3490.8\n", - " 744.96 3490.66 750.96 3490.35 755.96 3490.14 764.96 3489.85 769.96 3489.64\n", - " 774.95 3489.43 778.95 3489.21 783.95 3488.99 790.95 3488.68 801.95 3488.63\n", - " 812.95 3488.76 823.95 3488.68 826.95 3488.9 830.95 3489.13 836.95 3489.39\n", - " 838.95 3489.63 842.95 3489.88 845.95 3490.11 849.95 3490.34 855.95 3490.58\n", - " 861.95 3490.84 867.95 3490.63 872.95 3490.92 883.91 3490.94 894.87 3491.04\n", - " 905.84 3491.27 916.8 3491.07 924.77 3491.29 930.75 3491.5 941.71 3491.6\n", - " 946.69 3491.82 952.67 3492.04 954.67 3492.26 965.63 3492.1 973.6 3492.32\n", - " 982.57 3492.53 993.53 3492.72 1004.49 3492.67 1015.46 3492.72 1026.42 3492.75\n", - " 1030.4 3492.47 1036.38 3492.69 1047.34 3492.63 1058.31 3492.5 1069.27 3492.52\n", - " 1080.23 3492.41 1091.19 3492.46 1102.15 3492.57 1105.14 3492.31 1112.12 3492.59\n", - " 1123.08 3492.58 1134.04 3492.49 1145 3492.62 1150.98 3492.85 1157.96 3493.07\n", - " 1160.95 3493.32 1166.94 3492.87 1169.93 3492.61 1172.92 3492.31 1174.92 3492.01\n", - " 1176.92 3491.78 1187.89 3491.69 1197.87 3491.48 1208.84 3491.62 1216.83 3491.93\n", - " 1218.82 3492.25 1220.82 3492.6 1226.8 3492.32 1235.78 3492.53 1246.76 3492.5\n", - " 1257.73 3492.44 1268.71 3492.47 1279.68 3492.48 1290.66 3492.47 1301.64 3492.65\n", - " 1312.61 3492.69 1323.59 3492.6 1334.56 3492.65 1340.55 3492.85 1351.52 3492.84\n", - " 1362.5 3493.03 1373.47 3493.11 1384.45 3493.26 1396.42 3493.14 1407.4 3493.22\n", - " 1418.37 3493.1 1429.36 3493.25 1440.34 3493.18 1451.32 3492.99 1462.31 3493.04\n", - " 1473.29 3493.13 1484.27 3493.06 1495.26 3493.12 1506.24 3493.09 1515.23 3492.86\n", - " 1526.21 3492.94 1537.2 3492.8 1548.18 3492.59 1559.16 3492.8 1570.15 3493\n", - " 1581.13 3493.09 1592.11 3493.13 1603.1 3493.26 1614.08 3493.43 1625.06 3493.48\n", - " 1636.05 3493.65 1647.03 3493.51 1658.02 3493.57 1671.99 3493.43 1682.98 3493.33\n", - " 1693.96 3493.45 1704.95 3493.58 1715.93 3493.69 1725.91 3493.9 1736.9 3493.94\n", - " 1747.88 3494.03 1758.87 3493.94 1769.85 3493.96 1780.83 3494.15 1791.82 3494.06\n", - " 1801.8 3494.29 1812.79 3494.39 1823.77 3494.34 1834.75 3494.41 1845.74 3494.45\n", - " 1856.72 3494.51 1867.7 3494.31 1878.69 3494.33 1881.68 3494.12 1892.67 3494.23\n", - " 1903.65 3494.35 1914.63 3494.45 1925.62 3494.47 1936.6 3494.35 1947.58 3494.42\n", - " 1958.57 3494.4 1969.55 3494.4 1980.54 3494.52 1991.52 3494.74 1995.51 3495.01\n", - " 2006.5 3494.82 2017.48 3494.86 2028.46 3494.94 2035.45 3495.15 2042.44 3495.26\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 714.96 .035 0 861.95 .035 0\n", - "#XS Ineff= 3 ,-1 \n", - " 0 200 3499 200 677.95 3496.65 923.95 2050 3496.65\n", - "Permanent Ineff=\n", - " F F F\n", - "Bank Sta=714.96,861.95\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1502 ,293.56,265.51,193.56\n", - "Node Name=B\n", - "XS GIS Cut Line=4\n", - "957069.183642477275235.306957483958195.485523716275053.015327305\n", - "958294.443987221275077.754779145959097.829519555274944.942380726\n", - "Node Last Edited Time=Sep/03/2015 14:11:45\n", - "#Sta/Elev= 230 \n", - " 0 3495.24 4 3494.99 11 3494.72 15 3494.51 20 3494.72\n", - " 31 3494.85 40 3494.56 42 3494.22 52 3494 56 3494.23\n", - " 67 3494.14 74 3493.9 83 3493.67 94 3493.7 105 3493.77\n", - " 110 3493.54 112 3493.32 123 3493.38 132 3493.17 141.99 3492.96\n", - " 146.99 3492.74 157.99 3492.58 168.99 3492.39 177.99 3492.61 183.99 3492.41\n", - " 193.99 3492.19 204.99 3492.25 208.99 3492.46 219.99 3492.27 228.99 3492.06\n", - " 239.99 3491.93 242.99 3492.15 253.99 3492.09 260.99 3491.86 271.99 3491.93\n", - " 282.99 3491.9 292.99 3491.65 303.99 3491.73 314.99 3491.62 322.99 3491.41\n", - " 333.99 3491.32 344.99 3491.18 351.99 3490.97 363.99 3490.98 374.99 3490.95\n", - " 382.99 3490.71 393.99 3490.83 404.99 3490.79 415.99 3490.85 424.99 3490.65\n", - " 435.99 3490.6 445.99 3490.37 456.98 3490.37 467.98 3490.45 477.98 3490.21\n", - " 483.98 3489.96 490.98 3490.24 498.98 3490.02 509.98 3489.85 513.98 3489.64\n", - " 524.98 3489.49 535.98 3489.48 544.98 3489.27 555.98 3489.06 566.98 3488.94\n", - " 577.98 3488.84 583.98 3488.64 595.98 3488.51 606.98 3488.54 610.98 3488.78\n", - " 619.98 3488.55 630.98 3488.41 638.98 3488.62 644.98 3488.41 651.98 3488.2\n", - " 662.98 3487.95 665.98 3487.69 675.98 3487.48 682.98 3487.72 685.98 3487.98\n", - " 694.98 3487.75 697.98 3487.46 708.98 3487.27 719.98 3487.2 724.98 3487.45\n", - " 735.98 3487.53 741.98 3487.77 752.97 3487.58 755.97 3487.21 757.97 3486.87\n", - " 759.97 3486.58 765.97 3486.35 774.97 3486.59 776.97 3486.85 778.97 3487.1\n", - " 780.97 3487.41 783.97 3487.63 787.97 3487.85 790.97 3488.09 801.97 3488.06\n", - " 806.97 3487.82 812.97 3487.49 823.97 3487.63 831.97 3487.84 842.97 3487.83\n", - " 846.97 3488.05 857.97 3488.22 861.97 3488.01 864.97 3487.77 875.97 3487.67\n", - " 886.97 3487.56 897.97 3487.6 908.97 3487.81 919.97 3487.82 930.97 3487.84\n", - " 941.97 3487.86 947.97 3487.64 958.97 3487.69 967.97 3487.91 970.97 3488.12\n", - " 981.97 3488.21 983.97 3487.89 986.97 3487.63 997.97 3487.73 1001.97 3487.97\n", - " 1004.97 3488.19 1015.97 3488.3 1026.97 3488.46 1037.96 3488.55 1048.96 3488.59\n", - " 1059.96 3488.52 1070.96 3488.65 1081.96 3488.79 1092.96 3488.96 1103.96 3488.94\n", - " 1114.96 3488.95 1124.96 3489.22 1127.96 3489.48 1134.96 3489.26 1142.94 3489.48\n", - " 1147.89 3489.7 1152.84 3489.97 1158.78 3489.75 1169.68 3489.7 1180.57 3489.97\n", - " 1183.54 3490.18 1187.5 3490.48 1189.48 3490.73 1196.42 3491.01 1208.3 3491.26\n", - " 1219.19 3491.22 1231.08 3491.1 1241.97 3491.18 1252.95 3491.21 1263.94 3491.32\n", - " 1274.93 3491.45 1285.92 3491.59 1296.91 3491.7 1307.91 3491.82 1318.9 3491.89\n", - " 1322.89 3492.11 1333.88 3492.13 1339.88 3492.35 1350.87 3492.41 1358.86 3492.62\n", - " 1369.85 3492.75 1381.84 3492.87 1392.83 3493.05 1403.82 3493.21 1415.81 3493.32\n", - " 1426.8 3493.47 1437.79 3493.59 1448.78 3493.72 1459.77 3493.83 1470.76 3494.02\n", - " 1481.75 3494.07 1492.74 3494.23 1503.73 3494.3 1514.72 3494.34 1525.71 3494.3\n", - " 1536.7 3494.35 1547.69 3494.4 1558.68 3494.53 1569.67 3494.7 1580.66 3494.68\n", - " 1591.65 3494.73 1602.64 3494.77 1610.64 3494.98 1621.63 3494.91 1632.62 3494.88\n", - " 1642.61 3495.09 1653.6 3495.06 1664.59 3494.92 1669.58 3495.13 1680.57 3495.11\n", - " 1691.56 3495.17 1702.55 3495.11 1713.54 3495.1 1724.53 3495.21 1735.52 3495.32\n", - " 1746.51 3495.12 1751.51 3495.4 1762.5 3495.42 1773.49 3495.35 1784.48 3495.3\n", - " 1795.47 3495.27 1806.46 3495.3 1817.45 3495.42 1828.44 3495.5 1839.43 3495.72\n", - " 1850.42 3495.66 1861.41 3495.72 1872.4 3495.68 1883.39 3495.85 1894.38 3495.8\n", - " 1905.37 3495.99 1916.36 3495.9 1927.35 3496.02 1938.34 3495.9 1949.33 3495.87\n", - " 1960.32 3495.86 1971.31 3495.88 1982.3 3495.77 1993.29 3495.79 2004.28 3495.84\n", - " 2015.27 3495.88 2026.26 3495.85 2037.26 3495.95 2048.25 3495.84 2057.24 3495.9\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 638.98 .035 0 857.97 .035 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 736.72 3488.65 789.59 0 3488.65\n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=638.98,857.97\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1236 ,321.77,422.78,284.8\n", - "XS GIS Cut Line=5\n", - "957333.506604642275382.442489982957761.891902715275433.223556399\n", - "958113.454519808275266.556894973958215.016980723275237.911282972\n", - "958216.318815395275106.400719225\n", - "Node Last Edited Time=Sep/03/2015 14:13:08\n", - "#Sta/Elev= 122 \n", - " 0 3490.01 10.98 3489.9 21.97 3489.72 27.96 3489.5 31.95 3489.73\n", - " 39.94 3489.49 52.92 3489.24 63.91 3489.27 74.89 3489.2 85.88 3489\n", - " 96.86 3489.03 104.85 3488.78 115.83 3488.73 126.82 3488.79 137.8 3488.66\n", - " 146.79 3488.41 157.77 3488.28 168.76 3488.2 179.74 3488.18 190.73 3488.21\n", - " 201.71 3488.23 212.7 3488.21 223.68 3488.08 234.67 3488.09 245.65 3488.05\n", - " 256.63 3488.19 267.62 3488.01 278.6 3487.87 289.59 3487.97 298.57 3487.75\n", - " 309.56 3487.68 320.54 3487.66 331.53 3487.64 342.51 3487.46 353.5 3487.48\n", - " 359.49 3487.26 370.47 3487.42 377.46 3487.19 388.45 3487.21 399.43 3487.23\n", - " 406.42 3487.02 408.42 3486.81 413.41 3486.58 424.4 3486.56 435.38 3486.58\n", - " 441.36 3486.79 452.34 3486.69 460.32 3486.48 471.29 3486.54 482.26 3486.51\n", - " 492.24 3486.27 500.22 3486.06 506.21 3485.84 517.18 3485.64 521.17 3485.4\n", - " 532.14 3485.33 537.13 3485.13 548.11 3485.01 553.09 3484.78 564.07 3484.69\n", - " 575.04 3484.58 579.03 3484.82 584.02 3484.6 589.01 3484.39 592 3484.18\n", - " 602.98 3484.3 613.95 3484.3 624.92 3484.29 635.9 3484.34 646.87 3484.38\n", - " 657.84 3484.42 668.82 3484.61 675.8 3484.88 682.78 3485.1 690.76 3484.9\n", - " 701.74 3484.94 704.73 3485.23 715.71 3485.37 726.68 3485.53 737.65 3485.44\n", - " 748.63 3485.57 759.6 3485.53 765.59 3485.76 776.56 3485.9 787.53 3486.08\n", - " 792.52 3486.34 797.51 3486.56 806.49 3486.77 810.48 3486.99 813.47 3487.25\n", - " 824.44 3487.19 828.42 3487.42 835.39 3487.91 848.33 3488.17 859.28 3488.06\n", - " 863.26 3487.68 864.26 3487.43 875.21 3487.57 886.16 3487.5 898.1 3487.38\n", - " 905.07 3487.07 909.06 3486.84 913.04 3486.59 917.02 3486.81 920.01 3487.06\n", - " 922.99 3487.3 933.95 3487.44 946.9 3487.57 957.86 3487.75 965.83 3487.97\n", - " 976.79 3487.9 986.76 3488.11 997.72 3488.22 1008.68 3488.35 1019.64 3488.59\n", - " 1030.6 3488.75 1035.58 3488.98 1041.56 3489.19 1046.54 3489.41 1051.52 3489.65\n", - " 1056.5 3489.95 1057.5 3490.04\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 548.11 .035 0 682.78 .035 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 480.89 3486.65 684.5 0 3486.65\n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=548.11,682.78\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,814 ,551.53,560.74,570.49\n", - "Node Name=A\n", - "XS GIS Cut Line=5\n", - "957510.099099219275712.325032309957911.631432638275573.848603234\n", - "958287.933501557275499.629919648958445.485679895275313.432129309\n", - "958573.253182212275162.434365524\n", - "Node Last Edited Time=Sep/15/2015 08:47:30\n", - "#Sta/Elev= 114 \n", - " 0 3486.61 7 3486.41 17.99 3486.27 24.98 3486.06 35.98 3485.99\n", - " 42.97 3485.78 53.97 3485.65 63.96 3485.43 74.95 3485.53 85.95 3485.38\n", - " 96.94 3485.42 107.93 3485.34 118.93 3485.33 129.92 3485.25 140.91 3485.21\n", - " 151.91 3485.3 162.9 3485.26 173.89 3485.41 184.89 3485.27 195.88 3485.32\n", - " 206.87 3485.45 217.87 3485.48 228.86 3485.39 239.85 3485.48 249.85 3485.23\n", - " 260.84 3485.34 271.83 3485.17 277.83 3484.96 288.82 3484.96 298.82 3484.65\n", - " 309.81 3484.52 319.8 3484.29 330.8 3484.06 342.79 3483.95 353.78 3483.99\n", - " 363.78 3483.75 374.77 3483.77 385.76 3483.79 396.76 3483.84 407.75 3483.82\n", - " 418.74 3483.69 429.74 3483.78 440.72 3483.51 451.71 3483.3 462.7 3483.2\n", - " 473.68 3483.06 484.67 3482.93 495.66 3482.88 506.65 3482.69 517.63 3482.72\n", - " 528.62 3482.78 539.61 3482.84 550.59 3482.84 561.58 3482.88 572.57 3482.88\n", - " 583.56 3482.78 594.54 3482.87 605.53 3482.8 616.52 3482.75 627.5 3482.73\n", - " 638.49 3482.74 649.48 3482.56 660.46 3482.57 671.45 3482.64 682.44 3482.56\n", - " 693.43 3482.59 704.41 3482.53 715.4 3482.67 718.4 3482.88 722.39 3482.67\n", - " 725.39 3482.46 729.38 3482.21 739.37 3482.57 741.37 3482.9 743.37 3483.18\n", - " 750.36 3483.43 761.34 3483.23 764.34 3482.95 767.34 3482.71 771.33 3482.45\n", - " 774.33 3482.17 778.32 3481.92 784.32 3482.16 786.32 3482.42 788.31 3482.63\n", - " 793.31 3482.85 796.3 3483.06 807.29 3483.16 818.29 3483.13 829.28 3483.12\n", - " 840.28 3483.27 851.27 3483.13 855.27 3483.36 866.27 3483.3 877.26 3483.45\n", - " 883.26 3483.67 891.26 3483.87 897.26 3484.09 908.25 3484.03 919.25 3483.96\n", - " 930.25 3484.06 941.24 3484.19 952.24 3484.34 963.23 3484.44 974.23 3484.59\n", - " 985.23 3484.57 996.22 3484.71 1007.22 3484.55 1015.22 3484.77 1021.21 3485\n", - " 1032.21 3485.16 1044.2 3485.15 1052.2 3485.37 1250 3488\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 718.4 .035 0 796.3 .035 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 796 0 3484\n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=718.4,796.3\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,253 ,0,0,0\n", - "XS GIS Cut Line=5\n", - "957737.846675217276018.727306649957894.096690804276104.143802479\n", - "958321.874378562276067.338429898958435.763258383 275768.72715047\n", - "958471.391777778275675.310850499\n", - "Node Last Edited Time=Sep/23/2015 12:07:50\n", - "#Sta/Elev= 101 \n", - " 0 3481.6 10.94 3481.46 21.89 3481.25 32.83 3481.37 37.8 3481.16\n", - " 48.75 3480.89 59.69 3480.79 70.63 3480.69 79.59 3480.48 91.52 3480.47\n", - " 102.47 3480.28 113.41 3480.17 124.35 3479.99 132.31 3479.78 143.25 3479.55\n", - " 154.2 3479.48 165.14 3479.32 176.08 3479.25 187.06 3479.25 191.05 3479.03\n", - " 202.04 3478.85 213.02 3478.79 218.01 3478.49 229 3478.38 239.98 3478.2\n", - " 250.96 3478.1 261.95 3478.06 272.93 3478.19 283.91 3478.24 294.9 3478.22\n", - " 305.88 3478.25 316.86 3478.35 327.85 3478.44 338.83 3478.6 349.82 3478.62\n", - " 360.8 3478.62 371.78 3478.83 382.77 3478.95 389.76 3478.68 400.74 3478.59\n", - " 411.72 3478.43 422.71 3478.28 433.69 3478.28 444.67 3478.27 455.66 3478.21\n", - " 466.64 3478.31 477.62 3478.36 488.61 3478.56 499.59 3478.69 508.58 3478.94\n", - " 514.57 3479.22 520.56 3478.95 523.55 3478.67 525.55 3478.34 527.55 3478.1\n", - " 529.54 3477.87 534.54 3478.26 537.53 3478.51 541.53 3478.74 552.51 3478.91\n", - " 557.5 3478.69 561.5 3478.37 563.49 3478.11 568.49 3477.76 579.47 3477.64\n", - " 582.47 3477.89 593.45 3477.89 597.44 3478.14 608.43 3478.18 619.41 3478.41\n", - " 630.4 3478.34 641.38 3478.62 652.37 3478.75 657.36 3478.54 669.35 3478.42\n", - " 676.34 3478.63 687.33 3478.68 698.31 3478.51 709.3 3478.63 720.28 3478.8\n", - " 731.27 3478.98 742.26 3479.09 753.24 3479.04 764.23 3479.2 774.21 3479.42\n", - " 785.2 3479.55 796.19 3479.6 804.18 3479.82 815.16 3479.92 819.16 3480.17\n", - " 830.14 3480.29 841.13 3480.31 852.11 3480.38 863.1 3480.55 875.08 3480.54\n", - " 886.07 3480.61 897.06 3480.61 908.04 3480.71 919.03 3480.84 927.02 3480.9\n", - " 1027 3482\n", - "#Mann= 3 , 0 , 0 \n", - " 0 .035 0 514.57 .035 0 652.37 .035 0\n", - "Bank Sta=514.57,652.37\n", - "XS Rating Curve= 0 ,0\n", - "Exp/Cntr=0.3,0.1\n", - "\n", - "Stream Node=CityDrain ,CityDrain , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=CityDrain ,CityDrain , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Evans-Tonn ,US , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Evans-Tonn ,US , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Spearfish_Cr ,Old_Channel , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Spearfish_Cr ,Old_Channel , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Spearfish_cr1 ,Old_us14 , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Spearfish_cr1 ,Old_us14 , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,Spearfish_Creek , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,Spearfish_Creek , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,SpearfishDS , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,SpearfishDS , 0 , 1 ,Downstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,Spearfish_Cr_DS , 0 , 0 ,Upstream end \n", - "\n", - "Stream Node=Spearfish_Creek ,Spearfish_Cr_DS , 0 , 1 ,Downstream end \n", - "\n", - "Chan Stop Cuts=-1 \n", - "\n", - "\n", - "\n", - "Geom Raster=..\\3748.jpg,True,image,, 0 \n", - "Geom Raster=..\\FW US.jpg,True,image,, 0 \n", - "Geom Raster=..\\FW MID.jpg,True,image,, 0 \n", - "Geom Raster=..\\FW DS.jpg,True,image,, 0 \n", - "Use User Specified Reach Order=0\n", - "GIS Units=\n", - "GIS DTM Type=TIN\n", - "GIS DTM=\\\n", - "GIS Stream Layer=\\CityDrainageChannel\n", - "GIS Cross Section Layer=\\XSCutLines_citydrainage\n", - "GIS Map Projection=\n", - "GIS Projection Zone=\n", - "GIS Datum=\n", - "GIS Vertical Datum=\n", - "GIS Data Extents=960025.2397382,268286.1364726,960233.5437836,269067.0043335\n", - "\n", - "GIS Ratio Cuts To Invert=-1\n", - "GIS Limit At Bridges=0\n", - "Composite Channel Slope=5\"]]\n", - "station_elevation_points: [[\"[(0.0, 3574.41), (2.99, 3574.46), (5.97, 3574.38), (8.96, 3574.3), (11.95, 3574.26), (14.94, 3574.29), (17.92, 3574.21), (20.91, 3574.12), (23.9, 3574.1), (26.89, 3574.15), (29.87, 3574.2), (32.86, 3574.21), (35.85, 3574.1), (38.84, 3573.99), (41.82, 3574.02), (44.81, 3573.91), (47.8, 3573.74), (50.79, 3573.66), (53.77, 3573.6), (56.76, 3573.39), (59.75, 3573.24), (62.74, 3573.13), (65.72, 3572.96), (68.65, 3572.78), (71.57, 3572.64), (74.49, 3572.58), (77.41, 3572.28), (80.33, 3572.15), (83.25, 3572.04), (86.17, 3571.89), (89.09, 3571.76), (92.01, 3571.57), (94.94, 3571.33), (97.86, 3571.17), (100.78, 3571.08), (103.7, 3570.9), (106.62, 3570.73), (109.54, 3570.64), (112.46, 3570.53), (115.38, 3570.39), (118.3, 3570.28), (121.23, 3570.09), (124.15, 3569.84), (127.07, 3569.54), (129.99, 3569.35), (132.91, 3569.06), (135.61, 3568.76), (138.32, 3568.55), (141.02, 3568.31), (143.73, 3568.06), (146.43, 3567.8), (149.13, 3567.56), (151.84, 3567.36), (154.54, 3567.21), (157.25, 3567.02), (160.18, 3566.79), (163.12, 3566.64), (166.05, 3566.52), (166.06, 3566.52), (168.99, 3566.11), (171.92, 3565.19), (174.86, 3564.5), (177.79, 3564.13), (180.73, 3563.93), (183.66, 3563.87), (186.6, 3563.95), (189.53, 3564.27), (192.46, 3564.58), (193.82, 3564.71), (195.4, 3564.86), (198.33, 3565.06), (201.27, 3565.12), (204.2, 3565.0), (207.18, 3565.01), (210.15, 3565.06), (213.13, 3565.15), (216.11, 3565.32), (219.08, 3565.42), (222.06, 3565.53), (225.03, 3565.65), (228.01, 3565.71), (230.98, 3565.72), (233.96, 3565.74), (236.93, 3565.77), (239.91, 3565.88), (242.88, 3566.02), (245.86, 3566.22), (248.83, 3566.48), (251.81, 3566.79), (254.78, 3567.09), (257.76, 3567.32), (260.73, 3567.56), (263.71, 3567.78), (266.68, 3568.01), (269.66, 3568.22), (272.64, 3568.35), (275.61, 3568.51), (278.59, 3568.61), (281.56, 3568.69), (284.54, 3568.74), (287.51, 3568.86), (290.49, 3569.03), (293.46, 3569.18), (296.44, 3569.26), (299.41, 3569.36), (302.39, 3569.47), (305.36, 3569.52), (308.34, 3569.63), (311.31, 3569.71), (314.29, 3569.84), (317.26, 3569.98), (320.24, 3570.07), (323.21, 3570.1), (326.19, 3570.23), (329.16, 3570.3), (332.14, 3570.47), (335.12, 3570.49), (338.09, 3570.6), (341.07, 3570.65), (344.04, 3570.73), (347.02, 3570.84), (349.99, 3570.94), (352.97, 3571.02), (355.94, 3571.0), (358.92, 3570.94), (361.89, 3570.85), (364.87, 3570.83), (367.84, 3571.01), (370.82, 3571.24), (373.79, 3571.35), (376.77, 3571.52), (379.74, 3571.52), (382.72, 3571.53), (385.69, 3571.63)]\",\"[(0.0, 3573.83), (2.99, 3573.73), (5.99, 3573.64), (8.98, 3573.59), (11.98, 3573.52), (14.97, 3573.43), (17.97, 3573.35), (20.96, 3573.27), (23.95, 3573.19), (26.95, 3573.15), (29.94, 3573.07), (32.94, 3573.0), (35.93, 3572.88), (38.93, 3572.75), (41.92, 3572.6), (44.91, 3572.47), (47.91, 3572.33), (50.9, 3572.27), (53.9, 3572.11), (56.89, 3572.04), (59.89, 3571.88), (62.88, 3571.78), (65.87, 3571.61), (68.87, 3571.5), (71.86, 3571.43), (74.86, 3571.35), (77.85, 3571.19), (80.85, 3571.02), (83.84, 3570.89), (86.83, 3570.71), (89.83, 3570.61), (92.82, 3570.53), (95.82, 3570.4), (98.81, 3570.36), (101.81, 3570.32), (104.8, 3570.21), (107.79, 3570.06), (110.79, 3569.88), (113.78, 3569.74), (116.78, 3569.53), (119.77, 3569.46), (122.77, 3569.35), (125.76, 3569.2), (128.75, 3569.0), (131.75, 3568.93), (134.74, 3568.8), (137.74, 3568.58), (140.73, 3568.35), (143.73, 3568.31), (146.72, 3568.24), (149.71, 3568.16), (152.71, 3568.02), (155.7, 3567.87), (158.7, 3567.75), (161.69, 3567.67), (164.69, 3567.51), (167.68, 3567.23), (170.67, 3567.03), (173.64, 3566.75), (176.6, 3566.31), (179.56, 3565.72), (182.53, 3565.25), (184.9, 3564.95), (185.49, 3564.87), (188.46, 3564.75), (191.42, 3564.48), (194.38, 3564.03), (197.35, 3563.46), (200.31, 3563.18), (203.27, 3562.95), (206.24, 3562.9), (209.2, 3562.95), (212.16, 3563.24), (215.13, 3563.64), (218.09, 3563.91), (221.05, 3564.27), (222.45, 3564.39), (224.02, 3564.52), (226.98, 3564.69), (229.94, 3564.95), (232.91, 3565.16), (235.87, 3565.3), (238.83, 3565.39), (241.8, 3565.53), (244.76, 3565.61), (247.72, 3565.66), (250.69, 3565.9), (253.62, 3566.02), (256.56, 3566.12), (259.5, 3566.15), (262.44, 3566.16), (265.38, 3566.21), (268.32, 3566.27), (271.26, 3566.39), (274.2, 3566.52), (277.14, 3566.55), (280.08, 3566.59), (283.02, 3566.71), (285.96, 3566.87), (288.9, 3567.05), (291.83, 3567.22), (294.77, 3567.39), (297.71, 3567.51), (300.65, 3567.66), (303.59, 3567.79), (306.53, 3567.85), (309.47, 3567.92), (312.41, 3568.06), (315.35, 3568.16), (318.29, 3568.19), (321.23, 3568.21), (324.16, 3568.2), (327.1, 3568.32), (330.04, 3568.45), (332.98, 3568.68), (335.92, 3568.85), (338.86, 3569.06), (341.8, 3569.2), (344.74, 3569.26), (347.68, 3569.32), (350.62, 3569.44), (353.56, 3569.58), (356.5, 3569.64), (359.43, 3569.78), (362.37, 3569.94), (365.31, 3570.04), (368.25, 3569.95), (371.19, 3570.05), (374.13, 3570.09), (377.07, 3570.2), (380.01, 3570.18), (382.95, 3570.13), (385.89, 3570.06)]\",\"[(0.0, 3570.7), (2.98, 3570.67), (5.96, 3570.54), (8.95, 3570.46), (11.93, 3570.37), (14.91, 3570.31), (17.89, 3570.32), (20.88, 3570.41), (23.86, 3570.38), (26.84, 3570.33), (29.82, 3570.23), (32.81, 3570.09), (35.79, 3570.01), (38.77, 3569.89), (41.75, 3569.84), (44.73, 3569.74), (47.72, 3569.6), (50.7, 3569.57), (53.68, 3569.5), (56.66, 3569.43), (59.65, 3569.35), (62.63, 3569.29), (65.61, 3569.25), (68.59, 3569.22), (71.57, 3569.13), (74.56, 3569.04), (77.54, 3568.99), (80.52, 3568.82), (83.5, 3568.78), (86.49, 3568.64), (89.47, 3568.44), (92.45, 3568.22), (95.43, 3568.09), (98.42, 3568.07), (101.4, 3567.9), (104.38, 3567.66), (107.36, 3567.43), (110.34, 3567.29), (113.33, 3567.14), (116.31, 3567.01), (119.29, 3566.81), (122.27, 3566.66), (125.26, 3566.47), (128.24, 3566.27), (131.22, 3566.08), (134.2, 3565.8), (137.19, 3565.57), (140.17, 3565.64), (143.15, 3565.47), (146.13, 3565.26), (149.11, 3565.11), (152.1, 3564.97), (155.08, 3564.75), (158.02, 3564.61), (160.96, 3564.31), (163.91, 3563.79), (166.85, 3563.39), (168.12, 3563.29), (169.79, 3563.16), (172.73, 3562.91), (175.67, 3562.73), (178.62, 3562.48), (181.56, 3562.03), (184.5, 3561.71), (187.44, 3561.54), (190.38, 3561.47), (193.33, 3561.53), (196.27, 3561.93), (199.21, 3562.46), (202.15, 3562.81), (204.26, 3562.99), (205.1, 3563.06), (208.04, 3563.26), (210.98, 3563.46), (213.92, 3563.65), (216.86, 3563.83), (219.81, 3564.03), (222.75, 3564.18), (225.69, 3564.38), (228.63, 3564.53), (231.57, 3564.53), (234.52, 3564.51), (237.51, 3564.54), (240.5, 3564.69), (243.5, 3564.75), (246.49, 3564.81), (249.49, 3564.9), (252.48, 3565.03), (255.47, 3565.14), (258.47, 3565.19), (261.46, 3565.27), (264.46, 3565.32), (267.45, 3565.38), (270.44, 3565.45), (273.44, 3565.56), (276.43, 3565.58), (279.43, 3565.67), (282.42, 3565.78), (285.41, 3565.84), (288.41, 3565.78), (291.4, 3565.67), (294.4, 3565.81), (297.39, 3566.03), (300.38, 3566.24), (303.38, 3566.34), (306.37, 3566.5), (309.37, 3566.61), (312.36, 3566.65), (315.35, 3566.65), (318.35, 3566.71), (321.34, 3566.81), (324.34, 3566.91), (327.33, 3566.81), (330.28, 3566.73), (333.23, 3566.61), (336.18, 3566.45), (339.12, 3566.43), (342.07, 3566.56), (345.02, 3566.79), (347.97, 3567.08), (350.92, 3567.41), (353.86, 3567.81), (356.81, 3568.22), (359.76, 3568.63), (362.71, 3569.06), (365.66, 3569.42), (368.61, 3569.76), (371.55, 3570.05), (374.5, 3570.21), (377.45, 3570.34), (380.4, 3570.39), (383.35, 3570.54), (386.3, 3570.67), (389.24, 3570.69), (392.19, 3570.75), (395.14, 3570.75), (398.09, 3570.78)]\",\"[(0.0, 3568.28), (2.96, 3568.25), (5.93, 3568.17), (8.89, 3568.1), (11.85, 3568.07), (14.82, 3567.98), (17.78, 3567.89), (20.75, 3567.93), (23.71, 3567.88), (26.67, 3567.74), (29.64, 3567.71), (32.6, 3567.67), (35.56, 3567.68), (38.53, 3567.64), (41.49, 3567.61), (44.45, 3567.61), (47.42, 3567.61), (50.38, 3567.64), (53.34, 3567.67), (56.31, 3567.68), (59.27, 3567.71), (62.23, 3567.7), (65.2, 3567.64), (68.16, 3567.58), (71.12, 3567.6), (74.09, 3567.58), (77.05, 3567.51), (80.02, 3567.41), (82.98, 3567.34), (85.94, 3567.22), (88.91, 3567.11), (91.87, 3567.06), (94.83, 3566.93), (97.8, 3566.8), (100.76, 3566.71), (103.72, 3566.64), (106.69, 3566.52), (109.65, 3566.42), (112.61, 3566.36), (115.58, 3566.32), (118.54, 3566.31), (121.51, 3566.28), (124.47, 3566.29), (127.43, 3566.23), (130.4, 3566.19), (133.36, 3566.08), (136.32, 3565.96), (139.29, 3565.79), (142.25, 3565.65), (145.21, 3565.53), (148.18, 3565.37), (151.14, 3565.17), (154.1, 3565.0), (157.07, 3564.95), (160.03, 3564.88), (162.99, 3564.73), (165.96, 3564.68), (168.92, 3564.61), (171.89, 3564.38), (174.85, 3564.18), (177.81, 3563.99), (180.78, 3563.8), (183.74, 3563.5), (186.7, 3563.23), (189.67, 3562.81), (192.59, 3562.07), (195.51, 3561.34), (198.43, 3560.82), (201.35, 3560.51), (201.51, 3560.49), (204.28, 3560.21), (207.2, 3560.04), (210.12, 3559.89), (213.04, 3559.3), (215.96, 3558.68), (218.88, 3558.47), (221.81, 3558.17), (224.73, 3558.18), (227.65, 3558.32), (230.57, 3558.75), (233.49, 3559.13), (234.76, 3559.3), (236.41, 3559.53), (239.34, 3559.91), (242.26, 3560.17), (245.18, 3560.32), (248.1, 3560.49), (251.02, 3560.57), (253.95, 3560.62), (256.89, 3560.76), (259.84, 3560.95), (262.79, 3561.15), (265.74, 3561.33), (268.69, 3561.52), (271.64, 3561.62), (274.59, 3561.61), (277.54, 3561.62), (280.48, 3561.66), (283.43, 3561.74), (286.38, 3561.89), (289.33, 3561.98), (292.28, 3562.06), (295.23, 3562.19), (298.18, 3562.2), (301.13, 3562.24), (304.08, 3562.3), (307.02, 3562.34), (309.97, 3562.36), (312.92, 3562.42), (315.87, 3562.49), (318.82, 3562.57), (321.77, 3562.71), (324.72, 3562.9), (327.67, 3563.0), (330.62, 3563.11), (333.56, 3563.23), (336.51, 3563.44), (339.46, 3563.69), (342.41, 3563.88), (345.36, 3563.88), (348.31, 3563.89), (351.26, 3563.94), (354.21, 3564.01), (357.15, 3564.13), (360.1, 3564.19), (363.05, 3564.19), (366.0, 3564.22), (368.95, 3564.31), (371.9, 3564.44), (374.85, 3564.69), (377.8, 3564.71), (380.75, 3564.65), (383.69, 3564.69), (386.64, 3564.81), (389.55, 3564.91), (392.45, 3564.81), (395.36, 3564.75), (398.26, 3564.81), (401.17, 3564.45), (404.08, 3564.39), (406.98, 3564.28), (409.89, 3564.27), (412.79, 3564.45), (415.7, 3564.69), (418.6, 3565.01), (421.51, 3565.34), (424.41, 3565.59), (427.32, 3565.81), (430.22, 3566.07), (433.13, 3566.35), (436.03, 3566.59), (438.94, 3566.74), (441.85, 3567.05), (444.75, 3567.19), (447.66, 3567.22), (450.56, 3567.28), (453.47, 3567.38), (456.37, 3567.41), (459.28, 3567.47), (462.18, 3567.43), (465.09, 3567.47), (467.99, 3568.3), (470.9, 3568.92), (473.8, 3568.95)]\",\"[(0.0, 3565.98), (2.96, 3565.75), (5.92, 3565.56), (8.89, 3565.4), (11.85, 3565.21), (14.81, 3564.97), (17.77, 3564.71), (20.73, 3564.5), (23.69, 3564.37), (26.66, 3564.25), (29.62, 3564.14), (32.58, 3564.02), (35.54, 3563.97), (38.5, 3563.87), (41.46, 3563.61), (44.43, 3563.51), (47.39, 3563.55), (50.35, 3563.54), (53.31, 3563.49), (56.27, 3563.46), (59.24, 3563.37), (62.2, 3563.22), (65.16, 3563.06), (68.12, 3562.89), (71.08, 3562.76), (74.04, 3562.66), (77.01, 3562.58), (79.97, 3562.48), (82.93, 3562.33), (85.86, 3562.2), (88.79, 3562.09), (91.72, 3562.01), (94.65, 3561.9), (97.58, 3561.86), (100.51, 3561.84), (103.44, 3561.75), (106.37, 3561.71), (109.3, 3561.72), (112.23, 3561.7), (115.16, 3561.63), (118.09, 3561.51), (121.02, 3561.34), (123.95, 3561.15), (126.88, 3560.98), (129.77, 3560.58), (132.66, 3560.17), (135.54, 3559.8), (138.43, 3559.51), (140.72, 3559.31), (141.32, 3559.26), (144.21, 3559.02), (147.09, 3558.67), (149.98, 3558.03), (152.87, 3557.32), (155.75, 3557.05), (158.64, 3557.08), (161.53, 3557.14), (164.41, 3557.6), (167.3, 3558.09), (167.51, 3558.11), (170.19, 3558.41), (173.08, 3558.6), (175.96, 3558.67), (178.85, 3558.82), (181.74, 3559.05), (184.62, 3559.19), (187.51, 3559.28), (190.4, 3559.47), (193.28, 3559.63), (196.17, 3559.64), (199.06, 3559.65), (202.02, 3559.73), (204.99, 3559.83), (207.95, 3559.89), (210.91, 3559.93), (213.88, 3560.01), (216.84, 3560.13), (219.8, 3560.25), (222.77, 3560.38), (225.73, 3560.49), (228.7, 3560.52), (231.66, 3560.53), (234.62, 3560.6), (237.59, 3560.65), (240.55, 3560.72), (243.51, 3560.82), (246.48, 3560.9), (249.44, 3560.98), (252.41, 3561.11), (255.37, 3561.21), (258.33, 3561.38), (261.3, 3561.41), (264.26, 3561.41), (267.22, 3561.53), (270.19, 3561.6), (273.15, 3561.56), (276.11, 3561.67), (279.08, 3561.89), (282.04, 3562.09), (285.01, 3562.13), (287.97, 3562.01), (290.93, 3562.09), (293.9, 3562.25), (296.86, 3562.29), (299.82, 3562.34), (302.79, 3562.5), (305.75, 3562.61), (308.72, 3562.64), (311.68, 3562.64), (314.59, 3562.57), (317.51, 3562.52), (320.42, 3562.5), (323.34, 3562.44), (326.25, 3562.41), (329.17, 3562.41), (332.08, 3562.49), (335.0, 3562.69), (337.91, 3563.01), (340.83, 3563.15), (343.74, 3563.31), (346.66, 3563.41), (349.57, 3563.54), (352.49, 3563.65), (355.4, 3563.77), (358.32, 3563.95), (361.23, 3564.03), (364.15, 3564.16), (367.06, 3564.27), (369.98, 3564.34), (372.89, 3564.34), (478.0, 3566.0)]\",...,\"[(0.0, 3499.57), (5.0, 3499.78), (11.0, 3499.56), (21.0, 3499.33), (24.0, 3499.05), (35.0, 3498.91), (43.0, 3498.68), (48.0, 3498.42), (53.0, 3498.67), (55.0, 3498.43), (57.0, 3498.17), (60.0, 3498.44), (71.0, 3498.25), (76.0, 3498.04), (81.0, 3497.81), (89.99, 3497.59), (95.99, 3497.37), (102.99, 3497.59), (108.99, 3497.35), (117.99, 3497.15), (123.99, 3496.92), (133.99, 3496.78), (138.99, 3497.02), (143.99, 3496.79), (146.99, 3496.57), (150.99, 3496.36), (161.99, 3496.22), (172.99, 3496.13), (183.99, 3496.17), (191.99, 3495.92), (202.99, 3495.75), (211.99, 3495.54), (222.99, 3495.65), (226.99, 3495.35), (237.99, 3495.22), (250.98, 3494.95), (260.98, 3494.73), (272.98, 3494.72), (283.98, 3494.61), (289.98, 3494.41), (300.98, 3494.39), (311.98, 3494.44), (318.98, 3494.21), (329.98, 3494.14), (340.98, 3494.21), (351.98, 3494.2), (362.98, 3493.97), (368.98, 3493.74), (379.98, 3493.73), (390.98, 3493.72), (401.98, 3493.59), (412.98, 3493.43), (423.97, 3493.36), (434.97, 3493.18), (445.97, 3493.11), (456.97, 3493.02), (465.97, 3493.25), (471.97, 3492.96), (478.97, 3492.75), (489.97, 3492.75), (497.97, 3492.51), (508.97, 3492.45), (519.97, 3492.31), (530.97, 3492.28), (536.97, 3492.05), (547.97, 3491.93), (558.97, 3491.98), (569.97, 3491.84), (576.97, 3491.57), (587.97, 3491.66), (598.96, 3491.49), (601.96, 3491.28), (612.96, 3491.15), (623.96, 3491.08), (634.96, 3491.32), (642.96, 3491.08), (653.96, 3490.92), (664.96, 3490.9), (675.96, 3490.91), (686.96, 3490.74), (692.96, 3490.95), (703.96, 3491.0), (714.96, 3491.05), (722.96, 3490.81), (733.96, 3490.8), (744.96, 3490.66), (750.96, 3490.35), (755.96, 3490.14), (764.96, 3489.85), (769.96, 3489.64), (774.95, 3489.43), (778.95, 3489.21), (783.95, 3488.99), (790.95, 3488.68), (801.95, 3488.63), (812.95, 3488.76), (823.95, 3488.68), (826.95, 3488.9), (830.95, 3489.13), (836.95, 3489.39), (838.95, 3489.63), (842.95, 3489.88), (845.95, 3490.11), (849.95, 3490.34), (855.95, 3490.58), (861.95, 3490.84), (867.95, 3490.63), (872.95, 3490.92), (883.91, 3490.94), (894.87, 3491.04), (905.84, 3491.27), (916.8, 3491.07), (924.77, 3491.29), (930.75, 3491.5), (941.71, 3491.6), (946.69, 3491.82), (952.67, 3492.04), (954.67, 3492.26), (965.63, 3492.1), (973.6, 3492.32), (982.57, 3492.53), (993.53, 3492.72), (1004.49, 3492.67), (1015.46, 3492.72), (1026.42, 3492.75), (1030.4, 3492.47), (1036.38, 3492.69), (1047.34, 3492.63), (1058.31, 3492.5), (1069.27, 3492.52), (1080.23, 3492.41), (1091.19, 3492.46), (1102.15, 3492.57), (1105.14, 3492.31), (1112.12, 3492.59), (1123.08, 3492.58), (1134.04, 3492.49), (1145.0, 3492.62), (1150.98, 3492.85), (1157.96, 3493.07), (1160.95, 3493.32), (1166.94, 3492.87), (1169.93, 3492.61), (1172.92, 3492.31), (1174.92, 3492.01), (1176.92, 3491.78), (1187.89, 3491.69), (1197.87, 3491.48), (1208.84, 3491.62), (1216.83, 3491.93), (1218.82, 3492.25), (1220.82, 3492.6), (1226.8, 3492.32), (1235.78, 3492.53), (1246.76, 3492.5), (1257.73, 3492.44), (1268.71, 3492.47), (1279.68, 3492.48), (1290.66, 3492.47), (1301.64, 3492.65), (1312.61, 3492.69), (1323.59, 3492.6), (1334.56, 3492.65), (1340.55, 3492.85), (1351.52, 3492.84), (1362.5, 3493.03), (1373.47, 3493.11), (1384.45, 3493.26), (1396.42, 3493.14), (1407.4, 3493.22), (1418.37, 3493.1), (1429.36, 3493.25), (1440.34, 3493.18), (1451.32, 3492.99), (1462.31, 3493.04), (1473.29, 3493.13), (1484.27, 3493.06), (1495.26, 3493.12), (1506.24, 3493.09), (1515.23, 3492.86), (1526.21, 3492.94), (1537.2, 3492.8), (1548.18, 3492.59), (1559.16, 3492.8), (1570.15, 3493.0), (1581.13, 3493.09), (1592.11, 3493.13), (1603.1, 3493.26), (1614.08, 3493.43), (1625.06, 3493.48), (1636.05, 3493.65), (1647.03, 3493.51), (1658.02, 3493.57), (1671.99, 3493.43), (1682.98, 3493.33), (1693.96, 3493.45), (1704.95, 3493.58), (1715.93, 3493.69), (1725.91, 3493.9), (1736.9, 3493.94), (1747.88, 3494.03), (1758.87, 3493.94), (1769.85, 3493.96), (1780.83, 3494.15), (1791.82, 3494.06), (1801.8, 3494.29), (1812.79, 3494.39), (1823.77, 3494.34), (1834.75, 3494.41), (1845.74, 3494.45), (1856.72, 3494.51), (1867.7, 3494.31), (1878.69, 3494.33), (1881.68, 3494.12), (1892.67, 3494.23), (1903.65, 3494.35), (1914.63, 3494.45), (1925.62, 3494.47), (1936.6, 3494.35), (1947.58, 3494.42), (1958.57, 3494.4), (1969.55, 3494.4), (1980.54, 3494.52), (1991.52, 3494.74), (1995.51, 3495.01), (2006.5, 3494.82), (2017.48, 3494.86), (2028.46, 3494.94), (2035.45, 3495.15), (2042.44, 3495.26)]\",\"[(0.0, 3495.24), (4.0, 3494.99), (11.0, 3494.72), (15.0, 3494.51), (20.0, 3494.72), (31.0, 3494.85), (40.0, 3494.56), (42.0, 3494.22), (52.0, 3494.0), (56.0, 3494.23), (67.0, 3494.14), (74.0, 3493.9), (83.0, 3493.67), (94.0, 3493.7), (105.0, 3493.77), (110.0, 3493.54), (112.0, 3493.32), (123.0, 3493.38), (132.0, 3493.17), (141.99, 3492.96), (146.99, 3492.74), (157.99, 3492.58), (168.99, 3492.39), (177.99, 3492.61), (183.99, 3492.41), (193.99, 3492.19), (204.99, 3492.25), (208.99, 3492.46), (219.99, 3492.27), (228.99, 3492.06), (239.99, 3491.93), (242.99, 3492.15), (253.99, 3492.09), (260.99, 3491.86), (271.99, 3491.93), (282.99, 3491.9), (292.99, 3491.65), (303.99, 3491.73), (314.99, 3491.62), (322.99, 3491.41), (333.99, 3491.32), (344.99, 3491.18), (351.99, 3490.97), (363.99, 3490.98), (374.99, 3490.95), (382.99, 3490.71), (393.99, 3490.83), (404.99, 3490.79), (415.99, 3490.85), (424.99, 3490.65), (435.99, 3490.6), (445.99, 3490.37), (456.98, 3490.37), (467.98, 3490.45), (477.98, 3490.21), (483.98, 3489.96), (490.98, 3490.24), (498.98, 3490.02), (509.98, 3489.85), (513.98, 3489.64), (524.98, 3489.49), (535.98, 3489.48), (544.98, 3489.27), (555.98, 3489.06), (566.98, 3488.94), (577.98, 3488.84), (583.98, 3488.64), (595.98, 3488.51), (606.98, 3488.54), (610.98, 3488.78), (619.98, 3488.55), (630.98, 3488.41), (638.98, 3488.62), (644.98, 3488.41), (651.98, 3488.2), (662.98, 3487.95), (665.98, 3487.69), (675.98, 3487.48), (682.98, 3487.72), (685.98, 3487.98), (694.98, 3487.75), (697.98, 3487.46), (708.98, 3487.27), (719.98, 3487.2), (724.98, 3487.45), (735.98, 3487.53), (741.98, 3487.77), (752.97, 3487.58), (755.97, 3487.21), (757.97, 3486.87), (759.97, 3486.58), (765.97, 3486.35), (774.97, 3486.59), (776.97, 3486.85), (778.97, 3487.1), (780.97, 3487.41), (783.97, 3487.63), (787.97, 3487.85), (790.97, 3488.09), (801.97, 3488.06), (806.97, 3487.82), (812.97, 3487.49), (823.97, 3487.63), (831.97, 3487.84), (842.97, 3487.83), (846.97, 3488.05), (857.97, 3488.22), (861.97, 3488.01), (864.97, 3487.77), (875.97, 3487.67), (886.97, 3487.56), (897.97, 3487.6), (908.97, 3487.81), (919.97, 3487.82), (930.97, 3487.84), (941.97, 3487.86), (947.97, 3487.64), (958.97, 3487.69), (967.97, 3487.91), (970.97, 3488.12), (981.97, 3488.21), (983.97, 3487.89), (986.97, 3487.63), (997.97, 3487.73), (1001.97, 3487.97), (1004.97, 3488.19), (1015.97, 3488.3), (1026.97, 3488.46), (1037.96, 3488.55), (1048.96, 3488.59), (1059.96, 3488.52), (1070.96, 3488.65), (1081.96, 3488.79), (1092.96, 3488.96), (1103.96, 3488.94), (1114.96, 3488.95), (1124.96, 3489.22), (1127.96, 3489.48), (1134.96, 3489.26), (1142.94, 3489.48), (1147.89, 3489.7), (1152.84, 3489.97), (1158.78, 3489.75), (1169.68, 3489.7), (1180.57, 3489.97), (1183.54, 3490.18), (1187.5, 3490.48), (1189.48, 3490.73), (1196.42, 3491.01), (1208.3, 3491.26), (1219.19, 3491.22), (1231.08, 3491.1), (1241.97, 3491.18), (1252.95, 3491.21), (1263.94, 3491.32), (1274.93, 3491.45), (1285.92, 3491.59), (1296.91, 3491.7), (1307.91, 3491.82), (1318.9, 3491.89), (1322.89, 3492.11), (1333.88, 3492.13), (1339.88, 3492.35), (1350.87, 3492.41), (1358.86, 3492.62), (1369.85, 3492.75), (1381.84, 3492.87), (1392.83, 3493.05), (1403.82, 3493.21), (1415.81, 3493.32), (1426.8, 3493.47), (1437.79, 3493.59), (1448.78, 3493.72), (1459.77, 3493.83), (1470.76, 3494.02), (1481.75, 3494.07), (1492.74, 3494.23), (1503.73, 3494.3), (1514.72, 3494.34), (1525.71, 3494.3), (1536.7, 3494.35), (1547.69, 3494.4), (1558.68, 3494.53), (1569.67, 3494.7), (1580.66, 3494.68), (1591.65, 3494.73), (1602.64, 3494.77), (1610.64, 3494.98), (1621.63, 3494.91), (1632.62, 3494.88), (1642.61, 3495.09), (1653.6, 3495.06), (1664.59, 3494.92), (1669.58, 3495.13), (1680.57, 3495.11), (1691.56, 3495.17), (1702.55, 3495.11), (1713.54, 3495.1), (1724.53, 3495.21), (1735.52, 3495.32), (1746.51, 3495.12), (1751.51, 3495.4), (1762.5, 3495.42), (1773.49, 3495.35), (1784.48, 3495.3), (1795.47, 3495.27), (1806.46, 3495.3), (1817.45, 3495.42), (1828.44, 3495.5), (1839.43, 3495.72), (1850.42, 3495.66), (1861.41, 3495.72), (1872.4, 3495.68), (1883.39, 3495.85), (1894.38, 3495.8), (1905.37, 3495.99), (1916.36, 3495.9), (1927.35, 3496.02), (1938.34, 3495.9), (1949.33, 3495.87), (1960.32, 3495.86), (1971.31, 3495.88), (1982.3, 3495.77), (1993.29, 3495.79), (2004.28, 3495.84), (2015.27, 3495.88), (2026.26, 3495.85), (2037.26, 3495.95), (2048.25, 3495.84), (2057.24, 3495.9)]\",\"[(0.0, 3490.01), (10.98, 3489.9), (21.97, 3489.72), (27.96, 3489.5), (31.95, 3489.73), (39.94, 3489.49), (52.92, 3489.24), (63.91, 3489.27), (74.89, 3489.2), (85.88, 3489.0), (96.86, 3489.03), (104.85, 3488.78), (115.83, 3488.73), (126.82, 3488.79), (137.8, 3488.66), (146.79, 3488.41), (157.77, 3488.28), (168.76, 3488.2), (179.74, 3488.18), (190.73, 3488.21), (201.71, 3488.23), (212.7, 3488.21), (223.68, 3488.08), (234.67, 3488.09), (245.65, 3488.05), (256.63, 3488.19), (267.62, 3488.01), (278.6, 3487.87), (289.59, 3487.97), (298.57, 3487.75), (309.56, 3487.68), (320.54, 3487.66), (331.53, 3487.64), (342.51, 3487.46), (353.5, 3487.48), (359.49, 3487.26), (370.47, 3487.42), (377.46, 3487.19), (388.45, 3487.21), (399.43, 3487.23), (406.42, 3487.02), (408.42, 3486.81), (413.41, 3486.58), (424.4, 3486.56), (435.38, 3486.58), (441.36, 3486.79), (452.34, 3486.69), (460.32, 3486.48), (471.29, 3486.54), (482.26, 3486.51), (492.24, 3486.27), (500.22, 3486.06), (506.21, 3485.84), (517.18, 3485.64), (521.17, 3485.4), (532.14, 3485.33), (537.13, 3485.13), (548.11, 3485.01), (553.09, 3484.78), (564.07, 3484.69), (575.04, 3484.58), (579.03, 3484.82), (584.02, 3484.6), (589.01, 3484.39), (592.0, 3484.18), (602.98, 3484.3), (613.95, 3484.3), (624.92, 3484.29), (635.9, 3484.34), (646.87, 3484.38), (657.84, 3484.42), (668.82, 3484.61), (675.8, 3484.88), (682.78, 3485.1), (690.76, 3484.9), (701.74, 3484.94), (704.73, 3485.23), (715.71, 3485.37), (726.68, 3485.53), (737.65, 3485.44), (748.63, 3485.57), (759.6, 3485.53), (765.59, 3485.76), (776.56, 3485.9), (787.53, 3486.08), (792.52, 3486.34), (797.51, 3486.56), (806.49, 3486.77), (810.48, 3486.99), (813.47, 3487.25), (824.44, 3487.19), (828.42, 3487.42), (835.39, 3487.91), (848.33, 3488.17), (859.28, 3488.06), (863.26, 3487.68), (864.26, 3487.43), (875.21, 3487.57), (886.16, 3487.5), (898.1, 3487.38), (905.07, 3487.07), (909.06, 3486.84), (913.04, 3486.59), (917.02, 3486.81), (920.01, 3487.06), (922.99, 3487.3), (933.95, 3487.44), (946.9, 3487.57), (957.86, 3487.75), (965.83, 3487.97), (976.79, 3487.9), (986.76, 3488.11), (997.72, 3488.22), (1008.68, 3488.35), (1019.64, 3488.59), (1030.6, 3488.75), (1035.58, 3488.98), (1041.56, 3489.19), (1046.54, 3489.41), (1051.52, 3489.65), (1056.5, 3489.95), (1057.5, 3490.04)]\",\"[(0.0, 3486.61), (7.0, 3486.41), (17.99, 3486.27), (24.98, 3486.06), (35.98, 3485.99), (42.97, 3485.78), (53.97, 3485.65), (63.96, 3485.43), (74.95, 3485.53), (85.95, 3485.38), (96.94, 3485.42), (107.93, 3485.34), (118.93, 3485.33), (129.92, 3485.25), (140.91, 3485.21), (151.91, 3485.3), (162.9, 3485.26), (173.89, 3485.41), (184.89, 3485.27), (195.88, 3485.32), (206.87, 3485.45), (217.87, 3485.48), (228.86, 3485.39), (239.85, 3485.48), (249.85, 3485.23), (260.84, 3485.34), (271.83, 3485.17), (277.83, 3484.96), (288.82, 3484.96), (298.82, 3484.65), (309.81, 3484.52), (319.8, 3484.29), (330.8, 3484.06), (342.79, 3483.95), (353.78, 3483.99), (363.78, 3483.75), (374.77, 3483.77), (385.76, 3483.79), (396.76, 3483.84), (407.75, 3483.82), (418.74, 3483.69), (429.74, 3483.78), (440.72, 3483.51), (451.71, 3483.3), (462.7, 3483.2), (473.68, 3483.06), (484.67, 3482.93), (495.66, 3482.88), (506.65, 3482.69), (517.63, 3482.72), (528.62, 3482.78), (539.61, 3482.84), (550.59, 3482.84), (561.58, 3482.88), (572.57, 3482.88), (583.56, 3482.78), (594.54, 3482.87), (605.53, 3482.8), (616.52, 3482.75), (627.5, 3482.73), (638.49, 3482.74), (649.48, 3482.56), (660.46, 3482.57), (671.45, 3482.64), (682.44, 3482.56), (693.43, 3482.59), (704.41, 3482.53), (715.4, 3482.67), (718.4, 3482.88), (722.39, 3482.67), (725.39, 3482.46), (729.38, 3482.21), (739.37, 3482.57), (741.37, 3482.9), (743.37, 3483.18), (750.36, 3483.43), (761.34, 3483.23), (764.34, 3482.95), (767.34, 3482.71), (771.33, 3482.45), (774.33, 3482.17), (778.32, 3481.92), (784.32, 3482.16), (786.32, 3482.42), (788.31, 3482.63), (793.31, 3482.85), (796.3, 3483.06), (807.29, 3483.16), (818.29, 3483.13), (829.28, 3483.12), (840.28, 3483.27), (851.27, 3483.13), (855.27, 3483.36), (866.27, 3483.3), (877.26, 3483.45), (883.26, 3483.67), (891.26, 3483.87), (897.26, 3484.09), (908.25, 3484.03), (919.25, 3483.96), (930.25, 3484.06), (941.24, 3484.19), (952.24, 3484.34), (963.23, 3484.44), (974.23, 3484.59), (985.23, 3484.57), (996.22, 3484.71), (1007.22, 3484.55), (1015.22, 3484.77), (1021.21, 3485.0), (1032.21, 3485.16), (1044.2, 3485.15), (1052.2, 3485.37), (1250.0, 3488.0)]\",\"[(0.0, 3481.6), (10.94, 3481.46), (21.89, 3481.25), (32.83, 3481.37), (37.8, 3481.16), (48.75, 3480.89), (59.69, 3480.79), (70.63, 3480.69), (79.59, 3480.48), (91.52, 3480.47), (102.47, 3480.28), (113.41, 3480.17), (124.35, 3479.99), (132.31, 3479.78), (143.25, 3479.55), (154.2, 3479.48), (165.14, 3479.32), (176.08, 3479.25), (187.06, 3479.25), (191.05, 3479.03), (202.04, 3478.85), (213.02, 3478.79), (218.01, 3478.49), (229.0, 3478.38), (239.98, 3478.2), (250.96, 3478.1), (261.95, 3478.06), (272.93, 3478.19), (283.91, 3478.24), (294.9, 3478.22), (305.88, 3478.25), (316.86, 3478.35), (327.85, 3478.44), (338.83, 3478.6), (349.82, 3478.62), (360.8, 3478.62), (371.78, 3478.83), (382.77, 3478.95), (389.76, 3478.68), (400.74, 3478.59), (411.72, 3478.43), (422.71, 3478.28), (433.69, 3478.28), (444.67, 3478.27), (455.66, 3478.21), (466.64, 3478.31), (477.62, 3478.36), (488.61, 3478.56), (499.59, 3478.69), (508.58, 3478.94), (514.57, 3479.22), (520.56, 3478.95), (523.55, 3478.67), (525.55, 3478.34), (527.55, 3478.1), (529.54, 3477.87), (534.54, 3478.26), (537.53, 3478.51), (541.53, 3478.74), (552.51, 3478.91), (557.5, 3478.69), (561.5, 3478.37), (563.49, 3478.11), (568.49, 3477.76), (579.47, 3477.64), (582.47, 3477.89), (593.45, 3477.89), (597.44, 3478.14), (608.43, 3478.18), (619.41, 3478.41), (630.4, 3478.34), (641.38, 3478.62), (652.37, 3478.75), (657.36, 3478.54), (669.35, 3478.42), (676.34, 3478.63), (687.33, 3478.68), (698.31, 3478.51), (709.3, 3478.63), (720.28, 3478.8), (731.27, 3478.98), (742.26, 3479.09), (753.24, 3479.04), (764.23, 3479.2), (774.21, 3479.42), (785.2, 3479.55), (796.19, 3479.6), (804.18, 3479.82), (815.16, 3479.92), (819.16, 3480.17), (830.14, 3480.29), (841.13, 3480.31), (852.11, 3480.38), (863.1, 3480.55), (875.08, 3480.54), (886.07, 3480.61), (897.06, 3480.61), (908.04, 3480.71), (919.03, 3480.84), (927.02, 3480.9), (1027.0, 3482.0)]\"]]\n", - "bank_stations: [[\"['171.92', '201.27']\",\"['191.42', '222.45']\",\"['172.73', '204.26']\",\"['213.04', '234.76']\",\"['149.98', '167.51']\",...,\"['714.96', '861.95']\",\"['638.98', '857.97']\",\"['548.11', '682.78']\",\"['718.4', '796.3']\",\"['514.57', '652.37']\"]]\n", - "number_of_station_elevation_points: [[134,133,137,164,131,...,230,230,122,114,101]]\n", - "number_of_coords: [[6,4,5,5,7,...,5,4,5,5,5]]\n", - "flows: [[\"1.0\n", - "255.0\n", - "1540.0\n", - "9405.0\",\"1.0\n", - "255.0\n", - "1540.0\n", - "9405.0\",\"1.0\n", - "255.0\n", - "1540.0\n", - "9405.0\",\"1.0\n", - "255.0\n", - "1540.0\n", - "9405.0\",\"1.0\n", - "255.0\n", - "1540.0\n", - "9405.0\",...,\"1.0\n", - "1.0\n", - "1.0\n", - "1.0\",\"1.0\n", - "1.0\n", - "1.0\n", - "1.0\",\"1.0\n", - "1.0\n", - "1.0\n", - "1.0\",\"1.0\n", - "1.0\n", - "1.0\n", - "1.0\",\"1.0\n", - "1.0\n", - "1.0\n", - "1.0\"]]\n", - "profile_names: [[\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",...,\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\",\"10yr FIS\n", - "50yr FIS\n", - "100yr FIS\n", - "500yr FIS\"]]\n", - "geometry: [[010200000006000000BE4C8CE1A50523C1206B1025266F42419AC8EC697F0523C132F6A6E0286F42419A0006786A0523C17F92F0B1316F4241F0D4F7586A0523C13C43C669356F42418A5AA654500523C159EC2A60386F424133B5B753E50423C10A0FA39B316F4241,01020000000400000016D0FC12D70523C15084122A366F4241E79442B0770523C186A13776406F4241DAB89867470523C1B04E6AFA416F4241157F3194F90423C15BF0A5553B6F4241,0102000000050000008AF5EF3DD10523C185E9765B496F4241D1DFD6A4790523C13D297626526F42417349BC58490523C19953E3ED516F42417EDA28C81B0523C104EC1292496F4241417CFD2DF20423C155BDEBD1466F4241,010200000005000000FC7247C5D10523C1218ACB125C6F42418538B3607D0523C1CFECADD76F6F424144418C6F560523C199DFBBB2706F4241E59308061D0523C14394B776626F4241481EA709EA0423C1D703D9D55E6F4241,0102000000070000003B4C7E239A0523C170FC9E266D6F42412A7B5E8B870523C1148A9AEE786F4241F267D3497E0523C155BEE03B7F6F4241B1E51DA3520523C1C7AE0A64806F424177B850D30F0523C1E0B9EC9F7C6F4241B9769DA4F10423C1B8CB0908776F42412D6C0265B20423C1D74578A4776F4241,...,0102000000050000008A09B101460C23C17CAB3305367342412DA30C133E0A23C1BEF7F0341B734241DAC1C704960923C1AB66DF9610734241C71810A7FF0823C13D30972204734241622B728C880723C177CF00BAF5724241,010200000004000000FB552DF0210C23C12829C54D607342410FF4975B790923C182EB27853E734241EAB104AF3C0923C1176B4AC641734241AD573D4A570723C158C2304029734241,010200000005000000EEF043217E0B23C1830A685F7573424133FBEFAF780A23C14C14E6DC7A73424187CC4B9DA60923C1A9B2D98E5F73424117D0CA81690923C1C554CBA55A7342416F09108C6B0923C175CBA88F46734241,010200000005000000C1089CB40B0B23C1159AB7CEA673424106CF01A81A0A23C15C7FFC8A8F7342416180C58E370923C1992DFC3882734241B17690D0DB0823C1194EEDF56473424124F1636A910823C1CD36043B4D734241,010200000005000000A0EC58B27A0A23C1B0660763D473424126DCAAE5190A23C1327A5B9AE07342411DFA3EB5160923C1F1541AB9D87342417C1FCCEBD70823C1B0E03987AA734241330E7747C40823C17EE9A9139C734241]]\n", - "huc: [[\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\",...,\"10120203\",\"10120203\",\"10120203\",\"10120203\",\"10120203\"]]\n", - "model_id: [[\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE_1\",...,\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\",\"Spearfish_Cr_LOMR_FEMA_RESPONSE\"]]\n", - "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "__index_level_0__: [[7042,7043,7044,7045,7046,...,7225,7226,7227,7228,7229]]\n" - ] - } - ], - "source": [ - "# Scenario I\n", - "# User Args\n", - "catalog_name = \"xs\"\n", - "huc_num = 10120203\n", - "\n", - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f\"huc_{huc_num}\"\n", - "namespace = \"mip\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "print(iceberg_table.to_string(preview_cols=30))" - ] - }, - { - "cell_type": "code", - "execution_count": 22, - "id": "8b8254a1-dce8-42f0-8e38-87b0d1192760", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "river: large_string\n", - "reach: large_string\n", - "river_reach: large_string\n", - "river_station: double\n", - "river_reach_rs: large_string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: large_string\n", - "station_elevation_points: large_string\n", - "bank_stations: large_string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: large_string\n", - "profile_names: large_string\n", - "geometry: large_binary\n", - "huc: large_string\n", - "model_id: large_string\n", - "us_reach_id: large_string\n", - "us_network_to_id: large_string\n", - "ds_reach_id: large_string\n", - "ds_network_to_id: large_string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",\"cottonwood_creek\",...,\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\",\"south_fork_clear\"]]\n", - "reach: [[\"45\",\"45\",\"45\",\"45\",\"45\",...,\"173\",\"173\",\"173\",\"173\",\"173\"]]\n", - "river_reach: [[\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",\"cottonwood_creek,45\",...,\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\",\"south_fork_clear,173\"]]\n", - "river_station: [[12970.38,12672.1,12299.53,12153.37,11649.77,...,1595.506,1196.63,797.7532,398.8766,0]]\n", - "river_reach_rs: [[\"cottonwood_creek 45 12970.38\",\"cottonwood_creek 45 12672.1\",\"cottonwood_creek 45 12299.53\",\"cottonwood_creek 45 12153.37\",\"cottonwood_creek 45 11649.77\",...,\"south_fork_clear 173 1595.506\",\"south_fork_clear 173 1196.63\",\"south_fork_clear 173 797.7532\",\"south_fork_clear 173 398.8766\",\"south_fork_clear 173 0.0\"]]\n", - "thalweg: [[1441.132,1440.028,1435.111,1432.966,1430.307,...,1573.805,1570.469,1570.177,1569.928,1568.771]]\n", - "xs_max_elevation: [[1588.847,1669.48,1654.026,1558.699,1527.284,...,1786.711,1767.658,1763.571,1818.624,1873.877]]\n", - "left_reach_length: [[284.287,323.3077,227.909,360.3609,210.6718,...,401.7363,330.3242,391.7664,429.1667,0]]\n", - "right_reach_length: [[303.1325,369.12,136.7996,342.1801,217.7682,...,396.9099,438.9131,407.5078,364.8997,0]]\n", - "channel_reach_length: [[298.2864,372.5664,146.1611,503.6007,210.0612,...,398.8766,398.8766,398.8766,398.8766,0]]\n", - "ras_data: [[\"Type RM Length L Ch R = 1 ,12970.38,284.287,298.2864,303.1325\n", - "XS GIS Cut Line= 10\n", - " 2557013.62452871613905.405064322557170.01356711 1613144.049169\n", - "2557179.463565481613034.761952912557187.667479591612919.42676206\n", - "2557187.802633431612917.431333932557190.014987551612880.65587562\n", - "2557193.545626411612777.654764992557194.857639491612645.33335081\n", - "2557193.914288551612519.076795222557191.264243681612417.61287668\n", - "#Sta/Elev=194\n", - "8996.4271486.1168999.6651484.945 9009.751481.6349012.3051480.7349019.8341478.072\n", - "9029.9191474.7179040.0031471.7099050.0881468.0159057.7621465.1049060.1721464.198\n", - "9070.2571460.2889080.3411456.826 9088.941455.1989090.4251454.917 9100.511452.727\n", - "9103.2191452.4039110.5941451.4969120.6791450.4729130.763 1450.229140.8481449.938\n", - "9148.6771449.7829150.9321449.7419161.0171449.4439171.1011449.1259181.1861449.709\n", - "9187.5131449.774 9191.271449.8129194.1341449.8399201.3551449.9599211.4391449.922\n", - "9221.524 1450.199231.6081450.4949239.5921450.4839241.6931450.4759251.7771450.553\n", - "9261.8621451.0499271.946 1451.569282.0311451.5039285.0491451.3289286.0871451.265\n", - "9292.115 1450.9 9302.21450.8589312.2841450.7749322.3691450.3739330.5061450.322\n", - "9332.453 1450.349342.5381450.4939352.6221450.5529362.7071449.8589372.7911449.142\n", - "9375.9641448.9989382.8761448.817 9384.661448.841 9392.961448.9519403.0451449.256\n", - "9413.1291449.2399421.4211449.0479423.2141449.0229433.2981448.6999443.383 1449.3\n", - "9453.4671449.9689463.5521450.3829466.8781450.4069473.6361450.4379483.7211450.084\n", - "9493.8051450.313 9503.891450.3519512.3361450.3999513.9741450.4169524.0591450.226\n", - "9534.1431450.2029544.227 1450.399554.3121450.3999557.7931450.4069564.3961450.395\n", - "9574.4811450.2219584.5651450.199 9594.651450.1179603.2511449.8449604.7341449.797\n", - "9614.8191449.5739624.9031449.2749634.9881448.5759645.0721447.8959648.7081447.717\n", - "9655.1571447.4279665.241 1447.569675.3261447.676 9685.411447.5339694.165 1447.33\n", - "9695.4951447.2969705.5791446.9549715.6641446.6819725.7481446.8869735.8331446.944\n", - "9739.6231446.9839745.917 1447.039756.002 1447.039766.0861446.9499773.6781446.636\n", - "9776.1241446.4949786.0211446.6349795.9171446.7399797.9361446.6559805.8141446.378\n", - " 9815.711445.9549825.6071445.8099835.5041445.575 9845.41445.4169855.2971446.119\n", - "9865.1931446.894 9875.091446.7479883.3731445.9719884.9841445.8099894.866 1445.09\n", - "9896.6261445.0669904.7481444.9529914.6311446.6029924.5131445.3079934.3951443.526\n", - "9944.2781443.559 9954.161443.4459964.042 1443.569973.9241443.2379977.7911443.054\n", - " 99781443.0449983.807 1442.779993.6891442.084 99991441.571 100011441.378\n", - "10003.571441.13210010.011444.45910011.711445.33710013.441446.24710023.321454.194\n", - "10033.19 1456.4710037.841456.86310043.051457.32510052.911458.83210062.771460.466\n", - "10072.631462.36510077.581463.48410082.481464.59110092.341466.139 10102.21468.718\n", - "10112.061472.43610121.911476.67310131.771482.372 10140.91486.71610141.631487.069\n", - "10151.481492.71410161.321499.17210171.171505.26910177.83 1509.1310181.02 1510.98\n", - "10190.871517.24110200.721524.20110210.571529.88110220.411535.70610230.261541.737\n", - "10240.111547.268 10246.91550.70910249.961552.26810259.811557.01510269.661561.212\n", - "10273.231562.24710278.381563.776 10279.51564.10910289.351565.99310299.191567.332\n", - "10309.041567.87610318.881567.67110328.731565.63110338.58 1563.9210348.42 1563.27\n", - "10358.271563.71210368.111563.92410377.961564.78610379.291564.924 10387.81565.808\n", - "10397.651568.82410399.491569.15310407.491570.67410417.341573.67110427.191576.583\n", - "10437.031579.69510446.881580.83610456.721582.29110466.571583.43810476.41 1583.68\n", - "10480.531584.50110486.261585.64310496.11 1587.6910500.991588.847\n", - "#Mann= 13 , -1 , 0 \n", - "8996.427 0.035 0 9088.94 0.05 09187.513 0.035 0\n", - "9286.087 0.06 0 9384.66 0.035 09914.631 0.03 0\n", - "9977.791 0.05 010013.44 0.12 010077.58 0.035 0\n", - "10177.83 0.12 010278.38 0.035 010379.29 0.12 0\n", - "10480.53 0.035 0\n", - "Bank Sta=9914.631,10013.44\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,12672.1,323.3077,372.5664,369.12\n", - "XS GIS Cut Line= 10\n", - " 2557287.06202871613874.155064322557404.471304131613263.03441516\n", - "2557476.989646171612950.247379152557481.560806741612927.83306148\n", - "2557481.932942281612925.867987662557501.930132851612812.78317349\n", - "2557513.530362521612724.937654172557521.67234582 1612630.8707731\n", - "2557525.149238181612532.339724532557523.51763574 1612428.8570291\n", - "#Sta/Elev=188\n", - "9014.974 1564.519020.8471563.3889030.9041560.9069040.4921556.855 9040.96 1556.66\n", - "9051.0171551.9619061.0741547.3229071.1311539.7779081.1881531.6769088.7321523.734\n", - "9091.2441521.5199101.3011514.7229111.3581505.0389121.4151493.8269131.4721471.925\n", - "9136.973 1467.449141.5281463.8429151.5851457.4919161.6421454.4489171.6991453.282\n", - "9181.756 1454.889185.2141454.8839191.812 1454.59201.8691453.0079211.926 1450.38\n", - "9221.9831449.5499232.0391447.4079233.4551447.3179242.0961446.7999252.1531446.579\n", - " 9262.211446.3059272.2671446.5669281.695 1446.529282.3231446.515 9292.381446.515\n", - "9302.437 1446.049312.4941445.5149316.2161445.1149322.5511444.4339329.9361444.398\n", - "9332.6071444.3779342.6641444.3649352.7211445.8049362.7781446.8449372.8351446.533\n", - "9378.1771446.3459382.8911446.1839392.9481446.0189403.005 1445.919413.062 1445.87\n", - "9423.1191446.0769426.4181446.1479433.1751446.2729443.2321446.2069453.2891446.235\n", - "9463.3461446.4039473.4021446.4629474.6581446.4399483.4591446.2819493.5161446.047\n", - "9503.5731445.9719513.3921445.975 9513.631445.9759522.899 1445.759523.6861445.732\n", - "9533.7431445.612 9543.81445.6859553.8571445.7919563.9141445.998 9571.141446.223\n", - " 9573.971446.3149584.0271446.6699594.0841446.9349604.1411446.9949614.1981446.909\n", - "9619.3811446.9729624.2541447.0119634.3111447.0529637.2711447.026 9644.431446.996\n", - "9654.5741446.6029662.9571446.3439664.7191446.2769674.8631446.1459685.0081447.103\n", - "9695.1521447.1989703.7851447.5629705.2971447.6149715.4411447.7489725.586 1447.41\n", - " 9735.731446.3459744.6131445.4529745.8751445.3459756.0191445.2779766.1641444.929\n", - "9776.3081444.593 9785.441444.4119786.453 1444.399796.5971444.2119806.7421443.952\n", - "9816.8861443.5529826.2681443.4459827.0311443.4359837.1751443.045 9847.321442.712\n", - "9857.4641442.1039867.0961441.6469867.6091441.6179877.753 1441.889887.8981441.987\n", - "9898.042 1442.079907.923 1442.279908.1871442.2739918.3311441.6829928.4751441.859\n", - " 9938.621442.0559948.7511441.7269948.7641441.7259958.3551441.0869958.9051441.047\n", - "9968.9871440.2549977.0581440.0739979.0681440.028 9981.23 1440.15 9983.231440.266\n", - "9989.1121440.6149994.8531440.7569999.1391440.87910006.351440.98910009.171441.032\n", - "10019.191441.44810025.311441.24910029.221441.12210039.251445.66610046.781447.947\n", - "10049.271448.687 10059.3 1448.3610069.331449.83310079.35 1452.7610089.381454.956\n", - "10098.071456.006 10098.91456.123 10099.41456.18810109.35 1455.56 10119.31455.611\n", - "10129.261457.42610139.211458.30610149.161458.99110159.111460.44210166.111461.487\n", - "10169.071461.93610179.02 1464.6710186.681468.52210188.96 1469.6810198.851475.282\n", - "10208.751481.60210218.651488.73710228.541496.13310238.441504.14110248.34 1509.76\n", - "10253.741514.08710258.231517.68210268.131524.92710278.031534.054 10281.11536.538\n", - " 10287.91542.13310297.761549.95110307.611557.99410317.471565.18510327.331572.197\n", - "10337.191579.24310347.051585.504 10356.91592.38310366.76 1600.4110376.621606.408\n", - "10379.691608.89210386.471614.32510396.311620.80610406.161626.685 104161633.488\n", - "10425.851639.77410435.691645.09910445.541650.30610455.38 1655.710465.231660.954\n", - "10475.071665.69310476.051666.15110483.18 1669.48\n", - "#Mann= 7 , -1 , 0 \n", - "9014.974 0.035 09316.216 0.06 09513.392 0.035 0\n", - " 9938.62 0.03 010006.35 0.05 010039.25 0.12 0\n", - "10476.05 0.07 0\n", - "#XS Ineff= 2 , 0 \n", - " 9716.005 0 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9938.62,10039.25\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,12299.53,227.909,146.1611,136.7996\n", - "XS GIS Cut Line= 16\n", - " 2557535.24779261613918.048293492557639.174358991613468.19124465\n", - "2557659.220609351613370.060636922557683.373493861613274.19429828\n", - "2557727.511369281613120.553925662557735.40572159 1613081.3753766\n", - "2557738.736435691613051.186009912557738.897791651613049.19252947\n", - " 2557741.02184811613026.416694342557745.293586961613000.61611636\n", - "2557778.035496571612884.934559932557790.467898631612830.30736832\n", - "2557800.564067161612756.439908522557803.672983651612693.70734845\n", - "2557802.275557361612619.59424265 2557797.69423381612556.62741067\n", - "#Sta/Elev=189\n", - "8796.0531654.0268800.4951652.6918810.6381649.6818812.1561649.1938820.7811646.419\n", - "8830.9231642.9178841.0661639.5998851.2081636.5618853.1121635.8898861.3511633.015\n", - "8871.4931629.6028881.6361626.4658891.7781623.2968894.0691622.2378901.9211618.516\n", - "8912.0631614.1918922.2061610.5138932.3481607.5588935.0261606.7538942.4911604.455\n", - "8952.6331601.1418962.7761598.2488972.9181595.7138975.9821594.9968983.0611593.262\n", - "8993.2031590.5799003.3461587.4269013.4881584.3589016.9391583.4739023.6311581.758\n", - "9033.7731578.2889043.9161574.4189054.0581570.2279057.895 1568.329064.2011565.235\n", - "9074.3441557.8179084.4861547.4599094.6291541.6019098.8521538.8679104.7711534.571\n", - "9114.9141523.8349125.0561509.7549135.1991499.9929139.8081497.6449145.3411495.136\n", - "9155.4841489.6629165.6261483.5869175.7691468.5059180.7651460.6429185.9111451.301\n", - "9196.0541447.7489206.1961446.4869216.339 1445.199221.7221445.2089226.4811445.296\n", - "9236.6241445.0989246.766 1444.659256.9091444.1459257.7591444.1289263.2461443.982\n", - "9266.9961443.8699277.0781443.659 9287.161443.5369297.2421443.4129307.3241443.314\n", - "9308.9261443.3229317.4061443.3619327.4881443.239 9337.571443.2219347.6531443.148\n", - "9354.6061443.1439357.7351443.1239357.9161443.1149367.9271442.5269378.1211442.655\n", - "9384.7691442.9459388.316 1443.19393.103 1443.11 9398.511443.0999408.705 1442.97\n", - "9418.8991441.5229429.0931442.3039431.0391442.2129439.2881441.7999449.4821441.956\n", - "9456.7781442.0529459.7041442.1149467.6481442.0119469.995 1441.989480.2861441.749\n", - "9483.4631441.6589490.5771441.4549500.8691441.3319501.459 1441.33 9511.161441.267\n", - "9521.4511441.2999531.7421441.3399535.2691441.3859542.0331441.4529552.3241441.639\n", - "9562.6151441.908 9569.081441.6699572.9061441.5239583.1971441.4259593.4881441.445\n", - "9602.8911441.5569603.7791441.565 9614.071441.6159616.6331441.614 9624.21441.634\n", - "9634.2761441.7629644.0791441.6259644.352 1441.629654.4291441.2639656.5991441.175\n", - "9664.3851440.8359674.3081439.6399684.2311435.1119686.971 1435.339688.9711435.504\n", - "9694.138 14369704.0411437.0639711.8461437.7179713.9671437.9049715.7621437.808\n", - "9723.973 1437.27 9733.981437.7339737.9981437.9129744.1491438.4189754.4281439.416\n", - "9758.4161439.4939764.7071439.6549774.9861440.1179785.265 1440.639792.6681440.317\n", - "9795.5431440.2389805.8221440.4119816.1011440.118 9826.381440.0649826.9211440.055\n", - "9836.6591439.9159846.938 1438.859857.2171437.4459858.2241437.6289861.798 1438.32\n", - "9867.3651439.546 9877.51440.6839887.6341439.7489897.7681440.3159903.3021440.228\n", - "9907.9031440.1889914.2481439.9349917.972 1439.799927.9311439.625 9937.891439.473\n", - " 9947.851439.0819957.8091438.766 9962.261438.3159967.7681437.7159977.6761437.002\n", - "9977.7271436.9989987.6871437.0159988.8021436.8449997.5631435.48710007.431435.938\n", - "10010.53 1437.81 10017.31441.89810027.161442.61810037.031443.75310046.891449.367\n", - "10051.611453.19610056.751457.40710066.591462.82310076.441463.889 10077.51464.003\n", - "10086.281464.94910096.13 1470.4410105.971486.16410115.821489.21510125.671489.507\n", - "10125.74 1489.5410135.531493.99110145.391508.98410155.251515.44810165.111520.333\n", - "10174.971526.87810182.271531.31310184.831532.86810188.871535.676\n", - "#Mann= 7 , -1 , 0 \n", - "8796.053 0.035 09384.769 0.06 09483.463 0.035 0\n", - "9977.676 0.03 010010.53 0.035 0 10077.5 0.12 0\n", - "10182.27 0.035 0\n", - "#XS Ineff= 2 , 0 \n", - " 9634.593 0 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9977.676,10010.53\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,12153.37,360.3609,503.6007,342.1801\n", - "XS GIS Cut Line= 13\n", - "2558005.837845531613629.286573512558001.071123921613447.86874134\n", - "2558001.936595571613301.260953872558004.91408231 1613240.9687236\n", - "2558009.284893191613190.459930822558017.914136131613130.27051659\n", - "2558018.205822091613128.291901082558024.661629811613084.20905222\n", - "2558025.23134723 1613041.9582129 2558021.85871811613013.41343009\n", - "2558017.051115461612989.615294132557969.286263831612813.16956088\n", - "2557878.207862041612525.19673098\n", - "#Sta/Elev=147\n", - "9100.3271558.6999108.8191555.0969118.6651550.465 9128.511546.3879138.3561541.929\n", - "9148.2021537.2249158.0471533.0689167.8931529.0679177.7391525.6539187.584 1521.84\n", - " 9197.431517.8619207.2761513.0119217.1211508.6059226.9671504.5189236.8131500.944\n", - "9246.6581497.8529256.5041494.312 9266.351490.7979276.1951488.1899281.8071487.128\n", - "9286.0421486.3219295.8891485.0549305.7371483.2319315.5841481.1819325.4321478.986\n", - "9335.2791476.8729345.1261474.9639354.9741473.4839364.8211471.5219374.669 1469.3\n", - "9384.516 1467.29394.3641465.2289404.2111461.5549414.0581461.3349415.4771461.294\n", - "9423.9061461.0559428.4181459.7329430.1261459.2339433.7631458.1669443.6291452.886\n", - "9453.4951448.3489463.361 1444.939473.2271442.3299483.0931440.8549488.7831440.392\n", - "9492.9721440.0589502.8691439.6669512.7661439.4339515.2661439.3899522.6621439.258\n", - "9532.5591439.1019539.481 1439.199542.4771439.2239544.9891439.2519552.4471439.325\n", - "9562.4161439.0729572.3861438.4499582.3551433.7069592.325 1433.469600.2861433.061\n", - "9602.2861432.9679602.2951432.9669607.3681433.183 9612.271433.3989622.2441434.224\n", - "9632.2181435.6179642.1931436.8689646.8391437.095 9652.11437.339 9661.951437.471\n", - "9671.7991437.2269681.6481436.1739689.0931436.5159691.5091436.6369701.4061436.855\n", - "9711.3021436.9879717.8371436.6829721.2381436.5319731.2521436.5399741.2651436.546\n", - "9742.1161436.4639742.9681436.381 9751.411435.6539761.5681436.6819771.7251436.609\n", - "9781.8831436.7369782.9731436.8359792.0411437.5879802.1981437.9569812.3561438.299\n", - "9822.5131438.3259822.9781438.3239832.671 1438.239842.8281436.3659852.9861434.769\n", - "9862.9831437.1929863.1431437.2299873.3011437.3029883.4581437.3989893.6161436.822\n", - "9902.9881436.9459903.7731436.9519913.9311436.9969924.0881436.5099924.9121436.475\n", - "9934.3551436.1239940.4421436.2269944.6311436.2669954.9071436.6889965.1831436.605\n", - "9974.8021436.3349975.4591436.3149976.0031436.2789985.7351435.6419996.0111433.617\n", - "10006.291435.39510009.161435.43910016.561435.50710022.421437.23410026.841438.537\n", - "10037.111439.09510043.521439.13310047.391439.14410048.87 1439.1510057.671439.183\n", - "10067.941439.00710077.88 1440.1810078.22 1440.2310088.491441.97310098.771446.052\n", - "10109.05 1452.0410112.241454.09410119.321458.404 10129.61463.25510139.871467.458\n", - " 10146.61470.83910150.151472.85810160.431479.171 10170.71481.27910180.961486.683\n", - "10180.981486.69310191.251493.79610201.531499.66810211.811506.57610215.321508.435\n", - "10222.081511.70510226.941514.078\n", - "#Mann= 6 , -1 , 0 \n", - "9100.327 0.035 09415.477 0.06 09515.266 0.035 0\n", - "9976.003 0.03 010022.42 0.035 010048.87 0.12 0\n", - "Bank Sta=9976.003,10022.42\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,11649.77,210.6718,210.0612,217.7682\n", - "XS GIS Cut Line= 4\n", - "2558491.236043721613362.263242862558300.723085611612976.14609283\n", - "2558025.777306481612611.134230982557961.150826171612534.09331362\n", - "#Sta/Elev=149\n", - "9506.1761527.2849511.8241526.4519519.6191525.4329522.7191524.9299533.6141522.478\n", - "9542.604 1519.76 9544.511519.1989555.4051516.5989565.5891514.284 9566.31514.153\n", - "9577.1951512.603 9588.091510.3939588.5741510.2689598.9851507.4379609.8811504.865\n", - "9611.5591504.5889620.7761502.9729631.6711501.0859634.544 1500.579642.5661499.227\n", - "9653.4611496.5849657.5291495.3749664.3561493.2879675.2511487.8169680.5141485.129\n", - "9686.1471482.2459688.2431482.1819697.0421481.9119703.499 1481.489707.9371481.173\n", - "9718.8321475.7579726.4841474.0159729.7271473.2599740.6221471.8329749.4691470.431\n", - "9751.5181470.1229756.352 1469.49762.4131468.4949772.4541467.0679773.3081466.946\n", - "9784.2031465.4789795.0981463.7769795.4391463.7289805.993 1462.339813.6381461.388\n", - "9816.8891460.9889818.4241460.8049827.7841459.5869838.6791458.0019841.4091457.637\n", - "9849.5741456.5549860.4691455.2049864.3941454.7289871.3641453.779 9882.261452.831\n", - "9887.3791451.6869893.1551450.355 9904.051447.1079910.3641445.0749914.9451443.675\n", - "9915.6111443.463 9925.84 1440.219933.3491438.1149936.7351436.9349939.4831435.857\n", - "9948.918 1432.169950.9871431.6329961.1011431.1569967.7011431.3299973.2841431.357\n", - " 99781431.2659984.4151431.1419985.4671431.089 9997.651430.30710001.13 1430.33\n", - "10009.831430.32510017.841430.342 100221430.66110022.021430.663 10034.21437.179\n", - "10034.561437.23310046.381438.82810051.271437.39210058.561435.54910067.991435.717\n", - "10070.751435.67810082.931435.326 10084.71435.32410089.451435.39610095.111435.482\n", - "10101.411435.556 10107.31435.51610118.131436.35410119.481436.48110131.661435.154\n", - "10134.841435.18510143.841435.78710151.561436.26410156.031436.36410168.21 1436.64\n", - "10168.271436.64710180.391437.47410184.981437.57810192.581438.155 10201.71437.726\n", - "10204.761437.59310216.941437.49610218.411437.47610229.131437.20510235.131437.226\n", - "10241.311437.25810251.841437.05510253.491437.01910265.671437.22210268.551437.341\n", - "10277.861437.79910285.27 1438.1110290.041438.19610301.981438.37210302.221438.376\n", - "10314.411438.283 10318.71438.16510326.591438.04710335.411438.07410338.771438.116\n", - "10350.951438.09510352.12 1438.110363.141438.05110368.841438.00410375.321438.049\n", - "10385.551438.645 10387.51438.82110389.371438.99410393.711439.39510399.931440.086\n", - " 10401.71440.36610412.621442.30410417.321444.291 10425.31448.52410432.931453.957\n", - "10437.991457.69110448.541466.08910450.671467.66510463.361472.58810464.161472.801\n", - "10476.041475.49610479.771476.37510488.721480.09310494.271483.038\n", - "#Mann= 9 , -1 , 0 \n", - "9506.176 0.035 09688.243 0.06 09756.352 0.035 0\n", - "9813.638 0.05 09915.611 0.035 09939.483 0.05 0\n", - " 10034.2 0.12 010089.45 0.035 010389.37 0.12 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 10198.34 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9939.483,10034.2\n", - "Exp/Cntr=0.3,0.1\n", - "\",...,\"Type RM Length L Ch R = 1 ,1595.506,401.7363,398.8766,396.9099\n", - "XS GIS Cut Line= 11\n", - "2569866.855332031569170.360780212569930.926198271569166.69678087\n", - " 2570006.2559641 1569159.9022742570068.28737536 1569152.1884285\n", - "2570141.366381391569140.409234492570195.624875831569129.64314001\n", - "2570257.327370751569115.202519972570358.472903061569087.20764276\n", - "2570360.393819351569086.650793942570461.87762149 1569059.3065258\n", - "2570477.554173541569056.01259492\n", - "#Sta/Elev=87\n", - "9499.0231786.7119505.066 1783.769514.9191782.2499524.7731780.4139534.6261776.614\n", - " 9544.481773.2269554.3331770.7029563.1991768.4059564.1891768.1419574.0611765.398\n", - "9583.9331762.6119591.8091760.1999593.8061759.5879603.6781756.031 9613.551752.038\n", - "9623.4221746.9359633.2951742.4739638.8341738.601 9643.181735.6029653.0831729.608\n", - "9662.986 1727.939672.8891726.5149682.7911719.4619692.6941713.8439697.7821711.044\n", - "9701.3431709.0559702.6031708.3459712.5511702.0669722.4991696.6599732.4471691.508\n", - "9742.3951686.5139752.3431681.2889762.2921676.3699767.2171673.832 9772.241671.195\n", - "9775.3661669.6549782.2281666.2839792.2351661.6089802.2421656.835 9812.251652.599\n", - "9822.2571648.6719823.768 1648.129830.6821645.5589832.2741644.955 9842.351641.233\n", - "9852.4251637.243 9862.5 1632.499871.1661628.6879872.5761628.0669882.6511623.418\n", - "9892.7261617.2279894.0521616.5089902.8861611.9049913.0581608.0639913.8451607.623\n", - " 9923.231602.3369933.4031593.6629943.5751584.7739952.9751580.5029953.7471580.155\n", - "9963.9191576.4719969.9981574.8789974.0921573.8059984.2641573.8129992.1051573.817\n", - "9994.4361573.819 99991573.824 100011573.82610004.611573.82910014.761573.838\n", - "10024.921573.84510030.011573.84910031.961573.85110035.071573.85410045.231573.862\n", - "10055.381573.86910065.541573.87810072.141574.22610075.691574.48410077.981575.238\n", - "10085.841577.827 100961581.007 10106.11591.97110106.151592.02710114.121592.944\n", - "10116.181593.10110122.121593.023\n", - "#Mann= 3 , -1 , 0 \n", - "9499.023 0.12 09953.747 0.05 010085.84 0.06 0\n", - "Bank Sta=9953.747,10085.84\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1196.63,330.3242,398.8766,438.9131\n", - "XS GIS Cut Line= 12\n", - " 2569973.83429441569523.920553592570074.614466151569526.71344698\n", - "2570143.887681351569526.113518212570201.084971381569523.59966273\n", - "2570268.613317321569517.59688189 2570319.03802861569510.39962544\n", - "2570376.176272521569498.677135652570421.021740971569486.32491607\n", - "2570467.553377281569470.860472212570469.443049681569470.20538578\n", - "2570537.419084781569448.859015632570577.076295591569439.29613939\n", - "#Sta/Elev=87\n", - "9499.0441767.6589502.116 1767.12 9511.971765.3949521.8241764.0059531.6791762.473\n", - "9541.5331762.2149551.3871760.1399561.2411757.3799571.0961755.655 9580.951754.537\n", - "9590.8041753.1369597.9551752.0899599.8631751.7989600.6581751.6779610.5031748.984\n", - "9620.3491745.9329630.1941742.6639640.039 1738.999649.8841735.936 9659.731732.624\n", - "9669.1391729.1069669.5751728.9419679.4241725.5879689.2731721.8239689.3141721.807\n", - "9699.1221717.8429708.9711714.446 9718.821708.5269726.3921707.9369728.674 1707.76\n", - "9738.5451704.9649748.4171700.3479758.2881696.4319768.1591692.5399778.0311690.202\n", - "9787.9021687.1019794.186 1685.569797.7921684.6599807.7161682.208 9817.641679.506\n", - "9824.8451677.4339827.5641676.6749837.4881673.7199845.1221670.5129847.4331669.371\n", - "9857.4521664.1929867.4711655.9919877.4911645.0969884.4311642.052 9887.511640.739\n", - "9897.5291635.133 9903.451632.0249907.6091629.9819917.7781624.2799927.9471622.071\n", - "9928.6721620.5019938.1161598.7729948.2851584.6919949.9661582.642 9955.92 1575.44\n", - "9958.5821572.7479964.9871571.4319968.904 1570.649969.9971570.6229979.2261570.469\n", - "9989.548 1570.479997.754 1570.47 9999 1570.479999.873 1570.47 100011570.471\n", - "10010.151570.47110020.421570.47310030.011570.47210030.691570.47210032.081570.472\n", - "10040.961570.64610051.231575.051 10061.51581.59910066.671585.63410071.771589.385\n", - "10072.251589.46410081.871590.81110091.961591.04210102.05 1591.1410109.93 1597.35\n", - "10112.141599.32610113.04 1600.57\n", - "#Mann= 3 , -1 , 0 \n", - "9499.044 0.12 0 9955.92 0.05 010051.23 0.06 0\n", - "Bank Sta=9955.92,10051.23\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,797.7532,391.7664,398.8766,407.5078\n", - "XS GIS Cut Line= 12\n", - "2569950.142438951569685.925139022570048.453772321569708.27646943\n", - "2570115.47023832 1569725.82628252570193.948911681569749.71266599\n", - " 2570251.99762231569770.426299572570343.346052731569809.42124964\n", - "2570421.221551271569847.912041382570423.004423261569848.81833464\n", - " 2570514.30180711569894.483971712570612.319257981569939.66964625\n", - "2570723.795974861569986.118438442570882.17984215 1570045.6387451\n", - "#Sta/Elev=150\n", - "9499.0451760.1459499.8811759.9029508.9351757.2739519.0681754.2149529.2021751.713\n", - "9539.3361748.6779541.4281748.1389549.4691746.1769559.6031744.0319569.7371741.689\n", - " 9579.871739.9229582.9741739.3549590.0041738.1119599.8651734.969 9600.141734.879\n", - " 9610.361730.5419620.5811730.0769621.6271729.9839630.8011728.9819641.0211726.543\n", - "9651.2411724.7539658.2971723.8569661.4621723.4459669.1411722.1059671.7121721.657\n", - "9682.0541719.8129691.7891717.5489692.3951717.4179702.7371714.9969713.0781712.146\n", - " 9723.421706.8149723.947 1706.519733.7621701.7979744.1031700.8319751.1741697.386\n", - "9754.4991695.3579755.4771694.7319765.0121688.9169775.5251685.0939783.5411681.224\n", - "9786.0391679.9699796.5521674.9359807.0651669.6849811.6041667.5119812.8081666.939\n", - "9817.6981664.4899828.476 1658.919835.9611654.8019839.2541652.8619850.0321646.999\n", - "9860.1511641.408 9860.811641.0439871.5881635.7919882.367 1630.119884.3411629.338\n", - "9893.1451625.2479903.9231619.2569908.5311616.1559912.1321613.985 9914.771612.528\n", - "9925.8391608.4939930.464 1604.479936.9081599.1549947.9771582.9719952.002 1577.41\n", - "9959.0461573.7999969.9981570.3989970.1161570.361 9973.541570.1779981.1851570.177\n", - "9992.2541570.1779995.0781570.177 99991570.177 100011570.17710003.341570.177\n", - "10014.441570.17710016.431570.17710025.531570.177 100301570.17710036.631570.177\n", - "10037.771570.17710047.731570.17710050.04 1570.4110058.821571.29610059.11 1571.52\n", - "10063.54 1575.7510069.921581.70210080.451588.52110081.011588.79110092.111589.495\n", - "10101.791589.72110103.08 1589.7510103.211589.75310114.131591.30610124.451598.483\n", - "10125.051598.86810135.971605.57910146.891610.947 10147.21611.09110157.811616.286\n", - "10168.731621.33310169.941621.89110179.651626.65910190.57 1631.5910192.691632.637\n", - " 10201.51637.02410211.011641.64110212.391642.32710215.811643.96410223.131647.531\n", - "10233.871652.65710240.481656.144 10244.61658.30910251.821661.89310255.34 1663.64\n", - "10265.151668.30110266.081668.74410276.811673.79910287.551678.82310289.821679.919\n", - "10298.291683.95610309.031689.08610314.491691.50410319.76 1693.93 10330.51699.035\n", - "10331.781699.60910339.821703.274 10341.11703.85910351.681708.23710362.261712.604\n", - "10366.691714.48210372.841717.09110383.421721.60110393.561725.405 103941725.564\n", - "10404.581729.47410415.171733.58110420.431735.63510425.751737.71110436.33 1741.85\n", - "10446.911746.07410447.291746.21310451.211747.56210457.491749.72410468.071753.488\n", - "10474.161755.50210478.651756.95110489.231760.31310499.811763.26910500.981763.571\n", - "#Mann= 5 , -1 , 0 \n", - "9499.045 0.12 09952.002 0.05 010063.54 0.06 0\n", - "10251.82 0.12 010451.21 0.035 0\n", - "Bank Sta=9952.002,10063.54\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,398.8766,429.1667,398.8766,364.8997\n", - "XS GIS Cut Line= 12\n", - "2569757.246055221569959.51847817 2569814.56280451569980.11342874\n", - "2569885.318804391570008.405213072569967.552871981570045.55613195\n", - "2570028.083227011570076.09690963 2570137.49744321570138.27234724\n", - "2570203.802289011570181.144349242570205.433244961570182.30192545\n", - "2570271.536427261570225.492995912570395.693569811570299.81847222\n", - "2570510.975880571570362.558521342570641.118864671570426.59477915\n", - "#Sta/Elev=155\n", - "9499.0541818.6249499.0821818.5999509.6041811.2749514.1451809.4639520.1261806.754\n", - "9530.6481798.425 9541.171791.1249542.0451790.5769551.6921784.6629559.9581779.483\n", - "9562.2461778.0419569.0931774.3469572.9171772.2739583.5881766.4029594.2591760.056\n", - "9594.6121759.858 9604.931754.0739615.6011748.0139620.1311744.8979626.2731740.899\n", - "9636.1611737.4479636.9591737.1689644.7561732.3999647.8411730.4069658.7221725.227\n", - "9667.8691720.7379669.6041719.8449680.4851713.6669690.9821706.4799691.3671706.196\n", - "9702.2481695.765 9713.131690.7389714.0951690.2179724.0111684.4599726.3971683.834\n", - "9735.0761682.3229736.3131681.8299746.1931676.128 9757.311666.3259757.5111666.175\n", - "9768.426 1657.69 9778.711651.1559779.543 1650.79790.6591646.8449794.196 1645.95\n", - "9799.423 1644.559801.9871643.6269813.4141639.2439818.8171636.6979824.8411633.296\n", - "9836.268 1626.959838.2111625.8579847.6951621.2099857.6041616.6019859.1221616.027\n", - "9870.5481610.6839876.998 1607.349881.9751604.9199893.402 15989896.3921596.172\n", - "9904.8291591.4869915.7861585.8149916.2561585.5199920.0421582.4469927.9631575.781\n", - "9933.8611572.3789939.8081570.3929951.5661569.9399951.6531569.9399963.4991569.938\n", - " 9969.271569.9379969.9731569.9379975.3441569.9369986.9741569.9359987.1891569.935\n", - " 99991569.9339999.0361569.933 100011569.93310004.531569.93310010.971569.932\n", - "10022.111569.93110022.861569.93110030.02 1569.9310034.741569.92910039.681569.929\n", - "10046.621569.92810057.261570.30410058.511570.38710070.391570.57710074.84 1570.22\n", - "10079.961570.04210082.211570.123 10093.21573.386 10093.81573.53310101.141574.419\n", - "10105.381574.93110111.881578.69710116.971581.53210128.551588.59410130.561589.137\n", - "10140.141591.61510149.241592.07410151.721592.13210163.311592.19810167.921592.684\n", - "10174.891594.41510186.481606.578 10186.61606.66610198.061612.17810205.281613.909\n", - "10209.641614.92410221.231618.63710223.961619.68410224.671619.96410232.621623.076\n", - "10243.921627.03910243.931627.04110255.231631.18910263.951634.44410266.541635.437\n", - "10277.841639.73410283.97 1641.8810289.151643.63410300.461646.78610303.991647.778\n", - "10308.021648.80110311.761649.75110323.071652.70610324.011653.03710334.381656.457\n", - "10344.041659.59110345.681660.14810355.921663.39510356.971663.728 10364.71666.051\n", - "10368.031667.05410379.081669.78810386.321671.32510390.141672.087 10401.21673.664\n", - "10407.93 1674.3910412.261674.82310423.321675.67310429.541675.88210434.381675.954\n", - "10445.441676.05610451.161676.401 10456.51676.65710467.561676.32710472.771676.053\n", - "10478.62 1675.7210489.671675.48310494.381675.31510500.731675.10910500.96 1675.11\n", - "#Mann= 5 , -1 , 0 \n", - "9499.054 0.12 09927.963 0.05 0 10093.8 0.12 0\n", - "10101.14 0.06 010308.02 0.12 0\n", - "Bank Sta=9927.963,10093.8\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,0,0,0,0\n", - "XS GIS Cut Line= 10\n", - "2569556.392519861570394.849359422569690.133119311570435.64742042\n", - "2569933.359502841570513.352483592569991.295723561570529.88925296\n", - "2570034.571152841570540.58333442 2570036.52014131570541.03215952\n", - "2570079.734807231570551.962645572570137.595155541570569.73952895\n", - "2570271.679746921570618.656330962570506.19388341 1570711.2792319\n", - "#Sta/Elev=144\n", - " 9499.011873.8779499.997 1873.11 9510.341865.4919519.8111859.1689520.6841858.597\n", - "9531.0281851.5389541.3721844.9459551.7151838.6519551.9061838.5379562.0591832.394\n", - "9572.4031825.4559582.7461818.2339584.0011817.144 9593.091809.0379603.4341802.518\n", - "9613.7781798.3199616.0961796.5729624.121 1790.939634.4651782.8959638.8351779.932\n", - "9644.8351775.9999647.8251774.0819655.2231769.0939665.6121761.888 96761753.752\n", - "9678.6651751.7229686.389 1745.899696.7781737.5479707.1661729.8059709.5051728.147\n", - "9717.5551721.8049727.9431713.6179738.3321704.3349740.3461702.581 9748.72 1695.47\n", - "9759.1091687.0669769.4981678.4899771.1861677.0359779.8861668.8889790.2751656.492\n", - "9800.6631651.3149802.0261651.1179811.052 1649.729821.4411641.6849831.8291631.131\n", - "9832.866 1630.199842.2181621.7469852.6061613.9749862.995 1605.879863.706 1605.38\n", - "9873.3841598.7089883.7721591.4899894.1611584.9519894.1731584.9419894.5841584.605\n", - "9904.4461576.3069914.7321570.3419925.0181568.7719928.5891568.7729935.3031568.772\n", - "9945.5891568.7749954.4231568.775 9955.861568.7759963.6961568.7789966.0411568.779\n", - "9969.9961568.7799976.223 1568.789986.4051568.7829996.5871568.787 99991568.787\n", - " 100011568.78710002.381568.78710006.771568.78710016.97 1568.7910027.161568.793\n", - "10030.011568.79310037.361568.79210040.191568.79310045.581568.79710047.591568.798\n", - "10057.941568.79810068.291568.80110072.931569.66710078.641570.96310088.991575.078\n", - "10099.341579.42910104.831581.29110106.111581.70410109.751582.846 10120.31585.176\n", - "10130.841588.90610132.551589.29910141.381590.23110151.921590.69810160.091590.545\n", - "10162.46 1590.49 101731590.28310183.541591.69710187.341595.19910187.641595.475\n", - "10194.091601.85810204.631608.45410215.171612.18810215.181612.19310225.711617.106\n", - "10236.251620.31210242.721621.06410246.791621.32110248.831621.53910257.421622.471\n", - "10268.081623.748 10268.91623.86210278.731625.02710289.381625.88610294.681626.305\n", - "10300.031626.64810310.69 1627.510320.46 1628.8210321.341628.89910331.991628.687\n", - "10342.641628.81810346.241629.31910353.291630.36310363.951632.14610372.021632.802\n", - " 10374.61633.03610385.251633.84110386.531633.911 10395.91634.421 10397.81634.615\n", - "10406.561635.68510417.211636.91210423.581637.87410427.861638.61410438.511640.054\n", - "10449.171641.34110449.361641.37410459.821643.45610470.471644.98410475.131645.411\n", - "10481.121645.97310491.781646.60310500.911646.89710500.981646.905\n", - "#Mann= 5 , -1 , 0 \n", - " 9499.01 0.12 09904.446 0.05 010088.99 0.12 0\n", - "10187.34 0.06 010386.53 0.12 0\n", - "Bank Sta=9904.446,10088.99\n", - "Exp/Cntr=0.3,0.1\n", - "\n", - "LCMann Time=Dec/30/1899 00:00:00\n", - "LCMann Region Time=Dec/30/1899 00:00:00\n", - "LCMann Table=0\n", - "Chan Stop Cuts=-1\n", - "Use User Specified Reach Order=0\n", - "GIS Ratio Cuts To Invert=-1\n", - "GIS Limit At Bridges=0\n", - "Composite Channel Slope=5\"]]\n", - "station_elevation_points: [[\"[(8996.427, 1486.116), (8999.665, 1484.945), (9009.75, 1481.634), (9012.305, 1480.734), (9019.834, 1478.072), (9029.919, 1474.717), (9040.003, 1471.709), (9050.088, 1468.015), (9057.762, 1465.104), (9060.172, 1464.198), (9070.257, 1460.288), (9080.341, 1456.826), (9088.94, 1455.198), (9090.425, 1454.917), (9100.51, 1452.727), (9103.219, 1452.403), (9110.594, 1451.496), (9120.679, 1450.472), (9130.763, 1450.22), (9140.848, 1449.938), (9148.677, 1449.782), (9150.932, 1449.741), (9161.017, 1449.443), (9171.101, 1449.125), (9181.186, 1449.709), (9187.513, 1449.774), (9191.27, 1449.812), (9194.134, 1449.839), (9201.355, 1449.959), (9211.439, 1449.922), (9221.524, 1450.19), (9231.608, 1450.494), (9239.592, 1450.483), (9241.693, 1450.475), (9251.777, 1450.553), (9261.862, 1451.049), (9271.946, 1451.56), (9282.031, 1451.503), (9285.049, 1451.328), (9286.087, 1451.265), (9292.115, 1450.9), (9302.2, 1450.858), (9312.284, 1450.774), (9322.369, 1450.373), (9330.506, 1450.322), (9332.453, 1450.34), (9342.538, 1450.493), (9352.622, 1450.552), (9362.707, 1449.858), (9372.791, 1449.142), (9375.964, 1448.998), (9382.876, 1448.817), (9384.66, 1448.841), (9392.96, 1448.951), (9403.045, 1449.256), (9413.129, 1449.239), (9421.421, 1449.047), (9423.214, 1449.022), (9433.298, 1448.699), (9443.383, 1449.3), (9453.467, 1449.968), (9463.552, 1450.382), (9466.878, 1450.406), (9473.636, 1450.437), (9483.721, 1450.084), (9493.805, 1450.313), (9503.89, 1450.351), (9512.336, 1450.399), (9513.974, 1450.416), (9524.059, 1450.226), (9534.143, 1450.202), (9544.227, 1450.39), (9554.312, 1450.399), (9557.793, 1450.406), (9564.396, 1450.395), (9574.481, 1450.221), (9584.565, 1450.199), (9594.65, 1450.117), (9603.251, 1449.844), (9604.734, 1449.797), (9614.819, 1449.573), (9624.903, 1449.274), (9634.988, 1448.575), (9645.072, 1447.895), (9648.708, 1447.717), (9655.157, 1447.427), (9665.241, 1447.56), (9675.326, 1447.676), (9685.41, 1447.533), (9694.165, 1447.33), (9695.495, 1447.296), (9705.579, 1446.954), (9715.664, 1446.681), (9725.748, 1446.886), (9735.833, 1446.944), (9739.623, 1446.983), (9745.917, 1447.03), (9756.002, 1447.03), (9766.086, 1446.949), (9773.678, 1446.636), (9776.124, 1446.494), (9786.021, 1446.634), (9795.917, 1446.739), (9797.936, 1446.655), (9805.814, 1446.378), (9815.71, 1445.954), (9825.607, 1445.809), (9835.504, 1445.575), (9845.4, 1445.416), (9855.297, 1446.119), (9865.193, 1446.894), (9875.09, 1446.747), (9883.373, 1445.971), (9884.984, 1445.809), (9894.866, 1445.09), (9896.626, 1445.066), (9904.748, 1444.952), (9914.631, 1446.602), (9924.513, 1445.307), (9934.395, 1443.526), (9944.278, 1443.559), (9954.16, 1443.445), (9964.042, 1443.56), (9973.924, 1443.237), (9977.791, 1443.054), (9978.0, 1443.044), (9983.807, 1442.77), (9993.689, 1442.084), (9999.0, 1441.571), (10001.0, 1441.378), (10003.57, 1441.132), (10010.01, 1444.459), (10011.71, 1445.337), (10013.44, 1446.247), (10023.32, 1454.194), (10033.19, 1456.47), (10037.84, 1456.863), (10043.05, 1457.325), (10052.91, 1458.832), (10062.77, 1460.466), (10072.63, 1462.365), (10077.58, 1463.484), (10082.48, 1464.591), (10092.34, 1466.139), (10102.2, 1468.718), (10112.06, 1472.436), (10121.91, 1476.673), (10131.77, 1482.372), (10140.9, 1486.716), (10141.63, 1487.069), (10151.48, 1492.714), (10161.32, 1499.172), (10171.17, 1505.269), (10177.83, 1509.13), (10181.02, 1510.98), (10190.87, 1517.241), (10200.72, 1524.201), (10210.57, 1529.881), (10220.41, 1535.706), (10230.26, 1541.737), (10240.11, 1547.268), (10246.9, 1550.709), (10249.96, 1552.268), (10259.81, 1557.015), (10269.66, 1561.212), (10273.23, 1562.247), (10278.38, 1563.776), (10279.5, 1564.109), (10289.35, 1565.993), (10299.19, 1567.332), (10309.04, 1567.876), (10318.88, 1567.671), (10328.73, 1565.631), (10338.58, 1563.92), (10348.42, 1563.27), (10358.27, 1563.712), (10368.11, 1563.924), (10377.96, 1564.786), (10379.29, 1564.924), (10387.8, 1565.808), (10397.65, 1568.824), (10399.49, 1569.153), (10407.49, 1570.674), (10417.34, 1573.671), (10427.19, 1576.583), (10437.03, 1579.695), (10446.88, 1580.836), (10456.72, 1582.291), (10466.57, 1583.438), (10476.41, 1583.68), (10480.53, 1584.501), (10486.26, 1585.643), (10496.11, 1587.69), (10500.99, 1588.847)]\",\"[(9014.974, 1564.51), (9020.847, 1563.388), (9030.904, 1560.906), (9040.492, 1556.855), (9040.96, 1556.66), (9051.017, 1551.961), (9061.074, 1547.322), (9071.131, 1539.777), (9081.188, 1531.676), (9088.732, 1523.734), (9091.244, 1521.519), (9101.301, 1514.722), (9111.358, 1505.038), (9121.415, 1493.826), (9131.472, 1471.925), (9136.973, 1467.44), (9141.528, 1463.842), (9151.585, 1457.491), (9161.642, 1454.448), (9171.699, 1453.282), (9181.756, 1454.88), (9185.214, 1454.883), (9191.812, 1454.5), (9201.869, 1453.007), (9211.926, 1450.38), (9221.983, 1449.549), (9232.039, 1447.407), (9233.455, 1447.317), (9242.096, 1446.799), (9252.153, 1446.579), (9262.21, 1446.305), (9272.267, 1446.566), (9281.695, 1446.52), (9282.323, 1446.515), (9292.38, 1446.515), (9302.437, 1446.04), (9312.494, 1445.514), (9316.216, 1445.114), (9322.551, 1444.433), (9329.936, 1444.398), (9332.607, 1444.377), (9342.664, 1444.364), (9352.721, 1445.804), (9362.778, 1446.844), (9372.835, 1446.533), (9378.177, 1446.345), (9382.891, 1446.183), (9392.948, 1446.018), (9403.005, 1445.91), (9413.062, 1445.87), (9423.119, 1446.076), (9426.418, 1446.147), (9433.175, 1446.272), (9443.232, 1446.206), (9453.289, 1446.235), (9463.346, 1446.403), (9473.402, 1446.462), (9474.658, 1446.439), (9483.459, 1446.281), (9493.516, 1446.047), (9503.573, 1445.971), (9513.392, 1445.975), (9513.63, 1445.975), (9522.899, 1445.75), (9523.686, 1445.732), (9533.743, 1445.612), (9543.8, 1445.685), (9553.857, 1445.791), (9563.914, 1445.998), (9571.14, 1446.223), (9573.97, 1446.314), (9584.027, 1446.669), (9594.084, 1446.934), (9604.141, 1446.994), (9614.198, 1446.909), (9619.381, 1446.972), (9624.254, 1447.011), (9634.311, 1447.052), (9637.271, 1447.026), (9644.43, 1446.996), (9654.574, 1446.602), (9662.957, 1446.343), (9664.719, 1446.276), (9674.863, 1446.145), (9685.008, 1447.103), (9695.152, 1447.198), (9703.785, 1447.562), (9705.297, 1447.614), (9715.441, 1447.748), (9725.586, 1447.41), (9735.73, 1446.345), (9744.613, 1445.452), (9745.875, 1445.345), (9756.019, 1445.277), (9766.164, 1444.929), (9776.308, 1444.593), (9785.44, 1444.411), (9786.453, 1444.39), (9796.597, 1444.211), (9806.742, 1443.952), (9816.886, 1443.552), (9826.268, 1443.445), (9827.031, 1443.435), (9837.175, 1443.045), (9847.32, 1442.712), (9857.464, 1442.103), (9867.096, 1441.646), (9867.609, 1441.617), (9877.753, 1441.88), (9887.898, 1441.987), (9898.042, 1442.07), (9907.923, 1442.27), (9908.187, 1442.273), (9918.331, 1441.682), (9928.475, 1441.859), (9938.62, 1442.055), (9948.751, 1441.726), (9948.764, 1441.725), (9958.355, 1441.086), (9958.905, 1441.047), (9968.987, 1440.254), (9977.058, 1440.073), (9979.068, 1440.028), (9981.23, 1440.15), (9983.23, 1440.266), (9989.112, 1440.614), (9994.853, 1440.756), (9999.139, 1440.879), (10006.35, 1440.989), (10009.17, 1441.032), (10019.19, 1441.448), (10025.31, 1441.249), (10029.22, 1441.122), (10039.25, 1445.666), (10046.78, 1447.947), (10049.27, 1448.687), (10059.3, 1448.36), (10069.33, 1449.833), (10079.35, 1452.76), (10089.38, 1454.956), (10098.07, 1456.006), (10098.9, 1456.123), (10099.4, 1456.188), (10109.35, 1455.56), (10119.3, 1455.611), (10129.26, 1457.426), (10139.21, 1458.306), (10149.16, 1458.991), (10159.11, 1460.442), (10166.11, 1461.487), (10169.07, 1461.936), (10179.02, 1464.67), (10186.68, 1468.522), (10188.96, 1469.68), (10198.85, 1475.282), (10208.75, 1481.602), (10218.65, 1488.737), (10228.54, 1496.133), (10238.44, 1504.141), (10248.34, 1509.76), (10253.74, 1514.087), (10258.23, 1517.682), (10268.13, 1524.927), (10278.03, 1534.054), (10281.1, 1536.538), (10287.9, 1542.133), (10297.76, 1549.951), (10307.61, 1557.994), (10317.47, 1565.185), (10327.33, 1572.197), (10337.19, 1579.243), (10347.05, 1585.504), (10356.9, 1592.383), (10366.76, 1600.41), (10376.62, 1606.408), (10379.69, 1608.892), (10386.47, 1614.325), (10396.31, 1620.806), (10406.16, 1626.685), (10416.0, 1633.488), (10425.85, 1639.774), (10435.69, 1645.099), (10445.54, 1650.306), (10455.38, 1655.7), (10465.23, 1660.954), (10475.07, 1665.693), (10476.05, 1666.151), (10483.18, 1669.48)]\",\"[(8796.053, 1654.026), (8800.495, 1652.691), (8810.638, 1649.681), (8812.156, 1649.193), (8820.781, 1646.419), (8830.923, 1642.917), (8841.066, 1639.599), (8851.208, 1636.561), (8853.112, 1635.889), (8861.351, 1633.015), (8871.493, 1629.602), (8881.636, 1626.465), (8891.778, 1623.296), (8894.069, 1622.237), (8901.921, 1618.516), (8912.063, 1614.191), (8922.206, 1610.513), (8932.348, 1607.558), (8935.026, 1606.753), (8942.491, 1604.455), (8952.633, 1601.141), (8962.776, 1598.248), (8972.918, 1595.713), (8975.982, 1594.996), (8983.061, 1593.262), (8993.203, 1590.579), (9003.346, 1587.426), (9013.488, 1584.358), (9016.939, 1583.473), (9023.631, 1581.758), (9033.773, 1578.288), (9043.916, 1574.418), (9054.058, 1570.227), (9057.895, 1568.32), (9064.201, 1565.235), (9074.344, 1557.817), (9084.486, 1547.459), (9094.629, 1541.601), (9098.852, 1538.867), (9104.771, 1534.571), (9114.914, 1523.834), (9125.056, 1509.754), (9135.199, 1499.992), (9139.808, 1497.644), (9145.341, 1495.136), (9155.484, 1489.662), (9165.626, 1483.586), (9175.769, 1468.505), (9180.765, 1460.642), (9185.911, 1451.301), (9196.054, 1447.748), (9206.196, 1446.486), (9216.339, 1445.19), (9221.722, 1445.208), (9226.481, 1445.296), (9236.624, 1445.098), (9246.766, 1444.65), (9256.909, 1444.145), (9257.759, 1444.128), (9263.246, 1443.982), (9266.996, 1443.869), (9277.078, 1443.659), (9287.16, 1443.536), (9297.242, 1443.412), (9307.324, 1443.314), (9308.926, 1443.322), (9317.406, 1443.361), (9327.488, 1443.239), (9337.57, 1443.221), (9347.653, 1443.148), (9354.606, 1443.143), (9357.735, 1443.123), (9357.916, 1443.114), (9367.927, 1442.526), (9378.121, 1442.655), (9384.769, 1442.945), (9388.316, 1443.1), (9393.103, 1443.11), (9398.51, 1443.099), (9408.705, 1442.97), (9418.899, 1441.522), (9429.093, 1442.303), (9431.039, 1442.212), (9439.288, 1441.799), (9449.482, 1441.956), (9456.778, 1442.052), (9459.704, 1442.114), (9467.648, 1442.011), (9469.995, 1441.98), (9480.286, 1441.749), (9483.463, 1441.658), (9490.577, 1441.454), (9500.869, 1441.331), (9501.459, 1441.33), (9511.16, 1441.267), (9521.451, 1441.299), (9531.742, 1441.339), (9535.269, 1441.385), (9542.033, 1441.452), (9552.324, 1441.639), (9562.615, 1441.908), (9569.08, 1441.669), (9572.906, 1441.523), (9583.197, 1441.425), (9593.488, 1441.445), (9602.891, 1441.556), (9603.779, 1441.565), (9614.07, 1441.615), (9616.633, 1441.614), (9624.2, 1441.634), (9634.276, 1441.762), (9644.079, 1441.625), (9644.352, 1441.62), (9654.429, 1441.263), (9656.599, 1441.175), (9664.385, 1440.835), (9674.308, 1439.639), (9684.231, 1435.111), (9686.971, 1435.33), (9688.971, 1435.504), (9694.138, 1436.0), (9704.041, 1437.063), (9711.846, 1437.717), (9713.967, 1437.904), (9715.762, 1437.808), (9723.973, 1437.27), (9733.98, 1437.733), (9737.998, 1437.912), (9744.149, 1438.418), (9754.428, 1439.416), (9758.416, 1439.493), (9764.707, 1439.654), (9774.986, 1440.117), (9785.265, 1440.63), (9792.668, 1440.317), (9795.543, 1440.238), (9805.822, 1440.411), (9816.101, 1440.118), (9826.38, 1440.064), (9826.921, 1440.055), (9836.659, 1439.915), (9846.938, 1438.85), (9857.217, 1437.445), (9858.224, 1437.628), (9861.798, 1438.32), (9867.365, 1439.546), (9877.5, 1440.683), (9887.634, 1439.748), (9897.768, 1440.315), (9903.302, 1440.228), (9907.903, 1440.188), (9914.248, 1439.934), (9917.972, 1439.79), (9927.931, 1439.625), (9937.89, 1439.473), (9947.85, 1439.081), (9957.809, 1438.766), (9962.26, 1438.315), (9967.768, 1437.715), (9977.676, 1437.002), (9977.727, 1436.998), (9987.687, 1437.015), (9988.802, 1436.844), (9997.563, 1435.487), (10007.43, 1435.938), (10010.53, 1437.81), (10017.3, 1441.898), (10027.16, 1442.618), (10037.03, 1443.753), (10046.89, 1449.367), (10051.61, 1453.196), (10056.75, 1457.407), (10066.59, 1462.823), (10076.44, 1463.889), (10077.5, 1464.003), (10086.28, 1464.949), (10096.13, 1470.44), (10105.97, 1486.164), (10115.82, 1489.215), (10125.67, 1489.507), (10125.74, 1489.54), (10135.53, 1493.991), (10145.39, 1508.984), (10155.25, 1515.448), (10165.11, 1520.333), (10174.97, 1526.878), (10182.27, 1531.313), (10184.83, 1532.868), (10188.87, 1535.676)]\",\"[(9100.327, 1558.699), (9108.819, 1555.096), (9118.665, 1550.465), (9128.51, 1546.387), (9138.356, 1541.929), (9148.202, 1537.224), (9158.047, 1533.068), (9167.893, 1529.067), (9177.739, 1525.653), (9187.584, 1521.84), (9197.43, 1517.861), (9207.276, 1513.011), (9217.121, 1508.605), (9226.967, 1504.518), (9236.813, 1500.944), (9246.658, 1497.852), (9256.504, 1494.312), (9266.35, 1490.797), (9276.195, 1488.189), (9281.807, 1487.128), (9286.042, 1486.321), (9295.889, 1485.054), (9305.737, 1483.231), (9315.584, 1481.181), (9325.432, 1478.986), (9335.279, 1476.872), (9345.126, 1474.963), (9354.974, 1473.483), (9364.821, 1471.521), (9374.669, 1469.3), (9384.516, 1467.2), (9394.364, 1465.228), (9404.211, 1461.554), (9414.058, 1461.334), (9415.477, 1461.294), (9423.906, 1461.055), (9428.418, 1459.732), (9430.126, 1459.233), (9433.763, 1458.166), (9443.629, 1452.886), (9453.495, 1448.348), (9463.361, 1444.93), (9473.227, 1442.329), (9483.093, 1440.854), (9488.783, 1440.392), (9492.972, 1440.058), (9502.869, 1439.666), (9512.766, 1439.433), (9515.266, 1439.389), (9522.662, 1439.258), (9532.559, 1439.101), (9539.481, 1439.19), (9542.477, 1439.223), (9544.989, 1439.251), (9552.447, 1439.325), (9562.416, 1439.072), (9572.386, 1438.449), (9582.355, 1433.706), (9592.325, 1433.46), (9600.286, 1433.061), (9602.286, 1432.967), (9602.295, 1432.966), (9607.368, 1433.183), (9612.27, 1433.398), (9622.244, 1434.224), (9632.218, 1435.617), (9642.193, 1436.868), (9646.839, 1437.095), (9652.1, 1437.339), (9661.95, 1437.471), (9671.799, 1437.226), (9681.648, 1436.173), (9689.093, 1436.515), (9691.509, 1436.636), (9701.406, 1436.855), (9711.302, 1436.987), (9717.837, 1436.682), (9721.238, 1436.531), (9731.252, 1436.539), (9741.265, 1436.546), (9742.116, 1436.463), (9742.968, 1436.381), (9751.41, 1435.653), (9761.568, 1436.681), (9771.725, 1436.609), (9781.883, 1436.736), (9782.973, 1436.835), (9792.041, 1437.587), (9802.198, 1437.956), (9812.356, 1438.299), (9822.513, 1438.325), (9822.978, 1438.323), (9832.671, 1438.23), (9842.828, 1436.365), (9852.986, 1434.769), (9862.983, 1437.192), (9863.143, 1437.229), (9873.301, 1437.302), (9883.458, 1437.398), (9893.616, 1436.822), (9902.988, 1436.945), (9903.773, 1436.951), (9913.931, 1436.996), (9924.088, 1436.509), (9924.912, 1436.475), (9934.355, 1436.123), (9940.442, 1436.226), (9944.631, 1436.266), (9954.907, 1436.688), (9965.183, 1436.605), (9974.802, 1436.334), (9975.459, 1436.314), (9976.003, 1436.278), (9985.735, 1435.641), (9996.011, 1433.617), (10006.29, 1435.395), (10009.16, 1435.439), (10016.56, 1435.507), (10022.42, 1437.234), (10026.84, 1438.537), (10037.11, 1439.095), (10043.52, 1439.133), (10047.39, 1439.144), (10048.87, 1439.15), (10057.67, 1439.183), (10067.94, 1439.007), (10077.88, 1440.18), (10078.22, 1440.23), (10088.49, 1441.973), (10098.77, 1446.052), (10109.05, 1452.04), (10112.24, 1454.094), (10119.32, 1458.404), (10129.6, 1463.255), (10139.87, 1467.458), (10146.6, 1470.839), (10150.15, 1472.858), (10160.43, 1479.171), (10170.7, 1481.279), (10180.96, 1486.683), (10180.98, 1486.693), (10191.25, 1493.796), (10201.53, 1499.668), (10211.81, 1506.576), (10215.32, 1508.435), (10222.08, 1511.705), (10226.94, 1514.078)]\",\"[(9506.176, 1527.284), (9511.824, 1526.451), (9519.619, 1525.432), (9522.719, 1524.929), (9533.614, 1522.478), (9542.604, 1519.76), (9544.51, 1519.198), (9555.405, 1516.598), (9565.589, 1514.284), (9566.3, 1514.153), (9577.195, 1512.603), (9588.09, 1510.393), (9588.574, 1510.268), (9598.985, 1507.437), (9609.881, 1504.865), (9611.559, 1504.588), (9620.776, 1502.972), (9631.671, 1501.085), (9634.544, 1500.57), (9642.566, 1499.227), (9653.461, 1496.584), (9657.529, 1495.374), (9664.356, 1493.287), (9675.251, 1487.816), (9680.514, 1485.129), (9686.147, 1482.245), (9688.243, 1482.181), (9697.042, 1481.911), (9703.499, 1481.48), (9707.937, 1481.173), (9718.832, 1475.757), (9726.484, 1474.015), (9729.727, 1473.259), (9740.622, 1471.832), (9749.469, 1470.431), (9751.518, 1470.122), (9756.352, 1469.4), (9762.413, 1468.494), (9772.454, 1467.067), (9773.308, 1466.946), (9784.203, 1465.478), (9795.098, 1463.776), (9795.439, 1463.728), (9805.993, 1462.33), (9813.638, 1461.388), (9816.889, 1460.988), (9818.424, 1460.804), (9827.784, 1459.586), (9838.679, 1458.001), (9841.409, 1457.637), (9849.574, 1456.554), (9860.469, 1455.204), (9864.394, 1454.728), (9871.364, 1453.779), (9882.26, 1452.831), (9887.379, 1451.686), (9893.155, 1450.355), (9904.05, 1447.107), (9910.364, 1445.074), (9914.945, 1443.675), (9915.611, 1443.463), (9925.84, 1440.21), (9933.349, 1438.114), (9936.735, 1436.934), (9939.483, 1435.857), (9948.918, 1432.16), (9950.987, 1431.632), (9961.101, 1431.156), (9967.701, 1431.329), (9973.284, 1431.357), (9978.0, 1431.265), (9984.415, 1431.141), (9985.467, 1431.089), (9997.65, 1430.307), (10001.13, 1430.33), (10009.83, 1430.325), (10017.84, 1430.342), (10022.0, 1430.661), (10022.02, 1430.663), (10034.2, 1437.179), (10034.56, 1437.233), (10046.38, 1438.828), (10051.27, 1437.392), (10058.56, 1435.549), (10067.99, 1435.717), (10070.75, 1435.678), (10082.93, 1435.326), (10084.7, 1435.324), (10089.45, 1435.396), (10095.11, 1435.482), (10101.41, 1435.556), (10107.3, 1435.516), (10118.13, 1436.354), (10119.48, 1436.481), (10131.66, 1435.154), (10134.84, 1435.185), (10143.84, 1435.787), (10151.56, 1436.264), (10156.03, 1436.364), (10168.21, 1436.64), (10168.27, 1436.647), (10180.39, 1437.474), (10184.98, 1437.578), (10192.58, 1438.155), (10201.7, 1437.726), (10204.76, 1437.593), (10216.94, 1437.496), (10218.41, 1437.476), (10229.13, 1437.205), (10235.13, 1437.226), (10241.31, 1437.258), (10251.84, 1437.055), (10253.49, 1437.019), (10265.67, 1437.222), (10268.55, 1437.341), (10277.86, 1437.799), (10285.27, 1438.11), (10290.04, 1438.196), (10301.98, 1438.372), (10302.22, 1438.376), (10314.41, 1438.283), (10318.7, 1438.165), (10326.59, 1438.047), (10335.41, 1438.074), (10338.77, 1438.116), (10350.95, 1438.095), (10352.12, 1438.1), (10363.14, 1438.051), (10368.84, 1438.004), (10375.32, 1438.049), (10385.55, 1438.645), (10387.5, 1438.821), (10389.37, 1438.994), (10393.71, 1439.395), (10399.93, 1440.086), (10401.7, 1440.366), (10412.62, 1442.304), (10417.32, 1444.291), (10425.3, 1448.524), (10432.93, 1453.957), (10437.99, 1457.691), (10448.54, 1466.089), (10450.67, 1467.665), (10463.36, 1472.588), (10464.16, 1472.801), (10476.04, 1475.496), (10479.77, 1476.375), (10488.72, 1480.093), (10494.27, 1483.038)]\",...,\"[(9499.023, 1786.711), (9505.066, 1783.76), (9514.919, 1782.249), (9524.773, 1780.413), (9534.626, 1776.614), (9544.48, 1773.226), (9554.333, 1770.702), (9563.199, 1768.405), (9564.189, 1768.141), (9574.061, 1765.398), (9583.933, 1762.611), (9591.809, 1760.199), (9593.806, 1759.587), (9603.678, 1756.031), (9613.55, 1752.038), (9623.422, 1746.935), (9633.295, 1742.473), (9638.834, 1738.601), (9643.18, 1735.602), (9653.083, 1729.608), (9662.986, 1727.93), (9672.889, 1726.514), (9682.791, 1719.461), (9692.694, 1713.843), (9697.782, 1711.044), (9701.343, 1709.055), (9702.603, 1708.345), (9712.551, 1702.066), (9722.499, 1696.659), (9732.447, 1691.508), (9742.395, 1686.513), (9752.343, 1681.288), (9762.292, 1676.369), (9767.217, 1673.832), (9772.24, 1671.195), (9775.366, 1669.654), (9782.228, 1666.283), (9792.235, 1661.608), (9802.242, 1656.835), (9812.25, 1652.599), (9822.257, 1648.671), (9823.768, 1648.12), (9830.682, 1645.558), (9832.274, 1644.955), (9842.35, 1641.233), (9852.425, 1637.243), (9862.5, 1632.49), (9871.166, 1628.687), (9872.576, 1628.066), (9882.651, 1623.418), (9892.726, 1617.227), (9894.052, 1616.508), (9902.886, 1611.904), (9913.058, 1608.063), (9913.845, 1607.623), (9923.23, 1602.336), (9933.403, 1593.662), (9943.575, 1584.773), (9952.975, 1580.502), (9953.747, 1580.155), (9963.919, 1576.471), (9969.998, 1574.878), (9974.092, 1573.805), (9984.264, 1573.812), (9992.105, 1573.817), (9994.436, 1573.819), (9999.0, 1573.824), (10001.0, 1573.826), (10004.61, 1573.829), (10014.76, 1573.838), (10024.92, 1573.845), (10030.01, 1573.849), (10031.96, 1573.851), (10035.07, 1573.854), (10045.23, 1573.862), (10055.38, 1573.869), (10065.54, 1573.878), (10072.14, 1574.226), (10075.69, 1574.484), (10077.98, 1575.238), (10085.84, 1577.827), (10096.0, 1581.007), (10106.1, 1591.971), (10106.15, 1592.027), (10114.12, 1592.944), (10116.18, 1593.101), (10122.12, 1593.023)]\",\"[(9499.044, 1767.658), (9502.116, 1767.12), (9511.97, 1765.394), (9521.824, 1764.005), (9531.679, 1762.473), (9541.533, 1762.214), (9551.387, 1760.139), (9561.241, 1757.379), (9571.096, 1755.655), (9580.95, 1754.537), (9590.804, 1753.136), (9597.955, 1752.089), (9599.863, 1751.798), (9600.658, 1751.677), (9610.503, 1748.984), (9620.349, 1745.932), (9630.194, 1742.663), (9640.039, 1738.99), (9649.884, 1735.936), (9659.73, 1732.624), (9669.139, 1729.106), (9669.575, 1728.941), (9679.424, 1725.587), (9689.273, 1721.823), (9689.314, 1721.807), (9699.122, 1717.842), (9708.971, 1714.446), (9718.82, 1708.526), (9726.392, 1707.936), (9728.674, 1707.76), (9738.545, 1704.964), (9748.417, 1700.347), (9758.288, 1696.431), (9768.159, 1692.539), (9778.031, 1690.202), (9787.902, 1687.101), (9794.186, 1685.56), (9797.792, 1684.659), (9807.716, 1682.208), (9817.64, 1679.506), (9824.845, 1677.433), (9827.564, 1676.674), (9837.488, 1673.719), (9845.122, 1670.512), (9847.433, 1669.371), (9857.452, 1664.192), (9867.471, 1655.991), (9877.491, 1645.096), (9884.431, 1642.052), (9887.51, 1640.739), (9897.529, 1635.133), (9903.45, 1632.024), (9907.609, 1629.981), (9917.778, 1624.279), (9927.947, 1622.071), (9928.672, 1620.501), (9938.116, 1598.772), (9948.285, 1584.691), (9949.966, 1582.642), (9955.92, 1575.44), (9958.582, 1572.747), (9964.987, 1571.431), (9968.904, 1570.64), (9969.997, 1570.622), (9979.226, 1570.469), (9989.548, 1570.47), (9997.754, 1570.47), (9999.0, 1570.47), (9999.873, 1570.47), (10001.0, 1570.471), (10010.15, 1570.471), (10020.42, 1570.473), (10030.01, 1570.472), (10030.69, 1570.472), (10032.08, 1570.472), (10040.96, 1570.646), (10051.23, 1575.051), (10061.5, 1581.599), (10066.67, 1585.634), (10071.77, 1589.385), (10072.25, 1589.464), (10081.87, 1590.811), (10091.96, 1591.042), (10102.05, 1591.14), (10109.93, 1597.35), (10112.14, 1599.326), (10113.04, 1600.57)]\",\"[(9499.045, 1760.145), (9499.881, 1759.902), (9508.935, 1757.273), (9519.068, 1754.214), (9529.202, 1751.713), (9539.336, 1748.677), (9541.428, 1748.138), (9549.469, 1746.176), (9559.603, 1744.031), (9569.737, 1741.689), (9579.87, 1739.922), (9582.974, 1739.354), (9590.004, 1738.111), (9599.865, 1734.969), (9600.14, 1734.879), (9610.36, 1730.541), (9620.581, 1730.076), (9621.627, 1729.983), (9630.801, 1728.981), (9641.021, 1726.543), (9651.241, 1724.753), (9658.297, 1723.856), (9661.462, 1723.445), (9669.141, 1722.105), (9671.712, 1721.657), (9682.054, 1719.812), (9691.789, 1717.548), (9692.395, 1717.417), (9702.737, 1714.996), (9713.078, 1712.146), (9723.42, 1706.814), (9723.947, 1706.51), (9733.762, 1701.797), (9744.103, 1700.831), (9751.174, 1697.386), (9754.499, 1695.357), (9755.477, 1694.731), (9765.012, 1688.916), (9775.525, 1685.093), (9783.541, 1681.224), (9786.039, 1679.969), (9796.552, 1674.935), (9807.065, 1669.684), (9811.604, 1667.511), (9812.808, 1666.939), (9817.698, 1664.489), (9828.476, 1658.91), (9835.961, 1654.801), (9839.254, 1652.861), (9850.032, 1646.999), (9860.151, 1641.408), (9860.81, 1641.043), (9871.588, 1635.791), (9882.367, 1630.11), (9884.341, 1629.338), (9893.145, 1625.247), (9903.923, 1619.256), (9908.531, 1616.155), (9912.132, 1613.985), (9914.77, 1612.528), (9925.839, 1608.493), (9930.464, 1604.47), (9936.908, 1599.154), (9947.977, 1582.971), (9952.002, 1577.41), (9959.046, 1573.799), (9969.998, 1570.398), (9970.116, 1570.361), (9973.54, 1570.177), (9981.185, 1570.177), (9992.254, 1570.177), (9995.078, 1570.177), (9999.0, 1570.177), (10001.0, 1570.177), (10003.34, 1570.177), (10014.44, 1570.177), (10016.43, 1570.177), (10025.53, 1570.177), (10030.0, 1570.177), (10036.63, 1570.177), (10037.77, 1570.177), (10047.73, 1570.177), (10050.04, 1570.41), (10058.82, 1571.296), (10059.11, 1571.52), (10063.54, 1575.75), (10069.92, 1581.702), (10080.45, 1588.521), (10081.01, 1588.791), (10092.11, 1589.495), (10101.79, 1589.721), (10103.08, 1589.75), (10103.21, 1589.753), (10114.13, 1591.306), (10124.45, 1598.483), (10125.05, 1598.868), (10135.97, 1605.579), (10146.89, 1610.947), (10147.2, 1611.091), (10157.81, 1616.286), (10168.73, 1621.333), (10169.94, 1621.891), (10179.65, 1626.659), (10190.57, 1631.59), (10192.69, 1632.637), (10201.5, 1637.024), (10211.01, 1641.641), (10212.39, 1642.327), (10215.81, 1643.964), (10223.13, 1647.531), (10233.87, 1652.657), (10240.48, 1656.144), (10244.6, 1658.309), (10251.82, 1661.893), (10255.34, 1663.64), (10265.15, 1668.301), (10266.08, 1668.744), (10276.81, 1673.799), (10287.55, 1678.823), (10289.82, 1679.919), (10298.29, 1683.956), (10309.03, 1689.086), (10314.49, 1691.504), (10319.76, 1693.93), (10330.5, 1699.035), (10331.78, 1699.609), (10339.82, 1703.274), (10341.1, 1703.859), (10351.68, 1708.237), (10362.26, 1712.604), (10366.69, 1714.482), (10372.84, 1717.091), (10383.42, 1721.601), (10393.56, 1725.405), (10394.0, 1725.564), (10404.58, 1729.474), (10415.17, 1733.581), (10420.43, 1735.635), (10425.75, 1737.711), (10436.33, 1741.85), (10446.91, 1746.074), (10447.29, 1746.213), (10451.21, 1747.562), (10457.49, 1749.724), (10468.07, 1753.488), (10474.16, 1755.502), (10478.65, 1756.951), (10489.23, 1760.313), (10499.81, 1763.269), (10500.98, 1763.571)]\",\"[(9499.054, 1818.624), (9499.082, 1818.599), (9509.604, 1811.274), (9514.145, 1809.463), (9520.126, 1806.754), (9530.648, 1798.425), (9541.17, 1791.124), (9542.045, 1790.576), (9551.692, 1784.662), (9559.958, 1779.483), (9562.246, 1778.041), (9569.093, 1774.346), (9572.917, 1772.273), (9583.588, 1766.402), (9594.259, 1760.056), (9594.612, 1759.858), (9604.93, 1754.073), (9615.601, 1748.013), (9620.131, 1744.897), (9626.273, 1740.899), (9636.161, 1737.447), (9636.959, 1737.168), (9644.756, 1732.399), (9647.841, 1730.406), (9658.722, 1725.227), (9667.869, 1720.737), (9669.604, 1719.844), (9680.485, 1713.666), (9690.982, 1706.479), (9691.367, 1706.196), (9702.248, 1695.765), (9713.13, 1690.738), (9714.095, 1690.217), (9724.011, 1684.459), (9726.397, 1683.834), (9735.076, 1682.322), (9736.313, 1681.829), (9746.193, 1676.128), (9757.31, 1666.325), (9757.511, 1666.175), (9768.426, 1657.69), (9778.71, 1651.155), (9779.543, 1650.7), (9790.659, 1646.844), (9794.196, 1645.95), (9799.423, 1644.55), (9801.987, 1643.626), (9813.414, 1639.243), (9818.817, 1636.697), (9824.841, 1633.296), (9836.268, 1626.95), (9838.211, 1625.857), (9847.695, 1621.209), (9857.604, 1616.601), (9859.122, 1616.027), (9870.548, 1610.683), (9876.998, 1607.34), (9881.975, 1604.919), (9893.402, 1598.0), (9896.392, 1596.172), (9904.829, 1591.486), (9915.786, 1585.814), (9916.256, 1585.519), (9920.042, 1582.446), (9927.963, 1575.781), (9933.861, 1572.378), (9939.808, 1570.392), (9951.566, 1569.939), (9951.653, 1569.939), (9963.499, 1569.938), (9969.27, 1569.937), (9969.973, 1569.937), (9975.344, 1569.936), (9986.974, 1569.935), (9987.189, 1569.935), (9999.0, 1569.933), (9999.036, 1569.933), (10001.0, 1569.933), (10004.53, 1569.933), (10010.97, 1569.932), (10022.11, 1569.931), (10022.86, 1569.931), (10030.02, 1569.93), (10034.74, 1569.929), (10039.68, 1569.929), (10046.62, 1569.928), (10057.26, 1570.304), (10058.51, 1570.387), (10070.39, 1570.577), (10074.84, 1570.22), (10079.96, 1570.042), (10082.21, 1570.123), (10093.2, 1573.386), (10093.8, 1573.533), (10101.14, 1574.419), (10105.38, 1574.931), (10111.88, 1578.697), (10116.97, 1581.532), (10128.55, 1588.594), (10130.56, 1589.137), (10140.14, 1591.615), (10149.24, 1592.074), (10151.72, 1592.132), (10163.31, 1592.198), (10167.92, 1592.684), (10174.89, 1594.415), (10186.48, 1606.578), (10186.6, 1606.666), (10198.06, 1612.178), (10205.28, 1613.909), (10209.64, 1614.924), (10221.23, 1618.637), (10223.96, 1619.684), (10224.67, 1619.964), (10232.62, 1623.076), (10243.92, 1627.039), (10243.93, 1627.041), (10255.23, 1631.189), (10263.95, 1634.444), (10266.54, 1635.437), (10277.84, 1639.734), (10283.97, 1641.88), (10289.15, 1643.634), (10300.46, 1646.786), (10303.99, 1647.778), (10308.02, 1648.801), (10311.76, 1649.751), (10323.07, 1652.706), (10324.01, 1653.037), (10334.38, 1656.457), (10344.04, 1659.591), (10345.68, 1660.148), (10355.92, 1663.395), (10356.97, 1663.728), (10364.7, 1666.051), (10368.03, 1667.054), (10379.08, 1669.788), (10386.32, 1671.325), (10390.14, 1672.087), (10401.2, 1673.664), (10407.93, 1674.39), (10412.26, 1674.823), (10423.32, 1675.673), (10429.54, 1675.882), (10434.38, 1675.954), (10445.44, 1676.056), (10451.16, 1676.401), (10456.5, 1676.657), (10467.56, 1676.327), (10472.77, 1676.053), (10478.62, 1675.72), (10489.67, 1675.483), (10494.38, 1675.315), (10500.73, 1675.109), (10500.96, 1675.11)]\",\"[(9499.01, 1873.877), (9499.997, 1873.11), (9510.34, 1865.491), (9519.811, 1859.168), (9520.684, 1858.597), (9531.028, 1851.538), (9541.372, 1844.945), (9551.715, 1838.651), (9551.906, 1838.537), (9562.059, 1832.394), (9572.403, 1825.455), (9582.746, 1818.233), (9584.001, 1817.144), (9593.09, 1809.037), (9603.434, 1802.518), (9613.778, 1798.319), (9616.096, 1796.572), (9624.121, 1790.93), (9634.465, 1782.895), (9638.835, 1779.932), (9644.835, 1775.999), (9647.825, 1774.081), (9655.223, 1769.093), (9665.612, 1761.888), (9676.0, 1753.752), (9678.665, 1751.722), (9686.389, 1745.89), (9696.778, 1737.547), (9707.166, 1729.805), (9709.505, 1728.147), (9717.555, 1721.804), (9727.943, 1713.617), (9738.332, 1704.334), (9740.346, 1702.581), (9748.72, 1695.47), (9759.109, 1687.066), (9769.498, 1678.489), (9771.186, 1677.035), (9779.886, 1668.888), (9790.275, 1656.492), (9800.663, 1651.314), (9802.026, 1651.117), (9811.052, 1649.72), (9821.441, 1641.684), (9831.829, 1631.131), (9832.866, 1630.19), (9842.218, 1621.746), (9852.606, 1613.974), (9862.995, 1605.87), (9863.706, 1605.38), (9873.384, 1598.708), (9883.772, 1591.489), (9894.161, 1584.951), (9894.173, 1584.941), (9894.584, 1584.605), (9904.446, 1576.306), (9914.732, 1570.341), (9925.018, 1568.771), (9928.589, 1568.772), (9935.303, 1568.772), (9945.589, 1568.774), (9954.423, 1568.775), (9955.86, 1568.775), (9963.696, 1568.778), (9966.041, 1568.779), (9969.996, 1568.779), (9976.223, 1568.78), (9986.405, 1568.782), (9996.587, 1568.787), (9999.0, 1568.787), (10001.0, 1568.787), (10002.38, 1568.787), (10006.77, 1568.787), (10016.97, 1568.79), (10027.16, 1568.793), (10030.01, 1568.793), (10037.36, 1568.792), (10040.19, 1568.793), (10045.58, 1568.797), (10047.59, 1568.798), (10057.94, 1568.798), (10068.29, 1568.801), (10072.93, 1569.667), (10078.64, 1570.963), (10088.99, 1575.078), (10099.34, 1579.429), (10104.83, 1581.291), (10106.11, 1581.704), (10109.75, 1582.846), (10120.3, 1585.176), (10130.84, 1588.906), (10132.55, 1589.299), (10141.38, 1590.231), (10151.92, 1590.698), (10160.09, 1590.545), (10162.46, 1590.49), (10173.0, 1590.283), (10183.54, 1591.697), (10187.34, 1595.199), (10187.64, 1595.475), (10194.09, 1601.858), (10204.63, 1608.454), (10215.17, 1612.188), (10215.18, 1612.193), (10225.71, 1617.106), (10236.25, 1620.312), (10242.72, 1621.064), (10246.79, 1621.321), (10248.83, 1621.539), (10257.42, 1622.471), (10268.08, 1623.748), (10268.9, 1623.862), (10278.73, 1625.027), (10289.38, 1625.886), (10294.68, 1626.305), (10300.03, 1626.648), (10310.69, 1627.5), (10320.46, 1628.82), (10321.34, 1628.899), (10331.99, 1628.687), (10342.64, 1628.818), (10346.24, 1629.319), (10353.29, 1630.363), (10363.95, 1632.146), (10372.02, 1632.802), (10374.6, 1633.036), (10385.25, 1633.841), (10386.53, 1633.911), (10395.9, 1634.421), (10397.8, 1634.615), (10406.56, 1635.685), (10417.21, 1636.912), (10423.58, 1637.874), (10427.86, 1638.614), (10438.51, 1640.054), (10449.17, 1641.341), (10449.36, 1641.374), (10459.82, 1643.456), (10470.47, 1644.984), (10475.13, 1645.411), (10481.12, 1645.973), (10491.78, 1646.603), (10500.91, 1646.897), (10500.98, 1646.905)]\"]]\n", - "bank_stations: [[\"['9914.631', '10013.44']\",\"['9938.62', '10039.25']\",\"['9977.676', '10010.53']\",\"['9976.003', '10022.42']\",\"['9939.483', '10034.2']\",...,\"['9953.747', '10085.84']\",\"['9955.92', '10051.23']\",\"['9952.002', '10063.54']\",\"['9927.963', '10093.8']\",\"['9904.446', '10088.99']\"]]\n", - "number_of_station_elevation_points: [[194,188,189,147,149,...,87,87,150,155,144]]\n", - "number_of_coords: [[10,10,16,13,4,...,11,12,12,12,10]]\n", - "flows: [[\"7012.0\n", - "9628.0\n", - "4397.0\",\"7012.0\n", - "9628.0\n", - "4397.0\",\"7023.0\n", - "9643.0\n", - "4404.0\",\"7023.0\n", - "9643.0\n", - "4404.0\",\"7023.0\n", - "9643.0\n", - "4404.0\",...,\"12672.0\n", - "14408.0\n", - "11146.0\",\"12676.0\n", - "14413.0\n", - "11149.0\",\"12676.0\n", - "14413.0\n", - "11149.0\",\"12676.0\n", - "14413.0\n", - "11149.0\",\"12676.0\n", - "14413.0\n", - "11149.0\"]]\n", - "profile_names: [[\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",...,\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\",\" 100yr\n", - "100yrplus\n", - "100yrminus\"]]\n", - "geometry: [[01020000000A000000DCC40DDA3A7C37C1C81D669AFFD34441158974CC3B7C37C1AE2DED5389D3444146F790D13F7C37C1452D35C278D34441E898F396447C37C18B1BFA5367D34441B80D9AAC447C37C11E75D40667D3444142A7EA50467C37C1B7A3427B61D3444154180DB64B7C37C1F601C10852D3444108CBED9A537C37C10D7A7B4A3ED344412E431ACB5B7C37C1B3A385852BD34441AB9F60F0627C37C14BED4F7F1CD34441,01020000000A0000004872D21AEB7B37C14D3CD35BF2D3444158679F4AEE7B37C1E84367AD93D3444171D3C735EC7B37C1A8AE93D362D344412202723FEC7B37C18C8A70585FD34441D75E7B42EC7B37C1D11B8B0A5FD34441BF20B75DED7B37C1F8253A934DD344417223A566EF7B37C181D37F2140D3444161EAD7DBF27B37C1BD0072DE31D34441BC7474FDF77B37C1B457C01623D34441DBF935F5FE7B37C1B1EF66BB13D34441,010200000010000000FAE994329E7B37C145E29018F1D34441154092509B7B37C187687AD9AAD344410C8650789B7B37C1F363CB9B9BD34441D147A2419A7B37C1EEE261938CD34441BB146FB0967B37C12B570A5074D34441A3DEA6C8967B37C171B92B3B6ED34441713DD9AD977B37C10E82A6A169D344416BC676C1977B37C1BDF05D5469D3444162151D8C987B37C1455C22DF65D34441E4ACF8E2987B37C1A2E854E561D34441DACCF858967B37C116D885A44FD34441513DBA0D967B37C106494A1E47D344413CDDA2A9977B37C1CC0E77CD3BD34441194E83A99A7B37C105C1455D32D344417FB489B89F7B37C11148885F27D34441A8166B08A57B37C18CF643241ED34441,01020000000D00000081E7BFAA237B37C14D909050B7D34441A89EBD73307B37C18603D4739CD34441400ADC5F397B37C18F26A19886D34441BB72AB423C7B37C181EF85867DD3444110220F1E3E7B37C1B0871FDE75D344412834E74E3F7B37C188DD78A26CD3444151AB4F583F7B37C10CFDB4546CD34441C6A2322D407B37C185BE789065D344417891F5A6427B37C1BCC369415FD34441B6018E72457B37C12DF17F1C5BD34441C9E2D15F487B37C1CE910EB857D34441297A29B2617B37C1219EACF23ED3444137C899F18E7B37C1BD1796EE16D34441,0102000000040000008997E759A37A37C13E63F84D80D34441D534E274F47A37C15E8DD5CC4CD344414865EE775D7B37C1512D44171FD34441C6D1749A757B37C1CBA786A615D34441,...,01020000000B0000006DB260972D7837C1AEAA43CF65B844419B4B0CAF1A7837C1E9C31F4063B84441954B0C9C047837C1EAB00ADF5FB844411080A590F27737C1F5C5E2C55CB84441FB8EBB79DD7737C1C98FD7B858B844417E21A8F1CD7737C1A463D56955B844414AF2576BBC7737C1FD53D45251B8444148CF8BF69F7737C1FC5EB0F949B8444138A7996C9F7737C139BD00D549B84441F8B680D3827737C19E18F29142B844415145AA597E7737C12E823B9641B84441,01020000000C000000B9505A7AF77737C1C11CCF1B97B84441D5D07433D97737C191ED8B5B94B84441A700288CC47737C16CB2611792B84441077CF19EB37737C129F862EB8FB844419180C1D39F7737C1483A3FE78CB84441A7468D37917737C1C758283F8AB8444129029DE2807737C1F61083B486B84441C3DEBC43747737C13288BF7483B844414684DE55677737C1441DC0B07FB84441945FE3CF667737C1B9E691887FB8444115F7ABD8537737C1A9CDC6377AB844416235C299487737C1F9581B8C77B84441,01020000000C00000053178766F47737C164F197FBAFB8444163F593A2D57737C100F1F238B0B8444178A59C84C07737C1A292FBBAB0B84441E8788594A77737C122166AD2B1B84441D0A280F1947737C130733915B3B844417914E836777737C1C04D3305B6B84441ABD7988A5D7737C14F9E564EB9B84441FA91BAF35C7737C116498D62B9B84441C3ABFED13E7737C1F55C4851BDB84441F7A01CB61E7737C1A76BA5F7C0B84441EC20CD80FA7637C1B43DE361C4B844413AF60277C77637C1F2E42945C8B84441,01020000000C000000FB2166DE1C7837C19CBF6ACBDEB8444184CE3F750A7837C155A1980FE0B84441D485F98CF37737C15ABC220DE2B844416EC0E2A8D87737C1032A2100E5B8444140ED6BAAC47737C1DD67AEA5E7B84441C3407B16A07737C14EF92E78EDB844416BEB9B98897737C16C9375C5F1B844419B295309897737C1BFEC79E4F1B84441100DC095727737C1CFBD893FF6B84441005387D7487737C10F38B26AFDB84441BACECD79227737C1B1AD7F2303B9444142BCF496F77637C1881A2A9608B94441,01020000000A000000FF2FBA933D7837C1E47833F225B94441696EAA12137837C1A4A6E7D127B94441C39C9A8DC57737C105FB0DC02BB94441DA722E36B37737C1856581642CB944413A928A9DA57737C14CE31EA02CB9444176824F01A57737C10E068EA12CB944417AEF8569977737C1AE0EACE62CB94441FFA30004857737C141DE03BB2DB944418BC359E6597737C1C9577CCD30B944417AD9110C0E7737C1E9007B3A37B94441]]\n", - "huc: [[\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\",...,\"17060305\",\"17060305\",\"17060305\",\"17060305\",\"17060305\"]]\n", - "model_id: [[\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",\"cottonwood_creek_1_ras\",...,\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\",\"south_fork_clearwater_river_1_ras\"]]\n", - "us_reach_id: [[\"23597201\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "us_network_to_id: [[\"23597199\",\"None\",\"23597197\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"23597201\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597347\"]]\n", - "ds_network_to_id: [[\"None\",\"None\",\"23597199\",\"None\",\"None\",...,\"None\",\"None\",\"None\",\"None\",\"23597345\"]]\n", - "__index_level_0__: [[19178,19179,19180,19181,19182,...,24403,24404,24405,24406,24407]]\n" - ] - } - ], - "source": [ - "# Scenario II\n", - "# User Args\n", - "catalog_name = \"xs\"\n", - "huc_num = 17060305\n", - "\n", - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f\"huc_{huc_num}\"\n", - "namespace = \"mip\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "print(iceberg_table.to_string(preview_cols=30))" - ] - }, - { - "cell_type": "code", - "execution_count": 23, - "id": "e10ffe0a-3811-4a48-9524-d55e3c26807a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "river: large_string\n", - "reach: large_string\n", - "river_reach: large_string\n", - "river_station: double\n", - "river_reach_rs: large_string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: large_string\n", - "station_elevation_points: large_string\n", - "bank_stations: large_string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: large_string\n", - "profile_names: large_string\n", - "geometry: large_binary\n", - "huc: large_string\n", - "model_id: large_string\n", - "us_reach_id: large_string\n", - "us_network_to_id: large_string\n", - "ds_reach_id: large_string\n", - "ds_network_to_id: large_string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"1242\",\"1242\",\"1242\",\"1242\",\"1242\",...,\"1236\",\"1236\",\"1236\",\"1236\",\"1236\"]]\n", - "reach: [[\"15\",\"15\",\"15\",\"15\",\"15\",...,\"61\",\"61\",\"61\",\"61\",\"61\"]]\n", - "river_reach: [[\"1242,15\",\"1242,15\",\"1242,15\",\"1242,15\",\"1242,15\",...,\"1236,61\",\"1236,61\",\"1236,61\",\"1236,61\",\"1236,61\"]]\n", - "river_station: [[1645.9,1552.446,1458.841,1365.072,1271.617,...,725.2979,576.5005,427.703,231.8489,35.9949]]\n", - "river_reach_rs: [[\"1242 15 1645.9\",\"1242 15 1552.446\",\"1242 15 1458.841\",\"1242 15 1365.072\",\"1242 15 1271.617\",...,\"1236 61 725.2979\",\"1236 61 576.5005\",\"1236 61 427.703\",\"1236 61 231.8489\",\"1236 61 35.9949\"]]\n", - "thalweg: [[3550.146,3547.128,3543.629,3540.886,3537.79,...,3533.829,3531.006,3528.091,3525.665,3521.963]]\n", - "xs_max_elevation: [[3577.866,3562.288,3580.739,3569.751,3569.955,...,3587.055,3592.946,3565.975,3588.964,3583.562]]\n", - "left_reach_length: [[96.61742,96.73559,95.70554,94.16392,92.93386,...,151.7416,150.1448,198.9483,156.1958,0]]\n", - "right_reach_length: [[89.80285,90.02276,91.58722,92.05128,94.53484,...,139.8336,130.2688,186.9168,195.4554,0]]\n", - "channel_reach_length: [[93.45487,93.60503,93.76862,93.45487,93.45487,...,148.7975,148.7975,195.854,195.854,0]]\n", - "ras_data: [[\"Type RM Length L Ch R = 1 ,1645.9,96.61742,93.45487,89.80285\n", - "XS GIS Cut Line= 8\n", - "528894.279452703873971.621611987528907.966560143873946.488329754\n", - " 528925.01586739 873921.27277097528926.208395569 873919.66719427\n", - " 528948.49023709873885.841779061528972.766208581873836.497337306\n", - "528991.974043957873781.439473717529008.465616347 873712.3025376\n", - "#Sta/Elev=85\n", - "9939.9433565.3739944.636 3565.289946.6773565.0169950.3293564.4819956.0233562.989\n", - "9957.1313562.6999961.716 3561.11 9967.413558.7359967.5863558.6679968.5613558.316\n", - "9973.3763556.6879976.6553555.5799979.4123554.5829985.4473552.5949985.5823552.554\n", - "9989.947 3551.419991.4833551.0079994.5083550.4899997.5193550.146 99993550.156\n", - " 100013550.17710003.353550.234 10003.6 3550.2510009.583550.66310012.443550.833\n", - "10012.953550.88810015.573551.17110021.533551.94810021.563551.95110027.543551.831\n", - "10030.623551.68510033.533551.50210039.523551.507 10039.73551.502 10041.53551.458\n", - "10045.233551.39110050.593551.513 10050.83551.52310056.373551.82710061.913551.735\n", - "10061.953551.73510067.52 3551.8910073.093551.94810073.243551.94810078.663551.913\n", - "10084.243551.87410084.573551.87810089.813551.78510095.38 3551.3310095.893551.318\n", - " 10096.53551.32810100.73 3551.4210106.03 3551.510110.87 3551.6110111.323551.618\n", - "10116.623551.61310121.913551.37610126.053551.38510127.213551.406 10132.53551.669\n", - " 10137.8 3551.8810141.233553.033 10143.13553.61110148.393555.77510153.693558.897\n", - "10154.813559.54510157.083560.85410158.863561.722 101643562.68510169.143564.403\n", - "10174.283566.15410178.633567.54110179.423567.77110184.563569.051 10189.73570.504\n", - "10194.843571.85610199.983572.85910200.183572.89210205.123573.82610210.263574.735\n", - " 10215.43576.35310220.543577.12910221.723577.28210225.683577.80710225.893577.866\n", - "#Mann= 3 , 0 , 0 \n", - "9939.943 0.065 09989.947 0.04 010012.95 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 10026.37 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9989.947,10012.95\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1552.446,96.73559,93.60503,90.02276\n", - "XS GIS Cut Line= 8\n", - "528995.492298483874005.011416777529006.956371507873965.884739773\n", - "529007.476454129873963.953544789529024.844213126873907.219206723\n", - "529036.479831966873862.946674337529049.075311191873800.032525587\n", - " 529056.98887746873744.890768309529062.422368085873707.030186743\n", - "#Sta/Elev=83\n", - "9958.2283555.8889960.8453556.1439965.3693554.7539966.0563554.6179971.2663553.203\n", - "9976.4763551.1859981.6863549.0219983.1513548.7059986.8963548.0059987.5453547.907\n", - "9992.1073547.2179997.3173547.168 99993547.157 10001 3547.1410001.083547.139\n", - "10002.523547.12810007.753547.873 10010 3548.3610012.983549.00410018.163549.255\n", - "10018.213549.25710023.443549.08610028.673548.62510033.893548.38710035.243548.332\n", - "10039.123548.19310044.353548.14810049.58 3548.3510052.323548.42210054.813548.473\n", - "10060.043548.82310060.333548.81410065.213548.64610070.383548.63410070.783548.623\n", - "10075.553548.52710080.723548.32710085.893548.34410090.453548.35510091.063548.349\n", - "10096.233548.271 10101.43548.32710106.113548.43710106.563548.44610111.313548.733\n", - "10111.663548.75610116.763549.14710121.863549.31510126.96 3549.7410132.063549.646\n", - "10136.783549.66610137.163549.66410142.263550.17410147.363550.21810152.463550.027\n", - "10157.56 3550.110162.25 3550.0210162.663550.01710167.763549.85510170.273549.796\n", - "10172.833549.73210177.883549.56410182.93 3549.8110187.983549.65110193.043549.445\n", - "10194.383549.39710198.093549.23210203.143549.61410208.19 3550.1610213.243550.864\n", - "10218.293551.86610223.343552.58110225.983553.16410228.39 3553.6810229.583553.997\n", - "10233.443555.068 10238.53556.43410243.553557.723 10248.63559.01210253.653560.127\n", - " 10258.73561.51510263.753562.18910264.233562.288\n", - "#Mann= 3 , 0 , 0 \n", - "9958.228 0.065 09987.545 0.04 0 10010 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 10020.61 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9987.545,10010\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1458.841,95.70554,93.76862,91.58722\n", - "XS GIS Cut Line= 7\n", - "528939.960137047874200.795523874529100.822893173874025.728232764\n", - "529099.580756519873976.581178352529099.535324253873974.581694439\n", - " 529096.29245545 873887.78082598529098.715297006873749.681707554\n", - "529099.584481761873700.139198773\n", - "#Sta/Elev=143\n", - "9714.2233580.7399717.9773579.8719718.6993579.6989725.3673577.5819725.4893577.538\n", - " 9732.283574.8249732.757 3574.54 9739.07 3571.249740.1473570.608 9745.863567.194\n", - "9747.5373566.255 9752.653563.5169754.9273562.5489759.4413560.5079762.3173559.655\n", - "9766.2313558.2369769.706 3557.339773.0213556.5619777.0963555.7859779.8113555.284\n", - "9784.4863554.3979786.6023554.0559791.8763552.8179793.3923552.5119799.2663551.275\n", - "9800.182 3551.119806.656 3549.399806.9723549.3039813.7633548.0419814.0463548.018\n", - "9820.5533547.5899821.435 3547.539827.3433546.9769828.8253546.9169834.133 3546.75\n", - "9836.2153546.7379840.924 3546.559843.6053546.2729847.7143546.0259850.9953545.656\n", - "9854.5043545.0719858.3853544.7329861.2953544.3719865.7753544.0089868.0853543.956\n", - "9873.1643543.8639874.8753543.8029880.5543543.6399881.6653543.6299887.9443543.648\n", - "9888.456 3543.659895.2463543.7259895.3343543.7269902.0363543.9969902.7243544.016\n", - "9908.826 3543.829910.1143543.8489915.6173544.4249917.5043544.8069922.4073546.124\n", - "9924.8933547.0979929.1973548.7379932.2833550.4329935.9873551.5719939.6733552.412\n", - "9942.7783553.3389947.0633554.3479949.5683555.0749951.9743554.8669955.2033554.534\n", - "9960.2053551.9559965.2073548.9489970.2083546.657 9975.213545.2379980.2113544.921\n", - "9985.2133544.8819989.9993544.6019990.2153544.5889995.2163544.05910000.223543.943\n", - "10001.143544.04510003.143544.26810005.223544.505 100103544.83810010.223544.853\n", - "10015.23 3544.7810020.233544.85510025.233544.87210030.243544.88310035.243545.252\n", - "10040.243545.42410045.253545.74710050.253545.55110055.253544.99910057.653544.887\n", - "10060.263544.76810065.263544.90810070.273544.99410075.273545.48510080.273545.851\n", - "10085.283546.052 100903546.30210090.283546.31710095.283546.62510100.283546.704\n", - "10105.283546.51310110.283546.52510115.283546.58810120.283546.92810125.283546.947\n", - "10130.293546.76510135.29 3546.7610140.293546.75510145.293547.06310150.293547.783\n", - "10155.293547.99110158.843548.10310160.293548.14710165.29 3547.9210170.293547.729\n", - "10175.293547.45610180.293547.00810185.293547.05410190.293546.894 10195.33546.724\n", - " 10200.33546.661 10205.33546.686 10210.33547.078 10215.33547.468 10220.33548.114\n", - " 10225.33548.93310228.123549.435 10230.33549.821 10235.33550.456 10240.33551.019\n", - " 10245.33551.515 10250.33552.706 10255.33554.77510260.313556.81910265.313558.775\n", - "10270.313560.87510275.313562.78410277.673563.809\n", - "#Mann= 3 , 0 , 0 \n", - "9714.223 0.065 09989.999 0.04 0 10010 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 10027.45 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9989.999,10010\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1365.072,94.16392,93.45487,92.05128\n", - "XS GIS Cut Line= 9\n", - "529001.675946645874239.547311321529201.119119138874000.243455119\n", - "529191.763228342 873960.87840718529191.324142441873958.927201517\n", - "529176.948447131873901.361748397 529167.57804532873856.554701865\n", - " 529158.05513791873793.101931393529152.643961862873737.657823615\n", - "529148.104175694873691.142169438\n", - "#Sta/Elev=171\n", - " 9647.023563.8869648.3073563.4789649.6853563.0299656.1173560.4649656.1943560.432\n", - "9662.7033558.1199663.9263557.6469669.2113555.6599671.7363554.795 9675.723553.434\n", - "9679.5463551.9869682.2293550.7919687.3553548.3329688.7383547.8599695.1653545.559\n", - "9695.2473545.5479701.7563544.9819702.9753544.8179708.265 3545.259710.7853545.607\n", - "9714.7733546.1539718.5943546.9349721.2823546.8639726.4043546.4619727.7913546.156\n", - "9734.2143544.655 9734.33544.6369740.8093542.9979742.023 3542.659747.3183541.795\n", - "9749.8333541.6839753.8263541.6759757.6433541.6359760.3353541.5119765.4523541.152\n", - "9766.844 3541.099773.262 3540.899773.3533540.8939779.8623541.1129781.0723541.146\n", - "9786.371 3541.259788.8823541.239 9792.883541.1959796.6913541.2159799.3883541.248\n", - "9804.5013541.2759805.8973541.2969812.3113541.2489812.4063541.2469818.9153541.478\n", - " 9820.123541.6159825.4243542.536 9827.933542.7299831.9333542.515 9835.743541.977\n", - "9838.4423541.615 9843.553541.596 9844.953541.6189851.3593541.2389851.4593541.234\n", - "9857.9683541.9219859.169 3542.399864.4773544.5589866.9793545.8269870.9863547.686\n", - "9874.7883549.5619877.4953551.0959882.5983554.0469884.0043554.8289890.4083558.221\n", - "9890.5123558.2759897.0213561.3979898.2183561.903 9903.533564.4479906.027 3565.75\n", - "9910.0393567.5179913.8373568.7179916.548 3569.549921.6473569.6369923.0573569.751\n", - "9929.4563568.7129929.5663568.6979936.0743567.3589937.2663567.1569942.583 3565.97\n", - "9945.0763565.3729949.0923564.4179952.8863563.2369955.6013562.3529958.538 3561.26\n", - "9961.3583559.7489966.4983556.8949971.6373554.171 9974.193552.9459976.7763551.717\n", - "9981.9153548.2369987.0553544.938 99903543.6019992.1943542.6059995.8143541.533\n", - "9997.3333541.097 99993541.022 100013540.93910002.473540.88610007.623540.993\n", - "10012.783541.21510016.783541.27310017.933541.30110020.073541.42610023.093541.603\n", - "10028.24 3541.6910033.39 3541.3610037.42 3541.2810038.553541.268 10043.73541.463\n", - "10048.853541.73310054.013542.07610058.063542.12710059.163542.14410060.333542.228\n", - "10064.283542.53110069.393542.73510074.493542.813 10079.63543.04510082.063543.101\n", - "10084.713543.17410089.823543.06510094.933543.08710100.043543.56210105.143543.552\n", - "10106.113543.53110106.643543.51910110.213543.44310115.273543.28810120.32 3543.22\n", - "10125.383543.49610130.433543.58710135.493543.51210140.323543.56110140.553543.565\n", - " 10145.63543.50410150.663543.67510155.713543.83310160.773544.01810165.833544.206\n", - "10170.273544.47810170.883544.516 10175.93544.57910175.993544.57710180.933544.408\n", - "10185.953544.28910190.973544.219 101963543.96110201.02 3543.9410206.043544.246\n", - "10211.07 3544.6510216.093545.27810221.123546.11910225.983547.28410226.143547.322\n", - "10227.463547.68610231.163548.74110236.193550.20410241.213551.80610246.233553.363\n", - "10251.263554.99610256.283557.08310261.31 3559.4410266.333560.94910271.353562.239\n", - "10272.723562.722\n", - "#Mann= 3 , 0 , 0 \n", - " 9647.02 0.065 0 9990 0.04 010020.07 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 0 10029.07 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9990,10020.07\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,1271.617,92.93386,93.45487,94.53484\n", - "XS GIS Cut Line= 9\n", - "529096.402538124874226.630048841529291.136116724873965.340484001\n", - "529281.160512496873933.368848823529280.539923787873931.467567764\n", - "529260.458404757873869.366725214529246.694877774 873820.92953106\n", - " 529234.49263446873768.678213991529224.435840491 873713.88693098\n", - "529217.886055201 873678.20248317\n", - "#Sta/Elev=173\n", - "9639.6353546.8549641.4713547.1879644.7863547.6549649.8393546.3619651.0223545.987\n", - "9657.2583543.5499658.2063543.2469663.4933541.3719666.573 3540.869669.7293540.326\n", - " 9674.94 3540.119675.9653540.0439682.201 3539.59683.3073539.4389688.4373539.276\n", - "9691.6743539.2479694.6733539.2569700.0423539.0879700.9093539.0519707.1443539.027\n", - "9708.4093538.991 9713.383539.1129716.7763539.2819719.6163539.3889725.1433539.594\n", - "9725.8523539.6069732.0883539.755 9733.513539.6699738.3243539.4349741.8773539.355\n", - " 9744.563539.3379750.2453539.5739750.7963539.5799757.0313539.4249758.6123539.354\n", - "9763.267 3539.159766.9793539.0359769.5033538.9969775.3463539.0129775.7393539.019\n", - "9781.9753538.8329783.7133538.7929788.2113538.828 9792.083538.7759794.447 3538.64\n", - "9800.4473538.2119800.6823538.1979806.9183537.9789808.815 3537.949813.154 3537.86\n", - "9817.1823537.811 9819.39 3537.799825.5493537.8329825.6263537.8319831.862 3537.93\n", - "9833.9163538.3399838.0983539.2089842.2833539.8879844.3343540.1499850.5693540.613\n", - " 9850.65 3540.639856.805 3542.369859.0183542.5889863.0413542.9089867.3853543.112\n", - "9869.2773543.2649875.5133543.5279875.7523543.5369881.7493543.5859884.1193543.717\n", - "9887.9853544.2149892.4863544.779 9894.223545.0589900.4563546.0969900.8533546.156\n", - "9906.692 3546.589909.221 3546.629912.9283546.6589917.588 3546.749919.1643546.787\n", - " 9925.43547.2759925.955 3547.329931.6363548.0959934.3223548.3249937.8713548.203\n", - "9942.6893548.1899944.1073548.1219950.3433548.1569951.0563548.0299956.5793546.725\n", - "9959.4233545.8389962.8153544.9089965.5083543.7619968.4843543.1159973.7223541.401\n", - "9977.7163540.3719978.9593539.9879984.1973538.7089989.0873538.3729989.4353538.348\n", - "9994.5033538.1019994.672 3538.09 99993537.8319999.914 3537.79 100013537.805\n", - "10005.173537.87110010.423537.94210010.883537.95710015.683538.17610020.93 3538.36\n", - "10022.773538.31710026.193538.23610027.133538.21410031.443538.134 10036.73538.214\n", - "10041.95 3538.6210043.383538.65510047.213538.69710052.463538.54810057.723538.349\n", - "10059.633538.49210062.973538.76510066.273538.88310068.213538.94610073.413539.106\n", - "10077.093539.302 10078.63539.406 10083.83539.632 100893539.212 10094.23539.109\n", - "10095.383539.174 10099.43539.42910104.593539.71610109.793539.81710113.683540.055\n", - "10114.993540.11910116.623540.10610120.143540.08510125.283540.10510130.413539.754\n", - "10135.073539.57810135.553539.56510140.683539.72610145.823540.07610150.953540.192\n", - "10156.09 3540.0810157.053540.05210161.223539.88910166.353540.00310170.283540.116\n", - "10171.483540.12810176.563540.31410181.323540.22410181.643540.22410186.733540.473\n", - "10191.813540.92210196.893542.04510201.983543.28710207.063544.38410209.013544.794\n", - "10212.153545.51910217.233547.64610222.313549.83210225.993551.557 10227.43552.223\n", - "10232.48 3555.5210236.713557.93610237.563558.40810242.653560.37310247.733562.807\n", - "10252.813565.466 10257.9 356810262.273569.955\n", - "#Mann= 3 , 0 , 0 \n", - "9639.635 0.065 09989.087 0.04 010022.77 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9969.878 10029.06 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9989.087,10022.77\n", - "Exp/Cntr=0.3,0.1\n", - "\",...,\"Type RM Length L Ch R = 1 ,725.2979,151.7416,148.7975,139.8336\n", - "XS GIS Cut Line= 7\n", - "529405.410995461875042.252827398529301.519406822874883.885089681\n", - "529203.977137379874726.011445515529202.863384519874724.350254804\n", - "529187.979780465874701.015540011529164.169527918 874660.62754067\n", - "528943.574487675874457.566758506\n", - "#Sta/Elev=217\n", - " 9624.023567.6659629.327 3567.389629.7043567.3619635.6843566.9689638.4423566.905\n", - "9641.6643566.8819647.5583566.7739647.644 3566.779653.6243566.4169656.6733566.274\n", - "9659.6033566.2379665.5833566.0199665.789 3566.019671.563 3565.889674.9043565.754\n", - "9677.543 3565.559683.5233565.042 9684.023564.9829689.5033564.2069693.1353563.616\n", - "9695.4833563.2219701.4633562.256 9702.253562.1269707.4423561.5889711.3663561.167\n", - "9713.4223560.8689719.4023559.7859720.4813559.5759725.3823558.7049729.5973557.885\n", - "9731.362 3557.589737.3423556.7799738.712 3556.559743.3223555.6689747.8283554.889\n", - "9749.3023554.6239755.281 3553.719756.9433553.5049761.2613552.8499766.0593552.169\n", - "9767.2413552.0029773.2213551.4099775.1743551.2739779.2013551.058 9784.293550.691\n", - "9785.1813550.6369791.1613550.5629793.4053550.4299797.141 3550.16 9802.52 3549.99\n", - " 9803.123549.953 9809.13549.4579811.6363549.3939813.424 3549.349815.0523549.294\n", - "9820.9293549.2629821.0713549.2589826.8073548.8749830.5833548.4729832.6843548.303\n", - "9838.5613547.9239840.0963547.8529844.4393547.6119849.6083547.3259850.3163547.275\n", - "9856.1933545.7189859.1213544.1579862.0713542.3739867.9483539.2539868.6343538.831\n", - "9873.8253536.0489878.1463534.7139879.7033534.393 9885.583533.8299887.6593533.921\n", - "9891.4583534.2499897.1723534.9959897.3353535.0119903.2123534.9829906.6843535.076\n", - " 9909.093535.1679914.9673535.5439916.1973535.5729920.8443535.6279925.7093535.747\n", - "9926.7223535.7779932.5993535.7959935.2223535.8899938.4773536.0629944.3543535.968\n", - "9944.7353535.9659950.2313535.8599954.2473535.5829956.1093535.4539961.9863535.273\n", - " 9963.763535.3569967.8633535.5549973.2723535.2699973.7413535.2519977.7553535.315\n", - "9979.6183535.3459982.7853535.4489985.4963535.5529991.3733535.8759992.2983535.867\n", - " 9997.253535.791 9999 3535.79 100013535.80310001.683535.80810003.193535.747\n", - "10009.13 3535.3210010.973535.17910015.063535.22810020.273535.79510020.993535.838\n", - "10026.923535.66610028.683535.72110029.623535.75510030.433535.77610032.763535.837\n", - "10038.563535.79610039.473535.81210044.373535.94110049.313536.09510050.173536.124\n", - "10055.983536.14110059.16 3536.0710061.783536.03310067.583535.933 100693536.023\n", - "10073.393536.28910075.563536.35510077.833536.46210080.183536.43710084.633536.093\n", - "10087.563535.92910091.423535.65210094.943535.48610098.22 3535.3810102.333535.593\n", - "10105.013535.78910109.71 3536.1910111.813536.19310117.093535.88910118.613535.976\n", - "10124.483536.419 10125.43536.50510131.863537.726 10132.23537.85210138.993540.595\n", - "10139.24 3540.6610145.793540.37610146.623540.31610152.583540.15410154.013540.137\n", - "10159.383540.23110161.393540.27810166.183540.45110168.773540.67810172.973541.234\n", - "10176.153541.91210179.77 3542.9410183.543544.53610186.56 3545.8210190.923547.511\n", - "10193.363548.201 10198.33548.38410200.16 3548.4210205.683548.06110206.953547.822\n", - "10213.073546.65810213.753546.60410220.453546.27110220.543546.26610227.343545.856\n", - "10227.833545.84810234.143545.81310235.223545.82410240.933545.955 10242.63545.974\n", - "10247.733546.00910249.983545.98810254.523545.93810257.363545.93710261.323545.799\n", - "10264.753545.70310268.113545.64510272.133545.61110274.913545.63510279.513546.092\n", - "10281.713546.30110286.893547.292 10288.53547.80110294.283550.324 10295.33550.848\n", - "10301.663554.17910302.093554.41810308.893558.55110309.043558.62310315.693562.229\n", - "10316.423562.70310322.483566.34610323.813566.99410329.283569.69610331.193570.772\n", - "10336.07 3573.3710338.573574.66810342.873577.05510345.963578.51610349.663580.007\n", - "10353.34 3581.610356.463582.92710360.723584.49110363.263585.314 10368.13586.512\n", - "10370.053586.82210375.393587.055\n", - "#Mann= 3 , 0 , 0 \n", - " 9624.02 0.065 09977.755 0.04 010030.43 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9944.498 10060.43 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9977.755,10030.43\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,576.5005,150.1448,148.7975,130.2688\n", - "XS GIS Cut Line= 7\n", - "529575.760648519874884.549223147529481.701193254874788.105902128\n", - "529340.709909569874655.622377299529308.019624803874622.156504385\n", - "529306.846605174874620.536620133529286.260644916874599.150820695\n", - "528993.921709903874402.011202961\n", - "#Sta/Elev=222\n", - "9624.0323592.1739626.8943592.3779628.7023592.6439633.8783592.8039635.8633592.946\n", - "9640.8623592.7149643.0243592.6389647.8473591.8669650.1853591.6179654.8313591.228\n", - "9657.3473591.2529661.8153591.1429664.5083591.1719668.7993591.1029671.6693591.313\n", - "9675.7843591.689 9678.833591.8159682.7683592.2289685.9913592.5369689.7523592.653\n", - "9693.1533592.4059696.7363591.6319700.3143590.741 9703.723590.0389707.4753589.124\n", - "9710.7053588.4529714.6363587.9589717.689 3587.539721.7983587.2279724.6733587.044\n", - "9728.9593586.8449731.6573586.754 9736.123586.4459738.642 3586.359743.2813585.914\n", - "9745.6263585.5999750.4433584.926 9752.613584.5989757.6043583.6059758.7483583.361\n", - "9759.6333583.1449764.5133581.7099766.9343580.9339771.3743579.2979774.2363578.295\n", - "9778.2353576.7989781.5383575.5489785.0963574.0639788.8393572.5929791.9573571.255\n", - "9796.1413569.6739798.8183568.5899803.4433566.7229805.6793565.7789810.7443563.372\n", - " 9812.543562.4919818.0463559.9079819.4013559.2429825.3473556.2089826.2623555.787\n", - "9832.649 3552.939833.1233552.7089839.9513549.9629839.9843549.9489846.8453547.682\n", - "9847.2523547.5499853.7063545.6149854.5543545.5229860.5673544.7849861.856 3544.76\n", - "9867.4283544.7749869.1573544.6859874.2893543.6469876.4593542.8599881.1513541.816\n", - "9883.7613541.4779888.012 3541.349891.0623541.3049894.8733541.1829898.3643540.944\n", - "9901.7343540.3729905.6663539.7179908.5953538.8429912.967 3537.099915.4563536.276\n", - "9920.2693533.9199922.317 3533.14 9927.573531.9459929.178 3531.679934.8723531.449\n", - "9936.0393531.4469942.1743531.391 9942.93531.3629949.4753531.2059949.7613531.196\n", - "9952.2173531.2119956.5823531.1939956.8113531.1869963.572 3531.129963.9663531.121\n", - "9970.5613532.1279971.079 3532.199971.1223532.1959977.5513532.3039978.2773532.347\n", - "9984.5413532.3679985.4333532.357 9991.533532.3559992.5883532.378 9998.523532.197\n", - " 9999 3532.169999.8863532.086 10001 3532.0110005.213531.74910007.273531.789\n", - "10012.15 3532.1910014.483532.427 10019.13532.63110021.693532.57510026.043532.533\n", - " 10028.93532.51610030.683532.46610033.643532.40110035.223532.35510038.653531.949\n", - "10041.253531.64110042.583531.60510047.283531.56410051.523531.79910053.313531.916\n", - "10059.343531.25810060.473531.20710065.373531.00610069.413531.431 10071.43531.696\n", - "10077.433532.50410078.353532.66610083.463533.00810087.293532.838 10089.53532.709\n", - "10095.533531.86510096.243531.77910101.563531.46810105.183531.62810107.593532.032\n", - "10113.623534.19910114.123534.45510119.653537.60910123.073539.03910125.683539.494\n", - "10131.713539.70310132.013539.70710137.743539.67710140.953539.72910143.773539.729\n", - " 10149.83538.93110149.893538.91710155.833538.20110158.843538.11210161.863538.053\n", - "10167.783537.80310167.893537.79710173.923537.89110176.723537.94510179.963537.971\n", - "10185.673537.80710185.993537.80610192.023538.50810194.613538.88510198.053539.558\n", - "10203.553540.81710204.083540.91410210.113542.14510212.493542.81910216.143544.081\n", - "10221.443546.75110222.173547.079 10228.23547.97710230.383547.74210234.233547.056\n", - "10239.32 3545.6210240.263545.37310246.293544.64410248.273544.61210252.323544.631\n", - "10257.21 3544.6810258.35 3544.710264.383544.81110266.153544.77810270.423544.562\n", - "10275.093544.15110276.453544.05310282.483543.72410284.043543.71210288.51 3543.85\n", - "10292.98 3544.3910294.543544.62710300.573545.89510301.923546.326 10306.63547.999\n", - "10310.873550.08910312.633550.87510318.663553.76910319.813554.32310324.693556.503\n", - "10328.753558.38710330.723559.27210336.753561.66710337.693562.00510342.783563.541\n", - "10346.643564.98710348.813565.73610354.84 3567.5710355.583567.80610360.883568.995\n", - "10364.523569.08110366.913569.02310372.94 3568.9210373.47 3568.8610378.973568.234\n", - "10382.413567.25410383.283566.953\n", - "#Mann= 3 , 0 , 0 \n", - "9624.032 0.065 09971.079 0.04 010038.65 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9948.735 10064.77 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9971.079,10038.65\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,427.703,198.9483,195.854,186.9168\n", - "XS GIS Cut Line= 9\n", - "529658.080554807874618.768312156529655.736253011874617.592208416\n", - "529569.605152394 874579.93999139529420.726571074874521.247015554\n", - "529381.078011687874500.914201135529379.340527011874499.923672488\n", - "529336.012479558874477.222474185529159.993883578874397.186279567\n", - "529096.352265451874363.593741251\n", - "#Sta/Elev=175\n", - "9697.7873565.9759698.4373565.899 9700.413565.837 9700.643565.8279703.9423565.534\n", - "9709.3993564.7619713.123 3564.149714.8563563.8199720.3133562.3059725.6063560.699\n", - " 9725.773560.6689731.2273559.8399736.6833558.5149738.0893558.172 9742.143557.659\n", - "9747.5973556.5249750.5723555.8489753.054 3555.269758.5113554.0619763.0553552.928\n", - "9763.9683552.6779769.4253551.5619774.8823550.5729775.5373550.4649780.3383549.696\n", - "9785.7953548.981 9788.023548.6479791.2523548.1939794.4123547.6929796.6743547.228\n", - "9801.0643546.6539802.0493546.5359807.423 3545.989812.7983545.4179814.6973545.206\n", - "9818.1723544.8239823.5473544.436 9828.333544.1639828.921 3544.129834.2963543.789\n", - "9839.6713543.5449841.9633543.4249845.0453543.278 9850.423543.2359855.5963542.862\n", - "9855.7943542.8519861.1693542.4519866.5433542.1049869.2283541.9059871.918 3541.92\n", - "9877.2923542.1659882.6673541.7929882.8613541.7849888.0413541.4489893.4163541.353\n", - "9896.4943541.213 9898.793541.1239904.1653541.0629909.5393541.1039910.1273541.108\n", - "9914.9143541.1489920.2883540.993 9923.763540.9919925.6633540.9169931.0373540.187\n", - "9936.412 3539.849937.3933539.7779941.7873539.5369947.1613539.7699951.0253539.812\n", - "9952.5363539.7959954.4423539.4569958.068 3538.949962.6533537.8569963.6873537.435\n", - "9969.3063533.789 9973.613531.5989974.9253530.9059980.545 3530.279984.5683529.666\n", - "9986.1643529.3799986.2283529.3679991.7833528.3539995.525 3528.399997.4023528.394\n", - " 99993528.416 100013528.46910003.083528.55610006.223528.93610008.723529.292\n", - "10014.373529.414 100173529.25710020.013529.01610025.663528.57710027.773528.447\n", - " 10031.33528.32210036.953528.36310038.543528.53210042.593528.88810048.243529.045\n", - "10049.323528.98710049.913528.938 10051.73528.78610053.773528.61110059.273528.091\n", - "10061.323528.14710064.763528.60110070.253530.449 10073.43531.52410075.743532.043\n", - "10081.243532.43310085.48 3532.2810086.733532.20410092.223531.80410097.563531.795\n", - "10097.713531.79810103.213531.877 10108.73532.02810109.643532.16610114.193533.046\n", - "10119.683534.49810121.723534.55710125.183534.28210130.673534.254 10133.83534.279\n", - "10136.163534.25610141.663534.01710145.883533.53210147.153533.35310152.643532.693\n", - "10157.963532.71610158.133532.72210163.633533.26310169.123534.58510170.043534.653\n", - "10174.613535.112 10180.13535.31110182.123535.352 10185.63535.39310191.093535.432\n", - " 10194.23535.49810196.583535.56310202.073536.58110206.28 3537.7410207.573538.073\n", - "10213.063539.63310218.363541.64110218.553541.70810224.043543.75310229.543546.488\n", - "10230.443546.78110235.03 3547.5310240.523546.51610242.523545.88210243.283545.636\n", - " 10246.13544.77510251.75 3543.7510253.313543.655 10257.43543.47410263.063543.396\n", - "10264.03 3543.3810268.71 3543.2910274.363543.23510274.743543.22710280.023543.119\n", - "10285.453543.11410285.673543.11310291.333543.07110296.163543.05610296.983543.053\n", - "10302.633543.04210306.873543.02410308.293543.02210313.94 3542.9710315.243542.965\n", - "#Mann= 3 , 0 , 0 \n", - "9697.787 0.065 09986.228 0.04 0 10051.7 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9923.07 10092.4 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9986.228,10051.7\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,231.8489,156.1958,195.854,195.4554\n", - "XS GIS Cut Line= 11\n", - "529757.857802719874478.585665174529647.969439276874406.818908416\n", - "529581.525778908874366.661284782529553.375331186874352.248159677\n", - "529519.940634619 874338.34272822529489.703601852 874329.01096759\n", - "529462.642990626874323.237725332529460.669654548874322.912233815\n", - "529438.279152572874318.256926179 529398.70141397874306.658062235\n", - "528867.898835205873968.068140224\n", - "#Sta/Elev=293\n", - "9662.966 3579.479663.3933579.5859664.9513579.9869669.3653581.1819674.0953582.469\n", - "9675.3373582.7539681.3083584.0759683.2393584.428 9687.283585.2999692.3833586.349\n", - "9693.2523586.5559699.224 3588.039701.5273588.3649705.1963588.9649710.6713588.576\n", - "9711.1683588.555 9717.143586.6669719.815 3585.269723.1113583.5669728.9593580.698\n", - "9729.0833580.6339735.0553577.3439738.1033575.3679741.0273573.4319746.9993570.133\n", - "9747.247 35709752.9713566.8459756.391 3565.029758.943 3563.619764.914 3560.28\n", - "9765.535 3559.929770.886 3556.829774.6793554.9159776.8583553.794 9782.833550.519\n", - "9783.8233549.9979788.8023547.6029792.9673545.5729794.2133544.7019794.7623544.288\n", - "9800.6043539.0389802.5633537.4969806.4463534.9059812.2293531.3389812.2883531.308\n", - "9818.1313529.0169821.8963528.0279823.9733527.5949829.815 3526.489831.5623526.344\n", - "9835.6573526.5329841.2293526.749 9841.53526.7529847.3423526.8399850.8953526.869\n", - "9853.1843526.9689859.0263527.0959860.5613527.0759864.8693527.0299870.2283527.064\n", - "9870.7113527.0489871.849 3527.029876.3723526.909 9880.983526.8979881.9893526.919\n", - "9887.607 3527.119891.9513527.2019893.2243527.2589898.8413527.5339902.9223527.708\n", - "9903.4753527.7259904.4233527.7549909.8383527.9459915.2533527.973 9915.843527.995\n", - "9920.6693528.0869926.0843528.036 9928.863528.1089931.4993528.1819936.9143528.101\n", - "9939.6863528.233 9942.243528.3989942.5443528.3929947.4733528.2279952.7063526.898\n", - "9957.9383526.2289959.499 3526.319963.1713526.5159968.4043526.876 9971.333527.018\n", - "9973.5843527.1269978.5723527.1999978.696 3527.29983.8093526.8819985.7723526.611\n", - "9988.9213526.1789994.0343525.665 99993525.7639999.1453525.767 100013525.782\n", - "10003.033525.78910004.243525.79110009.343526.05510014.453526.07310019.563525.877\n", - "10023.873525.82510024.683525.82410026.563525.75810029.893525.76810032.643526.702\n", - " 10035.13527.53710040.313528.89810044.343528.86510045.523528.90910050.733528.933\n", - "10055.943528.96410061.153528.82210062.123528.82810065.113528.89310066.543528.919\n", - "10072.473529.12610072.843529.134 10078.43529.15110082.14 3529.2410084.33 3529.35\n", - "10090.263529.47910091.443529.52110096.19 3529.6610100.743529.90510102.12 3529.96\n", - "10108.053530.08210110.033530.07810113.983530.02710119.333529.98510119.91 3529.99\n", - "10125.843530.83610128.633531.44610131.773531.972 10137.7 3531.7410137.933531.727\n", - "10143.633531.24710147.223531.35210149.573531.335 10155.53531.31910156.523531.281\n", - "10161.43 3531.2110165.823531.20510167.363531.23110173.293531.20310175.113531.205\n", - "10179.223531.68310184.413531.59110185.153531.65110191.083532.11210193.713532.318\n", - "10197.013532.82510202.943534.24510203.013534.26810208.873536.059 10212.33536.236\n", - " 10214.83536.32810220.733536.019 10221.63536.03210226.663536.037 10230.93536.038\n", - "10232.593535.99310238.523536.152 10240.23536.23810244.463536.39710249.493536.747\n", - "10250.393536.88510256.323537.98610258.79 3538.5210262.253538.92810268.093539.932\n", - "10268.18 3539.9410274.113541.49610277.393541.58910280.043541.68110285.973541.662\n", - "10286.683541.641 10291.93541.15110295.983540.87410297.833540.64610303.76 3539.96\n", - "10305.283539.87810309.693539.66610314.573539.21410315.623539.15610321.553538.646\n", - "10323.873538.56910327.483538.66110333.173538.70610333.423538.71510339.353539.009\n", - "10342.473539.08510345.283539.19410351.213539.22110351.763539.26410357.143539.602\n", - "10361.063539.59310363.073539.775 103693540.15210370.363540.18910374.93 3540.26\n", - "10379.663540.64810380.86 3540.7110386.793540.63210388.953540.65510392.72 3540.72\n", - "10398.253540.59510398.653540.58210404.583540.79810407.553540.94310410.513541.141\n", - "10416.443541.29510416.853541.31510422.373541.61410426.143541.71510428.313541.791\n", - "10434.243541.94810435.443541.98110440.173542.18410444.743542.339 10446.13542.401\n", - "10452.033542.54610454.043542.67510457.963542.86210463.333542.99910463.893543.017\n", - "10469.823543.21510472.633543.32910475.753543.51210481.683543.87110481.933543.873\n", - "10487.613543.85310491.22 3543.9810493.543544.07810499.473544.32710500.523544.353\n", - " 10505.43544.59510509.823544.93810511.333545.03210517.263545.34410519.123545.419\n", - " 10523.23545.58610528.413546.27510529.133546.35110535.063546.23710537.713546.314\n", - "10540.993546.36610546.923546.18610547.013546.18510552.853546.36810556.313546.561\n", - "10558.783546.62510564.713546.702 10565.63546.71410570.64 3546.8 10574.93546.971\n", - "10576.573547.031 10582.53547.248 10584.2 3547.3410588.433547.843 10593.53548.216\n", - "10594.363548.50710600.293550.67510602.793551.75210606.223553.20610612.093555.245\n", - "10612.153555.27110618.093556.95810621.393557.61310624.023558.02610629.953558.613\n", - "10630.693558.64110635.883558.75310639.983559.11510641.813559.34310647.743559.897\n", - "10649.283560.18410653.673560.78510658.583561.589 10659.6 3561.7810665.533562.864\n", - "10667.873563.25710671.463563.83310677.173564.56910677.393564.57710683.323564.727\n", - "10686.473565.41910689.253566.23510694.71 3567.97\n", - "#Mann= 3 , 0 , 0 \n", - "9662.966 0.065 09985.772 0.04 010032.64 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9917.352 10107.52 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9985.772,10032.64\n", - "Exp/Cntr=0.3,0.1\n", - "\",\"Type RM Length L Ch R = 1 ,35.9949,0,0,0\n", - "XS GIS Cut Line= 11\n", - "529817.641340002874447.270478971529780.274598278874420.271368474\n", - " 529701.30426788874357.422959477529648.732257009874309.460134774\n", - "529615.700806044874273.585569665529592.399235025874241.299609289\n", - "529577.611305378874213.201117232 529565.60607497 874181.94687143\n", - "529564.967540465874180.051541992529554.304202974874151.542926691\n", - "528985.086335212873718.068140216\n", - "#Sta/Elev=325\n", - "9626.9953583.5629627.1693583.4769633.3383580.506 9635.143579.5739639.5063577.466\n", - "9643.6773575.5679645.6753574.5889651.8443571.6439652.2153571.4749658.0123568.979\n", - "9660.7523567.8029664.181 3566.24 9669.293564.7979670.349 3564.589673.0953564.845\n", - "9676.6413565.2379677.5453565.4389683.0313566.5719685.5753567.2849689.4213568.183\n", - "9693.604 35699695.8113569.4289701.634 3570.99702.2023571.0429708.5923572.724\n", - "9709.6633573.0529714.982 3574.529717.6923575.1389721.3723575.9429725.7223576.756\n", - "9727.7623577.1259733.7513578.0819734.1523578.1319740.5433578.017 9741.783577.623\n", - "9746.9333575.793 9749.813574.4699753.3233573.0519757.8393570.9619759.7133570.122\n", - "9765.8693567.1319766.103 3567.029772.4943563.8119773.8983563.1529774.0223563.099\n", - "9779.1713560.6989781.3263559.629 9785.94 3557.359788.7453555.8389792.7083553.679\n", - "9796.1633551.8029799.4763549.9599803.5823547.9929806.2443546.7179811.0013544.444\n", - "9813.0123543.5799818.419 3540.59819.7813539.3849825.8383533.6559826.5493533.068\n", - "9833.2563528.5069833.3173528.4749840.0853524.8219840.6753524.6869845.1853524.158\n", - "9847.0053524.012 9847.853524.0639854.3863524.3519854.6463524.3539861.4433524.837\n", - "9861.7683524.873 9868.24 3525.279869.1493525.3339875.0363525.8889876.5313526.042\n", - "9881.8333526.2869883.9133526.283 9888.633526.0729891.2943525.8659893.9513525.697\n", - "9895.2893525.616 9899.423525.5429901.4563525.5459907.6223525.3479907.9643525.344\n", - "9913.7883525.4929916.5073525.5699919.9543525.6619925.0513525.916 9926.123525.958\n", - "9932.2873526.3369933.5953526.3699933.7673526.3699938.0613526.3629943.711 3525.72\n", - "9944.2873525.6599949.3613525.1289955.0113524.1619955.0223524.1599960.6613523.747\n", - "9965.5193523.685 9965.833523.678 9966.273523.6639971.6273523.4569974.1713523.264\n", - "9976.9833523.0529979.774 3522.899982.3393522.7279987.6953522.5459993.0513522.205\n", - "9993.718 3522.189998.4073521.963 99993521.982 100013522.06310003.723522.206\n", - "10008.043523.85610009.063524.37310010.043524.909 10014.43527.29110019.743528.526\n", - "10022.323528.43510025.08 3528.3210030.423527.89310031.443527.73410033.713527.439\n", - "10038.113526.91110039.993526.77610046.273526.22510046.36 3526.2210052.56 3525.78\n", - "10054.623525.60910058.84 3525.2510062.87 3524.9410065.133524.82910071.123524.586\n", - "10071.413524.572 10077.73524.30410079.373524.28110083.983524.09610087.633523.966\n", - "10090.273523.82910095.883523.41710096.553523.41310102.843523.44610104.133523.512\n", - "10109.123523.80610112.39 3524.2910115.413525.20310120.643526.36510121.693526.554\n", - "10127.983526.62910128.893526.57610134.263527.06710137.143527.93310140.55 3529.16\n", - " 10145.43530.91410146.833531.17310153.123531.87410153.653531.913 10159.43532.219\n", - " 10161.93532.20610165.693532.33710170.163532.39810171.973532.39610178.253532.528\n", - "10178.413532.52610184.543532.52210186.663532.50910190.823532.40710194.91 3532.48\n", - "10197.113532.52510203.173532.72110203.39 3532.7310209.683532.83210211.423532.907\n", - "10215.963533.11610219.673533.05510222.253533.13110227.933533.56210228.533533.589\n", - "10234.823534.98110236.183535.447 10241.13537.11910244.433538.56210247.393539.332\n", - "10252.68 3539.9510253.673539.96310259.963539.60910260.943539.43810266.243538.371\n", - "10269.193537.83410272.533537.01710277.44 3536.710278.813536.642 10285.13536.353\n", - " 10285.73536.34810291.383536.49810293.953536.52510297.663536.683 10302.23536.663\n", - "10303.953536.60410310.233536.64310310.453536.64310316.523536.55710318.713536.531\n", - " 10322.83536.51310326.963536.52110329.093536.52510335.213536.91910335.373536.925\n", - "10341.663538.12310343.473538.39610347.943538.70310351.723538.74910354.233538.728\n", - "10359.973538.54410360.513538.593 10366.83538.82110368.223538.65910373.083538.616\n", - "10376.483538.39610379.373538.25910384.733538.11210385.653538.12410391.943538.324\n", - "10392.98 3538.3510398.223538.47710401.243538.55310404.513538.69710409.493539.102\n", - "10410.793539.11910417.083539.09210417.743539.11810423.36 3539.4910425.993539.643\n", - "10429.643539.80410434.253539.84910435.933539.85610442.213539.753 10442.53539.777\n", - " 10448.5 3540.3810450.753540.47210454.783540.644 104593541.04810461.07 3541.19\n", - "10467.263541.23810467.353541.23710473.643541.43410475.513541.51710479.92 3541.77\n", - "10483.763542.06510486.213542.24310492.023542.44910492.493542.45910498.783542.505\n", - "10500.273542.51410505.063542.71510508.523543.17210511.353543.46910516.773543.545\n", - "10517.633543.54310523.923543.55710525.033543.617 10530.23543.58810533.28 3543.56\n", - "10536.493543.70610541.53 3543.910542.77 3543.9710549.053544.24910549.793544.289\n", - "10555.343544.75910558.043545.10910561.623545.73810566.293546.71410567.913546.934\n", - "10574.193547.26910574.543547.24410580.483547.297 10582.83547.31210586.763547.195\n", - "10591.053547.35410593.05 3547.4 10599.33547.42310599.333547.42210605.623547.539\n", - "10607.563547.482 10611.93547.39210615.813547.41610618.193547.48210624.063547.955\n", - "10624.473547.98410630.763548.48910632.313548.55210637.043548.70810640.573548.788\n", - "10643.333548.90610648.823548.92910649.613548.931 10655.93548.88110657.07 3548.93\n", - "10662.183549.55110665.333550.10410668.473550.78410673.58 3552.3310674.753552.793\n", - "10681.033555.24310681.833555.57110687.323558.07810690.083559.295 10693.63560.674\n", - "10698.343562.85810699.893563.52910706.173566.25510706.593566.47410712.463569.467\n", - "10714.843570.49810718.74 3572.24 10723.13573.74110725.033574.39410731.313576.874\n", - "10731.353576.887 10737.63579.189 10739.63579.84410743.883581.37310746.923582.122\n", - "#Mann= 3 , 0 , 0 \n", - "9626.995 0.065 09974.171 0.04 010010.04 0.065 0\n", - "#XS Ineff= 2 , 0 \n", - " 9893.349 10140.11 \n", - "Permanent Ineff=\n", - " F F\n", - "Bank Sta=9974.171,10010.04\n", - "Exp/Cntr=0.3,0.1\n", - "\"]]\n", - "station_elevation_points: [[\"[(9939.943, 3565.373), (9944.636, 3565.28), (9946.677, 3565.016), (9950.329, 3564.481), (9956.023, 3562.989), (9957.131, 3562.699), (9961.716, 3561.11), (9967.41, 3558.735), (9967.586, 3558.667), (9968.561, 3558.316), (9973.376, 3556.687), (9976.655, 3555.579), (9979.412, 3554.582), (9985.447, 3552.594), (9985.582, 3552.554), (9989.947, 3551.41), (9991.483, 3551.007), (9994.508, 3550.489), (9997.519, 3550.146), (9999.0, 3550.156), (10001.0, 3550.177), (10003.35, 3550.234), (10003.6, 3550.25), (10009.58, 3550.663), (10012.44, 3550.833), (10012.95, 3550.888), (10015.57, 3551.171), (10021.53, 3551.948), (10021.56, 3551.951), (10027.54, 3551.831), (10030.62, 3551.685), (10033.53, 3551.502), (10039.52, 3551.507), (10039.7, 3551.502), (10041.5, 3551.458), (10045.23, 3551.391), (10050.59, 3551.513), (10050.8, 3551.523), (10056.37, 3551.827), (10061.91, 3551.735), (10061.95, 3551.735), (10067.52, 3551.89), (10073.09, 3551.948), (10073.24, 3551.948), (10078.66, 3551.913), (10084.24, 3551.874), (10084.57, 3551.878), (10089.81, 3551.785), (10095.38, 3551.33), (10095.89, 3551.318), (10096.5, 3551.328), (10100.73, 3551.42), (10106.03, 3551.5), (10110.87, 3551.61), (10111.32, 3551.618), (10116.62, 3551.613), (10121.91, 3551.376), (10126.05, 3551.385), (10127.21, 3551.406), (10132.5, 3551.669), (10137.8, 3551.88), (10141.23, 3553.033), (10143.1, 3553.611), (10148.39, 3555.775), (10153.69, 3558.897), (10154.81, 3559.545), (10157.08, 3560.854), (10158.86, 3561.722), (10164.0, 3562.685), (10169.14, 3564.403), (10174.28, 3566.154), (10178.63, 3567.541), (10179.42, 3567.771), (10184.56, 3569.051), (10189.7, 3570.504), (10194.84, 3571.856), (10199.98, 3572.859), (10200.18, 3572.892), (10205.12, 3573.826), (10210.26, 3574.735), (10215.4, 3576.353), (10220.54, 3577.129), (10221.72, 3577.282), (10225.68, 3577.807), (10225.89, 3577.866)]\",\"[(9958.228, 3555.888), (9960.845, 3556.143), (9965.369, 3554.753), (9966.056, 3554.617), (9971.266, 3553.203), (9976.476, 3551.185), (9981.686, 3549.021), (9983.151, 3548.705), (9986.896, 3548.005), (9987.545, 3547.907), (9992.107, 3547.217), (9997.317, 3547.168), (9999.0, 3547.157), (10001.0, 3547.14), (10001.08, 3547.139), (10002.52, 3547.128), (10007.75, 3547.873), (10010.0, 3548.36), (10012.98, 3549.004), (10018.16, 3549.255), (10018.21, 3549.257), (10023.44, 3549.086), (10028.67, 3548.625), (10033.89, 3548.387), (10035.24, 3548.332), (10039.12, 3548.193), (10044.35, 3548.148), (10049.58, 3548.35), (10052.32, 3548.422), (10054.81, 3548.473), (10060.04, 3548.823), (10060.33, 3548.814), (10065.21, 3548.646), (10070.38, 3548.634), (10070.78, 3548.623), (10075.55, 3548.527), (10080.72, 3548.327), (10085.89, 3548.344), (10090.45, 3548.355), (10091.06, 3548.349), (10096.23, 3548.271), (10101.4, 3548.327), (10106.11, 3548.437), (10106.56, 3548.446), (10111.31, 3548.733), (10111.66, 3548.756), (10116.76, 3549.147), (10121.86, 3549.315), (10126.96, 3549.74), (10132.06, 3549.646), (10136.78, 3549.666), (10137.16, 3549.664), (10142.26, 3550.174), (10147.36, 3550.218), (10152.46, 3550.027), (10157.56, 3550.1), (10162.25, 3550.02), (10162.66, 3550.017), (10167.76, 3549.855), (10170.27, 3549.796), (10172.83, 3549.732), (10177.88, 3549.564), (10182.93, 3549.81), (10187.98, 3549.651), (10193.04, 3549.445), (10194.38, 3549.397), (10198.09, 3549.232), (10203.14, 3549.614), (10208.19, 3550.16), (10213.24, 3550.864), (10218.29, 3551.866), (10223.34, 3552.581), (10225.98, 3553.164), (10228.39, 3553.68), (10229.58, 3553.997), (10233.44, 3555.068), (10238.5, 3556.434), (10243.55, 3557.723), (10248.6, 3559.012), (10253.65, 3560.127), (10258.7, 3561.515), (10263.75, 3562.189), (10264.23, 3562.288)]\",\"[(9714.223, 3580.739), (9717.977, 3579.871), (9718.699, 3579.698), (9725.367, 3577.581), (9725.489, 3577.538), (9732.28, 3574.824), (9732.757, 3574.54), (9739.07, 3571.24), (9740.147, 3570.608), (9745.86, 3567.194), (9747.537, 3566.255), (9752.65, 3563.516), (9754.927, 3562.548), (9759.441, 3560.507), (9762.317, 3559.655), (9766.231, 3558.236), (9769.706, 3557.33), (9773.021, 3556.561), (9777.096, 3555.785), (9779.811, 3555.284), (9784.486, 3554.397), (9786.602, 3554.055), (9791.876, 3552.817), (9793.392, 3552.511), (9799.266, 3551.275), (9800.182, 3551.11), (9806.656, 3549.39), (9806.972, 3549.303), (9813.763, 3548.041), (9814.046, 3548.018), (9820.553, 3547.589), (9821.435, 3547.53), (9827.343, 3546.976), (9828.825, 3546.916), (9834.133, 3546.75), (9836.215, 3546.737), (9840.924, 3546.55), (9843.605, 3546.272), (9847.714, 3546.025), (9850.995, 3545.656), (9854.504, 3545.071), (9858.385, 3544.732), (9861.295, 3544.371), (9865.775, 3544.008), (9868.085, 3543.956), (9873.164, 3543.863), (9874.875, 3543.802), (9880.554, 3543.639), (9881.665, 3543.629), (9887.944, 3543.648), (9888.456, 3543.65), (9895.246, 3543.725), (9895.334, 3543.726), (9902.036, 3543.996), (9902.724, 3544.016), (9908.826, 3543.82), (9910.114, 3543.848), (9915.617, 3544.424), (9917.504, 3544.806), (9922.407, 3546.124), (9924.893, 3547.097), (9929.197, 3548.737), (9932.283, 3550.432), (9935.987, 3551.571), (9939.673, 3552.412), (9942.778, 3553.338), (9947.063, 3554.347), (9949.568, 3555.074), (9951.974, 3554.866), (9955.203, 3554.534), (9960.205, 3551.955), (9965.207, 3548.948), (9970.208, 3546.657), (9975.21, 3545.237), (9980.211, 3544.921), (9985.213, 3544.881), (9989.999, 3544.601), (9990.215, 3544.588), (9995.216, 3544.059), (10000.22, 3543.943), (10001.14, 3544.045), (10003.14, 3544.268), (10005.22, 3544.505), (10010.0, 3544.838), (10010.22, 3544.853), (10015.23, 3544.78), (10020.23, 3544.855), (10025.23, 3544.872), (10030.24, 3544.883), (10035.24, 3545.252), (10040.24, 3545.424), (10045.25, 3545.747), (10050.25, 3545.551), (10055.25, 3544.999), (10057.65, 3544.887), (10060.26, 3544.768), (10065.26, 3544.908), (10070.27, 3544.994), (10075.27, 3545.485), (10080.27, 3545.851), (10085.28, 3546.052), (10090.0, 3546.302), (10090.28, 3546.317), (10095.28, 3546.625), (10100.28, 3546.704), (10105.28, 3546.513), (10110.28, 3546.525), (10115.28, 3546.588), (10120.28, 3546.928), (10125.28, 3546.947), (10130.29, 3546.765), (10135.29, 3546.76), (10140.29, 3546.755), (10145.29, 3547.063), (10150.29, 3547.783), (10155.29, 3547.991), (10158.84, 3548.103), (10160.29, 3548.147), (10165.29, 3547.92), (10170.29, 3547.729), (10175.29, 3547.456), (10180.29, 3547.008), (10185.29, 3547.054), (10190.29, 3546.894), (10195.3, 3546.724), (10200.3, 3546.661), (10205.3, 3546.686), (10210.3, 3547.078), (10215.3, 3547.468), (10220.3, 3548.114), (10225.3, 3548.933), (10228.12, 3549.435), (10230.3, 3549.821), (10235.3, 3550.456), (10240.3, 3551.019), (10245.3, 3551.515), (10250.3, 3552.706), (10255.3, 3554.775), (10260.31, 3556.819), (10265.31, 3558.775), (10270.31, 3560.875), (10275.31, 3562.784), (10277.67, 3563.809)]\",\"[(9647.02, 3563.886), (9648.307, 3563.478), (9649.685, 3563.029), (9656.117, 3560.464), (9656.194, 3560.432), (9662.703, 3558.119), (9663.926, 3557.646), (9669.211, 3555.659), (9671.736, 3554.795), (9675.72, 3553.434), (9679.546, 3551.986), (9682.229, 3550.791), (9687.355, 3548.332), (9688.738, 3547.859), (9695.165, 3545.559), (9695.247, 3545.547), (9701.756, 3544.981), (9702.975, 3544.817), (9708.265, 3545.25), (9710.785, 3545.607), (9714.773, 3546.153), (9718.594, 3546.934), (9721.282, 3546.863), (9726.404, 3546.461), (9727.791, 3546.156), (9734.214, 3544.655), (9734.3, 3544.636), (9740.809, 3542.997), (9742.023, 3542.65), (9747.318, 3541.795), (9749.833, 3541.683), (9753.826, 3541.675), (9757.643, 3541.635), (9760.335, 3541.511), (9765.452, 3541.152), (9766.844, 3541.09), (9773.262, 3540.89), (9773.353, 3540.893), (9779.862, 3541.112), (9781.072, 3541.146), (9786.371, 3541.25), (9788.882, 3541.239), (9792.88, 3541.195), (9796.691, 3541.215), (9799.388, 3541.248), (9804.501, 3541.275), (9805.897, 3541.296), (9812.311, 3541.248), (9812.406, 3541.246), (9818.915, 3541.478), (9820.12, 3541.615), (9825.424, 3542.536), (9827.93, 3542.729), (9831.933, 3542.515), (9835.74, 3541.977), (9838.442, 3541.615), (9843.55, 3541.596), (9844.95, 3541.618), (9851.359, 3541.238), (9851.459, 3541.234), (9857.968, 3541.921), (9859.169, 3542.39), (9864.477, 3544.558), (9866.979, 3545.826), (9870.986, 3547.686), (9874.788, 3549.561), (9877.495, 3551.095), (9882.598, 3554.046), (9884.004, 3554.828), (9890.408, 3558.221), (9890.512, 3558.275), (9897.021, 3561.397), (9898.218, 3561.903), (9903.53, 3564.447), (9906.027, 3565.75), (9910.039, 3567.517), (9913.837, 3568.717), (9916.548, 3569.54), (9921.647, 3569.636), (9923.057, 3569.751), (9929.456, 3568.712), (9929.566, 3568.697), (9936.074, 3567.358), (9937.266, 3567.156), (9942.583, 3565.97), (9945.076, 3565.372), (9949.092, 3564.417), (9952.886, 3563.236), (9955.601, 3562.352), (9958.538, 3561.26), (9961.358, 3559.748), (9966.498, 3556.894), (9971.637, 3554.171), (9974.19, 3552.945), (9976.776, 3551.717), (9981.915, 3548.236), (9987.055, 3544.938), (9990.0, 3543.601), (9992.194, 3542.605), (9995.814, 3541.533), (9997.333, 3541.097), (9999.0, 3541.022), (10001.0, 3540.939), (10002.47, 3540.886), (10007.62, 3540.993), (10012.78, 3541.215), (10016.78, 3541.273), (10017.93, 3541.301), (10020.07, 3541.426), (10023.09, 3541.603), (10028.24, 3541.69), (10033.39, 3541.36), (10037.42, 3541.28), (10038.55, 3541.268), (10043.7, 3541.463), (10048.85, 3541.733), (10054.01, 3542.076), (10058.06, 3542.127), (10059.16, 3542.144), (10060.33, 3542.228), (10064.28, 3542.531), (10069.39, 3542.735), (10074.49, 3542.813), (10079.6, 3543.045), (10082.06, 3543.101), (10084.71, 3543.174), (10089.82, 3543.065), (10094.93, 3543.087), (10100.04, 3543.562), (10105.14, 3543.552), (10106.11, 3543.531), (10106.64, 3543.519), (10110.21, 3543.443), (10115.27, 3543.288), (10120.32, 3543.22), (10125.38, 3543.496), (10130.43, 3543.587), (10135.49, 3543.512), (10140.32, 3543.561), (10140.55, 3543.565), (10145.6, 3543.504), (10150.66, 3543.675), (10155.71, 3543.833), (10160.77, 3544.018), (10165.83, 3544.206), (10170.27, 3544.478), (10170.88, 3544.516), (10175.9, 3544.579), (10175.99, 3544.577), (10180.93, 3544.408), (10185.95, 3544.289), (10190.97, 3544.219), (10196.0, 3543.961), (10201.02, 3543.94), (10206.04, 3544.246), (10211.07, 3544.65), (10216.09, 3545.278), (10221.12, 3546.119), (10225.98, 3547.284), (10226.14, 3547.322), (10227.46, 3547.686), (10231.16, 3548.741), (10236.19, 3550.204), (10241.21, 3551.806), (10246.23, 3553.363), (10251.26, 3554.996), (10256.28, 3557.083), (10261.31, 3559.44), (10266.33, 3560.949), (10271.35, 3562.239), (10272.72, 3562.722)]\",\"[(9639.635, 3546.854), (9641.471, 3547.187), (9644.786, 3547.654), (9649.839, 3546.361), (9651.022, 3545.987), (9657.258, 3543.549), (9658.206, 3543.246), (9663.493, 3541.371), (9666.573, 3540.86), (9669.729, 3540.326), (9674.94, 3540.11), (9675.965, 3540.043), (9682.201, 3539.5), (9683.307, 3539.438), (9688.437, 3539.276), (9691.674, 3539.247), (9694.673, 3539.256), (9700.042, 3539.087), (9700.909, 3539.051), (9707.144, 3539.027), (9708.409, 3538.991), (9713.38, 3539.112), (9716.776, 3539.281), (9719.616, 3539.388), (9725.143, 3539.594), (9725.852, 3539.606), (9732.088, 3539.755), (9733.51, 3539.669), (9738.324, 3539.434), (9741.877, 3539.355), (9744.56, 3539.337), (9750.245, 3539.573), (9750.796, 3539.579), (9757.031, 3539.424), (9758.612, 3539.354), (9763.267, 3539.15), (9766.979, 3539.035), (9769.503, 3538.996), (9775.346, 3539.012), (9775.739, 3539.019), (9781.975, 3538.832), (9783.713, 3538.792), (9788.211, 3538.828), (9792.08, 3538.775), (9794.447, 3538.64), (9800.447, 3538.211), (9800.682, 3538.197), (9806.918, 3537.978), (9808.815, 3537.94), (9813.154, 3537.86), (9817.182, 3537.811), (9819.39, 3537.79), (9825.549, 3537.832), (9825.626, 3537.831), (9831.862, 3537.93), (9833.916, 3538.339), (9838.098, 3539.208), (9842.283, 3539.887), (9844.334, 3540.149), (9850.569, 3540.613), (9850.65, 3540.63), (9856.805, 3542.36), (9859.018, 3542.588), (9863.041, 3542.908), (9867.385, 3543.112), (9869.277, 3543.264), (9875.513, 3543.527), (9875.752, 3543.536), (9881.749, 3543.585), (9884.119, 3543.717), (9887.985, 3544.214), (9892.486, 3544.779), (9894.22, 3545.058), (9900.456, 3546.096), (9900.853, 3546.156), (9906.692, 3546.58), (9909.221, 3546.62), (9912.928, 3546.658), (9917.588, 3546.74), (9919.164, 3546.787), (9925.4, 3547.275), (9925.955, 3547.32), (9931.636, 3548.095), (9934.322, 3548.324), (9937.871, 3548.203), (9942.689, 3548.189), (9944.107, 3548.121), (9950.343, 3548.156), (9951.056, 3548.029), (9956.579, 3546.725), (9959.423, 3545.838), (9962.815, 3544.908), (9965.508, 3543.761), (9968.484, 3543.115), (9973.722, 3541.401), (9977.716, 3540.371), (9978.959, 3539.987), (9984.197, 3538.708), (9989.087, 3538.372), (9989.435, 3538.348), (9994.503, 3538.101), (9994.672, 3538.09), (9999.0, 3537.831), (9999.914, 3537.79), (10001.0, 3537.805), (10005.17, 3537.871), (10010.42, 3537.942), (10010.88, 3537.957), (10015.68, 3538.176), (10020.93, 3538.36), (10022.77, 3538.317), (10026.19, 3538.236), (10027.13, 3538.214), (10031.44, 3538.134), (10036.7, 3538.214), (10041.95, 3538.62), (10043.38, 3538.655), (10047.21, 3538.697), (10052.46, 3538.548), (10057.72, 3538.349), (10059.63, 3538.492), (10062.97, 3538.765), (10066.27, 3538.883), (10068.21, 3538.946), (10073.41, 3539.106), (10077.09, 3539.302), (10078.6, 3539.406), (10083.8, 3539.632), (10089.0, 3539.212), (10094.2, 3539.109), (10095.38, 3539.174), (10099.4, 3539.429), (10104.59, 3539.716), (10109.79, 3539.817), (10113.68, 3540.055), (10114.99, 3540.119), (10116.62, 3540.106), (10120.14, 3540.085), (10125.28, 3540.105), (10130.41, 3539.754), (10135.07, 3539.578), (10135.55, 3539.565), (10140.68, 3539.726), (10145.82, 3540.076), (10150.95, 3540.192), (10156.09, 3540.08), (10157.05, 3540.052), (10161.22, 3539.889), (10166.35, 3540.003), (10170.28, 3540.116), (10171.48, 3540.128), (10176.56, 3540.314), (10181.32, 3540.224), (10181.64, 3540.224), (10186.73, 3540.473), (10191.81, 3540.922), (10196.89, 3542.045), (10201.98, 3543.287), (10207.06, 3544.384), (10209.01, 3544.794), (10212.15, 3545.519), (10217.23, 3547.646), (10222.31, 3549.832), (10225.99, 3551.557), (10227.4, 3552.223), (10232.48, 3555.52), (10236.71, 3557.936), (10237.56, 3558.408), (10242.65, 3560.373), (10247.73, 3562.807), (10252.81, 3565.466), (10257.9, 3568.0), (10262.27, 3569.955)]\",...,\"[(9624.02, 3567.665), (9629.327, 3567.38), (9629.704, 3567.361), (9635.684, 3566.968), (9638.442, 3566.905), (9641.664, 3566.881), (9647.558, 3566.773), (9647.644, 3566.77), (9653.624, 3566.416), (9656.673, 3566.274), (9659.603, 3566.237), (9665.583, 3566.019), (9665.789, 3566.01), (9671.563, 3565.88), (9674.904, 3565.754), (9677.543, 3565.55), (9683.523, 3565.042), (9684.02, 3564.982), (9689.503, 3564.206), (9693.135, 3563.616), (9695.483, 3563.221), (9701.463, 3562.256), (9702.25, 3562.126), (9707.442, 3561.588), (9711.366, 3561.167), (9713.422, 3560.868), (9719.402, 3559.785), (9720.481, 3559.575), (9725.382, 3558.704), (9729.597, 3557.885), (9731.362, 3557.58), (9737.342, 3556.779), (9738.712, 3556.55), (9743.322, 3555.668), (9747.828, 3554.889), (9749.302, 3554.623), (9755.281, 3553.71), (9756.943, 3553.504), (9761.261, 3552.849), (9766.059, 3552.169), (9767.241, 3552.002), (9773.221, 3551.409), (9775.174, 3551.273), (9779.201, 3551.058), (9784.29, 3550.691), (9785.181, 3550.636), (9791.161, 3550.562), (9793.405, 3550.429), (9797.141, 3550.16), (9802.52, 3549.99), (9803.12, 3549.953), (9809.1, 3549.457), (9811.636, 3549.393), (9813.424, 3549.34), (9815.052, 3549.294), (9820.929, 3549.262), (9821.071, 3549.258), (9826.807, 3548.874), (9830.583, 3548.472), (9832.684, 3548.303), (9838.561, 3547.923), (9840.096, 3547.852), (9844.439, 3547.611), (9849.608, 3547.325), (9850.316, 3547.275), (9856.193, 3545.718), (9859.121, 3544.157), (9862.071, 3542.373), (9867.948, 3539.253), (9868.634, 3538.831), (9873.825, 3536.048), (9878.146, 3534.713), (9879.703, 3534.393), (9885.58, 3533.829), (9887.659, 3533.921), (9891.458, 3534.249), (9897.172, 3534.995), (9897.335, 3535.011), (9903.212, 3534.982), (9906.684, 3535.076), (9909.09, 3535.167), (9914.967, 3535.543), (9916.197, 3535.572), (9920.844, 3535.627), (9925.709, 3535.747), (9926.722, 3535.777), (9932.599, 3535.795), (9935.222, 3535.889), (9938.477, 3536.062), (9944.354, 3535.968), (9944.735, 3535.965), (9950.231, 3535.859), (9954.247, 3535.582), (9956.109, 3535.453), (9961.986, 3535.273), (9963.76, 3535.356), (9967.863, 3535.554), (9973.272, 3535.269), (9973.741, 3535.251), (9977.755, 3535.315), (9979.618, 3535.345), (9982.785, 3535.448), (9985.496, 3535.552), (9991.373, 3535.875), (9992.298, 3535.867), (9997.25, 3535.791), (9999.0, 3535.79), (10001.0, 3535.803), (10001.68, 3535.808), (10003.19, 3535.747), (10009.13, 3535.32), (10010.97, 3535.179), (10015.06, 3535.228), (10020.27, 3535.795), (10020.99, 3535.838), (10026.92, 3535.666), (10028.68, 3535.721), (10029.62, 3535.755), (10030.43, 3535.776), (10032.76, 3535.837), (10038.56, 3535.796), (10039.47, 3535.812), (10044.37, 3535.941), (10049.31, 3536.095), (10050.17, 3536.124), (10055.98, 3536.141), (10059.16, 3536.07), (10061.78, 3536.033), (10067.58, 3535.933), (10069.0, 3536.023), (10073.39, 3536.289), (10075.56, 3536.355), (10077.83, 3536.462), (10080.18, 3536.437), (10084.63, 3536.093), (10087.56, 3535.929), (10091.42, 3535.652), (10094.94, 3535.486), (10098.22, 3535.38), (10102.33, 3535.593), (10105.01, 3535.789), (10109.71, 3536.19), (10111.81, 3536.193), (10117.09, 3535.889), (10118.61, 3535.976), (10124.48, 3536.419), (10125.4, 3536.505), (10131.86, 3537.726), (10132.2, 3537.852), (10138.99, 3540.595), (10139.24, 3540.66), (10145.79, 3540.376), (10146.62, 3540.316), (10152.58, 3540.154), (10154.01, 3540.137), (10159.38, 3540.231), (10161.39, 3540.278), (10166.18, 3540.451), (10168.77, 3540.678), (10172.97, 3541.234), (10176.15, 3541.912), (10179.77, 3542.94), (10183.54, 3544.536), (10186.56, 3545.82), (10190.92, 3547.511), (10193.36, 3548.201), (10198.3, 3548.384), (10200.16, 3548.42), (10205.68, 3548.061), (10206.95, 3547.822), (10213.07, 3546.658), (10213.75, 3546.604), (10220.45, 3546.271), (10220.54, 3546.266), (10227.34, 3545.856), (10227.83, 3545.848), (10234.14, 3545.813), (10235.22, 3545.824), (10240.93, 3545.955), (10242.6, 3545.974), (10247.73, 3546.009), (10249.98, 3545.988), (10254.52, 3545.938), (10257.36, 3545.937), (10261.32, 3545.799), (10264.75, 3545.703), (10268.11, 3545.645), (10272.13, 3545.611), (10274.91, 3545.635), (10279.51, 3546.092), (10281.71, 3546.301), (10286.89, 3547.292), (10288.5, 3547.801), (10294.28, 3550.324), (10295.3, 3550.848), (10301.66, 3554.179), (10302.09, 3554.418), (10308.89, 3558.551), (10309.04, 3558.623), (10315.69, 3562.229), (10316.42, 3562.703), (10322.48, 3566.346), (10323.81, 3566.994), (10329.28, 3569.696), (10331.19, 3570.772), (10336.07, 3573.37), (10338.57, 3574.668), (10342.87, 3577.055), (10345.96, 3578.516), (10349.66, 3580.007), (10353.34, 3581.6), (10356.46, 3582.927), (10360.72, 3584.491), (10363.26, 3585.314), (10368.1, 3586.512), (10370.05, 3586.822), (10375.39, 3587.055)]\",\"[(9624.032, 3592.173), (9626.894, 3592.377), (9628.702, 3592.643), (9633.878, 3592.803), (9635.863, 3592.946), (9640.862, 3592.714), (9643.024, 3592.638), (9647.847, 3591.866), (9650.185, 3591.617), (9654.831, 3591.228), (9657.347, 3591.252), (9661.815, 3591.142), (9664.508, 3591.171), (9668.799, 3591.102), (9671.669, 3591.313), (9675.784, 3591.689), (9678.83, 3591.815), (9682.768, 3592.228), (9685.991, 3592.536), (9689.752, 3592.653), (9693.153, 3592.405), (9696.736, 3591.631), (9700.314, 3590.741), (9703.72, 3590.038), (9707.475, 3589.124), (9710.705, 3588.452), (9714.636, 3587.958), (9717.689, 3587.53), (9721.798, 3587.227), (9724.673, 3587.044), (9728.959, 3586.844), (9731.657, 3586.754), (9736.12, 3586.445), (9738.642, 3586.35), (9743.281, 3585.914), (9745.626, 3585.599), (9750.443, 3584.926), (9752.61, 3584.598), (9757.604, 3583.605), (9758.748, 3583.361), (9759.633, 3583.144), (9764.513, 3581.709), (9766.934, 3580.933), (9771.374, 3579.297), (9774.236, 3578.295), (9778.235, 3576.798), (9781.538, 3575.548), (9785.096, 3574.063), (9788.839, 3572.592), (9791.957, 3571.255), (9796.141, 3569.673), (9798.818, 3568.589), (9803.443, 3566.722), (9805.679, 3565.778), (9810.744, 3563.372), (9812.54, 3562.491), (9818.046, 3559.907), (9819.401, 3559.242), (9825.347, 3556.208), (9826.262, 3555.787), (9832.649, 3552.93), (9833.123, 3552.708), (9839.951, 3549.962), (9839.984, 3549.948), (9846.845, 3547.682), (9847.252, 3547.549), (9853.706, 3545.614), (9854.554, 3545.522), (9860.567, 3544.784), (9861.856, 3544.76), (9867.428, 3544.774), (9869.157, 3544.685), (9874.289, 3543.646), (9876.459, 3542.859), (9881.151, 3541.816), (9883.761, 3541.477), (9888.012, 3541.34), (9891.062, 3541.304), (9894.873, 3541.182), (9898.364, 3540.944), (9901.734, 3540.372), (9905.666, 3539.717), (9908.595, 3538.842), (9912.967, 3537.09), (9915.456, 3536.276), (9920.269, 3533.919), (9922.317, 3533.14), (9927.57, 3531.945), (9929.178, 3531.67), (9934.872, 3531.449), (9936.039, 3531.446), (9942.174, 3531.391), (9942.9, 3531.362), (9949.475, 3531.205), (9949.761, 3531.196), (9952.217, 3531.211), (9956.582, 3531.193), (9956.811, 3531.186), (9963.572, 3531.12), (9963.966, 3531.121), (9970.561, 3532.127), (9971.079, 3532.19), (9971.122, 3532.195), (9977.551, 3532.303), (9978.277, 3532.347), (9984.541, 3532.367), (9985.433, 3532.357), (9991.53, 3532.355), (9992.588, 3532.378), (9998.52, 3532.197), (9999.0, 3532.16), (9999.886, 3532.086), (10001.0, 3532.01), (10005.21, 3531.749), (10007.27, 3531.789), (10012.15, 3532.19), (10014.48, 3532.427), (10019.1, 3532.631), (10021.69, 3532.575), (10026.04, 3532.533), (10028.9, 3532.516), (10030.68, 3532.466), (10033.64, 3532.401), (10035.22, 3532.355), (10038.65, 3531.949), (10041.25, 3531.641), (10042.58, 3531.605), (10047.28, 3531.564), (10051.52, 3531.799), (10053.31, 3531.916), (10059.34, 3531.258), (10060.47, 3531.207), (10065.37, 3531.006), (10069.41, 3531.431), (10071.4, 3531.696), (10077.43, 3532.504), (10078.35, 3532.666), (10083.46, 3533.008), (10087.29, 3532.838), (10089.5, 3532.709), (10095.53, 3531.865), (10096.24, 3531.779), (10101.56, 3531.468), (10105.18, 3531.628), (10107.59, 3532.032), (10113.62, 3534.199), (10114.12, 3534.455), (10119.65, 3537.609), (10123.07, 3539.039), (10125.68, 3539.494), (10131.71, 3539.703), (10132.01, 3539.707), (10137.74, 3539.677), (10140.95, 3539.729), (10143.77, 3539.729), (10149.8, 3538.931), (10149.89, 3538.917), (10155.83, 3538.201), (10158.84, 3538.112), (10161.86, 3538.053), (10167.78, 3537.803), (10167.89, 3537.797), (10173.92, 3537.891), (10176.72, 3537.945), (10179.96, 3537.971), (10185.67, 3537.807), (10185.99, 3537.806), (10192.02, 3538.508), (10194.61, 3538.885), (10198.05, 3539.558), (10203.55, 3540.817), (10204.08, 3540.914), (10210.11, 3542.145), (10212.49, 3542.819), (10216.14, 3544.081), (10221.44, 3546.751), (10222.17, 3547.079), (10228.2, 3547.977), (10230.38, 3547.742), (10234.23, 3547.056), (10239.32, 3545.62), (10240.26, 3545.373), (10246.29, 3544.644), (10248.27, 3544.612), (10252.32, 3544.631), (10257.21, 3544.68), (10258.35, 3544.7), (10264.38, 3544.811), (10266.15, 3544.778), (10270.42, 3544.562), (10275.09, 3544.151), (10276.45, 3544.053), (10282.48, 3543.724), (10284.04, 3543.712), (10288.51, 3543.85), (10292.98, 3544.39), (10294.54, 3544.627), (10300.57, 3545.895), (10301.92, 3546.326), (10306.6, 3547.999), (10310.87, 3550.089), (10312.63, 3550.875), (10318.66, 3553.769), (10319.81, 3554.323), (10324.69, 3556.503), (10328.75, 3558.387), (10330.72, 3559.272), (10336.75, 3561.667), (10337.69, 3562.005), (10342.78, 3563.541), (10346.64, 3564.987), (10348.81, 3565.736), (10354.84, 3567.57), (10355.58, 3567.806), (10360.88, 3568.995), (10364.52, 3569.081), (10366.91, 3569.023), (10372.94, 3568.92), (10373.47, 3568.86), (10378.97, 3568.234), (10382.41, 3567.254), (10383.28, 3566.953)]\",\"[(9697.787, 3565.975), (9698.437, 3565.899), (9700.41, 3565.837), (9700.64, 3565.827), (9703.942, 3565.534), (9709.399, 3564.761), (9713.123, 3564.14), (9714.856, 3563.819), (9720.313, 3562.305), (9725.606, 3560.699), (9725.77, 3560.668), (9731.227, 3559.839), (9736.683, 3558.514), (9738.089, 3558.172), (9742.14, 3557.659), (9747.597, 3556.524), (9750.572, 3555.848), (9753.054, 3555.26), (9758.511, 3554.061), (9763.055, 3552.928), (9763.968, 3552.677), (9769.425, 3551.561), (9774.882, 3550.572), (9775.537, 3550.464), (9780.338, 3549.696), (9785.795, 3548.981), (9788.02, 3548.647), (9791.252, 3548.193), (9794.412, 3547.692), (9796.674, 3547.228), (9801.064, 3546.653), (9802.049, 3546.535), (9807.423, 3545.98), (9812.798, 3545.417), (9814.697, 3545.206), (9818.172, 3544.823), (9823.547, 3544.436), (9828.33, 3544.163), (9828.921, 3544.12), (9834.296, 3543.789), (9839.671, 3543.544), (9841.963, 3543.424), (9845.045, 3543.278), (9850.42, 3543.235), (9855.596, 3542.862), (9855.794, 3542.851), (9861.169, 3542.451), (9866.543, 3542.104), (9869.228, 3541.905), (9871.918, 3541.92), (9877.292, 3542.165), (9882.667, 3541.792), (9882.861, 3541.784), (9888.041, 3541.448), (9893.416, 3541.353), (9896.494, 3541.213), (9898.79, 3541.123), (9904.165, 3541.062), (9909.539, 3541.103), (9910.127, 3541.108), (9914.914, 3541.148), (9920.288, 3540.993), (9923.76, 3540.991), (9925.663, 3540.916), (9931.037, 3540.187), (9936.412, 3539.84), (9937.393, 3539.777), (9941.787, 3539.536), (9947.161, 3539.769), (9951.025, 3539.812), (9952.536, 3539.795), (9954.442, 3539.456), (9958.068, 3538.94), (9962.653, 3537.856), (9963.687, 3537.435), (9969.306, 3533.789), (9973.61, 3531.598), (9974.925, 3530.905), (9980.545, 3530.27), (9984.568, 3529.666), (9986.164, 3529.379), (9986.228, 3529.367), (9991.783, 3528.353), (9995.525, 3528.39), (9997.402, 3528.394), (9999.0, 3528.416), (10001.0, 3528.469), (10003.08, 3528.556), (10006.22, 3528.936), (10008.72, 3529.292), (10014.37, 3529.414), (10017.0, 3529.257), (10020.01, 3529.016), (10025.66, 3528.577), (10027.77, 3528.447), (10031.3, 3528.322), (10036.95, 3528.363), (10038.54, 3528.532), (10042.59, 3528.888), (10048.24, 3529.045), (10049.32, 3528.987), (10049.91, 3528.938), (10051.7, 3528.786), (10053.77, 3528.611), (10059.27, 3528.091), (10061.32, 3528.147), (10064.76, 3528.601), (10070.25, 3530.449), (10073.4, 3531.524), (10075.74, 3532.043), (10081.24, 3532.433), (10085.48, 3532.28), (10086.73, 3532.204), (10092.22, 3531.804), (10097.56, 3531.795), (10097.71, 3531.798), (10103.21, 3531.877), (10108.7, 3532.028), (10109.64, 3532.166), (10114.19, 3533.046), (10119.68, 3534.498), (10121.72, 3534.557), (10125.18, 3534.282), (10130.67, 3534.254), (10133.8, 3534.279), (10136.16, 3534.256), (10141.66, 3534.017), (10145.88, 3533.532), (10147.15, 3533.353), (10152.64, 3532.693), (10157.96, 3532.716), (10158.13, 3532.722), (10163.63, 3533.263), (10169.12, 3534.585), (10170.04, 3534.653), (10174.61, 3535.112), (10180.1, 3535.311), (10182.12, 3535.352), (10185.6, 3535.393), (10191.09, 3535.432), (10194.2, 3535.498), (10196.58, 3535.563), (10202.07, 3536.581), (10206.28, 3537.74), (10207.57, 3538.073), (10213.06, 3539.633), (10218.36, 3541.641), (10218.55, 3541.708), (10224.04, 3543.753), (10229.54, 3546.488), (10230.44, 3546.781), (10235.03, 3547.53), (10240.52, 3546.516), (10242.52, 3545.882), (10243.28, 3545.636), (10246.1, 3544.775), (10251.75, 3543.75), (10253.31, 3543.655), (10257.4, 3543.474), (10263.06, 3543.396), (10264.03, 3543.38), (10268.71, 3543.29), (10274.36, 3543.235), (10274.74, 3543.227), (10280.02, 3543.119), (10285.45, 3543.114), (10285.67, 3543.113), (10291.33, 3543.071), (10296.16, 3543.056), (10296.98, 3543.053), (10302.63, 3543.042), (10306.87, 3543.024), (10308.29, 3543.022), (10313.94, 3542.97), (10315.24, 3542.965)]\",\"[(9662.966, 3579.47), (9663.393, 3579.585), (9664.951, 3579.986), (9669.365, 3581.181), (9674.095, 3582.469), (9675.337, 3582.753), (9681.308, 3584.075), (9683.239, 3584.428), (9687.28, 3585.299), (9692.383, 3586.349), (9693.252, 3586.555), (9699.224, 3588.03), (9701.527, 3588.364), (9705.196, 3588.964), (9710.671, 3588.576), (9711.168, 3588.555), (9717.14, 3586.666), (9719.815, 3585.26), (9723.111, 3583.566), (9728.959, 3580.698), (9729.083, 3580.633), (9735.055, 3577.343), (9738.103, 3575.367), (9741.027, 3573.431), (9746.999, 3570.133), (9747.247, 3570.0), (9752.971, 3566.845), (9756.391, 3565.02), (9758.943, 3563.61), (9764.914, 3560.28), (9765.535, 3559.92), (9770.886, 3556.82), (9774.679, 3554.915), (9776.858, 3553.794), (9782.83, 3550.519), (9783.823, 3549.997), (9788.802, 3547.602), (9792.967, 3545.572), (9794.213, 3544.701), (9794.762, 3544.288), (9800.604, 3539.038), (9802.563, 3537.496), (9806.446, 3534.905), (9812.229, 3531.338), (9812.288, 3531.308), (9818.131, 3529.016), (9821.896, 3528.027), (9823.973, 3527.594), (9829.815, 3526.48), (9831.562, 3526.344), (9835.657, 3526.532), (9841.229, 3526.749), (9841.5, 3526.752), (9847.342, 3526.839), (9850.895, 3526.869), (9853.184, 3526.968), (9859.026, 3527.095), (9860.561, 3527.075), (9864.869, 3527.029), (9870.228, 3527.064), (9870.711, 3527.048), (9871.849, 3527.02), (9876.372, 3526.909), (9880.98, 3526.897), (9881.989, 3526.919), (9887.607, 3527.11), (9891.951, 3527.201), (9893.224, 3527.258), (9898.841, 3527.533), (9902.922, 3527.708), (9903.475, 3527.725), (9904.423, 3527.754), (9909.838, 3527.945), (9915.253, 3527.973), (9915.84, 3527.995), (9920.669, 3528.086), (9926.084, 3528.036), (9928.86, 3528.108), (9931.499, 3528.181), (9936.914, 3528.101), (9939.686, 3528.233), (9942.24, 3528.398), (9942.544, 3528.392), (9947.473, 3528.227), (9952.706, 3526.898), (9957.938, 3526.228), (9959.499, 3526.31), (9963.171, 3526.515), (9968.404, 3526.876), (9971.33, 3527.018), (9973.584, 3527.126), (9978.572, 3527.199), (9978.696, 3527.2), (9983.809, 3526.881), (9985.772, 3526.611), (9988.921, 3526.178), (9994.034, 3525.665), (9999.0, 3525.763), (9999.145, 3525.767), (10001.0, 3525.782), (10003.03, 3525.789), (10004.24, 3525.791), (10009.34, 3526.055), (10014.45, 3526.073), (10019.56, 3525.877), (10023.87, 3525.825), (10024.68, 3525.824), (10026.56, 3525.758), (10029.89, 3525.768), (10032.64, 3526.702), (10035.1, 3527.537), (10040.31, 3528.898), (10044.34, 3528.865), (10045.52, 3528.909), (10050.73, 3528.933), (10055.94, 3528.964), (10061.15, 3528.822), (10062.12, 3528.828), (10065.11, 3528.893), (10066.54, 3528.919), (10072.47, 3529.126), (10072.84, 3529.134), (10078.4, 3529.151), (10082.14, 3529.24), (10084.33, 3529.35), (10090.26, 3529.479), (10091.44, 3529.521), (10096.19, 3529.66), (10100.74, 3529.905), (10102.12, 3529.96), (10108.05, 3530.082), (10110.03, 3530.078), (10113.98, 3530.027), (10119.33, 3529.985), (10119.91, 3529.99), (10125.84, 3530.836), (10128.63, 3531.446), (10131.77, 3531.972), (10137.7, 3531.74), (10137.93, 3531.727), (10143.63, 3531.247), (10147.22, 3531.352), (10149.57, 3531.335), (10155.5, 3531.319), (10156.52, 3531.281), (10161.43, 3531.21), (10165.82, 3531.205), (10167.36, 3531.231), (10173.29, 3531.203), (10175.11, 3531.205), (10179.22, 3531.683), (10184.41, 3531.591), (10185.15, 3531.651), (10191.08, 3532.112), (10193.71, 3532.318), (10197.01, 3532.825), (10202.94, 3534.245), (10203.01, 3534.268), (10208.87, 3536.059), (10212.3, 3536.236), (10214.8, 3536.328), (10220.73, 3536.019), (10221.6, 3536.032), (10226.66, 3536.037), (10230.9, 3536.038), (10232.59, 3535.993), (10238.52, 3536.152), (10240.2, 3536.238), (10244.46, 3536.397), (10249.49, 3536.747), (10250.39, 3536.885), (10256.32, 3537.986), (10258.79, 3538.52), (10262.25, 3538.928), (10268.09, 3539.932), (10268.18, 3539.94), (10274.11, 3541.496), (10277.39, 3541.589), (10280.04, 3541.681), (10285.97, 3541.662), (10286.68, 3541.641), (10291.9, 3541.151), (10295.98, 3540.874), (10297.83, 3540.646), (10303.76, 3539.96), (10305.28, 3539.878), (10309.69, 3539.666), (10314.57, 3539.214), (10315.62, 3539.156), (10321.55, 3538.646), (10323.87, 3538.569), (10327.48, 3538.661), (10333.17, 3538.706), (10333.42, 3538.715), (10339.35, 3539.009), (10342.47, 3539.085), (10345.28, 3539.194), (10351.21, 3539.221), (10351.76, 3539.264), (10357.14, 3539.602), (10361.06, 3539.593), (10363.07, 3539.775), (10369.0, 3540.152), (10370.36, 3540.189), (10374.93, 3540.26), (10379.66, 3540.648), (10380.86, 3540.71), (10386.79, 3540.632), (10388.95, 3540.655), (10392.72, 3540.72), (10398.25, 3540.595), (10398.65, 3540.582), (10404.58, 3540.798), (10407.55, 3540.943), (10410.51, 3541.141), (10416.44, 3541.295), (10416.85, 3541.315), (10422.37, 3541.614), (10426.14, 3541.715), (10428.31, 3541.791), (10434.24, 3541.948), (10435.44, 3541.981), (10440.17, 3542.184), (10444.74, 3542.339), (10446.1, 3542.401), (10452.03, 3542.546), (10454.04, 3542.675), (10457.96, 3542.862), (10463.33, 3542.999), (10463.89, 3543.017), (10469.82, 3543.215), (10472.63, 3543.329), (10475.75, 3543.512), (10481.68, 3543.871), (10481.93, 3543.873), (10487.61, 3543.853), (10491.22, 3543.98), (10493.54, 3544.078), (10499.47, 3544.327), (10500.52, 3544.353), (10505.4, 3544.595), (10509.82, 3544.938), (10511.33, 3545.032), (10517.26, 3545.344), (10519.12, 3545.419), (10523.2, 3545.586), (10528.41, 3546.275), (10529.13, 3546.351), (10535.06, 3546.237), (10537.71, 3546.314), (10540.99, 3546.366), (10546.92, 3546.186), (10547.01, 3546.185), (10552.85, 3546.368), (10556.31, 3546.561), (10558.78, 3546.625), (10564.71, 3546.702), (10565.6, 3546.714), (10570.64, 3546.8), (10574.9, 3546.971), (10576.57, 3547.031), (10582.5, 3547.248), (10584.2, 3547.34), (10588.43, 3547.843), (10593.5, 3548.216), (10594.36, 3548.507), (10600.29, 3550.675), (10602.79, 3551.752), (10606.22, 3553.206), (10612.09, 3555.245), (10612.15, 3555.271), (10618.09, 3556.958), (10621.39, 3557.613), (10624.02, 3558.026), (10629.95, 3558.613), (10630.69, 3558.641), (10635.88, 3558.753), (10639.98, 3559.115), (10641.81, 3559.343), (10647.74, 3559.897), (10649.28, 3560.184), (10653.67, 3560.785), (10658.58, 3561.589), (10659.6, 3561.78), (10665.53, 3562.864), (10667.87, 3563.257), (10671.46, 3563.833), (10677.17, 3564.569), (10677.39, 3564.577), (10683.32, 3564.727), (10686.47, 3565.419), (10689.25, 3566.235), (10694.71, 3567.97)]\",\"[(9626.995, 3583.562), (9627.169, 3583.476), (9633.338, 3580.506), (9635.14, 3579.573), (9639.506, 3577.466), (9643.677, 3575.567), (9645.675, 3574.588), (9651.844, 3571.643), (9652.215, 3571.474), (9658.012, 3568.979), (9660.752, 3567.802), (9664.181, 3566.24), (9669.29, 3564.797), (9670.349, 3564.58), (9673.095, 3564.845), (9676.641, 3565.237), (9677.545, 3565.438), (9683.031, 3566.571), (9685.575, 3567.284), (9689.421, 3568.183), (9693.604, 3569.0), (9695.811, 3569.428), (9701.634, 3570.9), (9702.202, 3571.042), (9708.592, 3572.724), (9709.663, 3573.052), (9714.982, 3574.52), (9717.692, 3575.138), (9721.372, 3575.942), (9725.722, 3576.756), (9727.762, 3577.125), (9733.751, 3578.081), (9734.152, 3578.131), (9740.543, 3578.017), (9741.78, 3577.623), (9746.933, 3575.793), (9749.81, 3574.469), (9753.323, 3573.051), (9757.839, 3570.961), (9759.713, 3570.122), (9765.869, 3567.131), (9766.103, 3567.02), (9772.494, 3563.811), (9773.898, 3563.152), (9774.022, 3563.099), (9779.171, 3560.698), (9781.326, 3559.629), (9785.94, 3557.35), (9788.745, 3555.838), (9792.708, 3553.679), (9796.163, 3551.802), (9799.476, 3549.959), (9803.582, 3547.992), (9806.244, 3546.717), (9811.001, 3544.444), (9813.012, 3543.579), (9818.419, 3540.5), (9819.781, 3539.384), (9825.838, 3533.655), (9826.549, 3533.068), (9833.256, 3528.506), (9833.317, 3528.474), (9840.085, 3524.821), (9840.675, 3524.686), (9845.185, 3524.158), (9847.005, 3524.012), (9847.85, 3524.063), (9854.386, 3524.351), (9854.646, 3524.353), (9861.443, 3524.837), (9861.768, 3524.873), (9868.24, 3525.27), (9869.149, 3525.333), (9875.036, 3525.888), (9876.531, 3526.042), (9881.833, 3526.286), (9883.913, 3526.283), (9888.63, 3526.072), (9891.294, 3525.865), (9893.951, 3525.697), (9895.289, 3525.616), (9899.42, 3525.542), (9901.456, 3525.545), (9907.622, 3525.347), (9907.964, 3525.344), (9913.788, 3525.492), (9916.507, 3525.569), (9919.954, 3525.661), (9925.051, 3525.916), (9926.12, 3525.958), (9932.287, 3526.336), (9933.595, 3526.369), (9933.767, 3526.369), (9938.061, 3526.362), (9943.711, 3525.72), (9944.287, 3525.659), (9949.361, 3525.128), (9955.011, 3524.161), (9955.022, 3524.159), (9960.661, 3523.747), (9965.519, 3523.685), (9965.83, 3523.678), (9966.27, 3523.663), (9971.627, 3523.456), (9974.171, 3523.264), (9976.983, 3523.052), (9979.774, 3522.89), (9982.339, 3522.727), (9987.695, 3522.545), (9993.051, 3522.205), (9993.718, 3522.18), (9998.407, 3521.963), (9999.0, 3521.982), (10001.0, 3522.063), (10003.72, 3522.206), (10008.04, 3523.856), (10009.06, 3524.373), (10010.04, 3524.909), (10014.4, 3527.291), (10019.74, 3528.526), (10022.32, 3528.435), (10025.08, 3528.32), (10030.42, 3527.893), (10031.44, 3527.734), (10033.71, 3527.439), (10038.11, 3526.911), (10039.99, 3526.776), (10046.27, 3526.225), (10046.36, 3526.22), (10052.56, 3525.78), (10054.62, 3525.609), (10058.84, 3525.25), (10062.87, 3524.94), (10065.13, 3524.829), (10071.12, 3524.586), (10071.41, 3524.572), (10077.7, 3524.304), (10079.37, 3524.281), (10083.98, 3524.096), (10087.63, 3523.966), (10090.27, 3523.829), (10095.88, 3523.417), (10096.55, 3523.413), (10102.84, 3523.446), (10104.13, 3523.512), (10109.12, 3523.806), (10112.39, 3524.29), (10115.41, 3525.203), (10120.64, 3526.365), (10121.69, 3526.554), (10127.98, 3526.629), (10128.89, 3526.576), (10134.26, 3527.067), (10137.14, 3527.933), (10140.55, 3529.16), (10145.4, 3530.914), (10146.83, 3531.173), (10153.12, 3531.874), (10153.65, 3531.913), (10159.4, 3532.219), (10161.9, 3532.206), (10165.69, 3532.337), (10170.16, 3532.398), (10171.97, 3532.396), (10178.25, 3532.528), (10178.41, 3532.526), (10184.54, 3532.522), (10186.66, 3532.509), (10190.82, 3532.407), (10194.91, 3532.48), (10197.11, 3532.525), (10203.17, 3532.721), (10203.39, 3532.73), (10209.68, 3532.832), (10211.42, 3532.907), (10215.96, 3533.116), (10219.67, 3533.055), (10222.25, 3533.131), (10227.93, 3533.562), (10228.53, 3533.589), (10234.82, 3534.981), (10236.18, 3535.447), (10241.1, 3537.119), (10244.43, 3538.562), (10247.39, 3539.332), (10252.68, 3539.95), (10253.67, 3539.963), (10259.96, 3539.609), (10260.94, 3539.438), (10266.24, 3538.371), (10269.19, 3537.834), (10272.53, 3537.017), (10277.44, 3536.7), (10278.81, 3536.642), (10285.1, 3536.353), (10285.7, 3536.348), (10291.38, 3536.498), (10293.95, 3536.525), (10297.66, 3536.683), (10302.2, 3536.663), (10303.95, 3536.604), (10310.23, 3536.643), (10310.45, 3536.643), (10316.52, 3536.557), (10318.71, 3536.531), (10322.8, 3536.513), (10326.96, 3536.521), (10329.09, 3536.525), (10335.21, 3536.919), (10335.37, 3536.925), (10341.66, 3538.123), (10343.47, 3538.396), (10347.94, 3538.703), (10351.72, 3538.749), (10354.23, 3538.728), (10359.97, 3538.544), (10360.51, 3538.593), (10366.8, 3538.821), (10368.22, 3538.659), (10373.08, 3538.616), (10376.48, 3538.396), (10379.37, 3538.259), (10384.73, 3538.112), (10385.65, 3538.124), (10391.94, 3538.324), (10392.98, 3538.35), (10398.22, 3538.477), (10401.24, 3538.553), (10404.51, 3538.697), (10409.49, 3539.102), (10410.79, 3539.119), (10417.08, 3539.092), (10417.74, 3539.118), (10423.36, 3539.49), (10425.99, 3539.643), (10429.64, 3539.804), (10434.25, 3539.849), (10435.93, 3539.856), (10442.21, 3539.753), (10442.5, 3539.777), (10448.5, 3540.38), (10450.75, 3540.472), (10454.78, 3540.644), (10459.0, 3541.048), (10461.07, 3541.19), (10467.26, 3541.238), (10467.35, 3541.237), (10473.64, 3541.434), (10475.51, 3541.517), (10479.92, 3541.77), (10483.76, 3542.065), (10486.21, 3542.243), (10492.02, 3542.449), (10492.49, 3542.459), (10498.78, 3542.505), (10500.27, 3542.514), (10505.06, 3542.715), (10508.52, 3543.172), (10511.35, 3543.469), (10516.77, 3543.545), (10517.63, 3543.543), (10523.92, 3543.557), (10525.03, 3543.617), (10530.2, 3543.588), (10533.28, 3543.56), (10536.49, 3543.706), (10541.53, 3543.9), (10542.77, 3543.97), (10549.05, 3544.249), (10549.79, 3544.289), (10555.34, 3544.759), (10558.04, 3545.109), (10561.62, 3545.738), (10566.29, 3546.714), (10567.91, 3546.934), (10574.19, 3547.269), (10574.54, 3547.244), (10580.48, 3547.297), (10582.8, 3547.312), (10586.76, 3547.195), (10591.05, 3547.354), (10593.05, 3547.4), (10599.3, 3547.423), (10599.33, 3547.422), (10605.62, 3547.539), (10607.56, 3547.482), (10611.9, 3547.392), (10615.81, 3547.416), (10618.19, 3547.482), (10624.06, 3547.955), (10624.47, 3547.984), (10630.76, 3548.489), (10632.31, 3548.552), (10637.04, 3548.708), (10640.57, 3548.788), (10643.33, 3548.906), (10648.82, 3548.929), (10649.61, 3548.931), (10655.9, 3548.881), (10657.07, 3548.93), (10662.18, 3549.551), (10665.33, 3550.104), (10668.47, 3550.784), (10673.58, 3552.33), (10674.75, 3552.793), (10681.03, 3555.243), (10681.83, 3555.571), (10687.32, 3558.078), (10690.08, 3559.295), (10693.6, 3560.674), (10698.34, 3562.858), (10699.89, 3563.529), (10706.17, 3566.255), (10706.59, 3566.474), (10712.46, 3569.467), (10714.84, 3570.498), (10718.74, 3572.24), (10723.1, 3573.741), (10725.03, 3574.394), (10731.31, 3576.874), (10731.35, 3576.887), (10737.6, 3579.189), (10739.6, 3579.844), (10743.88, 3581.373), (10746.92, 3582.122)]\"]]\n", - "bank_stations: [[\"['9989.947', '10012.95']\",\"['9987.545', '10010']\",\"['9989.999', '10010']\",\"['9990', '10020.07']\",\"['9989.087', '10022.77']\",...,\"['9977.755', '10030.43']\",\"['9971.079', '10038.65']\",\"['9986.228', '10051.7']\",\"['9985.772', '10032.64']\",\"['9974.171', '10010.04']\"]]\n", - "number_of_station_elevation_points: [[85,83,143,171,173,...,217,222,175,293,325]]\n", - "number_of_coords: [[8,8,7,9,9,...,7,7,9,11,11]]\n", - "flows: [[\"167.0\n", - "313.0\n", - "456.0\n", - "633.0\n", - "804.0\n", - "498.0\n", - "1183.0\",\"167.0\n", - "313.0\n", - "456.0\n", - "633.0\n", - "805.0\n", - "498.0\n", - "1184.0\",\"167.0\n", - "313.0\n", - "457.0\n", - "633.0\n", - "805.0\n", - "498.0\n", - "1185.0\",\"168.0\n", - "313.0\n", - "457.0\n", - "634.0\n", - "805.0\n", - "499.0\n", - "1185.0\",\"169.0\n", - "316.0\n", - "460.0\n", - "638.0\n", - "811.0\n", - "502.0\n", - "1194.0\",...,\"433.0\n", - "796.0\n", - "1152.0\n", - "1584.0\n", - "2014.0\n", - "1247.0\n", - "2926.0\",\"433.0\n", - "796.0\n", - "1152.0\n", - "1585.0\n", - "2014.0\n", - "1247.0\n", - "2927.0\",\"437.0\n", - "803.0\n", - "1162.0\n", - "1599.0\n", - "2032.0\n", - "1258.0\n", - "2952.0\",\"440.0\n", - "808.0\n", - "1169.0\n", - "1608.0\n", - "2043.0\n", - "1265.0\n", - "2967.0\",\"440.0\n", - "808.0\n", - "1169.0\n", - "1608.0\n", - "2043.0\n", - "1265.0\n", - "2967.0\"]]\n", - "profile_names: [[\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",...,\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\",\" 10yr\n", - "25yr\n", - "50yr\n", - "100yr\n", - "100plus\n", - "100minus\n", - "500yr\"]]\n", - "geometry: [[010200000008000000E895564C44AE34C183C588B9C11F334114D0C25941AE34C1C75AF77AB91F3341C13C77663DAE34C103E1300FB11F33413198E01D3DAE34C11085B084B01F334193A669FE37AE34C126BE9F3FA51F33411E16E8FB32AE34C1272FE52D951F3341ABCAC0C02FAE34C1031DD09A831F3341B4CAB2FA2DAE34C169BE50E16D1F3341,0102000000080000008AF82D7824AE34C1D2A50D4BC71F3341535FE5D322AE34C173B707E7BA1F33413F97A8C222AE34C198C8FE4ABA1F3341921E2B2820AE34C1698BE94AA81F334156F703B31EAE34C1F16F23559A1F3341DA8CAACE1DAE34C1C9E10DAC861F33410B9B18F61DAE34C14CEAD794751F33416A302B111EAE34C1CBE0CDD8691F3341,010200000007000000BA5FC7222CAE34C1116D3D36052033413BE8E2FC03AE34C12D597FD4C81F3341FE4DCB9B06AE34C15EFFB2F8B91F334195B7B2B606AE34C1D642E35DB91F3341E46205A80BAE34C1BD1DF02B9F1F33411523074011AE34C15C085327751F33411928C14113AE34C16DED6E14661F3341,010200000009000000DE56E5E217AE34C131114E300E20334133F5A220E7AD34C1C990C092BC1F33417615CDBAEBAD34C1EAAA910CB11F33410E354FF3EBAD34C1E0810D7AB01F3341123765E3F2AD34C11852DEA79F1F33412B886BBEF7AD34C1A374137B921F334165908C7FFDAD34C120FB7EA77F1F3341ED05BDA701AE34C12B20A0126F1F334105498E2405AE34C1114B5429611F3341,010200000009000000CD284C1EFCAD34C1482734FF05203341126C84C6CDAD34C1A04EFFEBAD1F3341B1F39139D2AD34C13B1E59ABA41F3341D671677FD2AD34C1FC47CE1EA41F3341F149EA59DBAD34C16CBF252E921F334109B727B0E1AD34C1F2950D1A841F3341ED766ABBE7AD34C1489D9FCB741F33414A400040EDAD34C190FF199F641F33411032FDD7F0AD34C123E076165A1F3341,...,010200000007000000710282497AAD34C1E8A31E94EF203341557DEDA2A0AD34C142C32C34C420334128ACF30FC5AD34C1939153B198203341C70AC578C5AD34C12A16213D98203341DAF6CCFECAAD34C1EA011FD49120334198D8BCF8D3AD34C1FD0454A586203341690CF04D1FAE34C1255596F852203341,010200000007000000544E26814EAD34C1E416CA09B82033412508A6136FAD34C1181924039F203341315935599FAD34C1B88A672A7D2033418B37A1AAAAAD34C1020AE57B742033415E878117ABAD34C1E83A970B74203341EF3FBD3BB2AD34C10A66D27B6E2033418E5813C612AE34C1C1C056D73F203341,0102000000090000003ADE6E0542AD34C127E562AB63203341AFEAE0C642AD34C171A4146B63203341F21113495EAD34C12D5649E05B2033414AABBF8A8DAD34C1991E44C7502033413F039E579AAD34C17DF35E654C203341E3D661E89AAD34C17D1C7A2C4C2033414D18FEEAA8AD34C19EA2103D47203341FE1EB746E1AD34C1E99E42E336203341B423C1DDF5AD34C12D573C902F203341,01020000000B000000626785902AAD34C1FAB1F7A034203341791C1BBF4EAD34C16C7824CE232033418CABCB7964AD34C1BFEB6D9D1A203341496919906DAD34C1F1FDAE8217203341D2CB713578AD34C1284D62CC1420334153A524B081AD34C1FA3E7D5413203341B9E8B60D8AAD34C11B0D61CC12203341D0DEC3A88AAD34C170A0DFC912203341C217529391AD34C13B15B36212203341C35474F49DAD34C12D4083A6102033417852CB5B4CAE34C1CE2907D6C11F3341,01020000000B000000B0DE7D191AAD34C10029FA6D282033414F52918526AD34C1E913D8EB2120334104131B0A41AD34C1B9D7EF6812203341F59317F952AD34C18EE8B53906203341BD62E0805EAD34C1748C03D4FC1F3341367DEBF466AD34C16274C814F41F3341349B6BAB6CAD34C17C509538EC1F3341587A9EB171AD34C109211847E31F33419E2DC2F871AD34C12BA438BBE21F3341E8A1F37776AD34C1273F8B8FDA1F3341E1A0F7B634AE34C1DFBB23AF701F3341]]\n", - "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", - "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", - "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", - "us_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294311\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]\n", - "ds_network_to_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"21294311\"]]\n", - "__index_level_0__: [[30787,30788,30789,30790,30791,...,30966,30967,30968,30969,30970]]\n" - ] - } - ], - "source": [ - "# Scenario III\n", - "# User Args\n", - "catalog_name = \"xs\"\n", - "huc_num = 15040007\n", - "\n", - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema\n", - "tablename = f\"huc_{huc_num}\"\n", - "namespace = \"mip\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "print(iceberg_table.to_string(preview_cols=30))" - ] - }, - { - "cell_type": "markdown", - "id": "42d97ebb-f690-4dce-80fd-a01e61f9e6ec", - "metadata": {}, - "source": [ - "#### Demo:\n", - "#### Load Iceberg Catalog & Table of Interest\n", - "#### Cross-Check & Verify Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" - ] - }, - { - "cell_type": "code", - "execution_count": 24, - "id": "64bfeb93-15f2-4c20-affa-af8b215172de", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "river: large_string\n", - "huc: large_string\n", - "model_id: large_string\n", - "us_reach_id: large_string\n", - "ds_reach_id: large_string\n", - "----\n", - "river: [[\"1242\",\"1242\",\"1242\",\"1242\",\"1242\",...,\"1236\",\"1236\",\"1236\",\"1236\",\"1236\"]]\n", - "huc: [[\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\",...,\"15040007\",\"15040007\",\"15040007\",\"15040007\",\"15040007\"]]\n", - "model_id: [[\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",\"1242_ras\",...,\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\",\"1236_ras\"]]\n", - "us_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21294309\",\"None\",\"None\",\"None\",\"None\"]]\n", - "ds_reach_id: [[\"None\",\"None\",\"None\",\"None\",\"None\",...,\"21295551\",\"None\",\"None\",\"None\",\"21294309\"]]" - ] - }, - "execution_count": 24, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Query iceberg table for specific features of interest\n", - "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", - " selected_fields=(\"huc\", \"river\", \"model_id\", \"us_reach_id\", \"ds_reach_id\")\n", - ").to_arrow()" - ] - }, - { - "cell_type": "markdown", - "id": "42103887-3d43-421a-819d-8689940267d5", - "metadata": {}, - "source": [ - "### Demo VI:\n", - "### Load CRS Mapping" - ] - }, - { - "cell_type": "code", - "execution_count": 25, - "id": "2c3de676-42ec-4e15-8e04-5469afcbae10", - "metadata": {}, - "outputs": [], - "source": [ - "with open(f\"{os.getcwd()}/xs_data/crs_map/crs_mapping.pickle\", \"rb\") as handle:\n", - " crs_map = pickle.load(handle)" - ] - }, - { - "cell_type": "code", - "execution_count": 26, - "id": "c36c0954-2150-4441-a546-3b455ab871cc", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "defaultdict(dict,\n", - " {('07130010',\n", - " 'sa_1'): {'LitCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRv_us': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'SBLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaHaCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'BapCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'RocCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'Killjordan'): {'Killjordan Cr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'sa_6'): {'CedCkTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CedCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRvTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'LaMoRvTrbB': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'sa_7'): {'TowFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'DroFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'DroFkTrbAa': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'KepCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'NFEFLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'FarFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'EFLaMoRv': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'SprCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'ShoFk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'sa_5'): {'TroCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'KilCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'sa_4'): {'CamCr': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CarCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'GriCk': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'CamCrTrbA': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('07130010',\n", - " 'LaMoine'): {'LaMoine River': 'ESPG: 3436, NAD83 / Illinois West (ftUS),', 'Spring Creek': 'ESPG: 3436, NAD83 / Illinois West (ftUS),'},\n", - " ('09020301',\n", - " 'SHRWDS'): {'SHRWDS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHR5_1'): {'SHR5': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHRUS_1'): {'SHRUS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'GF_EGF_FIS_Submittal1204'): {'RRN': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,'},\n", - " ('09020301',\n", - " 'SHR6_1'): {'SHR6': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHRup'): {'SHRup': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'UnnamedTrib1_1'): {'UnnamedTrib1': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHR2'): {'SHR2': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Maple_Creek_1'): {'Maple Creek': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHR2_1'): {'SHR2': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'RedRiverTA'): {'RedRiverTA': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Maple_Creek'): {'Maple Creek': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SandHill29_1'): {'SandHill29': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHRUS'): {'SHRUS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHRWDS_1'): {'SHRWDS': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'UnnamedTrib1'): {'UnnamedTrib1': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SandHill29'): {'SandHill29': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Ditch16So_1'): {'Ditch16So': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Kittleson'): {'Kittleson': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SandHillRiver7'): {'SandHillRiver7': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHR5'): {'SHR5': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SandHillRiver7_1'): {'SandHillRiver7': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Ditch16So'): {'Ditch16So': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'GFEGFFIS0807'): {'RRN': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'Heartsville': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'Red Lake River': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,', 'English Coulee': 'ESPG: None, NAD_1983_StatePlane_North_Dakota_North_FIPS_3301_Feet,'},\n", - " ('09020301',\n", - " 'SHR6'): {'SHR6': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'Kittleson_1'): {'Kittleson': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'SHRup_1'): {'SHRup': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('09020301',\n", - " 'RedRiverTA_1'): {'RedRiverTA': 'ESPG: 6503, NAD83(2011) / Minnesota North (ftUS),'},\n", - " ('06040002',\n", - " 'Bell_Buckle_Cr'): {'Bell Buckle Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Kelly_Creek_T1'): {'Kelly Creek T1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Bomar_Creek'): {'Bomar Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Trib_to_Bomar_Cr'): {'Trib to Bomar Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Rabbit_Branch'): {'Rabbit Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Thompson_Branch'): {'Thompson Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Sinking_Creek'): {'Sinking Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Duck_River_DS'): {'Duck River DS': 'ESPG: 2915, NAD83(HARN) / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'North_Fork_Creek'): {'North Fork Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Butler_Creek'): {'Butler Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Noah_Fork_Creek'): {'Noah Fork Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Duck_River_Trib4'): {'Duck River Trib4': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Wartrace_Creek'): {'Wartrace Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Dry_Branch'): {'Dry Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Doddy_Branch'): {'Doddy Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Stokes_Branch'): {'Stokes Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'GarrisonForkCrT1'): {'GarrisonForkCrT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Little_Flat_Cr'): {'Little Flat Cr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Sugar_Creek'): {'Sugar Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Bell_Buckle_CrT2'): {'Bell Buckle CrT2': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Fall_Creek'): {'Fall Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Muse_Branch'): {'Muse Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Fay_Branch'): {'Fay Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Crouch_Branch'): {'Crouch Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Hurricane_Branch'): {'Hurricane Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'GarrisonForkCr'): {'GarrisonForkCr': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Flat_Creek'): {'Flat Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Powell_Creek'): {'Powell Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Dryland_Creek'): {'Dryland Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Bell_Buckle_CrT1'): {'Bell Buckle CrT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Norman_Creek_T1'): {'Norman Creek T1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Anthony_Branch'): {'Anthony Branch': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Trib_to_Holland'): {'Trib to Holland': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Cannon_Creek'): {'Cannon Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Little_Hurricane'): {'Little Hurricane': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Norman_Creek_T2'): {'Norman Creek T2': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Kelly_Creek'): {'Kelly Creek': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('06040002',\n", - " 'Wartrace_CreekT1'): {'Wartrace CreekT1': 'ESPG: 2274, NAD83 / Tennessee (ftUS),'},\n", - " ('03170004',\n", - " 'MixonLOMR-Existing3_17_17'): {'Mixons Creek Tri': 'ESPG: 2254, NAD83 / Mississippi East (ftUS),'},\n", - " ('01020002',\n", - " 'Stream0510'): {'Stream0510': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('01020002',\n", - " 'Stream0528'): {'Stream0528': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('01020002',\n", - " 'Martin_Stream'): {'Martin Stream': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('01020002',\n", - " 'Stream0526'): {'Stream0526': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('01020002',\n", - " 'Stream0527'): {'Stream0527': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('01020002',\n", - " 'Stream0512'): {'Stream0512': 'ESPG: 2852, NAD83(HARN) / Vermont,'},\n", - " ('10120203',\n", - " 'Spearfish_Cr_LOMR_FEMA_RESPONSE_1'): {'Spearfish Creek': 'ESPG: 3458, NAD83(HARN) / South Dakota North (ftUS),'},\n", - " ('10120203',\n", - " 'Spearfish_Cr_LOMR_FEMA_RESPONSE'): {'Spearfish Creek': 'ESPG: 3458, NAD83(HARN) / South Dakota North (ftUS),'},\n", - " ('11060002',\n", - " 'YELLOWSTONE_CREEK'): {'YELLOWSTONE CREE': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT64_in_UPPER_SALT_FRK_HUC8_1'): {'UNT64 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT115_in_UPPER_SALT_FRK_HUC8_1'): {'UNT115 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT64_in_UPPER_SALT_FRK_HUC8'): {'UNT64 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'JUG_MOTTE_CREEK_1'): {'JUG MOTTE CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT80_in_UPPER_SALT_FRK_HUC8'): {'UNT80 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'MUSTANG_CREEK_1'): {'MUSTANG CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT79_in_UPPER_SALT_FRK_HUC8'): {'UNT79 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT23_in_UPPER_SALT_FRK_HUC8'): {'UNT23 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT61_in_UPPER_SALT_FRK_HUC8'): {'UNT61 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT83_in_UPPER_SALT_FRK_HUC8_1'): {'UNT83 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT119_in_UPPER_SALT_FRK_HUC8_1'): {'UNT119 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT14_in_UPPER_SALT_FRK_HUC8_1'): {'UNT14 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT45_in_UPPER_SALT_FRK_HUC8'): {'UNT45 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT101_in_UPPER_SALT_FRK_HUC8_1'): {'UNT101 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT84_in_UPPER_SALT_FRK_HUC8_1'): {'UNT84 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'COTTONWOOD_CREEK_1'): {'COTTONWOOD CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT91_in_UPPER_SALT_FRK_HUC8_1'): {'UNT91 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT115_in_UPPER_SALT_FRK_HUC8'): {'UNT115 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT66_in_UPPER_SALT_FRK_HUC8'): {'UNT66 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT75_in_BluffCr_Watershed'): {'UNT75 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT111_in_UPPER_SALT_FRK_HUC8_1'): {'UNT111 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT92_in_UPPER_SALT_FRK_HUC8_1'): {'UNT92 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT75_in_UPPER_SALT_FRK_HUC8_1'): {'UNT75 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT120_in_Liberal_Watershed_1'): {'UNT120 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT9_in_UPPER_SALT_FRK_HUC8_1'): {'UNT9 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT92_in_UPPER_SALT_FRK_HUC8'): {'UNT92 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT107_in_UPPER_SALT_FRK_HUC8'): {'UNT107 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT34_in_UPPER_SALT_FRK_HUC8'): {'UNT34 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT84_in_UPPER_SALT_FRK_HUC8'): {'UNT84 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT27_in_UPPER_SALT_FRK_HUC8'): {'UNT27 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT93_in_UPPER_SALT_FRK_HUC8_1'): {'UNT93 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT55_in_UPPER_SALT_FRK_HUC8'): {'UNT55 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT2_in_UPPER_SALT_FRK_HUC8_1'): {'UNT2 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT106_in_UPPER_SALT_FRK_HUC8_1'): {'UNT106 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT9_in_UPPER_SALT_FRK_HUC8'): {'UNT9 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'MUSTANG_CREEK'): {'MUSTANG CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT14_in_UPPER_SALT_FRK_HUC8'): {'UNT14 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT54_in_UPPER_SALT_FRK_HUC8'): {'UNT54 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT133_in_Liberal_Watershed_1'): {'UNT133 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT21_in_UPPER_SALT_FRK_HUC8_1'): {'UNT21 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT18_in_UPPER_SALT_FRK_HUC8_1'): {'UNT18 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT103_in_UPPER_SALT_FRK_HUC8'): {'UNT103 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT11_in_UPPER_SALT_FRK_HUC8_1'): {'UNT11 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT71_in_UPPER_SALT_FRK_HUC8'): {'UNT71 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT139_in_UPPER_SALT_FRK_HUC8_1'): {'UNT139 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT139_in_UPPER_SALT_FRK_HUC8'): {'UNT139 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT68_in_UPPER_SALT_FRK_HUC8_1'): {'UNT68 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT111_in_UPPER_SALT_FRK_HUC8'): {'UNT111 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT60_in_UPPER_SALT_FRK_HUC8_1'): {'UNT60 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT103_in_Liberal_Watershed'): {'UNT103 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT31_in_UPPER_SALT_FRK_HUC8_1'): {'UNT31 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT19_in_UPPER_SALT_FRK_HUC8_1'): {'UNT19 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT120_in_UPPER_SALT_FRK_HUC8'): {'UNT120 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT25_in_UPPER_SALT_FRK_HUC8_1'): {'UNT25 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT67_in_UPPER_SALT_FRK_HUC8_1'): {'UNT67 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT8_in_UPPER_SALT_FRK_HUC8_1'): {'UNT8 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT29_in_UPPER_SALT_FRK_HUC8'): {'UNT29 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT65_in_UPPER_SALT_FRK_HUC8'): {'UNT65 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT110_in_Liberal_Watershed'): {'UNT110 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT19_in_UPPER_SALT_FRK_HUC8'): {'UNT19 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT27_in_UPPER_SALT_FRK_HUC8_1'): {'UNT27 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT105_in_UPPER_SALT_FRK_HUC8_1'): {'UNT105 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'GREENLEAF_CREEK'): {'GREENLEAF CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT32_in_UPPER_SALT_FRK_HUC8'): {'UNT32 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT73_in_UPPER_SALT_FRK_HUC8_1'): {'UNT73 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT73_in_BluffCr_Watershed'): {'UNT73 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT55_in_UPPER_SALT_FRK_HUC8_1'): {'UNT55 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT87_in_UPPER_SALT_FRK_HUC8_1'): {'UNT87 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT72_in_UPPER_SALT_FRK_HUC8_1'): {'UNT72 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'HACKBERRY_CREEK'): {'HACKBERRY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT72_in_UPPER_SALT_FRK_HUC8'): {'UNT72 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT144_in_UPPER_SALT_FRK_HUC8_1'): {'UNT144 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT35_in_UPPER_SALT_FRK_HUC8'): {'UNT35 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT129_in_Edith_Watershed_1'): {'UNT129 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", - " ('11060002',\n", - " 'UNT144_in_UPPER_SALT_FRK_HUC8'): {'UNT144 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT89_in_UPPER_SALT_FRK_HUC8_1'): {'UNT89 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT25_in_UPPER_SALT_FRK_HUC8'): {'UNT25 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT89_in_UPPER_SALT_FRK_HUC8'): {'UNT89 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT102_in_UPPER_SALT_FRK_HUC8'): {'UNT102 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT94_in_Liberal_Watershed'): {'UNT94 in Liberal': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'TURKEY_CREEK'): {'TURKEY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT120_in_UPPER_SALT_FRK_HUC8_1'): {'UNT120 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT12_in_UPPER_SALT_FRK_HUC8_1'): {'UNT12 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT36_in_UPPER_SALT_FRK_HUC8'): {'UNT36 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT26_in_UPPER_SALT_FRK_HUC8'): {'UNT26 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT143_in_UPPER_SALT_FRK_HUC8'): {'UNT143 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT36_in_UPPER_SALT_FRK_HUC8_1'): {'UNT36 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT114_in_UPPER_SALT_FRK_HUC8'): {'UNT114 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT24_in_UPPER_SALT_FRK_HUC8_1'): {'UNT24 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT116_in_UPPER_SALT_FRK_HUC8'): {'UNT116 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT33_in_UPPER_SALT_FRK_HUC8_1'): {'UNT33 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT97_in_UPPER_SALT_FRK_HUC8'): {'UNT97 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT76_in_UPPER_SALT_FRK_HUC8'): {'UNT76 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT32_in_UPPER_SALT_FRK_HUC8_1'): {'UNT32 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'SALT_FORK_ARKANSAS_RIVER'): {'SALT FORK ARKANS': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT95_in_UPPER_SALT_FRK_HUC8'): {'UNT95 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT24_in_UPPER_SALT_FRK_HUC8'): {'UNT24 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT74_in_UPPER_SALT_FRK_HUC8'): {'UNT74 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT20_in_UPPER_SALT_FRK_HUC8'): {'UNT20 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT62_in_UPPER_SALT_FRK_HUC8'): {'UNT62 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT70_in_UPPER_SALT_FRK_HUC8'): {'UNT70 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT140_in_UPPER_SALT_FRK_HUC8'): {'UNT140 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT44_in_UPPER_SALT_FRK_HUC8'): {'UNT44 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT52_in_UPPER_SALT_FRK_HUC8_1'): {'UNT52 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT29_in_UPPER_SALT_FRK_HUC8_1'): {'UNT29 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT331_in_Edith_Watershed_1'): {'UNT331 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", - " ('11060002',\n", - " 'UNT110_in_Liberal_Watershed_1'): {'UNT110 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT133_in_Liberal_Watershed'): {'UNT133 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT35_in_UPPER_SALT_FRK_HUC8_1'): {'UNT35 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT85_in_UPPER_SALT_FRK_HUC8_1'): {'UNT85 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT146_in_UPPER_SALT_FRK_HUC8_1'): {'UNT146 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT57_in_UPPER_SALT_FRK_HUC8'): {'UNT57 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT13_in_UPPER_SALT_FRK_HUC8_1'): {'UNT13 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT53_in_UPPER_SALT_FRK_HUC8'): {'UNT53 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT34_in_UPPER_SALT_FRK_HUC8_1'): {'UNT34 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT30_in_UPPER_SALT_FRK_HUC8'): {'UNT30 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT11_in_UPPER_SALT_FRK_HUC8'): {'UNT11 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT94_in_UPPER_SALT_FRK_HUC8_1'): {'UNT94 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT81_in_UPPER_SALT_FRK_HUC8'): {'UNT81 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT90_in_UPPER_SALT_FRK_HUC8_1'): {'UNT90 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT20_in_UPPER_SALT_FRK_HUC8_1'): {'UNT20 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT96_in_UPPER_SALT_FRK_HUC8'): {'UNT96 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT99_in_UPPER_SALT_FRK_HUC8'): {'UNT99 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT52_in_UPPER_SALT_FRK_HUC8'): {'UNT52 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT97_in_UPPER_SALT_FRK_HUC8_1'): {'UNT97 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT99_in_UPPER_SALT_FRK_HUC8_1'): {'UNT99 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT140_in_UPPER_SALT_FRK_HUC8_1'): {'UNT140 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT143_in_UPPER_SALT_FRK_HUC8_1'): {'UNT143 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT74_in_UPPER_SALT_FRK_HUC8_1'): {'UNT74 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT59_in_UPPER_SALT_FRK_HUC8_1'): {'UNT59 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT148_in_UPPER_SALT_FRK_HUC8'): {'UNT148 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT112_in_UPPER_SALT_FRK_HUC8'): {'UNT112 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT127_in_Liberal_Watershed_1'): {'UNT127 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT18_in_UPPER_SALT_FRK_HUC8'): {'UNT18 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT119_in_UPPER_SALT_FRK_HUC8'): {'UNT119 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT112_in_UPPER_SALT_FRK_HUC8_1'): {'UNT112 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'GREENLEAF_CREEK_1'): {'GREENLEAF CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT94_in_UPPER_SALT_FRK_HUC8'): {'UNT94 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT48_in_UPPER_SALT_FRK_HUC8'): {'UNT48 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT3_in_UPPER_SALT_FRK_HUC8_1'): {'UNT3 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT81_in_UPPER_SALT_FRK_HUC8_1'): {'UNT81 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT104_in_UPPER_SALT_FRK_HUC8_1'): {'UNT104 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT117_in_UPPER_SALT_FRK_HUC8'): {'UNT117 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT120_in_Liberal_Watershed'): {'UNT120 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'BOGGY_CREEK'): {'BOGGY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT100_in_UPPER_SALT_FRK_HUC8_1'): {'UNT100 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT21_in_UPPER_SALT_FRK_HUC8'): {'UNT21 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT22_in_UPPER_SALT_FRK_HUC8_1'): {'UNT22 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT95_in_UPPER_SALT_FRK_HUC8_1'): {'UNT95 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT33_in_UPPER_SALT_FRK_HUC8'): {'UNT33 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT147_in_UPPER_SALT_FRK_HUC8'): {'UNT147 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT234_in_Liberal_Watershed_1'): {'UNT234 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT61_in_UPPER_SALT_FRK_HUC8_1'): {'UNT61 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT145_in_UPPER_SALT_FRK_HUC8_1'): {'UNT145 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT87_in_UPPER_SALT_FRK_HUC8'): {'UNT87 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT47_in_UPPER_SALT_FRK_HUC8_1'): {'UNT47 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT129_in_Edith_Watershed'): {'UNT129 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", - " ('11060002',\n", - " 'UNT162_in_Liberal_Watershed_1'): {'UNT162 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT57_in_UPPER_SALT_FRK_HUC8_1'): {'UNT57 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'HACKBERRY_CREEK_1'): {'HACKBERRY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT90_in_UPPER_SALT_FRK_HUC8'): {'UNT90 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT28_in_UPPER_SALT_FRK_HUC8_1'): {'UNT28 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT63_in_UPPER_SALT_FRK_HUC8_1'): {'UNT63 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT16_in_UPPER_SALT_FRK_HUC8'): {'UNT16 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT45_in_UPPER_SALT_FRK_HUC8_1'): {'UNT45 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT235_in_Liberal_Watershed'): {'UNT235 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT82_in_UPPER_SALT_FRK_HUC8'): {'UNT82 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT98_in_UPPER_SALT_FRK_HUC8'): {'UNT98 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT59_in_UPPER_SALT_FRK_HUC8'): {'UNT59 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT48_in_UPPER_SALT_FRK_HUC8_1'): {'UNT48 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT73_in_UPPER_SALT_FRK_HUC8'): {'UNT73 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT86_in_UPPER_SALT_FRK_HUC8'): {'UNT86 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT2_in_UPPER_SALT_FRK_HUC8'): {'UNT2 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT69_in_UPPER_SALT_FRK_HUC8_1'): {'UNT69 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT53_in_UPPER_SALT_FRK_HUC8_1'): {'UNT53 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT101_in_UPPER_SALT_FRK_HUC8'): {'UNT101 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT13_in_UPPER_SALT_FRK_HUC8'): {'UNT13 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT145_in_UPPER_SALT_FRK_HUC8'): {'UNT145 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT94_in_Liberal_Watershed_1'): {'UNT94 in Liberal': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'YELLOWSTONE_CREEK_1'): {'YELLOWSTONE CREE': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT86_in_UPPER_SALT_FRK_HUC8_1'): {'UNT86 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'SALT_FORK_ARKANSAS_RIVER_1'): {'SALT FORK ARKANS': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT118_in_UPPER_SALT_FRK_HUC8'): {'UNT118 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT51_in_UPPER_SALT_FRK_HUC8_1'): {'UNT51 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT85_in_UPPER_SALT_FRK_HUC8'): {'UNT85 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT235_in_Liberal_Watershed_1'): {'UNT235 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT16_in_UPPER_SALT_FRK_HUC8_1'): {'UNT16 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT62_in_UPPER_SALT_FRK_HUC8_1'): {'UNT62 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT98_in_UPPER_SALT_FRK_HUC8_1'): {'UNT98 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'BOGGY_CREEK_1'): {'BOGGY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT100_in_UPPER_SALT_FRK_HUC8'): {'UNT100 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT12_in_UPPER_SALT_FRK_HUC8'): {'UNT12 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'RED_FORK_CREEK_1'): {'RED FORK CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT54_in_UPPER_SALT_FRK_HUC8_1'): {'UNT54 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT152_in_Liberal_Watershed_1'): {'UNT152 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT117_in_UPPER_SALT_FRK_HUC8_1'): {'UNT117 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT73_in_BluffCr_Watershed_1'): {'UNT73 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT77_in_UPPER_SALT_FRK_HUC8_1'): {'UNT77 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT118_in_UPPER_SALT_FRK_HUC8_1'): {'UNT118 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT93_in_UPPER_SALT_FRK_HUC8'): {'UNT93 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT75_in_UPPER_SALT_FRK_HUC8'): {'UNT75 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT15_in_UPPER_SALT_FRK_HUC8'): {'UNT15 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT96_in_UPPER_SALT_FRK_HUC8_1'): {'UNT96 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT3_in_UPPER_SALT_FRK_HUC8'): {'UNT3 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT108_in_UPPER_SALT_FRK_HUC8_1'): {'UNT108 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'RED_FORK_CREEK'): {'RED FORK CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT127_in_Liberal_Watershed'): {'UNT127 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT107_in_UPPER_SALT_FRK_HUC8_1'): {'UNT107 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT103_in_Liberal_Watershed_1'): {'UNT103 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT108_in_UPPER_SALT_FRK_HUC8'): {'UNT108 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT66_in_UPPER_SALT_FRK_HUC8_1'): {'UNT66 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT56_in_UPPER_SALT_FRK_HUC8_1'): {'UNT56 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT56_in_UPPER_SALT_FRK_HUC8'): {'UNT56 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT147_in_UPPER_SALT_FRK_HUC8_1'): {'UNT147 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT80_in_UPPER_SALT_FRK_HUC8_1'): {'UNT80 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT106_in_UPPER_SALT_FRK_HUC8'): {'UNT106 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT22_in_UPPER_SALT_FRK_HUC8'): {'UNT22 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT71_in_UPPER_SALT_FRK_HUC8_1'): {'UNT71 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT105_in_UPPER_SALT_FRK_HUC8'): {'UNT105 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT331_in_Edith_Watershed'): {'UNT331 in Edith': 'ESPG: 2763, NAD83(HARN) / Arizona West,'},\n", - " ('11060002',\n", - " 'UNT102_in_UPPER_SALT_FRK_HUC8_1'): {'UNT102 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT47_in_UPPER_SALT_FRK_HUC8'): {'UNT47 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT79_in_UPPER_SALT_FRK_HUC8_1'): {'UNT79 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT70_in_UPPER_SALT_FRK_HUC8_1'): {'UNT70 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT114_in_UPPER_SALT_FRK_HUC8_1'): {'UNT114 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT113_in_UPPER_SALT_FRK_HUC8_1'): {'UNT113 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT82_in_UPPER_SALT_FRK_HUC8_1'): {'UNT82 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT68_in_UPPER_SALT_FRK_HUC8'): {'UNT68 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT26_in_UPPER_SALT_FRK_HUC8_1'): {'UNT26 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT60_in_UPPER_SALT_FRK_HUC8'): {'UNT60 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT103_in_UPPER_SALT_FRK_HUC8_1'): {'UNT103 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT67_in_UPPER_SALT_FRK_HUC8'): {'UNT67 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'JUG_MOTTE_CREEK'): {'JUG MOTTE CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT44_in_UPPER_SALT_FRK_HUC8_1'): {'UNT44 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT113_in_UPPER_SALT_FRK_HUC8'): {'UNT113 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT76_in_UPPER_SALT_FRK_HUC8_1'): {'UNT76 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT91_in_UPPER_SALT_FRK_HUC8'): {'UNT91 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT30_in_UPPER_SALT_FRK_HUC8_1'): {'UNT30 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT51_in_UPPER_SALT_FRK_HUC8'): {'UNT51 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT23_in_UPPER_SALT_FRK_HUC8_1'): {'UNT23 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT15_in_UPPER_SALT_FRK_HUC8_1'): {'UNT15 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT77_in_UPPER_SALT_FRK_HUC8'): {'UNT77 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT65_in_UPPER_SALT_FRK_HUC8_1'): {'UNT65 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT8_in_UPPER_SALT_FRK_HUC8'): {'UNT8 in UPPER SA': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT152_in_Liberal_Watershed'): {'UNT152 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT83_in_UPPER_SALT_FRK_HUC8'): {'UNT83 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT31_in_UPPER_SALT_FRK_HUC8'): {'UNT31 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT63_in_UPPER_SALT_FRK_HUC8'): {'UNT63 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'TURKEY_CREEK_1'): {'TURKEY CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT69_in_UPPER_SALT_FRK_HUC8'): {'UNT69 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT104_in_UPPER_SALT_FRK_HUC8'): {'UNT104 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT162_in_Liberal_Watershed'): {'UNT162 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'COTTONWOOD_CREEK'): {'COTTONWOOD CREEK': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT234_in_Liberal_Watershed'): {'UNT234 in Libera': 'ESPG: 2761, NAD83(HARN) / Arizona East,'},\n", - " ('11060002',\n", - " 'UNT6_in_BluffCr_Watershed'): {'UNT6 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT6_in_BluffCr_Watershed_1'): {'UNT6 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT75_in_BluffCr_Watershed_1'): {'UNT75 in BluffCr': 'ESPG: 2762, NAD83(HARN) / Arizona Central,'},\n", - " ('11060002',\n", - " 'UNT28_in_UPPER_SALT_FRK_HUC8'): {'UNT28 in UPPER S': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT146_in_UPPER_SALT_FRK_HUC8'): {'UNT146 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('11060002',\n", - " 'UNT148_in_UPPER_SALT_FRK_HUC8_1'): {'UNT148 in UPPER': 'ESPG: 2267, NAD83 / Oklahoma North (ftUS),'},\n", - " ('13020102',\n", - " 'RioGrandeT8'): {'RioGrandeT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaAnchaT1'): {'CanadaAnchaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusasTrib2'): {'RioTusasT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaJarita'): {'CanadaJarita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeBorracho'): {'CanadadeBorracho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaos_1'): {'PueblodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LatirCreekTrib1'): {'LatirCreekTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoMiranda'): {'ArroyoMiranda': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1a_1'): {'GrandeRanchoT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT1a'): {'ArroyoPuncheT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeRancho'): {'RioGrandeRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPunche'): {'Arroyo Punche': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT4'): {'ArroyoPuncheT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'SaltDraw'): {'SaltDraw': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'CanadadelaOrill'): {'CanadadelaOrill': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT3b1'): {'PueblodeTaosT3b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaSarcoT1'): {'CanadaSarcoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRito'): {'ElRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'FernandodeTaos'): {'FernandodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajePetacaT1a'): {'AguajePetacaT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT2'): {'PueblodeTaosT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusas_1'): {'RioTusas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT3a1'): {'ArroyoPuncheT3a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitos'): {'RioVallecitos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT2a'): {'PueblodeTaosT2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT4'): {'ElRitoT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LatirCreekTrib2'): {'LatirCreekTrib2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioPuebloTrib1'): {'RioPuebloTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPino'): {'ArroyoPino': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT11b'): {'RioGrandeT11b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaSarcoT2'): {'CanadaSarcoT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioOjoCalienteT1'): {'RioOjoCalienteT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT3'): {'RioVallecitosT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT12c'): {'RioGrandeT12c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'BobcatCreek'): {'BobcatCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaJarosita'): {'CanadaJarosita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajedelaPetaca_1'): {'AguajedelaPetaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoOcole'): {'ArroyoOcole': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyolaMina'): {'ArroyolaMina': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT6'): {'ElRitoT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajedelaPetacaT2'): {'AguajePetacaT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaAnchaNorth'): {'CanadaAnchaNorth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1b3'): {'GrandeRanchoT1b3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoRancho'): {'ArroyoRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT3'): {'ElRitoT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoelRitoT1'): {'ArroyoelRitoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaPueblo'): {'CanadaPueblo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT4a'): {'PueblodeTaosT4a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RedRiver'): {'RedRiver': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT13'): {'RioGrandeT13': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10f'): {'RioGrandeT10f': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT8'): {'ElRitoT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CabrestoCreek'): {'CabrestoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10a'): {'RioGrandeT10a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT11a'): {'RioGrandeT11a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RiodeTruchas'): {'RiodeTruchas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'MadredelPrado'): {'MadredelPrado': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadePiedra'): {'CanadadePiedra': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT3'): {'AlmagreT3': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1b4'): {'GrandeRanchoT1b4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT11c'): {'RioGrandeT11c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioOjoCaliente_1'): {'RioOjoCaliente': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RedRiverTrib1'): {'RedRiverTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaCorral'): {'CanadaCorral': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PuebloArroyo'): {'PuebloArroyo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'FernandodeTaosT1'): {'FernandodeTaosT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'BitterCreek'): {'BitterCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT11'): {'RioGrandeT11': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10e'): {'RioGrandeT10e': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1b'): {'GrandeRanchoT1b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusasTrib3'): {'RioTusasT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeApodaca'): {'CanadadeApodaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajePetacaT3'): {'AguajePetacaT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT7'): {'ElRitoT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadelAgua'): {'CanadadelAgua': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT2'): {'ArroyoPuncheT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajePetacaT1'): {'AguajePetacaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT2b1'): {'AlmagreT2b1': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'EmbudoCreekTrib1'): {'EmbudoCreekTrib1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LaMaderaT1a'): {'LaMaderaT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9'): {'RioGrandeT9': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitos_1'): {'RioVallecitos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PiedraLumbre'): {'PiedraLumbre': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1_1'): {'GrandeRanchoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LatirCreekTrib3a'): {'LatirCreekTrib3a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaos'): {'PueblodeTaos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1b2'): {'GrandeRanchoT1b2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT2b'): {'RioVallecitosT2b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoLagunitas'): {'ArroyoLagunitas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1e'): {'GrandeRanchoT1e': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AngelCanyon'): {'AngelCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanoncitoMadera'): {'CanoncitoMadera': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT4'): {'AlmagreT4': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'RioVallecitosT7'): {'RioVallecitosT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1a'): {'GrandeRanchoT1a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LagunitasT3'): {'LagunitasT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoelRito'): {'ArroyoelRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9a'): {'RioGrandeT9a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoCerroNegro'): {'ArroyoCerroNegro': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1a1'): {'GrandeRanchoT1a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LaMaderaT1b'): {'LaMaderaT1b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT1'): {'ArroyoPuncheT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioPueblo'): {'RioPueblo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1f'): {'GrandeRanchoT1f': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'DesagueAguita'): {'DesagueAguita': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10d1'): {'RioGrandeT10d1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaBuenaVista'): {'CanadaBuenaVista': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaLemitas'): {'CanadaLemitas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1d'): {'GrandeRanchoT1d': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RitoCieneguilla'): {'RitoCieneguilla': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT3b'): {'ArroyoPuncheT3b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT1'): {'RioVallecitosT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ChamizalCreek'): {'ChamizalCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeOso'): {'CanadadeOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaEntranasT'): {'CanadaEntranasT': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT4'): {'RioVallecitosT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9b'): {'RioGrandeT9b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioOjoCaliente'): {'RioOjoCaliente': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaTioPula'): {'CanadaTioPula': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT4a1'): {'PueblodeTaosT4a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioChiquito1'): {'RioChiquito1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadelaCruz'): {'CanadadelaCruz': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT6'): {'RioVallecitosT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LamyCanyon'): {'LamyCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeOso_1'): {'CanadadeOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaAlamos'): {'CanadaAlamos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioHondo'): {'RioHondo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT2a'): {'RioVallecitosT2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioOjoCalienteT2'): {'RioOjoCalienteT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'EmbudoCreek'): {'EmbudoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'SandlinArroyo'): {'SandlinArroyo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LatirCreekTrib3'): {'LatirCreekTrib3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioVallecitosT8'): {'RioVallecitosT8': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RedRiverTrib2'): {'RedRiverTrib2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoGavilan'): {'ArroyoGavilan': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9a2'): {'RioGrandeT9a2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'SpringCreekSouth'): {'SpringCreekSouth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT2b'): {'AlmagreT2b': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'RioGrandeT7'): {'RioGrandeT7': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaOjoSarco'): {'CanadaOjoSarco': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaAbeque'): {'CanadaAbeque': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10'): {'RioGrandeT10': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LittleTusasCreek'): {'LittleTusasCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusasTrib1'): {'RioTusasT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT3A'): {'PueblodeTaosT3a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioLucero'): {'RioLucero': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LatirCreekTrib2a'): {'LatirCreekTrib2a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRitoT8a'): {'ElRitoT8a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RiodeTruchasT1'): {'RiodeTruchasT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaMontecito'): {'CanadaMontecito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusas'): {'RioTusas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10c'): {'RioGrandeT10c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT12'): {'RioGrandeT12': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'MartinezCanyon'): {'MartinezCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeOjito'): {'CanadadeOjito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT2'): {'AlmagreT2': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'URGUnnamedStream'): {'URGUnnamedStream': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT3a'): {'AlmagreT3a': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'RioGrandeT12a'): {'RioGrandeT12a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1b1'): {'GrandeRanchoT1b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoSecoNorth'): {'ArroyoSecoNorth': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrande'): {'RioGrande': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10b'): {'RioGrandeT10b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1'): {'GrandeRanchoT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT12b'): {'RioGrandeT12b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeLorenzo'): {'CanadadeLorenzo': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanondelaMadera'): {'CanondelaMadera': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'BarelaCanyon'): {'BarelaCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT4b'): {'PueblodeTaosT4b': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT7a'): {'RioGrandeT7a': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeRancho_1'): {'RioGrandeRancho': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadelOso'): {'CanadadelOso': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AcequiadelJaral'): {'AcequiadelJaral': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9c2'): {'RioGrandeT9c2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT3b1'): {'ArroyoPuncheT3b1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AguajedelaPetaca'): {'AguajedelaPetaca': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoAlmagre'): {'ArroyoAlmagre': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'RioVallecitosT5'): {'RioVallecitosT5': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9a1'): {'RioGrandeT9a1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'JarosoCreek'): {'JarosoCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LaMaderaT1'): {'LaMaderaT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaEntranas'): {'CanadaEntranas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PicurisCanyon'): {'PicurisCanyon': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ArroyoPuncheT6'): {'ArroyoPuncheT6': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'ElRito_1'): {'ElRito': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'LagunitasT2'): {'LagunitasT2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT9a11'): {'RioGrandeT9a11': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RiodelasTrampas'): {'RiodelasTrampas': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaApaches'): {'CanadaApaches': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT3'): {'PueblodeTaosT3': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'GrandeRanchoT1c'): {'GrandeRanchoT1c': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'BlancoSouthT5'): {'BlancoSouthT5': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'RioVallecitosT9'): {'RioVallecitosT9': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaPinoReale'): {'CanadaPinoReale': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioTusasTrib4'): {'RioTusasT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadadeJacinto'): {'CanadadeJacinto': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT11c1'): {'RioGrandeT11c1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AlmagreT2a'): {'AlmagreT2a': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'LatirCreek'): {'LatirCreek': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'PueblodeTaosT4'): {'PueblodeTaosT4': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioChiquito2'): {'RioChiquito2': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'BlancoSouthT4'): {'BlancoSouthT4': 'ESPG: 2258, NAD83 / New Mexico Central (ftUS),'},\n", - " ('13020102',\n", - " 'ElRitoT5'): {'ElRitoT5': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanadaAncha'): {'CanadaAncha': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'CanondelosAlamos'): {'CanondelosAlamos': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'AnchaNorthT1'): {'AnchaNorthT1': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('13020102',\n", - " 'RioGrandeT10d'): {'RioGrandeT10d': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('17060305',\n", - " 'cottonwood_creek_1_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'whitman_creek_ras'): {'whitman_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'shebang_creek_tributary1_ras'): {'shebang_creek_tr': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'shebang_creek_tributary2_ras'): {'shebang_creek_tr': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'meadow_creek_1_ras'): {'meadow_creek_1': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'orchard_creek_ras'): {'orchard_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'main_three_mile_ck_trib1_ras'): {'main_three_mile_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'red_river_2_ras'): {'red_river_2': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'cottonwood_creek_tributary_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'threemile_creek_ras_1'): {'threemile_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'stockney_creek_tributary1_ras'): {'stockney_creek_t': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'stockney_creek_ras'): {'stockney_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'threemile_creek_trib1a_ras'): {'threemile_creek_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'threemile_creek_ras'): {'threemile_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'long_haul_creek_ras'): {'long_haul_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'south_fork_clearwater_river_3_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'cole_creek_ras'): {'cole_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'south_fork_clearwater_river_2_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'threemile_creek_trib1b_ras'): {'threemile_creek_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'elk_creek_ras'): {'elk_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'main_three_mile_ck_trib2_ras'): {'main_three_mile_': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'rabbit_creek_ras'): {'rabbit_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'clearwater_river1_tributary3_ras'): {'clearwater_river': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'south_fork_cottonwood_creek_ras'): {'south_fork_cotto': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'sally_ann_creek_ras'): {'sally_ann_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'shebang_creek_ras'): {'shebang_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'cottonwood_creek_ras'): {'cottonwood_creek': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('17060305',\n", - " 'south_fork_clearwater_river_1_ras'): {'south_fork_clear': 'ESPG: 2243, NAD83 / Idaho West (ftUS),'},\n", - " ('12030107',\n", - " 'KingsCreekTrib1B_4'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'ELD004_1'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'ELD004'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'KingsCreekTrib1B_1'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " '010-07-BrushyCreek'): {'Brushy': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'BrushyCr_1'): {'BrushyCreek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),', 'Trib': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'KingsCreekTrib1B_3'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'KingsCreekTrib1B_2'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'KingsCreekTrib1B'): {'Kng Crk -1B': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'ELD004_2'): {'Bachelor Creek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'KC1_KC1B_LOMR'): {'KC-1': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " 'BrushyCr'): {'BrushyCreek': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),', 'Trib': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('12030107',\n", - " '010-07-BrushyCreek_1'): {'Brushy': 'ESPG: 2276, NAD83 / Texas North Central (ftUS),'},\n", - " ('08060202',\n", - " 'Comm_Creek_Trib_1'): {'Commissioners Cr': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Big_Sand_Creek_Trib_1'): {'Big Sand Creek T': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Comm_Creek_Trib_1-1'): {'Commissioners Cr': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Porter_Creek_Trib_3'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Jones_Creek'): {'Jones Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Maxie_Creek'): {'Maxie Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Bogue_Falia_Creek_Trib_2-1'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Fivemile_Creek'): {'Fivemile Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Porter_Creek_Trib_1-2'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Bogue_Falia_Creek_Trib_3'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Harts_Creek'): {'Harts Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Porter_Creek_Trib_1'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Potter_Creek'): {'Potter Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Porter_Creek_Trib_1-3'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Bogue_Falia_Creek'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Bogue_Falia_Creek_Trib_2'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Porter_Creek_Trib_1-1'): {'Porter Creek Tri': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Bogue_Falia_Creek_Trib_5'): {'Bogue Falia Cree': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Big_Black_River_Trib_1'): {'Big Black River': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Murphy_Creek'): {'Murphy Creek': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('08060202',\n", - " 'Fivemile_Creek_Trib_3'): {'Fivemile Creek T': 'ESPG: 2255, NAD83 / Mississippi West (ftUS),'},\n", - " ('16020203',\n", - " 'S_EastWeberFOA'): {'Nobletts Creek': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),', 'Weber River': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),', 'SF Weber River': 'ESPG: 2259, NAD83 / New Mexico West (ftUS),'},\n", - " ('16020203',\n", - " 'Center_Creek'): {'Center Creek': 'ESPG: 2281, NAD83 / Utah Central (ft),'},\n", - " ('18070204',\n", - " 'BorregoCyn_Existing'): {'Borrego Cyn': 'ESPG: 2230, NAD83 / California zone 6 (ftUS),'},\n", - " ('05020006',\n", - " 'PIKERUN1'): {'PIKERUN1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP771'): {'NP771': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'INDIANCR'): {'INDIANCR': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP708'): {'NP708': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'WILSONRUN'): {'WILSONRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP499'): {'NP499': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'T9YOUGH'): {'T9YOUGH': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'CEDARCR'): {'CEDARCR': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP535'): {'NP535': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'TWNSHPRN'): {'TWNSHPRN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP720'): {'NP720': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'BuffRnT1'): {'BuffRnT1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'JcbsCrkT3'): {'JcbsCrkT3': 'ESPG: 3365, NAD83(HARN) / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP709'): {'NP709': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'JACOBCR1'): {'JACOBCR1': 'ESPG: 3365, NAD83(HARN) / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'JcbsCrkT2'): {'JcbsCrkT2': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'WEITYRUN'): {'WEITYRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'STAUFERN'): {'STAUFERN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'JcbsCrkT4'): {'JcbsCrkT4': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP500'): {'NP500': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP707'): {'NP707': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'BARRENRUN'): {'BARRENRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'LICKRUN'): {'LICKRUN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'YoughyRT1'): {'YoughyRT1': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP719'): {'NP719': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP180'): {'NP180': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'T8YOUGHI'): {'T8YOUGHI': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP537'): {'NP537': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'ANDREWS2'): {'ANDREWS2': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'NP620'): {'NP620': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('05020006',\n", - " 'LITTLERN'): {'LITTLERN': 'ESPG: 2272, NAD83 / Pennsylvania South (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb4'): {'Stream CB-4': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'HallCreek'): {'Hall Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'mosleybranch'): {'Mosley Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CoxtownCreek'): {'Cocktowncr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB_CorrectedEffective'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'NortheastBranchWB'): {'Northeast Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'clydesbranch'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb16_1'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb1_1'): {'Stream CB-1': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB16_Proposed'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'ChewCreek'): {'Chew Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'PatuxentRiver_1'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb1'): {'Stream CB-1': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'MPR_Proposed'): {'MiddlePatuxent': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'StLeonardCreek'): {'St_Leonard_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'MillCreek'): {'Mill_Cr_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb18_1'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'LaurelRaceTrack'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'HuntingCreek'): {'HuntingCr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB16_CorrectedEffective'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'middlepatuxent'): {'MiddlePatuxent': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB18_CorrectedEffective'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),', 'CB-18 Split Flow': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'JohnsCreek'): {'JohnMosleyCr': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'PatuxentRiver'): {'Patuxent River': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'SewellCreek'): {'Sewell_Branch_CL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb16'): {'Stream CB-16': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'clydesbranch_1'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'BattleCreekTrib'): {'Battle Creek': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'LittleLyonsCreek'): {'LittleLyonsCL': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'StreamCB4Prop'): {'Stream CB-4': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB18_Proposed'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),', 'CB-18 Split Flow': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'CB_Proposed'): {'Clydes Branch': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'streamcb18'): {'Stream CB-18': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('02060006',\n", - " 'BattleCreekCypressSwamp'): {'BattleCrCypress': 'ESPG: 2248, NAD83 / Maryland (ftUS),'},\n", - " ('14050005',\n", - " 'MarvineCreek'): {'MarvineCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'StrawberryTrib'): {'Strawberry Trib': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'DryCreek'): {'Dry_Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'NorthForkWhiteRiver'): {'NorthFork_WR': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'CaveGulch'): {'Cave Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'MillerCreek'): {'Miller_Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'StrawberryCreek'): {'StrawberryCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'UteCreek'): {'UteCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'WhiteRiver_Seg3'): {'WhiteRiv_Seg3': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'BigBeaverCreek'): {'BigBeaverCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'FawnCreek'): {'FawnCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'NorthElkCreek'): {'NorthElkCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'SheepCreek'): {'SheepCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'LittleBeaverCreek'): {'LBC': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'FourmileGulch'): {'Fourmile Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'WhiteMeeker'): {'White_R_Meeker': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'UpperCurtisCreek'): {'UpperCurtisCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'WhiteRiver_Seg4'): {'WhiteRiv_Seg4': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'CoalCreek'): {'CoalCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'CurtisCreek_Meeker'): {'Curtis Creek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'SulphurCreek'): {'SulphurCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'EastMillerCreek'): {'EastMillerCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'DevilsHole'): {'Devils Hole': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'EFlagCreek'): {'EFlagCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'SouthForkWhiteRiver'): {'thForkWhiteRiver': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'OylerGulch'): {'Oyler Gulch': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('14050005',\n", - " 'FlagCreek'): {'FlagCreek': 'ESPG: 2231, NAD83 / Colorado North (ftUS),'},\n", - " ('15040007',\n", - " '1242_ras'): {'1242': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('15040007',\n", - " '1195_ras'): {'1195': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('15040007',\n", - " '1236_ras'): {'1236': 'ESPG: 2222, NAD83 / Arizona East (ft),'},\n", - " ('04030101',\n", - " 'UT15Milw'): {'UT15Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", - " ('04030101',\n", - " 'EastTwin_trib'): {'East Twin': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", - " ('04030101',\n", - " 'UT13_Milw'): {'UT13Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", - " ('04030101',\n", - " 'Jambo'): {'Jambo': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", - " ('04030101',\n", - " 'UT81Milw'): {'UT81Milw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", - " ('04030101',\n", - " 'UT5Milw'): {'UT5MIlw': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", - " ('04030101',\n", - " 'EastTwin'): {'East Twin': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", - " ('04030101',\n", - " 'UT2RiveredgeCrk'): {'UT2RiveredgeCrk': 'ESPG: 8313, NAD83(2011) / Oregon Canyon City-Burns zone (m),'},\n", - " ('04030101',\n", - " 'Krok'): {'Krok': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'},\n", - " ('04030101',\n", - " 'Buck'): {'Buck': 'ESPG: 2288, NAD83 / Wisconsin Central (ftUS),'}})" - ] - }, - "execution_count": 26, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "crs_map" - ] - }, - { - "cell_type": "markdown", - "id": "dd7a0bfe-921f-4b44-a7f5-887b1139d669", - "metadata": {}, - "source": [ - "__Findings:__\n", - "\n", - "To map each cross-section of a model @ HUC#, there has to be a shared attribute between a model @ HUC#'s cross section w/in its XS layer & the details provided within a model @ HUC#'s conflation json file.\n", - " \n", - "- Each conflation json file reveals ...\n", - " - Per reach, there is a set of cross-sections.\n", - " - Within each model's cross-section (XS) layers, there are a set of cross-section instances - each instance featuring a unique \"thalweg\" (aka \"min_elevation\"), \"xs_max_elevation\" (aka \"max_elevation\"), \"reach_id\" (\"reaches\"), & \"river_station\" (aka \"xs_id\")\n", - "\n", - "- Each model @ HUC#'s XS layer contains a collection of cross-section instancees. Thus, each unique cross-section w/in a given model @ HUC#'s XS layer will need to be mapped in such a way to allow each cross-section to be associated with a feature ID (aka \"reach_id\" and/or \"network_to_id\")\n", - "\n", - "- \"river_reach_rs\" is formatted differently across models' XS layers, however multplie keys referenced in the conflation jsons can be referenced to obtain the \"river_reach_rs\" from the jsons - as a result, the mapping of IDs to each model's cross-section instance will be based on the info extracted from a model @ HUC#'s conflation.json\n" - ] - }, - { - "cell_type": "markdown", - "id": "56e8ca07-a893-423a-8b35-865c9cf6c5bf", - "metadata": {}, - "source": [ - "##### Next Step: \n", - "##### Per HUC, consolidate each XS by River name (aka \"model\") & save as a geopandas dataframe (ensure CRS is consistent for each geopandas dataframe; check with QGIS)\n", - "\n", - "1) Consolidate XS by river. For each river, save their consolidate XS rows as a geopandas dataframe per river. Ensure their CRS are same.\n", - "Keep their unique inherited CRS. Track HUC\n", - "\n", - "2) Consolidate each \"river's\" geopandas dataframe by HUC & save them as a geoparquet, store in S3\n", - "\n", - "3) Each geoparquets can then be stored as Apache iceberg tables\n", - "\n", - "4) Store Apache iceberg tables in S3\n", - "\n", - "\n", - "Collection of geoparquets representing each river at a given HUC\n", - "\n", - "model_id2gpkg_map[" - ] - }, - { - "cell_type": "markdown", - "id": "2677869f-a354-4bc3-858a-b14da790e2b8", - "metadata": {}, - "source": [ - "## Demo VII: \n", - "### Querying Ripple Layers by HUC Number" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "06748e4a-1a94-492c-9d07-4f71cd956f33", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "dict_keys(['processing', 'reaches', 'rating_curves', 'network', 'models', 'metadata', 'rating_curves_no_map'])" - ] - }, - "execution_count": 27, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rip_huc2gpkg_map[\"07130010\"].keys()" - ] - }, - { - "cell_type": "code", - "execution_count": 28, - "id": "791efbaa-31f8-42fe-850f-67774d56a7c7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    reach_idnwm_to_idgeometry
    01358549813585296MULTILINESTRING ((460724.236 1959986.07, 46074...
    11358549413585228MULTILINESTRING ((461234.625 1961261.908, 4612...
    21380249013802570MULTILINESTRING ((459790.513 1945209.891, 4597...
    31380248813802490MULTILINESTRING ((460693.836 1945689.426, 4606...
    41380249613802488MULTILINESTRING ((461815.853 1944975.208, 4617...
    ............
    4541380263613802670MULTILINESTRING ((427762.55 1940442.3, 427779....
    4551380266413802712MULTILINESTRING ((428063.956 1939575.769, 4280...
    4561380272413802756MULTILINESTRING ((427021.923 1937345.91, 42715...
    4571380290413802916MULTILINESTRING ((434263.443 1931451.676, 4342...
    4581380288813802904MULTILINESTRING ((434587.476 1931941.347, 4345...
    \n", - "

    459 rows × 3 columns

    \n", - "
    " - ], - "text/plain": [ - " reach_id nwm_to_id geometry\n", - "0 13585498 13585296 MULTILINESTRING ((460724.236 1959986.07, 46074...\n", - "1 13585494 13585228 MULTILINESTRING ((461234.625 1961261.908, 4612...\n", - "2 13802490 13802570 MULTILINESTRING ((459790.513 1945209.891, 4597...\n", - "3 13802488 13802490 MULTILINESTRING ((460693.836 1945689.426, 4606...\n", - "4 13802496 13802488 MULTILINESTRING ((461815.853 1944975.208, 4617...\n", - ".. ... ... ...\n", - "454 13802636 13802670 MULTILINESTRING ((427762.55 1940442.3, 427779....\n", - "455 13802664 13802712 MULTILINESTRING ((428063.956 1939575.769, 4280...\n", - "456 13802724 13802756 MULTILINESTRING ((427021.923 1937345.91, 42715...\n", - "457 13802904 13802916 MULTILINESTRING ((434263.443 1931451.676, 4342...\n", - "458 13802888 13802904 MULTILINESTRING ((434587.476 1931941.347, 4345...\n", - "\n", - "[459 rows x 3 columns]" - ] - }, - "execution_count": 28, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rip_huc2gpkg_map[\"07130010\"][\"reaches\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 29, - "id": "e74842d8-a1a1-4126-85cc-f02d94a036fe", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    reach_idus_flowus_depthus_wseds_depthds_wseboundary_condition
    013801442432.0683.12.6680.5nd
    113801442452.0683.12.7680.6nd
    2138014421672.5683.64.6682.5nd
    3138014422892.6683.75.2683.1nd
    4138014424113.2684.35.5683.4nd
    ........................
    44959138038722393925.4622.126.4622.0kwse
    44960138038722569625.4622.126.4622.0kwse
    44961138038722769825.4622.126.4622.0kwse
    44962138038722940625.4622.126.4622.0kwse
    44963138038722950925.4622.126.4622.0kwse
    \n", - "

    44964 rows × 7 columns

    \n", - "
    " - ], - "text/plain": [ - " reach_id us_flow us_depth us_wse ds_depth ds_wse \\\n", - "0 13801442 43 2.0 683.1 2.6 680.5 \n", - "1 13801442 45 2.0 683.1 2.7 680.6 \n", - "2 13801442 167 2.5 683.6 4.6 682.5 \n", - "3 13801442 289 2.6 683.7 5.2 683.1 \n", - "4 13801442 411 3.2 684.3 5.5 683.4 \n", - "... ... ... ... ... ... ... \n", - "44959 13803872 23939 25.4 622.1 26.4 622.0 \n", - "44960 13803872 25696 25.4 622.1 26.4 622.0 \n", - "44961 13803872 27698 25.4 622.1 26.4 622.0 \n", - "44962 13803872 29406 25.4 622.1 26.4 622.0 \n", - "44963 13803872 29509 25.4 622.1 26.4 622.0 \n", - "\n", - " boundary_condition \n", - "0 nd \n", - "1 nd \n", - "2 nd \n", - "3 nd \n", - "4 nd \n", - "... ... \n", - "44959 kwse \n", - "44960 kwse \n", - "44961 kwse \n", - "44962 kwse \n", - "44963 kwse \n", - "\n", - "[44964 rows x 7 columns]" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rip_huc2gpkg_map[\"07130010\"][\"rating_curves\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 30, - "id": "9dfba0dd-ff78-48aa-97ee-a9cb864619f6", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    nwm_to_idupdated_to_id
    013585228NaN
    113585296NaN
    21380144813801448.0
    313801478NaN
    413801448NaN
    .........
    4541380223213802232.0
    45513803712NaN
    45613802232NaN
    45713803712NaN
    45813803874NaN
    \n", - "

    459 rows × 2 columns

    \n", - "
    " - ], - "text/plain": [ - " nwm_to_id updated_to_id\n", - "0 13585228 NaN\n", - "1 13585296 NaN\n", - "2 13801448 13801448.0\n", - "3 13801478 NaN\n", - "4 13801448 NaN\n", - ".. ... ...\n", - "454 13802232 13802232.0\n", - "455 13803712 NaN\n", - "456 13802232 NaN\n", - "457 13803712 NaN\n", - "458 13803874 NaN\n", - "\n", - "[459 rows x 2 columns]" - ] - }, - "execution_count": 30, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rip_huc2gpkg_map[\"07130010\"][\"network\"]" - ] - }, - { - "cell_type": "code", - "execution_count": 31, - "id": "dedebd90-1c83-4671-ba6b-2278e04137e7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    collection_idmodel_idmodel_nameconflate_model_job_idconflate_model_status
    0mip_07130010sa_7sa_7cec7ec7c-fbfa-48da-87ce-c13632b59f09succeeded
    1mip_07130010sa_1sa_12c0cd12a-5042-4265-b98e-8f6540cb6e4esucceeded
    2mip_07130010sa_6sa_67d85fe34-8960-42c0-9762-6946317a348asucceeded
    3mip_07130010sa_5sa_51335125c-2d64-4c4c-a4f7-28fe1cc0e75bsucceeded
    4mip_07130010sa_4sa_4fc5ed1ef-1b3c-4f5e-84ba-b4a45aae15b0succeeded
    5mip_07130010LaMoineLaMoine212d132f-a10f-48f2-9256-698fb3535860succeeded
    6mip_07130010KilljordanKilljordanee89af84-44ea-40a4-9b4c-eea1be29d270succeeded
    \n", - "
    " - ], - "text/plain": [ - " collection_id model_id model_name conflate_model_job_id \\\n", - "0 mip_07130010 sa_7 sa_7 cec7ec7c-fbfa-48da-87ce-c13632b59f09 \n", - "1 mip_07130010 sa_1 sa_1 2c0cd12a-5042-4265-b98e-8f6540cb6e4e \n", - "2 mip_07130010 sa_6 sa_6 7d85fe34-8960-42c0-9762-6946317a348a \n", - "3 mip_07130010 sa_5 sa_5 1335125c-2d64-4c4c-a4f7-28fe1cc0e75b \n", - "4 mip_07130010 sa_4 sa_4 fc5ed1ef-1b3c-4f5e-84ba-b4a45aae15b0 \n", - "5 mip_07130010 LaMoine LaMoine 212d132f-a10f-48f2-9256-698fb3535860 \n", - "6 mip_07130010 Killjordan Killjordan ee89af84-44ea-40a4-9b4c-eea1be29d270 \n", - "\n", - " conflate_model_status \n", - "0 succeeded \n", - "1 succeeded \n", - "2 succeeded \n", - "3 succeeded \n", - "4 succeeded \n", - "5 succeeded \n", - "6 succeeded " - ] - }, - "execution_count": 31, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "rip_huc2gpkg_map[\"07130010\"][\"models\"]" - ] - }, - { - "attachments": { - "2255f9dc-6db9-4a19-b160-559958de2563.png": { - "image/png": "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" - }, - "cb93a3d1-2477-4ec1-bddd-0da089352aa6.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "b3747f8a-8b23-4bdd-b7a7-4a9add4df61c", - "metadata": {}, - "source": [ - "# Write local files to S3 (for dev purposes only)\n", - "![image.png](attachment:cb93a3d1-2477-4ec1-bddd-0da089352aa6.png)\n", - "![image.png](attachment:2255f9dc-6db9-4a19-b160-559958de2563.png)" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "id": "2e54d9d3-b04e-434b-9576-2a861e4c9938", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "defaultdict(None,\n", - " {'xs_data/mip_07130010/huc_07130010.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_07130010/huc_07130010.gpkg',\n", - " 'xs_data/mip_07130010/huc_07130010.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_07130010/huc_07130010.parquet',\n", - " 'xs_data/mip_09020301/huc_09020301.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_09020301/huc_09020301.parquet',\n", - " 'xs_data/mip_09020301/huc_09020301.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_09020301/huc_09020301.gpkg',\n", - " 'xs_data/mip_06040002/huc_06040002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_06040002/huc_06040002.parquet',\n", - " 'xs_data/mip_06040002/huc_06040002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_06040002/huc_06040002.gpkg',\n", - " 'xs_data/mip_03170004/huc_03170004.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_03170004/huc_03170004.gpkg',\n", - " 'xs_data/mip_03170004/huc_03170004.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_03170004/huc_03170004.parquet',\n", - " 'xs_data/mip_01020002/huc_01020002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_01020002/huc_01020002.gpkg',\n", - " 'xs_data/mip_01020002/huc_01020002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_01020002/huc_01020002.parquet',\n", - " 'xs_data/mip_10120203/huc_10120203.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_10120203/huc_10120203.parquet',\n", - " 'xs_data/mip_10120203/huc_10120203.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_10120203/huc_10120203.gpkg',\n", - " 'xs_data/mip_11060002/huc_11060002.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_11060002/huc_11060002.gpkg',\n", - " 'xs_data/mip_11060002/huc_11060002.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_11060002/huc_11060002.parquet',\n", - " 'xs_data/mip_13020102/huc_13020102.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_13020102/huc_13020102.gpkg',\n", - " 'xs_data/mip_13020102/huc_13020102.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_13020102/huc_13020102.parquet',\n", - " 'xs_data/mip_17060305/huc_17060305.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_17060305/huc_17060305.gpkg',\n", - " 'xs_data/mip_17060305/huc_17060305.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_17060305/huc_17060305.parquet',\n", - " 'xs_data/mip_12030107/huc_12030107.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_12030107/huc_12030107.gpkg',\n", - " 'xs_data/mip_12030107/huc_12030107.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_12030107/huc_12030107.parquet',\n", - " 'xs_data/crs_map/crs_mapping.pickle': '/home/sylvia.chin/Desktop/iceberg/xs_data/crs_map/crs_mapping.pickle',\n", - " 'xs_data/mip_08060202/huc_08060202.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_08060202/huc_08060202.gpkg',\n", - " 'xs_data/mip_08060202/huc_08060202.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_08060202/huc_08060202.parquet',\n", - " 'xs_data/mip_16020203/huc_16020203.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_16020203/huc_16020203.gpkg',\n", - " 'xs_data/mip_16020203/huc_16020203.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_16020203/huc_16020203.parquet',\n", - " 'xs_data/mip_18070204/huc_18070204.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_18070204/huc_18070204.gpkg',\n", - " 'xs_data/mip_18070204/huc_18070204.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_18070204/huc_18070204.parquet',\n", - " 'xs_data/mip_05020006/huc_05020006.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_05020006/huc_05020006.parquet',\n", - " 'xs_data/mip_05020006/huc_05020006.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_05020006/huc_05020006.gpkg',\n", - " 'xs_data/mip_02060006/huc_02060006.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_02060006/huc_02060006.gpkg',\n", - " 'xs_data/mip_02060006/huc_02060006.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_02060006/huc_02060006.parquet',\n", - " 'xs_data/mip_14050005/huc_14050005.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_14050005/huc_14050005.gpkg',\n", - " 'xs_data/mip_14050005/huc_14050005.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_14050005/huc_14050005.parquet',\n", - " 'xs_data/mip_15040007/huc_15040007.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_15040007/huc_15040007.parquet',\n", - " 'xs_data/mip_15040007/huc_15040007.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_15040007/huc_15040007.gpkg',\n", - " 'xs_data/mip_04030101/huc_04030101.gpkg': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_04030101/huc_04030101.gpkg',\n", - " 'xs_data/mip_04030101/huc_04030101.parquet': '/home/sylvia.chin/Desktop/iceberg/xs_data/mip_04030101/huc_04030101.parquet'})" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s3_xs_keys2objs = collections.defaultdict()\n", - "for folder, subfolders, files in os.walk(f\"{os.getcwd()}/xs_data/\"):\n", - " for file in files:\n", - " if folder != f\"{os.getcwd()}/xs_data/\":\n", - " s3_xs_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}\"] = (\n", - " f\"{folder}/{file}\"\n", - " )\n", - "\n", - "s3_xs_keys2objs" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "id": "0ef03ac5-4475-4a3c-8fbb-88ec50d832c4", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "defaultdict(None,\n", - " {'iceberg_catalog/xs_dev2_catalog.db': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/xs_dev2_catalog.db',\n", - " 'iceberg_catalog/xs_catalog.db': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/xs_catalog.db',\n", - " 'iceberg_catalog/metadata/snap-1219395432228756396-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1219395432228756396-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.avro',\n", - " 'iceberg_catalog/metadata/79d941be-d64b-420d-8258-ab9a19f60a3c-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/79d941be-d64b-420d-8258-ab9a19f60a3c-m0.avro',\n", - " 'iceberg_catalog/metadata/56302b1b-0145-4261-a75f-9fc822513965-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/56302b1b-0145-4261-a75f-9fc822513965-m0.avro',\n", - " 'iceberg_catalog/metadata/2b35b175-c393-402f-aefe-7ab21a7f86e3-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2b35b175-c393-402f-aefe-7ab21a7f86e3-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-d5bfb311-f654-4caa-a8bd-0988d5ea3f1c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-d5bfb311-f654-4caa-a8bd-0988d5ea3f1c.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-e005d193-1dbe-48f8-9c71-5d6acb118047.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e005d193-1dbe-48f8-9c71-5d6acb118047.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-a51a3d3f-c9d8-4491-ba4a-61b45450b482.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a51a3d3f-c9d8-4491-ba4a-61b45450b482.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-7751284475758926448-0-83a8e328-45aa-41c3-b7ba-aada589c1100.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-7751284475758926448-0-83a8e328-45aa-41c3-b7ba-aada589c1100.avro',\n", - " 'iceberg_catalog/metadata/7e31eefd-b1be-4270-8c56-55c3d7cee3ec-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/7e31eefd-b1be-4270-8c56-55c3d7cee3ec-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-ff6bb0fd-545d-4c90-8687-d59e57f795f7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-ff6bb0fd-545d-4c90-8687-d59e57f795f7.metadata.json',\n", - " 'iceberg_catalog/metadata/eb72845f-a72d-4ec7-b515-3fa60bcb1a0e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/eb72845f-a72d-4ec7-b515-3fa60bcb1a0e-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-efb96525-596e-4f96-a5a4-6e930d9fa14d.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-efb96525-596e-4f96-a5a4-6e930d9fa14d.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-e971734f-4fd6-4f57-8313-6578b345dd9f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e971734f-4fd6-4f57-8313-6578b345dd9f.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-37052db6-879f-4d5d-a7eb-bf238795f174.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-37052db6-879f-4d5d-a7eb-bf238795f174.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-566a22c6-9329-4cf1-b863-35034787428a.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-566a22c6-9329-4cf1-b863-35034787428a.metadata.json',\n", - " 'iceberg_catalog/metadata/0932a09d-7c95-4369-91ff-86187c292488-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/0932a09d-7c95-4369-91ff-86187c292488-m0.avro',\n", - " 'iceberg_catalog/metadata/f491d047-a07d-4dd1-9880-fb7cb524b729-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/f491d047-a07d-4dd1-9880-fb7cb524b729-m0.avro',\n", - " 'iceberg_catalog/metadata/94010da4-988a-4690-9744-544b69c4043d-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/94010da4-988a-4690-9744-544b69c4043d-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-1423242798306539847-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1423242798306539847-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.avro',\n", - " 'iceberg_catalog/metadata/74d5f5a8-00b1-4270-86e4-920f534462e2-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/74d5f5a8-00b1-4270-86e4-920f534462e2-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-7bbe577e-8ca9-4a90-afe8-115ae5ad1e66.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-7bbe577e-8ca9-4a90-afe8-115ae5ad1e66.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-0f5ff66b-9f53-4695-8fc7-cb317cab3ff7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-0f5ff66b-9f53-4695-8fc7-cb317cab3ff7.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-5b0d7e69-1e56-4f5a-8f0e-b5c5f8c9e402.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-5b0d7e69-1e56-4f5a-8f0e-b5c5f8c9e402.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-2864916062256581278-0-56302b1b-0145-4261-a75f-9fc822513965.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-2864916062256581278-0-56302b1b-0145-4261-a75f-9fc822513965.avro',\n", - " 'iceberg_catalog/metadata/c02f999d-b401-4394-8550-0524812a59fe-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/c02f999d-b401-4394-8550-0524812a59fe-m0.avro',\n", - " 'iceberg_catalog/metadata/2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-37fbbe54-240a-4d27-9c80-8af688986ec7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-37fbbe54-240a-4d27-9c80-8af688986ec7.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-1547694616865413560-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1547694616865413560-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.avro',\n", - " 'iceberg_catalog/metadata/4b224a68-251a-448b-a79a-e7a2ae6848c7-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/4b224a68-251a-448b-a79a-e7a2ae6848c7-m0.avro',\n", - " 'iceberg_catalog/metadata/83a8e328-45aa-41c3-b7ba-aada589c1100-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/83a8e328-45aa-41c3-b7ba-aada589c1100-m0.avro',\n", - " 'iceberg_catalog/metadata/e1c70f45-ac00-4f36-9f05-b402a92b17bb-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/e1c70f45-ac00-4f36-9f05-b402a92b17bb-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-6643227147233749836-0-dd9f8708-2f34-4066-8420-63fd375262c4.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6643227147233749836-0-dd9f8708-2f34-4066-8420-63fd375262c4.avro',\n", - " 'iceberg_catalog/metadata/88b277f5-8e5f-45cf-b3a7-3f645ccf3610-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/88b277f5-8e5f-45cf-b3a7-3f645ccf3610-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-d3787857-4eac-4cfa-86a5-6b220bb197d3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-d3787857-4eac-4cfa-86a5-6b220bb197d3.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-6148936714446219898-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6148936714446219898-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.avro',\n", - " 'iceberg_catalog/metadata/00001-e7962f83-a076-4a75-985e-d22f5c50d02e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-e7962f83-a076-4a75-985e-d22f5c50d02e.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-a6048e13-d05c-4e89-8da9-6781f37ad1f2.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a6048e13-d05c-4e89-8da9-6781f37ad1f2.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-5963977556171816944-0-31bea5d0-7d98-40f6-800b-8c651aea6750.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5963977556171816944-0-31bea5d0-7d98-40f6-800b-8c651aea6750.avro',\n", - " 'iceberg_catalog/metadata/snap-612035466803620355-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-612035466803620355-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.avro',\n", - " 'iceberg_catalog/metadata/00000-4e2fd912-9308-4048-a8d1-252cf9122840.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-4e2fd912-9308-4048-a8d1-252cf9122840.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-79175265-6e89-4e2a-9157-5db43dafa9d7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-79175265-6e89-4e2a-9157-5db43dafa9d7.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-62392862022840883-0-79d941be-d64b-420d-8258-ab9a19f60a3c.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-62392862022840883-0-79d941be-d64b-420d-8258-ab9a19f60a3c.avro',\n", - " 'iceberg_catalog/metadata/snap-515960161385423435-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-515960161385423435-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.avro',\n", - " 'iceberg_catalog/metadata/snap-3520959889309638487-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3520959889309638487-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.avro',\n", - " 'iceberg_catalog/metadata/00001-27ca47a0-4cb0-422a-9ec5-26ad42f8d274.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-27ca47a0-4cb0-422a-9ec5-26ad42f8d274.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-c3b73c20-d855-45c1-a627-075029f9ceaa.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c3b73c20-d855-45c1-a627-075029f9ceaa.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-4242698478604412586-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4242698478604412586-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.avro',\n", - " 'iceberg_catalog/metadata/3a1ebbe7-11ac-4920-b628-91d42f2a9658-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/3a1ebbe7-11ac-4920-b628-91d42f2a9658-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-80b9f406-1ed3-4ca2-b529-f79c04b930c7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-80b9f406-1ed3-4ca2-b529-f79c04b930c7.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-6067af93-bbd0-44a3-9e56-b5c04f031feb.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-6067af93-bbd0-44a3-9e56-b5c04f031feb.metadata.json',\n", - " 'iceberg_catalog/metadata/a5fa37d5-ad11-4816-8bc1-907b2f384012-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/a5fa37d5-ad11-4816-8bc1-907b2f384012-m0.avro',\n", - " 'iceberg_catalog/metadata/ff565f97-f743-4f7c-abd6-986fadcdd5ff-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/ff565f97-f743-4f7c-abd6-986fadcdd5ff-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-1072010512160647541-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1072010512160647541-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.avro',\n", - " 'iceberg_catalog/metadata/snap-4723433229204372088-0-b6e49d71-9d65-445d-8721-8549a8bfff63.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4723433229204372088-0-b6e49d71-9d65-445d-8721-8549a8bfff63.avro',\n", - " 'iceberg_catalog/metadata/00000-5affae0f-d57e-4770-9e8a-e1ea05f337a3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-5affae0f-d57e-4770-9e8a-e1ea05f337a3.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-4637614250918488530-0-2ec024d8-d33a-474b-a66d-578b741bb07b.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4637614250918488530-0-2ec024d8-d33a-474b-a66d-578b741bb07b.avro',\n", - " 'iceberg_catalog/metadata/00001-fdb4b52d-9430-4f6b-8d4c-56c8244de25f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-fdb4b52d-9430-4f6b-8d4c-56c8244de25f.metadata.json',\n", - " 'iceberg_catalog/metadata/33337276-e026-455f-8cfd-7b05284abc36-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/33337276-e026-455f-8cfd-7b05284abc36-m0.avro',\n", - " 'iceberg_catalog/metadata/29a6c52d-eefc-475d-927b-8e74a04cb96c-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/29a6c52d-eefc-475d-927b-8e74a04cb96c-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-5862537823954510993-0-2dd9f725-e066-4163-a76c-934c075c6b69.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5862537823954510993-0-2dd9f725-e066-4163-a76c-934c075c6b69.avro',\n", - " 'iceberg_catalog/metadata/00000-a3e9319b-0386-45e4-b75d-e5d36ebe7756.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-a3e9319b-0386-45e4-b75d-e5d36ebe7756.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-b8b0b1d4-084e-432b-ae34-c9a4814a1e81.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b8b0b1d4-084e-432b-ae34-c9a4814a1e81.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-973381a9-74c9-4a19-bb92-876e6a8e5cee.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-973381a9-74c9-4a19-bb92-876e6a8e5cee.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-3821558550666939489-0-ef901ac2-0781-4afb-94ca-b733dd048a70.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3821558550666939489-0-ef901ac2-0781-4afb-94ca-b733dd048a70.avro',\n", - " 'iceberg_catalog/metadata/00000-69944a7a-50b8-4ee2-bcc5-7209ac5a5a6f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-69944a7a-50b8-4ee2-bcc5-7209ac5a5a6f.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-5759346661200024943-0-33337276-e026-455f-8cfd-7b05284abc36.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-5759346661200024943-0-33337276-e026-455f-8cfd-7b05284abc36.avro',\n", - " 'iceberg_catalog/metadata/snap-3036933239882382933-0-94010da4-988a-4690-9744-544b69c4043d.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3036933239882382933-0-94010da4-988a-4690-9744-544b69c4043d.avro',\n", - " 'iceberg_catalog/metadata/00001-6c06fa99-4198-4130-bdcb-3e44169236f5.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-6c06fa99-4198-4130-bdcb-3e44169236f5.metadata.json',\n", - " 'iceberg_catalog/metadata/2ec024d8-d33a-474b-a66d-578b741bb07b-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2ec024d8-d33a-474b-a66d-578b741bb07b-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-82c1e2c6-ecbf-4730-b08d-43b6ae439a6f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-82c1e2c6-ecbf-4730-b08d-43b6ae439a6f.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-c0ef5091-6731-4671-9c62-6bb622078193.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c0ef5091-6731-4671-9c62-6bb622078193.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-1071109032890151563-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1071109032890151563-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.avro',\n", - " 'iceberg_catalog/metadata/00001-ba991154-22f7-486c-a2f4-5ef7336bf1a2.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-ba991154-22f7-486c-a2f4-5ef7336bf1a2.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-4aa54a74-4458-464d-85a3-bea3560c4a02.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-4aa54a74-4458-464d-85a3-bea3560c4a02.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-cd3e4a4b-4c25-464d-a525-f9b8905c35ce.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-cd3e4a4b-4c25-464d-a525-f9b8905c35ce.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-6856955298989226585-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6856955298989226585-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.avro',\n", - " 'iceberg_catalog/metadata/snap-8464165543612770186-0-c02f999d-b401-4394-8550-0524812a59fe.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-8464165543612770186-0-c02f999d-b401-4394-8550-0524812a59fe.avro',\n", - " 'iceberg_catalog/metadata/b6e49d71-9d65-445d-8721-8549a8bfff63-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/b6e49d71-9d65-445d-8721-8549a8bfff63-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-74ed5c84-3c12-4d40-b80a-a7ec240dfe9f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-74ed5c84-3c12-4d40-b80a-a7ec240dfe9f.metadata.json',\n", - " 'iceberg_catalog/metadata/6092672e-c75b-4426-af48-40346808bdf7-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/6092672e-c75b-4426-af48-40346808bdf7-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-e5687448-db5f-4b3f-a327-2ad1c5240610.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-e5687448-db5f-4b3f-a327-2ad1c5240610.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-f0a14dcd-8fd0-44b4-9f9e-5aad93c0e2bb.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-f0a14dcd-8fd0-44b4-9f9e-5aad93c0e2bb.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-87e00ee9-0a95-4535-8bdf-edc894fdce7b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-87e00ee9-0a95-4535-8bdf-edc894fdce7b.metadata.json',\n", - " 'iceberg_catalog/metadata/6ed7cdd8-37e9-4f05-af66-0ad179cad29e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/6ed7cdd8-37e9-4f05-af66-0ad179cad29e-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-d32f7864-3be9-40d1-ae73-432d6fc4e261.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-d32f7864-3be9-40d1-ae73-432d6fc4e261.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-4276320977715109593-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4276320977715109593-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.avro',\n", - " 'iceberg_catalog/metadata/00000-da1c271b-b011-4be0-9512-26fbf178a77b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-da1c271b-b011-4be0-9512-26fbf178a77b.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-1226764095013695279-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1226764095013695279-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.avro',\n", - " 'iceberg_catalog/metadata/dd9f8708-2f34-4066-8420-63fd375262c4-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/dd9f8708-2f34-4066-8420-63fd375262c4-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-77e72558-ecb6-4295-b2f6-27c58dd61a85.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-77e72558-ecb6-4295-b2f6-27c58dd61a85.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-2e8f2156-373f-4e36-a397-14032febed12.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2e8f2156-373f-4e36-a397-14032febed12.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-2355293142637763355-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-2355293142637763355-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.avro',\n", - " 'iceberg_catalog/metadata/00001-eadd73d0-0aad-48f6-b967-9feb0603c1b3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-eadd73d0-0aad-48f6-b967-9feb0603c1b3.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-a6e1ff45-1675-4d34-9bfa-529729bd1182.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-a6e1ff45-1675-4d34-9bfa-529729bd1182.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-b958cdb6-61c9-4f4d-845a-8b380359a232.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b958cdb6-61c9-4f4d-845a-8b380359a232.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-b36f3ad0-c14b-426b-a8b3-e8297a10e2cf.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-b36f3ad0-c14b-426b-a8b3-e8297a10e2cf.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-b821f99f-bee2-43e1-9dc0-5f604c0ee439.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-b821f99f-bee2-43e1-9dc0-5f604c0ee439.metadata.json',\n", - " 'iceberg_catalog/metadata/ef901ac2-0781-4afb-94ca-b733dd048a70-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/ef901ac2-0781-4afb-94ca-b733dd048a70-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-51495fe9-6aeb-423c-921f-25e8fed296b8.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-51495fe9-6aeb-423c-921f-25e8fed296b8.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-c0cd98ae-adaf-40a6-b8a0-723038fc51d3.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c0cd98ae-adaf-40a6-b8a0-723038fc51d3.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-6708671433087716172-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6708671433087716172-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.avro',\n", - " 'iceberg_catalog/metadata/snap-397451539197656027-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-397451539197656027-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.avro',\n", - " 'iceberg_catalog/metadata/00001-398f1e98-2f5a-405a-aa21-6d6f249c49cc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-398f1e98-2f5a-405a-aa21-6d6f249c49cc.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-1529682512169813969-0-6092672e-c75b-4426-af48-40346808bdf7.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1529682512169813969-0-6092672e-c75b-4426-af48-40346808bdf7.avro',\n", - " 'iceberg_catalog/metadata/00000-c8961aee-5e44-4776-bbb0-192309c51192.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-c8961aee-5e44-4776-bbb0-192309c51192.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-995d8b2a-86e9-48a3-9a05-c7ccc0ad6947.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-995d8b2a-86e9-48a3-9a05-c7ccc0ad6947.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-b589f643-23f1-4b39-8795-875746c9d40a.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-b589f643-23f1-4b39-8795-875746c9d40a.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-39503c61-6c1c-4714-bd13-b50a664103bc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-39503c61-6c1c-4714-bd13-b50a664103bc.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-98f85996-9e86-435c-b9f6-73e50c74fede.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-98f85996-9e86-435c-b9f6-73e50c74fede.metadata.json',\n", - " 'iceberg_catalog/metadata/25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-403feaec-6f57-4d5c-8f57-35df25b2d8fe.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-403feaec-6f57-4d5c-8f57-35df25b2d8fe.metadata.json',\n", - " 'iceberg_catalog/metadata/f1963f4e-533c-4349-90ce-fe651c3bd03f-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/f1963f4e-533c-4349-90ce-fe651c3bd03f-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-fd176c01-fff4-4bd6-8206-a66a3d34aaef.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-fd176c01-fff4-4bd6-8206-a66a3d34aaef.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-33db56f0-9ff4-4dc0-9ef7-cdc2f34e57fa.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-33db56f0-9ff4-4dc0-9ef7-cdc2f34e57fa.metadata.json',\n", - " 'iceberg_catalog/metadata/928c6a28-c248-4fbc-bd5c-684b1b38d2d9-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/928c6a28-c248-4fbc-bd5c-684b1b38d2d9-m0.avro',\n", - " 'iceberg_catalog/metadata/fbaf2a80-3953-4b77-9f09-6398d6db52ea-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/fbaf2a80-3953-4b77-9f09-6398d6db52ea-m0.avro',\n", - " 'iceberg_catalog/metadata/00001-22a4f3bd-4d5a-483f-86a2-030dbcdca64e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-22a4f3bd-4d5a-483f-86a2-030dbcdca64e.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-9d39f3c8-13c1-44c9-a952-fdcaeea3e72c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-9d39f3c8-13c1-44c9-a952-fdcaeea3e72c.metadata.json',\n", - " 'iceberg_catalog/metadata/31bea5d0-7d98-40f6-800b-8c651aea6750-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/31bea5d0-7d98-40f6-800b-8c651aea6750-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-84e1b3ac-d505-4b1d-8045-e119c8ab16e9.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-84e1b3ac-d505-4b1d-8045-e119c8ab16e9.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-86bdc061-b88a-4507-901b-e25978a3397e.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-86bdc061-b88a-4507-901b-e25978a3397e.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-da81947f-6285-4225-abf6-346e2de7cbb0.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-da81947f-6285-4225-abf6-346e2de7cbb0.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-3927813710706619-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-3927813710706619-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.avro',\n", - " 'iceberg_catalog/metadata/2dd9f725-e066-4163-a76c-934c075c6b69-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/2dd9f725-e066-4163-a76c-934c075c6b69-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-1069052068710971707-0-74d5f5a8-00b1-4270-86e4-920f534462e2.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1069052068710971707-0-74d5f5a8-00b1-4270-86e4-920f534462e2.avro',\n", - " 'iceberg_catalog/metadata/00001-bc93d130-05ed-46cd-b4c6-bc2bcc6c8ddc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-bc93d130-05ed-46cd-b4c6-bc2bcc6c8ddc.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-4855055752437117124-0-1d64c282-3463-4db0-9914-78fef1158e5e.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4855055752437117124-0-1d64c282-3463-4db0-9914-78fef1158e5e.avro',\n", - " 'iceberg_catalog/metadata/00001-2c5ec01f-7dd5-4b52-8cf6-a568d6d9d29b.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2c5ec01f-7dd5-4b52-8cf6-a568d6d9d29b.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-0f5866f6-cddd-43d8-842b-60cf20c4ec1c.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-0f5866f6-cddd-43d8-842b-60cf20c4ec1c.metadata.json',\n", - " 'iceberg_catalog/metadata/00001-2581f663-72ee-49d5-aad4-5660d00dd8dc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-2581f663-72ee-49d5-aad4-5660d00dd8dc.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-1032401352117165068-0-f491d047-a07d-4dd1-9880-fb7cb524b729.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-1032401352117165068-0-f491d047-a07d-4dd1-9880-fb7cb524b729.avro',\n", - " 'iceberg_catalog/metadata/00000-ce2992ad-0e0c-48e2-bc8b-bb996aa69923.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-ce2992ad-0e0c-48e2-bc8b-bb996aa69923.metadata.json',\n", - " 'iceberg_catalog/metadata/00000-9a694d60-0d5c-41b4-9b92-a81b1e4dabf4.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-9a694d60-0d5c-41b4-9b92-a81b1e4dabf4.metadata.json',\n", - " 'iceberg_catalog/metadata/994a22b9-0dae-40c2-b2bb-23f9962c61c5-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/994a22b9-0dae-40c2-b2bb-23f9962c61c5-m0.avro',\n", - " 'iceberg_catalog/metadata/snap-4622875834949791680-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4622875834949791680-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.avro',\n", - " 'iceberg_catalog/metadata/00001-6fac6d1a-30ce-4822-89e5-f4d412208b5f.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00001-6fac6d1a-30ce-4822-89e5-f4d412208b5f.metadata.json',\n", - " 'iceberg_catalog/metadata/e0c82612-49a1-4bec-9ffb-0363b2808c90-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/e0c82612-49a1-4bec-9ffb-0363b2808c90-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-0ecd14a5-3da4-47f0-8bd8-83c95e680afc.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-0ecd14a5-3da4-47f0-8bd8-83c95e680afc.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-4996700114448263860-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-4996700114448263860-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.avro',\n", - " 'iceberg_catalog/metadata/00000-728df095-7195-4409-aae6-ed71991c6ef6.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-728df095-7195-4409-aae6-ed71991c6ef6.metadata.json',\n", - " 'iceberg_catalog/metadata/snap-6495503154204324342-0-0932a09d-7c95-4369-91ff-86187c292488.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/snap-6495503154204324342-0-0932a09d-7c95-4369-91ff-86187c292488.avro',\n", - " 'iceberg_catalog/metadata/8dea00e3-705a-4e9b-80ab-16d2728732f9-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/8dea00e3-705a-4e9b-80ab-16d2728732f9-m0.avro',\n", - " 'iceberg_catalog/metadata/1d64c282-3463-4db0-9914-78fef1158e5e-m0.avro': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/1d64c282-3463-4db0-9914-78fef1158e5e-m0.avro',\n", - " 'iceberg_catalog/metadata/00000-1c1fb8d7-0c4c-4b0a-9ae3-db09afa718c7.metadata.json': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/metadata/00000-1c1fb8d7-0c4c-4b0a-9ae3-db09afa718c7.metadata.json',\n", - " 'iceberg_catalog/data/00000-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-3a1ebbe7-11ac-4920-b628-91d42f2a9658.parquet',\n", - " 'iceberg_catalog/data/00000-0-1d64c282-3463-4db0-9914-78fef1158e5e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-1d64c282-3463-4db0-9914-78fef1158e5e.parquet',\n", - " 'iceberg_catalog/data/00000-0-f491d047-a07d-4dd1-9880-fb7cb524b729.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-f491d047-a07d-4dd1-9880-fb7cb524b729.parquet',\n", - " 'iceberg_catalog/data/00000-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-a5fa37d5-ad11-4816-8bc1-907b2f384012.parquet',\n", - " 'iceberg_catalog/data/00000-0-31bea5d0-7d98-40f6-800b-8c651aea6750.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-31bea5d0-7d98-40f6-800b-8c651aea6750.parquet',\n", - " 'iceberg_catalog/data/00000-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-25ee9bd7-8d6f-4ae3-93ae-0a7c74d1be51.parquet',\n", - " 'iceberg_catalog/data/00000-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-e1c70f45-ac00-4f36-9f05-b402a92b17bb.parquet',\n", - " 'iceberg_catalog/data/00000-0-94010da4-988a-4690-9744-544b69c4043d.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-94010da4-988a-4690-9744-544b69c4043d.parquet',\n", - " 'iceberg_catalog/data/00000-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-994a22b9-0dae-40c2-b2bb-23f9962c61c5.parquet',\n", - " 'iceberg_catalog/data/00000-0-2ec024d8-d33a-474b-a66d-578b741bb07b.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2ec024d8-d33a-474b-a66d-578b741bb07b.parquet',\n", - " 'iceberg_catalog/data/00000-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-8dea00e3-705a-4e9b-80ab-16d2728732f9.parquet',\n", - " 'iceberg_catalog/data/00000-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-4b224a68-251a-448b-a79a-e7a2ae6848c7.parquet',\n", - " 'iceberg_catalog/data/00000-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-7e31eefd-b1be-4270-8c56-55c3d7cee3ec.parquet',\n", - " 'iceberg_catalog/data/00000-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-29a6c52d-eefc-475d-927b-8e74a04cb96c.parquet',\n", - " 'iceberg_catalog/data/00000-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2b35b175-c393-402f-aefe-7ab21a7f86e3.parquet',\n", - " 'iceberg_catalog/data/00000-0-0932a09d-7c95-4369-91ff-86187c292488.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-0932a09d-7c95-4369-91ff-86187c292488.parquet',\n", - " 'iceberg_catalog/data/00000-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2a5f2f6a-d7ed-424e-84ef-eaebb0fb2428.parquet',\n", - " 'iceberg_catalog/data/00000-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-f1963f4e-533c-4349-90ce-fe651c3bd03f.parquet',\n", - " 'iceberg_catalog/data/00000-0-79d941be-d64b-420d-8258-ab9a19f60a3c.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-79d941be-d64b-420d-8258-ab9a19f60a3c.parquet',\n", - " 'iceberg_catalog/data/00000-0-dd9f8708-2f34-4066-8420-63fd375262c4.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-dd9f8708-2f34-4066-8420-63fd375262c4.parquet',\n", - " 'iceberg_catalog/data/00000-0-6092672e-c75b-4426-af48-40346808bdf7.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-6092672e-c75b-4426-af48-40346808bdf7.parquet',\n", - " 'iceberg_catalog/data/00000-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-fbaf2a80-3953-4b77-9f09-6398d6db52ea.parquet',\n", - " 'iceberg_catalog/data/00000-0-2dd9f725-e066-4163-a76c-934c075c6b69.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-2dd9f725-e066-4163-a76c-934c075c6b69.parquet',\n", - " 'iceberg_catalog/data/00000-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-928c6a28-c248-4fbc-bd5c-684b1b38d2d9.parquet',\n", - " 'iceberg_catalog/data/00000-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-e0c82612-49a1-4bec-9ffb-0363b2808c90.parquet',\n", - " 'iceberg_catalog/data/00000-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-88b277f5-8e5f-45cf-b3a7-3f645ccf3610.parquet',\n", - " 'iceberg_catalog/data/00000-0-56302b1b-0145-4261-a75f-9fc822513965.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-56302b1b-0145-4261-a75f-9fc822513965.parquet',\n", - " 'iceberg_catalog/data/00000-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-eb72845f-a72d-4ec7-b515-3fa60bcb1a0e.parquet',\n", - " 'iceberg_catalog/data/00000-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-6ed7cdd8-37e9-4f05-af66-0ad179cad29e.parquet',\n", - " 'iceberg_catalog/data/00000-0-ef901ac2-0781-4afb-94ca-b733dd048a70.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-ef901ac2-0781-4afb-94ca-b733dd048a70.parquet',\n", - " 'iceberg_catalog/data/00000-0-c02f999d-b401-4394-8550-0524812a59fe.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-c02f999d-b401-4394-8550-0524812a59fe.parquet',\n", - " 'iceberg_catalog/data/00000-0-74d5f5a8-00b1-4270-86e4-920f534462e2.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-74d5f5a8-00b1-4270-86e4-920f534462e2.parquet',\n", - " 'iceberg_catalog/data/00000-0-33337276-e026-455f-8cfd-7b05284abc36.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-33337276-e026-455f-8cfd-7b05284abc36.parquet',\n", - " 'iceberg_catalog/data/00000-0-b6e49d71-9d65-445d-8721-8549a8bfff63.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-b6e49d71-9d65-445d-8721-8549a8bfff63.parquet',\n", - " 'iceberg_catalog/data/00000-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-ff565f97-f743-4f7c-abd6-986fadcdd5ff.parquet',\n", - " 'iceberg_catalog/data/00000-0-83a8e328-45aa-41c3-b7ba-aada589c1100.parquet': '/home/sylvia.chin/Desktop/iceberg/iceberg_catalog/data/00000-0-83a8e328-45aa-41c3-b7ba-aada589c1100.parquet'})" - ] - }, - "execution_count": 33, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "s3_xs_iceberg_keys2objs = collections.defaultdict()\n", - "for folder, subfolders, files in os.walk(f\"{os.getcwd()}/iceberg_catalog/\"):\n", - " for file in files:\n", - " if folder != f\"{os.getcwd()}/iceberg_catalog/\":\n", - " # For all files not the database\n", - " s3_xs_iceberg_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}/{file}\"] = (\n", - " f\"{folder}/{file}\"\n", - " )\n", - " else:\n", - " # For the database.\n", - " s3_xs_iceberg_keys2objs[f\"{folder.split('/')[-2:][0]}/{folder.split('/')[-2:][1]}{file}\"] = (\n", - " f\"{folder}{file}\"\n", - " )\n", - "\n", - "\n", - "s3_xs_iceberg_keys2objs" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ddc9f129-b35b-453f-bad6-92350e053fb6", - "metadata": {}, - "outputs": [], - "source": [ - "# Instantiate bucket of interest.\n", - "profile_name = \"default\"\n", - "session = boto3.Session(profile_name=profile_name)\n", - "s3 = session.resource(\"s3\")\n", - "bucket_name = \"ngwpc-xs\"\n", - "\n", - "# # Uploading the xs by HUC parquets\n", - "# for key, file_dir in s3_xs_keys2objs.items():\n", - "# s3.Bucket(bucket_name).upload_file(file_dir, key)\n", - "\n", - "# Uploading the xs by HUC parquets\n", - "# for key, file_dir in s3_xs_iceberg_keys2objs.items():\n", - "# s3.Bucket(bucket_name).upload_file(file_dir, key)" - ] - }, - { - "cell_type": "markdown", - "id": "01dc1ff0-bfd5-4b7a-82d0-1d60e237e2cd", - "metadata": {}, - "source": [ - "# Cross-Check & Verify:\n", - "## Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" - ] - }, - { - "cell_type": "code", - "execution_count": 36, - "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "pyarrow.Table\n", - "river: string\n", - "reach: string\n", - "river_reach: string\n", - "river_station: double\n", - "river_reach_rs: string\n", - "thalweg: double\n", - "xs_max_elevation: double\n", - "left_reach_length: double\n", - "right_reach_length: double\n", - "channel_reach_length: double\n", - "ras_data: string\n", - "station_elevation_points: string\n", - "bank_stations: string\n", - "number_of_station_elevation_points: int64\n", - "number_of_coords: int64\n", - "flows: string\n", - "profile_names: string\n", - "geometry: binary\n", - "huc: string\n", - "model_id: string\n", - "us_reach_id: string\n", - "us_network_to_id: string\n", - "ds_reach_id: string\n", - "ds_network_to_id: string\n", - "__index_level_0__: int64\n", - "----\n", - "river: [[\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",\"Stream0528\",...,\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\",\"Stream0512\"]]\n", - "reach: [[\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",...,\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\",\"Reach-1\"]]\n", - "river_reach: [[\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",\"Stream0528,Reach-1\",...,\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\",\"Stream0512,Reach-1\"]]\n", - "river_station: [[7300,6833,6346,5913,5505,...,1842,1400,970,516,111]]\n", - "river_reach_rs: [[\"Stream0528 Reach-1 7300.0\",\"Stream0528 Reach-1 6833.0\",\"Stream0528 Reach-1 6346.0\",\"Stream0528 Reach-1 5913.0\",\"Stream0528 Reach-1 5505.0\",...,\"Stream0512 Reach-1 1842.0\",\"Stream0512 Reach-1 1400.0\",\"Stream0512 Reach-1 970.0\",\"Stream0512 Reach-1 516.0\",\"Stream0512 Reach-1 111.0\"]]\n", - "thalweg: [[217.86,215.26,213.94,213.33,213.34,...,368.01,365.61,364.04,360.64,360.73]]\n", - "xs_max_elevation: [[248.82,238.12,246.73,241.95,242.87,...,404.79,398.04,385.23,404.53,391.25]]\n", - "left_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "right_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "channel_reach_length: [[467,487,433,408,419,...,442,430,454,405,0]]\n", - "..." - ] - }, - "execution_count": 36, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Load the Parquet file into a DataFrame\n", - "parquet_file_path = f\"{os.getcwd()}/xs_data/mip_01020002/huc_01020002.parquet\"\n", - "parquet_content = pq.read_table(parquet_file_path)\n", - "parquet_content" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "86ec5e38-ab4c-4185-bc0f-3306e670f968", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "iceberg", - "language": "python", - "name": "iceberg" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.2" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/geopackage_viewer/requirements.txt b/examples/geopackage_viewer/requirements.txt deleted file mode 100644 index bfa17c6..0000000 --- a/examples/geopackage_viewer/requirements.txt +++ /dev/null @@ -1,9 +0,0 @@ -folium==0.19.5 -geodatasets==2024.8.0 -geopandas==1.0.1 -httpx==0.28.1 -ipywidgets==8.1.6 -matplotlib==3.10.3 -pandas==2.2.3 -python-dotenv==1.1.0 -mapclassify==2.9.0 diff --git a/examples/geopackage_viewer/geopackage.ipynb b/examples/geopackage_viewer/viewer.ipynb similarity index 98% rename from examples/geopackage_viewer/geopackage.ipynb rename to examples/geopackage_viewer/viewer.ipynb index 1355d34..a264560 100644 --- a/examples/geopackage_viewer/geopackage.ipynb +++ b/examples/geopackage_viewer/viewer.ipynb @@ -23,40 +23,32 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "784799a5-df23-4971-ad1b-ea4573610279", "metadata": {}, "outputs": [], "source": [ + "from pathlib import Path\n", + "\n", "import geopandas as gpd\n", "import ipywidgets as widgets\n", "import pandas as pd\n", - "from dotenv import load_dotenv\n", "from ipywidgets import interact\n", "\n", - "from icefabric_tools.geo.geo_utils import create_time_series_widget, get_geopackage_uri, get_observational_uri" + "from icefabric.ui import create_time_series_widget, get_geopackage_uri, get_observational_uri" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "515b8c7d-c575-42f3-a9b3-414659e619f5", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", - "load_dotenv()" + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" ] }, { @@ -77,118 +69,10 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "5124f78a-2f24-4e9c-ba73-93d246bfc2e4", "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    dateTimeq_cms
    01990-10-01 05:00:0019.623575
    11990-10-01 06:00:0020.416447
    21990-10-01 07:00:0021.237635
    31990-10-01 08:00:0021.860605
    41990-10-01 09:00:0022.285358
    .........
    2973032024-08-30 20:00:0013.280601
    2973042024-08-30 21:00:0013.280601
    2973052024-08-30 22:00:0013.280601
    2973062024-08-30 23:00:0013.280601
    2973072024-08-31 00:00:0013.280601
    \n", - "

    297308 rows × 2 columns

    \n", - "
    " - ], - "text/plain": [ - " dateTime q_cms\n", - "0 1990-10-01 05:00:00 19.623575\n", - "1 1990-10-01 06:00:00 20.416447\n", - "2 1990-10-01 07:00:00 21.237635\n", - "3 1990-10-01 08:00:00 21.860605\n", - "4 1990-10-01 09:00:00 22.285358\n", - "... ... ...\n", - "297303 2024-08-30 20:00:00 13.280601\n", - "297304 2024-08-30 21:00:00 13.280601\n", - "297305 2024-08-30 22:00:00 13.280601\n", - "297306 2024-08-30 23:00:00 13.280601\n", - "297307 2024-08-31 00:00:00 13.280601\n", - "\n", - "[297308 rows x 2 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "streamflow_obs_uri = get_observational_uri(gage_id=\"01013500\")\n", "streamflow_obs_df = pd.read_csv(streamflow_obs_uri)\n", @@ -262,28 +146,7 @@ }, { "cell_type": "code", - "execution_count": 10, - "id": "434b7c40-4a11-4db2-b073-8794848833d7", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'s3://ngwpc-hydrofabric-oe/2.1/CONUS/06710385/GEOPACKAGE/USGS/2024_Dec_16_20_29_12/gauge_06710385.gpkg'" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "geopackage_uri" - ] - }, - { - "cell_type": "code", - "execution_count": 15, + "execution_count": null, "id": "7fb96ccb-b383-42eb-b8bd-b2355c1e20cc", "metadata": {}, "outputs": [ @@ -302,6 +165,7 @@ ], "source": [ "geopackage_uri = get_geopackage_uri(gage_id=\"06710385\", version=2.2)\n", + "print(geopackage_uri)\n", "\n", "layers = gpd.list_layers(geopackage_uri).name.tolist()\n", "\n", @@ -777,7 +641,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": null, "id": "858e0398-81ee-4d57-8889-11002174c5ea", "metadata": {}, "outputs": [ @@ -807,33 +671,13 @@ } ], "source": [ - "def show_layer(layer_name):\n", - " display(layer_df[layer_name])\n", - "\n", - "\n", - "interact(show_layer, layer_name=layers)" + "interact(lambda layer_name: display(layer_df[layer_name]), layer_name=layers)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ccc9a36b-0c8e-456e-8b5b-97215626a630", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "464f2243-2d93-44a6-8101-5b7b6812495b", - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3 (ipykernel)", + "display_name": "icefabric", "language": "python", "name": "python3" }, @@ -847,7 +691,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.12" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/examples/iceberg/Demo_Iceberg.ipynb b/examples/iceberg/Demo_Iceberg.ipynb deleted file mode 100644 index d4665d1..0000000 --- a/examples/iceberg/Demo_Iceberg.ipynb +++ /dev/null @@ -1,339 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "a24f20d0-abb4-413a-a70b-0fb6d3ca1e22", - "metadata": {}, - "source": [ - "# Introduction:\n", - "## Generation of Iceberg Catalog for Parquet files\n", - "\n", - "Note:\n", - "\n", - "For building from S3, requires `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, and `AWS_SESSION_TOKEN` in your environmental variables. The recommended method to set is to store in this directory's `.env` file.\n", - "\n", - "For building locally, store `ml_auxiliary_data.parquet` files in `./data/bathymetry/ml_axuiliary_data/vpuid==XX/ml_auxiliary_data.parquet`" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7e3f71a8-a823-4df9-90df-8d6e62969faa", - "metadata": {}, - "outputs": [], - "source": [ - "import os\n", - "import warnings\n", - "\n", - "import pyarrow.parquet as pq\n", - "from dotenv import load_dotenv\n", - "from pyiceberg.catalog import load_catalog\n", - "from pyiceberg.exceptions import NamespaceAlreadyExistsError\n", - "from pyiceberg.expressions import And, GreaterThan, GreaterThanOrEqual, LessThan\n", - "\n", - "from icefabric_manage.iceberg_table import IcebergTable\n", - "\n", - "load_dotenv()\n", - "\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "attachments": {}, - "cell_type": "markdown", - "id": "e6e15027-cc49-4508-b434-fc4362ffb44e", - "metadata": {}, - "source": [ - "#### Demo:\n", - "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets in Local" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "c74f8432-f07f-430d-830f-d0910a699ea8", - "metadata": { - "scrolled": true - }, - "outputs": [], - "source": [ - "# Scenario I\n", - "# Instantiate class\n", - "obj = IcebergTable()\n", - "\n", - "# Extract list of parquets\n", - "parquet_list = obj.read_data_dirs(data_dir=f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/\")\n", - "\n", - "try:\n", - " obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev\", namespace=\"bathymetry_ml_auxiliary\")\n", - "\n", - " # Generate tables w/in the new Iceberg catalog for all parquets detected\n", - " obj.create_table_for_all_parquets(parquet_list, app_name=\"bathymetry_ml_auxiliary\")\n", - "except NamespaceAlreadyExistsError:\n", - " print(\"Table already exists! Exiting\")" - ] - }, - { - "cell_type": "markdown", - "id": "b7f5dba5-6892-45a2-81b8-1a80a3ad9f49", - "metadata": {}, - "source": [ - "#### Demo\n", - "#### Establish A New Iceberg Catalog & Generate Tables For All Parquets in S3" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "ad60621b-fc16-44c7-85b9-8a66a2b1835b", - "metadata": {}, - "outputs": [], - "source": [ - "# Scenario II\n", - "# Instantiate class\n", - "obj = IcebergTable()\n", - "\n", - "try:\n", - " # Establish new Iceberg catalog\n", - " obj.establish_catalog(catalog_name=\"bathymetry_ml_auxiliary_dev2\", namespace=\"bathymetry_ml_auxiliary\")\n", - "\n", - " # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - " obj.create_table_for_all_s3parquets(app_name=\"bathymetry_ml_auxiliary\", bucket_name=\"ngwpc-bathymetry\")\n", - "except NamespaceAlreadyExistsError:\n", - " print(\"Table already exists! Exiting\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a1c58d4f-59e5-41d8-be31-536f3f790216", - "metadata": {}, - "outputs": [], - "source": [ - "# Scenario III\n", - "# Instantiate class\n", - "obj = IcebergTable()\n", - "\n", - "# Establish new Iceberg catalog\n", - "try:\n", - " obj.establish_catalog(catalog_name=\"fema_xs\", namespace=\"mip\")\n", - " obj.establish_catalog(catalog_name=\"fema_xs\", namespace=\"ble\")\n", - " # Generate tables w/in the new Iceberg catalog for all parquets detected in s3\n", - " obj.create_table_for_all_s3parquets(app_name=\"mip_xs\", bucket_name=\"ngwpc-xs\")\n", - " obj.create_table_for_all_s3parquets(app_name=\"ble_xs\", bucket_name=\"ngwpc-xs\")\n", - "except NamespaceAlreadyExistsError:\n", - " print(\"Table already exists! Exiting\")" - ] - }, - { - "cell_type": "markdown", - "id": "71949e8b-36f2-4e74-afb2-741a884d95dd", - "metadata": {}, - "source": [ - "#### Demo:\n", - "#### Load Iceberg Catalog & Table of Interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f449ec30-027e-45c8-91f2-9ad5402b6d17", - "metadata": {}, - "outputs": [], - "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [local]\n", - "catalog_name = \"bathymetry_ml_auxiliary_dev\"\n", - "namespace = \"bathymetry_ml_auxiliary\"\n", - "tablename = \"vpuid=01\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "print(iceberg_table.to_string(preview_cols=20))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6c69cdf0-90ae-4e32-8100-5aecc746edc9", - "metadata": {}, - "outputs": [], - "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [s3]\n", - "catalog_name = \"bathymetry_ml_auxiliary_dev2\"\n", - "namespace = \"bathymetry_ml_auxiliary\"\n", - "tablename = \"vpuid=01\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "# print(iceberg_table.to_string(preview_cols=20))" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "57d3a536-70dc-4b1d-a162-73e376bca0dc", - "metadata": {}, - "outputs": [], - "source": [ - "# Load-in table from catalog of interest & observe the first N (e.g. 20) feature columns + schema [xs]\n", - "catalog_name = \"fema_xs\"\n", - "namespace = \"mip\"\n", - "tablename = \"huc_01020002\"\n", - "catalog = load_catalog(name=catalog_name, **{\"uri\": f\"sqlite:///iceberg_catalog/{catalog_name}_catalog.db\"})\n", - "iceberg_table = catalog.load_table(f\"{namespace}.{tablename}\").scan().to_arrow()\n", - "print(iceberg_table.to_string(preview_cols=20))" - ] - }, - { - "cell_type": "markdown", - "id": "d69402cf-d224-45e8-9680-74b28205ea44", - "metadata": {}, - "source": [ - "#### Observe List of Tables under Catalog of Interest" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "aec525f7-6753-4ca5-ba5e-916c8c6659ec", - "metadata": {}, - "outputs": [], - "source": [ - "# All tables created within the namespace of interest.\n", - "print(f\"List of tables under {namespace} within {catalog_name}:\\n\\n{catalog.list_tables(namespace)}\")" - ] - }, - { - "cell_type": "markdown", - "id": "c5b0cacc-8f92-49db-b080-5c1ecb72f57b", - "metadata": {}, - "source": [ - "#### Query Iceberg Catalog's Table by Conditions (Note: Against the catalog_name = 'bathymetry_ml_auxiliary_dev')" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "28153d1a-46de-43f0-962a-5b613bdbaa73", - "metadata": {}, - "outputs": [], - "source": [ - "# Filter Iceberg table based on threshold set for a given feature\n", - "namespace = \"bathymetry_ml_auxiliary\"\n", - "tablename = \"vpuid=01\"\n", - "feature_name = \"owp_ahg_c\"\n", - "thresh_val = 0.25\n", - "catalog.load_table(f\"{namespace}.{tablename}\").scan(row_filter=LessThan(feature_name, thresh_val)).to_arrow()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6320114d-8115-4e1f-b8fd-3c80aeaa07de", - "metadata": {}, - "outputs": [], - "source": [ - "namespace = \"bathymetry_ml_auxiliary\"\n", - "tablename = \"vpuid=01\"\n", - "feature_name = \"owp_ahg_c\"\n", - "thresh_lower, thresh_upper = 0.25, 0.28\n", - "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", - " row_filter=And(GreaterThan(feature_name, thresh_lower), LessThan(feature_name, thresh_upper))\n", - ").to_arrow()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3acdfde0-d34d-442e-87eb-724dbcef5d1b", - "metadata": {}, - "outputs": [], - "source": [ - "namespace = \"bathymetry_ml_auxiliary\"\n", - "tablename = \"vpuid=01\"\n", - "feature_name = \"owp_ahg_c\"\n", - "thresh = 0.25\n", - "catalog.load_table(f\"{namespace}.{tablename}\").scan(\n", - " row_filter=GreaterThanOrEqual(feature_name, thresh),\n", - " selected_fields=(\"owp_ahg_m\", \"slope\", \"LENGTHKM\", \"owp_ahg_f\"),\n", - ").to_arrow()" - ] - }, - { - "cell_type": "markdown", - "id": "01dc1ff0-bfd5-4b7a-82d0-1d60e237e2cd", - "metadata": {}, - "source": [ - "# Cross-Check & Verify:\n", - "## Parquet Data Has Been Written To Its Associated Iceberg Table Sucessfully" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5117aae1-40fb-4392-b424-b488245ace52", - "metadata": {}, - "outputs": [], - "source": [ - "# Load a XS parquet file into a DataFrame\n", - "parquet_file_path = f\"{os.getcwd()}//xs_data/mip_01020002/huc_01020002.parquet\"\n", - "df = pq.read_table(parquet_file_path)\n", - "df" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "b365d647-bbfa-45a9-8673-52c564cf0ea7", - "metadata": {}, - "outputs": [], - "source": [ - "# Load a m1_auxiliary parquet file into a DataFrame\n", - "parquet_file_path = f\"{os.getcwd()}/data/bathymetry/ml_auxiliary_data/vpuid=01/ml_auxiliary_data.parquet\"\n", - "df = pq.read_table(parquet_file_path)\n", - "df" - ] - }, - { - "attachments": { - "224c4550-7d87-455e-8193-0364425d439b.png": { - "image/png": "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" - } - }, - "cell_type": "markdown", - "id": "655127c1-3bc5-4f7e-b224-fb9655102134", - "metadata": {}, - "source": [ - "# Result:\n", - "![image.png](attachment:224c4550-7d87-455e-8193-0364425d439b.png)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "f0020ac6-1f0b-4344-b83f-33f9d73a390c", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/iceberg/pyiceberg_timetravel.ipynb b/examples/iceberg/pyiceberg_time_travel.ipynb similarity index 95% rename from examples/iceberg/pyiceberg_timetravel.ipynb rename to examples/iceberg/pyiceberg_time_travel.ipynb index eb06391..a001312 100644 --- a/examples/iceberg/pyiceberg_timetravel.ipynb +++ b/examples/iceberg/pyiceberg_time_travel.ipynb @@ -16,7 +16,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "id": "9f07637f", "metadata": {}, "outputs": [], @@ -26,30 +26,20 @@ "from pathlib import Path\n", "\n", "import pyarrow.parquet as pq\n", - "from dotenv import load_dotenv\n", "from pyiceberg.catalog import load_catalog" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "db86d0ba", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# before running this cell, make sure you created a .env file in this directory with your _current_ AWS credentials in it\n", - "load_dotenv()" + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" ] }, { @@ -354,7 +344,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "icefabric", "language": "python", "name": "python3" }, @@ -368,7 +358,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/examples/ras_xs/querying.ipynb b/examples/iceberg/querying_ras_xs.ipynb similarity index 86% rename from examples/ras_xs/querying.ipynb rename to examples/iceberg/querying_ras_xs.ipynb index 0e7bf1b..1f4aabb 100644 --- a/examples/ras_xs/querying.ipynb +++ b/examples/iceberg/querying_ras_xs.ipynb @@ -15,65 +15,72 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ - "# imports\n", - "import os\n", + "from pathlib import Path\n", "\n", - "from dotenv import load_dotenv\n", "from pyiceberg.catalog import load_catalog\n", "\n", - "from icefabric_tools import to_geopandas\n", - "\n", - "load_dotenv()\n", - "\n", - "os.environ[\"WAREHOUSE_PATH\"] = \"INSERT PATH TO URI\"" + "from icefabric.helpers import to_geopandas" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ - "# Load Catalog\n", - "catalog_settings = {\n", - " \"type\": \"glue\",\n", - " \"s3.endpoint\": \"s3.us-east-1.amazonaws.com\",\n", - " \"warehouse\": os.environ[\"WAREHOUSE_PATH\"],\n", - " \"glue_region\": \"us-east-1\",\n", - "}\n", - "catalog = load_catalog(\"glue\", **catalog_settings)" + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "[('mip_xs', '02030102'),\n", - " ('mip_xs', '02030103'),\n", - " ('mip_xs', '02030104'),\n", - " ('mip_xs', '02030105'),\n", - " ('mip_xs', '02040101'),\n", - " ('mip_xs', '02040102'),\n", - " ('mip_xs', '02040103'),\n", - " ('mip_xs', '02040104'),\n", - " ('mip_xs', '02040105'),\n", - " ('mip_xs', '02040106')]" + "'/Users/taddbindas/projects/NGWPC/icefabric/.pyiceberg.yaml'" ] }, - "execution_count": 21, + "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ + "import os\n", + "\n", + "os.environ[\"PYICEBERG_HOME\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "ename": "ValueError", + "evalue": "URI missing, please provide using --uri, the config or environment variable PYICEBERG_CATALOG__GLUE__URI", + "output_type": "error", + "traceback": [ + "\u001b[31m---------------------------------------------------------------------------\u001b[39m", + "\u001b[31mValueError\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[4]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m catalog = \u001b[43mload_catalog\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mglue\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 2\u001b[39m catalog.list_tables(\u001b[33m\"\u001b[39m\u001b[33mmip_xs\u001b[39m\u001b[33m\"\u001b[39m)[\u001b[32m40\u001b[39m:\u001b[32m50\u001b[39m]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:257\u001b[39m, in \u001b[36mload_catalog\u001b[39m\u001b[34m(name, **properties)\u001b[39m\n\u001b[32m 255\u001b[39m catalog_type = CatalogType(provided_catalog_type.lower())\n\u001b[32m 256\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m provided_catalog_type:\n\u001b[32m--> \u001b[39m\u001b[32m257\u001b[39m catalog_type = \u001b[43minfer_catalog_type\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 259\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m catalog_type:\n\u001b[32m 260\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m AVAILABLE_CATALOGS[catalog_type](name, cast(Dict[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mstr\u001b[39m], conf))\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:210\u001b[39m, in \u001b[36minfer_catalog_type\u001b[39m\u001b[34m(name, catalog_properties)\u001b[39m\n\u001b[32m 208\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 209\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mExpects the URI to be a string, got: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(uri)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m210\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 211\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mURI missing, please provide using --uri, the config or environment variable PYICEBERG_CATALOG__\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname.upper()\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m__URI\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 212\u001b[39m )\n", + "\u001b[31mValueError\u001b[39m: URI missing, please provide using --uri, the config or environment variable PYICEBERG_CATALOG__GLUE__URI" + ] + } + ], + "source": [ + "catalog = load_catalog(\"glue\")\n", "catalog.list_tables(\"mip_xs\")[40:50]" ] }, @@ -722,7 +729,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "icefabric", "language": "python", "name": "python3" }, diff --git a/examples/iceberg/quick_start.ipynb b/examples/iceberg/quick_start.ipynb deleted file mode 100644 index 24680e4..0000000 --- a/examples/iceberg/quick_start.ipynb +++ /dev/null @@ -1,1071 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Icefabric QuickStart\n", - "Author: Tadd Bindas" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "import geopandas as gpd\n", - "from pyiceberg.catalog import load_catalog\n", - "\n", - "from icefabric_manage import build\n", - "from icefabric_tools import find_origin, table_to_geopandas" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "First, you will need to define where your local data warehouse will live. This file will be located on disk and requires you to already have some geoparquet files to load" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Table network already exists. Skipping build\n", - "Table nexus already exists. Skipping build\n", - "Table flowpath-attributes already exists. Skipping build\n", - "Table divides already exists. Skipping build\n", - "Table pois already exists. Skipping build\n", - "Table flowpath-attributes-ml already exists. Skipping build\n", - "Table divide-attributes already exists. Skipping build\n", - "Table flowpaths already exists. Skipping build\n", - "Table hydrolocations already exists. Skipping build\n", - "Table lakes already exists. Skipping build\n" - ] - } - ], - "source": [ - "warehouse_path = Path(\"../data/warehouse\")\n", - "warehouse_path.mkdir(exist_ok=True)\n", - "\n", - "catalog_settings = {\n", - " \"type\": \"sql\",\n", - " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", - " \"warehouse\": f\"file://{warehouse_path}\",\n", - "}\n", - "\n", - "catalog = load_catalog(\"hydrofabric\", **catalog_settings)\n", - "build(catalog, Path(\"/Users/taddbindas/projects/NGWPC/icefabric/data/parquet\"))" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "hydrofabric ()" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "catalog" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Once the catalog is created, you can load the table into memory, scan the file based on a query, then return the object via pandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
    0wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196253.07.00682113.9666572.707401terminal012613576.07.0068212613576.0fl-nexNaNNone
    1wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196257.07.00682113.9666572.707401terminal012613602.00.9921072613601.0fl-nexNaNNone
    2wb-20469tnx-1000000125cat-20469NaN2613576.020283.0NOAA Reference Fabric166196256.07.00682113.9666572.707401terminal012613601.00.9404322613601.0fl-nexNaNNone
    3wb-20479tnx-1000000697cat-20479NaN2613603.020277.0NOAA Reference Fabric4599061.01.4451385.8873542.698700terminal012613604.00.7932822613603.0fl-nexNaNNone
    4wb-20479tnx-1000000697cat-20479NaN2613603.020277.0NOAA Reference Fabric4599715.01.4451385.8873542.698700terminal012613605.00.2051912613603.0fl-nexNaNNone
    ............................................................
    3461362Nonecnx-3299511cat-3299511NaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNNoneNoneNaNNaNNaNfl-nexNaNNone
    3461363Nonecnx-3299510cat-3299510NaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNNoneNoneNaNNaNNaNfl-nexNaNNone
    3461364Nonecnx-3299509cat-3299509NaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNNoneNoneNaNNaNNaNfl-nexNaNNone
    3461365Nonecnx-3299508cat-3299508NaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNNoneNoneNaNNaNNaNfl-nexNaNNone
    3461366Nonecnx-3299507cat-3299507NaNNaNNaNNOAA Reference FabricNaNNaNNaNNaNNoneNoneNaNNaNNaNfl-nexNaNNone
    \n", - "

    3461367 rows × 19 columns

    \n", - "
    " - ], - "text/plain": [ - " id toid divide_id ds_id mainstem hydroseq \\\n", - "0 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "1 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "2 wb-20469 tnx-1000000125 cat-20469 NaN 2613576.0 20283.0 \n", - "3 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", - "4 wb-20479 tnx-1000000697 cat-20479 NaN 2613603.0 20277.0 \n", - "... ... ... ... ... ... ... \n", - "3461362 None cnx-3299511 cat-3299511 NaN NaN NaN \n", - "3461363 None cnx-3299510 cat-3299510 NaN NaN NaN \n", - "3461364 None cnx-3299509 cat-3299509 NaN NaN NaN \n", - "3461365 None cnx-3299508 cat-3299508 NaN NaN NaN \n", - "3461366 None cnx-3299507 cat-3299507 NaN NaN NaN \n", - "\n", - " hf_source hf_id lengthkm areasqkm \\\n", - "0 NOAA Reference Fabric 166196253.0 7.006821 13.96665 \n", - "1 NOAA Reference Fabric 166196257.0 7.006821 13.96665 \n", - "2 NOAA Reference Fabric 166196256.0 7.006821 13.96665 \n", - "3 NOAA Reference Fabric 4599061.0 1.445138 5.88735 \n", - "4 NOAA Reference Fabric 4599715.0 1.445138 5.88735 \n", - "... ... ... ... ... \n", - "3461362 NOAA Reference Fabric NaN NaN NaN \n", - "3461363 NOAA Reference Fabric NaN NaN NaN \n", - "3461364 NOAA Reference Fabric NaN NaN NaN \n", - "3461365 NOAA Reference Fabric NaN NaN NaN \n", - "3461366 NOAA Reference Fabric NaN NaN NaN \n", - "\n", - " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", - "0 72.707401 terminal 01 2613576.0 7.006821 \n", - "1 72.707401 terminal 01 2613602.0 0.992107 \n", - "2 72.707401 terminal 01 2613601.0 0.940432 \n", - "3 42.698700 terminal 01 2613604.0 0.793282 \n", - "4 42.698700 terminal 01 2613605.0 0.205191 \n", - "... ... ... ... ... ... \n", - "3461362 NaN None None NaN NaN \n", - "3461363 NaN None None NaN NaN \n", - "3461364 NaN None None NaN NaN \n", - "3461365 NaN None None NaN NaN \n", - "3461366 NaN None None NaN NaN \n", - "\n", - " hf_mainstem topo poi_id hl_uri \n", - "0 2613576.0 fl-nex NaN None \n", - "1 2613601.0 fl-nex NaN None \n", - "2 2613601.0 fl-nex NaN None \n", - "3 2613603.0 fl-nex NaN None \n", - "4 2613603.0 fl-nex NaN None \n", - "... ... ... ... ... \n", - "3461362 NaN fl-nex NaN None \n", - "3461363 NaN fl-nex NaN None \n", - "3461364 NaN fl-nex NaN None \n", - "3461365 NaN fl-nex NaN None \n", - "3461366 NaN fl-nex NaN None \n", - "\n", - "[3461367 rows x 19 columns]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "network = catalog.load_table(\"hydrofabric.network\")\n", - "network.scan().to_pandas()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Now that we have these tables in memory, we can use predefined functions/services to get more insight from our data/methods" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Finding an Origin point" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    idtoidvpuidtopohydroseq
    0wb-824123nex-82412405fl-nex3565.0
    \n", - "
    " - ], - "text/plain": [ - " id toid vpuid topo hydroseq\n", - "0 wb-824123 nex-824124 05 fl-nex 3565.0" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "find_origin(network_table=network, identifier=18471000, id_type=\"comid\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Reading a geopandas dataframe" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    idtoidmainstemorderhydroseqlengthkmareasqkmtot_drainage_areasqkmhas_dividedivide_idpoi_idvpuidgeometry
    0wb-20466nex-204672613576.01.0202922.4437934.3042504.304250Truecat-204661953401MULTILINESTRING ((1873700.565 2684810.523, 187...
    1wb-20474nex-204752613597.01.0202913.9825184.8294004.829400Truecat-20474None01MULTILINESTRING ((1875378.459 2678583.977, 187...
    2wb-20475nex-204682613597.01.0202901.0066456.71310111.542501Truecat-20475None01MULTILINESTRING ((1875781.183 2682056.744, 187...
    3wb-20473nex-204672613587.01.0202891.8927814.4860504.486050Truecat-20473None01MULTILINESTRING ((1875252.558 2684695.906, 187...
    4wb-20467nex-204682613576.02.0202881.6164632.58390022.916701Truecat-20467119301MULTILINESTRING ((1875278.618 2683667.5, 18754...
    ..........................................
    828283wb-3054945nex-30549462523667.02.02363.5152879.33569984.047850Truecat-3054945None17MULTILINESTRING ((-2219263.794 2463211.731, -2...
    828284wb-3054946nex-30549472523667.02.02354.36558713.30650097.354350Truecat-3054946None17MULTILINESTRING ((-2222330.448 2464615.711, -2...
    828285wb-3054961nex-30549582523700.01.02342.0321945.2357505.235750Truecat-3054961None17MULTILINESTRING ((-2218810.457 2467656.224, -2...
    828286wb-3054958nex-30549592523693.01.02336.46621210.67085015.906600Truecat-3054958None17MULTILINESTRING ((-2217798.39 2468518.649, -22...
    828287wb-3054960nex-30549592523698.01.02322.2424243.6405003.640500Truecat-3054960None17MULTILINESTRING ((-2220749.538 2467137.344, -2...
    \n", - "

    828288 rows × 13 columns

    \n", - "
    " - ], - "text/plain": [ - " id toid mainstem order hydroseq lengthkm \\\n", - "0 wb-20466 nex-20467 2613576.0 1.0 20292 2.443793 \n", - "1 wb-20474 nex-20475 2613597.0 1.0 20291 3.982518 \n", - "2 wb-20475 nex-20468 2613597.0 1.0 20290 1.006645 \n", - "3 wb-20473 nex-20467 2613587.0 1.0 20289 1.892781 \n", - "4 wb-20467 nex-20468 2613576.0 2.0 20288 1.616463 \n", - "... ... ... ... ... ... ... \n", - "828283 wb-3054945 nex-3054946 2523667.0 2.0 236 3.515287 \n", - "828284 wb-3054946 nex-3054947 2523667.0 2.0 235 4.365587 \n", - "828285 wb-3054961 nex-3054958 2523700.0 1.0 234 2.032194 \n", - "828286 wb-3054958 nex-3054959 2523693.0 1.0 233 6.466212 \n", - "828287 wb-3054960 nex-3054959 2523698.0 1.0 232 2.242424 \n", - "\n", - " areasqkm tot_drainage_areasqkm has_divide divide_id poi_id \\\n", - "0 4.304250 4.304250 True cat-20466 19534 \n", - "1 4.829400 4.829400 True cat-20474 None \n", - "2 6.713101 11.542501 True cat-20475 None \n", - "3 4.486050 4.486050 True cat-20473 None \n", - "4 2.583900 22.916701 True cat-20467 1193 \n", - "... ... ... ... ... ... \n", - "828283 9.335699 84.047850 True cat-3054945 None \n", - "828284 13.306500 97.354350 True cat-3054946 None \n", - "828285 5.235750 5.235750 True cat-3054961 None \n", - "828286 10.670850 15.906600 True cat-3054958 None \n", - "828287 3.640500 3.640500 True cat-3054960 None \n", - "\n", - " vpuid geometry \n", - "0 01 MULTILINESTRING ((1873700.565 2684810.523, 187... \n", - "1 01 MULTILINESTRING ((1875378.459 2678583.977, 187... \n", - "2 01 MULTILINESTRING ((1875781.183 2682056.744, 187... \n", - "3 01 MULTILINESTRING ((1875252.558 2684695.906, 187... \n", - "4 01 MULTILINESTRING ((1875278.618 2683667.5, 18754... \n", - "... ... ... \n", - "828283 17 MULTILINESTRING ((-2219263.794 2463211.731, -2... \n", - "828284 17 MULTILINESTRING ((-2222330.448 2464615.711, -2... \n", - "828285 17 MULTILINESTRING ((-2218810.457 2467656.224, -2... \n", - "828286 17 MULTILINESTRING ((-2217798.39 2468518.649, -22... \n", - "828287 17 MULTILINESTRING ((-2220749.538 2467137.344, -2... \n", - "\n", - "[828288 rows x 13 columns]" - ] - }, - "execution_count": 6, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "flowpaths = catalog.load_table(\"hydrofabric.flowpaths\")\n", - "flowpaths.scan().to_pandas()\n", - "table_to_geopandas(flowpaths)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Getting a Replace and Route Segment as a Geopackage" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric_tools import load_hydrofabric\n", - "from icefabric_tools.rnr import get_rnr_segment\n", - "\n", - "catalog_settings = {\n", - " \"type\": \"sql\",\n", - " \"uri\": \"sqlite:///../data/warehouse/pyiceberg_catalog.db\",\n", - " \"warehouse\": \"file://../data/warehouse\",\n", - "}\n", - "catalog = load_hydrofabric(catalog_settings)\n", - "get_rnr_segment(catalog, 18471000, \"../data/test_rnr.gpkg\")" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    \n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
    idtoiddivide_idds_idmainstemhydroseqhf_sourcehf_idlengthkmareasqkmtot_drainage_areasqkmtypevpuidhf_hydroseqhf_lengthkmhf_mainstemtopopoi_idhl_uri
    0wb-1321815tnx-1000005117cat-1321815NaN473130.09408.0NOAA Reference Fabric22812067.07.5734567.18740129645.996881terminal08473132.03.072944473130.0fl-nexNaNNone
    1wb-1321815tnx-1000005117cat-1321815NaN473130.09408.0NOAA Reference Fabric22811613.07.5734567.18740129645.996881terminal08473131.02.692083473130.0fl-nexNaNNone
    2wb-1321815tnx-1000005117cat-1321815NaN473130.09408.0NOAA Reference Fabric22811611.07.5734567.18740129645.996881terminal08473130.01.808428473130.0fl-nexNaNNone
    3wb-1321754nex-1321755cat-1321754NaN473130.09562.0NOAA Reference Fabric19269180.05.9468029.06615127052.965484nexus08473933.00.149239473130.0fl-nexNaNNone
    4wb-1321754nex-1321755cat-1321754NaN473130.09562.0NOAA Reference Fabric19269466.05.9468029.06615127052.965484nexus08473932.02.638347473130.0fl-nexNaNNone
    \n", - "
    " - ], - "text/plain": [ - " id toid divide_id ds_id mainstem hydroseq \\\n", - "0 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", - "1 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", - "2 wb-1321815 tnx-1000005117 cat-1321815 NaN 473130.0 9408.0 \n", - "3 wb-1321754 nex-1321755 cat-1321754 NaN 473130.0 9562.0 \n", - "4 wb-1321754 nex-1321755 cat-1321754 NaN 473130.0 9562.0 \n", - "\n", - " hf_source hf_id lengthkm areasqkm \\\n", - "0 NOAA Reference Fabric 22812067.0 7.573456 7.18740 \n", - "1 NOAA Reference Fabric 22811613.0 7.573456 7.18740 \n", - "2 NOAA Reference Fabric 22811611.0 7.573456 7.18740 \n", - "3 NOAA Reference Fabric 19269180.0 5.946802 9.06615 \n", - "4 NOAA Reference Fabric 19269466.0 5.946802 9.06615 \n", - "\n", - " tot_drainage_areasqkm type vpuid hf_hydroseq hf_lengthkm \\\n", - "0 129645.996881 terminal 08 473132.0 3.072944 \n", - "1 129645.996881 terminal 08 473131.0 2.692083 \n", - "2 129645.996881 terminal 08 473130.0 1.808428 \n", - "3 127052.965484 nexus 08 473933.0 0.149239 \n", - "4 127052.965484 nexus 08 473932.0 2.638347 \n", - "\n", - " hf_mainstem topo poi_id hl_uri \n", - "0 473130.0 fl-nex NaN None \n", - "1 473130.0 fl-nex NaN None \n", - "2 473130.0 fl-nex NaN None \n", - "3 473130.0 fl-nex NaN None \n", - "4 473130.0 fl-nex NaN None " - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "gdf = gpd.read_file(\"../data/test_ds_rnr.gpkg\", layer=\"network\")\n", - "gdf.head()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": ".venv", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.9" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/examples/icechunk/README.icechunk.md b/examples/icechunk/README.icechunk.md deleted file mode 100644 index 322a9c7..0000000 --- a/examples/icechunk/README.icechunk.md +++ /dev/null @@ -1,19 +0,0 @@ -# Icechunk Data Viewer -Interface to load, create and view S3 Icechunk-versioned NGWPC datasets - -## Install Icechunk Data Viewer: -1. Clone repo: `git clone ` -2. CD to repo dir: `cd /icechunk_data_viewer` -3. Create virtual environment: `python3.11 -m venv .venv` -4. Start virtual environment: `source .venv/bin/activate` -5. Load dependedencies: `pip install -r requirements.txt` -6. Prepare AWS credentials. Either: - - [Set up IAM Identity Center and run `aws sso login` prior to notebook launch](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html#sso-configure-profile-token-auto-sso) - - [Copy/paste credentials into `~/.aws/credentials`](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html#cli-configure-files-format) -7. Start Jupyter notebook: `jupyter notebook --no-browser` -8. Using your browser, navigate to the notebook server instance (i.e. `http://127.0.0.1:8888/tree?token=XXX`). Your specific URL is listed in the terminal output. -9. Open `icechunk_data_ret_and_plot.jpynb` in the GUI. -10. Prior to execution, depending on if you've configured AWS credentials with SSO or copy/pasted them: - - SSO: Comment out line #11 in block 1 (`os.environ['AWS_PROFILE'] = "XXX_SoftwareEngineersFull"`) - - Copy/paste: Alter line #11 to overwrite the placeholder string with your profile name found in `~/.aws/credentials` -11. Run the notebook diff --git a/examples/icechunk/icechunk_data_ret_and_plot.ipynb b/examples/icechunk/icechunk_data_ret_and_plot.ipynb index f1986b1..550989b 100644 --- a/examples/icechunk/icechunk_data_ret_and_plot.ipynb +++ b/examples/icechunk/icechunk_data_ret_and_plot.ipynb @@ -14,40 +14,32 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "id": "92608737-174f-42fd-ab07-b599edd9d1de", "metadata": {}, "outputs": [], "source": [ - "import matplotlib.pyplot as plt\n", - "from dotenv import load_dotenv" + "from pathlib import Path\n", + "\n", + "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 2, "id": "28c1bab2-5106-4ea5-94fd-502de7859a4d", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "True" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", - "load_dotenv()" + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "2b3b1ced-6760-4ef5-8cdc-4bde82a287fe", "metadata": {}, "outputs": [ @@ -109,10 +101,11 @@ } ], "source": [ - "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations\n", + "from icefabric.builds import IcechunkRepo\n", + "from icefabric.schemas import NGWPCLocations\n", "\n", "# Retrive data and print\n", - "land_cover_repo = IcechunkS3Repo(location=NGWPCLocations.NLCD_IC.path)\n", + "land_cover_repo = IcechunkRepo(location=NGWPCLocations.NLCD_IC.path)\n", "lc_data = land_cover_repo.retrieve_dataset()\n", "print(lc_data)" ] @@ -183,7 +176,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": null, "id": "617115d8-a7d0-486e-aab9-2daedad9074e", "metadata": {}, "outputs": [ @@ -205,7 +198,7 @@ ], "source": [ "# Retrive data and print\n", - "topo_repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_PR_USVI_30M_IC.path)\n", + "topo_repo = IcechunkRepo(location=NGWPCLocations.TOPO_PR_USVI_30M_IC.path)\n", "topo_data = topo_repo.retrieve_dataset()\n", "print(topo_data)" ] @@ -279,7 +272,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "icefabric", "language": "python", "name": "python3" }, @@ -293,7 +286,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/examples/icechunk/icechunk_to_tiff.ipynb b/examples/icechunk/icechunk_to_tiff.ipynb index 03bb4e2..e752390 100644 --- a/examples/icechunk/icechunk_to_tiff.ipynb +++ b/examples/icechunk/icechunk_to_tiff.ipynb @@ -15,25 +15,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "7cba65ef", "metadata": {}, "outputs": [], "source": [ - "from dotenv import load_dotenv\n", + "from pathlib import Path\n", "\n", - "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations" + "from icefabric.builds import IcechunkRepo\n", + "from icefabric.schemas import NGWPCLocations" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "id": "d479759f", "metadata": {}, "outputs": [], "source": [ - "# before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", - "load_dotenv()" + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" ] }, { @@ -46,7 +49,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "id": "7df8b014", "metadata": {}, "outputs": [ @@ -615,7 +618,7 @@ } ], "source": [ - "repo = IcechunkS3Repo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", + "repo = IcechunkRepo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", "ds = repo.retrieve_dataset()\n", "ds" ] @@ -680,7 +683,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "icefabric", "language": "python", "name": "python3" }, @@ -694,7 +697,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/examples/icechunk/icechunk_version_control_examples.ipynb b/examples/icechunk/icechunk_version_control_examples.ipynb index d096bd0..5429e4a 100644 --- a/examples/icechunk/icechunk_version_control_examples.ipynb +++ b/examples/icechunk/icechunk_version_control_examples.ipynb @@ -11,28 +11,36 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": null, + "id": "1a2ed407", + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "from icefabric.helpers import load_creds\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd().parents[1])" + ] + }, + { + "cell_type": "code", + "execution_count": null, "id": "4f0fe850-0e5e-40e5-93b1-1c9f468a2d28", "metadata": {}, "outputs": [], "source": [ "import warnings\n", "\n", - "from dotenv import load_dotenv\n", - "\n", - "import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils\n", - "from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations, S3Path\n", + "from icefabric.builds import IcechunkRepo, S3Path\n", + "from icefabric.helpers import virtualize_and_concat_archival_files_on_time\n", + "from icefabric.schemas import FileType, NGWPCLocations\n", "\n", "warnings.filterwarnings(\"ignore\")\n", "\n", - "# Before running this cell, make sure you created a .env file in this directory with your AWS credentials in it\n", - "# NOTE - if you authenticate with AWS SSO, leave it commented out\n", - "load_dotenv()\n", - "\n", - "# Create icechunk repo at s3://hydrofabric-data/ic_testing/snodas_yearly_append_test\n", - "# NOTE - make sure this S3 directory doesn't exist prior to running this cell\n", "new_repo_s3_path = S3Path(bucket=\"hydrofabric-data\", prefix=\"ic_testing/snodas_yearly_append_test\")\n", - "new_repo = IcechunkS3Repo(location=new_repo_s3_path)" + "new_repo = IcechunkRepo(location=new_repo_s3_path)" ] }, { @@ -59,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": null, "id": "ef762477-5c6b-4876-b5a2-a708b9f3d02f", "metadata": {}, "outputs": [ @@ -87,10 +95,10 @@ ], "source": [ "# Collect first five SNODAS netcdf files from 2009 and combine/virtualize them together into a single dataset\n", - "snodas_09_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + "snodas_09_vds = virtualize_and_concat_archival_files_on_time(\n", " location=NGWPCLocations.SNODAS_REF.path,\n", " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=awf_utils.FileType.NETCDF,\n", + " file_type=FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2009*.nc\",\n", " loadable_vars=[\"crs\"],\n", " testing_file_quantity=5,\n", @@ -160,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": null, "id": "bbefb68a-b747-449e-b7da-4c61c6f4a2e0", "metadata": {}, "outputs": [ @@ -188,10 +196,10 @@ ], "source": [ "# Much like the 09 SNODAS files were collected, do the same for 2010\n", - "snodas_10_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + "snodas_10_vds = virtualize_and_concat_archival_files_on_time(\n", " location=NGWPCLocations.SNODAS_REF.path,\n", " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=awf_utils.FileType.NETCDF,\n", + " file_type=FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2010*.nc\",\n", " loadable_vars=[\"crs\"],\n", " testing_file_quantity=5,\n", @@ -299,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": null, "id": "3d940692-0407-4c46-8df2-5a0036f4420b", "metadata": {}, "outputs": [ @@ -330,10 +338,10 @@ "new_repo.create_new_branch(name=\"2011_feature\")\n", "\n", "# Much like the 09 SNODAS files were collected, do the same for 2010\n", - "snodas_11_vds = awf_utils.virtualize_and_concat_archival_files_on_time(\n", + "snodas_11_vds = virtualize_and_concat_archival_files_on_time(\n", " location=NGWPCLocations.SNODAS_REF.path,\n", " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=awf_utils.FileType.NETCDF,\n", + " file_type=FileType.NETCDF,\n", " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2011*.nc\",\n", " loadable_vars=[\"crs\"],\n", " testing_file_quantity=5,\n", @@ -480,7 +488,7 @@ ], "metadata": { "kernelspec": { - "display_name": ".venv", + "display_name": "icefabric", "language": "python", "name": "python3" }, @@ -494,7 +502,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.8" + "version": "3.12.9" } }, "nbformat": 4, diff --git a/examples/icechunk_data_viewer/martin/compose.martin.yaml b/examples/icechunk_data_viewer/martin/compose.martin.yaml index 1916d37..c4788a9 100644 --- a/examples/icechunk_data_viewer/martin/compose.martin.yaml +++ b/examples/icechunk_data_viewer/martin/compose.martin.yaml @@ -6,5 +6,5 @@ services: environment: - RUST_LOG=debug volumes: - - "${PWD}/tiles:/tiles" + - "./tiles:/tiles" command: -c /tiles/martin_config.yaml diff --git a/examples/icechunk_data_viewer/requirements.txt b/examples/icechunk_data_viewer/requirements.txt deleted file mode 100644 index 9115ce8..0000000 --- a/examples/icechunk_data_viewer/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -jupyterlab==4.4.3 -jupytergis==0.5.0 -matplotlib==3.10.3 \ No newline at end of file diff --git a/examples/quick_start.ipynb b/examples/quick_start.ipynb new file mode 100644 index 0000000..6ffd065 --- /dev/null +++ b/examples/quick_start.ipynb @@ -0,0 +1,44 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Icefabric QuickStart\n", + "\n", + "This notebook is meant to showcase the icefabric repo services, versioning, tools, and capabilities as an enterprise data services product from NGWPC\n", + "\n", + "The notebook is broken up into the following sections:\n", + "\n", + "#### TODO Finish Quickstart\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/mkdocs.yml b/mkdocs.yml index 16eb786..3f721b1 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -50,7 +50,6 @@ nav: - index.md - User Guide: - user_guide/index.md - - Icefabric Manage: user_guide/icefabric_manage.md - - Icefabric Tools: user_guide/icefabric_tools.md - - Icefabric API: user_guide/icefabric_api.md + - API: user_guide/icefabric_api.md + - Tools: user_guide/icefabric_tools.md - Terraform S3 Glue Endpoint: user_guide/terraform.md diff --git a/pyproject.toml b/pyproject.toml index 844bda6..fa6c4b9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,9 +1,20 @@ +[build-system] +build-backend = "hatchling.build" +requires = ["hatchling", "hatch-vcs"] + +[tool.hatch] +version.source = "vcs" +build.hooks.vcs.version-file = "src/icefabric/_version.py" + +[tool.hatch.build.targets.wheel] +packages = ["src/icefabric", "app", "tools"] + [project] name = "icefabric" -version = "2025.6.0" -description = "An Apache Iceberg implementation of the Hydrofabric" +version = "2025.7.0" +description = "An Apache Iceberg + Icechunk implementation of Hydrofabric data services" readme = "README.md" -requires-python = ">=3.11,<3.13" +requires-python = ">=3.11" license = { file = "LICENSE" } authors = [ { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, @@ -11,6 +22,7 @@ authors = [ { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, + { name = "Farshid Rahmani", email = "Farshid.Rahmani@rtx.com" }, ] maintainers = [ { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, @@ -18,37 +30,74 @@ maintainers = [ { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, + { name = "Farshid Rahmani", email = "Farshid.Rahmani@rtx.com" }, ] -dependencies = [] +dependencies = [ + "dask==2025.5.1", + "fiona==1.10.1", + "fsspec==2025.5.1", + "geodatasets==2024.8.0", + "geopandas==1.0.1", + "h5netcdf==1.6.1", + "h5py==3.13.0", + "icechunk==0.2.18", + "ipywidgets==8.1.6", + "jupytergis==0.5.0", + "jupyterlab==4.4.3", + "kerchunk==0.2.8", + "mapclassify==2.9.0", + "matplotlib==3.10.3", + "netCDF4==1.7.2", + "numpy==2.2.6", + "pandas==2.2.3", + "pyarrow==20.0.0", + "pyiceberg[s3fs,glue,sql-sqlite]==0.9.1", + "python-dotenv==1.1.0", + "rioxarray==0.19.0", + "s3fs==2025.5.1", + "scipy==1.15.3", + "tifffile==2025.5.21", + "tqdm==4.67.1", + "virtualizarr==1.3.2", + "xarray==2025.4.0", + "zarr==3.0.9", +] [project.optional-dependencies] -docs = ["mkdocs-material"] - -[tool.uv.sources] -icefabric_api = { workspace = true } -icefabric_manage = { workspace = true } -icefabric_tools = { workspace = true } - -[tool.uv.workspace] -members = ["src/icefabric_api", "src/icefabric_manage", "src/icefabric_tools"] +docs = [ + "mkdocs-material==9.6.14", + "sympy==1.14.0" +] -[tool.uv] -dev-dependencies = [ - "pre-commit>=3.8.0", - "ipykernel>=6.29.5", - "jupyterlab==4.4.3", - "pytest>=8.3.2", - "ruff==0.11.0", +[dependency-groups] +app = [ + "fastapi[standard]>=0.115.12", + "pydantic==2.11.5", + "pydantic-settings==2.9.1", +] +dev = [ + "pre-commit==3.8.0", + "ruff==0.11.13", "black==25.1.0", "mypy==1.15.0", - "examples", - "boto3", - "icefabric_api", - "icefabric_manage", - "icefabric_tools", + "nbstripout==0.8.1", +] +examples = [ + "folium==0.19.5", + "httpx==0.28.1", + "ipykernel==6.29.5", + "jupyterlab==4.4.3", + "jupytergis==0.5.0", + "matplotlib==3.10.3", +] +tests = [ + "pytest==8.4.1", + "pytest-cov==6.1.1", ] -package = false + +[tool.uv] +default-groups = ["app", "dev", "examples", "tests"] [tool.black] line-length = 110 @@ -103,7 +152,6 @@ lint.ignore = [ "E722", ] - [tool.ruff.lint.pydocstyle] convention = "numpy" @@ -112,7 +160,6 @@ convention = "numpy" "tests/*" = ["D"] "*/__init__.py" = ["F401"] - [tool.mypy] python_version = "3.11" warn_return_any = false diff --git a/scripts/get_module_parameters.py b/scripts/get_module_parameters.py deleted file mode 100644 index d36e1c4..0000000 --- a/scripts/get_module_parameters.py +++ /dev/null @@ -1,29 +0,0 @@ -"""A sample script to generate CFE IPEs""" - -import geopandas as gpd -import pandas as pd - -param_file = "../src/icefabric_api/data/cfe_params.csv" -gpkg_file = "../src/icefabric_tools/test/data/gages-08070000.gpkg" - - -divides = gpd.read_file(gpkg_file, layer="divides") -divides = divides["divide_id"].to_list() - - -module_params = pd.read_csv(param_file) -param_values = module_params[["name", "default_value"]] - -for divide in divides: - cfg_file = f"{divide}_bmi_cfg_cfe.txt" - f = open(cfg_file, "x") - - for _, row in param_values.iterrows(): - key = row["name"] - value = row["default_value"] - f.write(f"{key}={value}\n") - - f.close() - -params_calibratable = module_params.loc[module_params["calibratable"] == "TRUE"] -params_calibratable.to_json("out.json", orient="split") diff --git a/scripts/gpkg_to_parquet.py b/scripts/gpkg_to_parquet.py deleted file mode 100644 index 1f06b13..0000000 --- a/scripts/gpkg_to_parquet.py +++ /dev/null @@ -1,14 +0,0 @@ -"""A simple script to convert the v2.2 hydrofabric to parquet""" - -import fiona -import geopandas as gpd - -input_file = "data/conus_nextgen.gpkg" -available_layers = fiona.listlayers(input_file) -print(f"Layers in GeoPackage: {available_layers}") - -for layer in available_layers: - gdf = gpd.read_file(input_file, layer=layer) - output_file = f"data/parquet/{layer}.parquet" - gdf.to_parquet(output_file) - print(f"Converted layer '{layer}' to {output_file}") diff --git a/scripts/gpkg_to_parquet_all_domains.py b/scripts/gpkg_to_parquet_all_domains.py deleted file mode 100644 index 5a7e7d6..0000000 --- a/scripts/gpkg_to_parquet_all_domains.py +++ /dev/null @@ -1,28 +0,0 @@ -"""A simple script to convert the v2.2 hydrofabric to parquet""" - -import fiona -import geopandas as gpd - -#Location of Hydrofabric geopackage files organized by domain -input_file_root = '/home/daniel.cumpton/Hydrofabric/data/hydrofabric/v2.2/nextgen' - -#Location of data/domain directories for output Parquet files -output_file_root = '/home/daniel.cumpton/icefabric' - -input_file = {'CONUS':'CONUS/conus_nextgen.gpkg', 'GL':'CONUS/gl_nextgen_divide_attr.gpkg', - 'Alaska':'Alaska/ak_nextgen_workaround.gpkg', 'Hawaii':'Hawaii/hi_nextgen_workaround.gpkg', - 'Puerto_Rico':'Puerto_Rico/prvi_nextgen_workaround.gpkg'} - -domains = ['CONUS', 'GL', 'Alaska', 'Hawaii', 'Puerto_Rico'] - -for domain in domains: - - file = f"{input_file_root}/{input_file[domain]}" - available_layers = fiona.listlayers(file) - print(f"For {domain}, layers in GeoPackage: {available_layers}") - - for layer in available_layers: - gdf = gpd.read_file(file, layer=layer) - output_file = f"{output_file_root}/data/parquet/{domain}/{layer}.parquet" - gdf.to_parquet(output_file) - print(f"For {domain}, converted layer '{layer}' to {output_file}") diff --git a/src/icefabric/__init__.py b/src/icefabric/__init__.py new file mode 100644 index 0000000..e701dc1 --- /dev/null +++ b/src/icefabric/__init__.py @@ -0,0 +1,6 @@ +"""An Apache Iceberg + Icechunk implementation of Hydrofabric data services""" + +from . import builds, helpers, hydrofabric, modules, schemas, ui +from ._version import __version__ + +__all__ = ["__version__", "builds", "hydrofabric", "helpers", "modules", "schemas", "ui"] diff --git a/src/icefabric/builds/__init__.py b/src/icefabric/builds/__init__.py new file mode 100644 index 0000000..3030723 --- /dev/null +++ b/src/icefabric/builds/__init__.py @@ -0,0 +1,10 @@ +"""Functions / objects to be used for building tables/objects""" + +from .build import build_iceberg_table +from .icechunk_s3_module import IcechunkRepo, S3Path + +__all__ = [ + "build_iceberg_table", + "IcechunkRepo", + "S3Path", +] diff --git a/src/icefabric_manage/src/icefabric_manage/_api.py b/src/icefabric/builds/build.py similarity index 92% rename from src/icefabric_manage/src/icefabric_manage/_api.py rename to src/icefabric/builds/build.py index 70eae83..eeee091 100644 --- a/src/icefabric_manage/src/icefabric_manage/_api.py +++ b/src/icefabric/builds/build.py @@ -4,7 +4,9 @@ from pyiceberg.catalog import Catalog -def build(catalog: Catalog, parquet_file: str, namespace: str, table_name: str, location: str) -> None: +def build_iceberg_table( + catalog: Catalog, parquet_file: str, namespace: str, table_name: str, location: str +) -> None: """Builds the hydrofabric catalog based on the .pyiceberg.yaml config and defined parquet files. Creates a new Iceberg table from a parquet file if the table doesn't already exist. diff --git a/src/icefabric_manage/src/icefabric_manage/iceberg_table.py b/src/icefabric/builds/iceberg_table.py similarity index 100% rename from src/icefabric_manage/src/icefabric_manage/iceberg_table.py rename to src/icefabric/builds/iceberg_table.py diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py b/src/icefabric/builds/icechunk_s3_module.py similarity index 79% rename from src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py rename to src/icefabric/builds/icechunk_s3_module.py index a1fecae..e276e06 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_module.py +++ b/src/icefabric/builds/icechunk_s3_module.py @@ -7,7 +7,6 @@ import subprocess import warnings -from enum import Enum from pathlib import Path from typing import Any @@ -15,9 +14,6 @@ import xarray as xr from icechunk.xarray import to_icechunk -TOPO_BP = "surface/nws-topobathy" -TOPO_NOS = f"{TOPO_BP}/nws-nos-surveys" - class S3Path: """ @@ -42,7 +38,7 @@ class S3Path: def __init__(self, bucket: str, prefix: str, region: str | None = "us-east-1"): self.bucket = bucket self.prefix = prefix - self.region = region + self.region = region # type: ignore def __str__(self): """Returns the full S3 path""" @@ -53,47 +49,14 @@ def partial_path(self): return f"{self.bucket}/{self.prefix}" -class NGWPCLocations(Enum): - """ - Important NGWPC S3 locations - - Enum class for instantiating S3Paths corresponding to the - icechunk stores, as well as the reference locations for virtualized - stores. - """ - - SNODAS_REF = ("ngwpc-forcing", "snodas_nc_v4") - SNODAS_V3 = ("ngwpc-forcing", "snodas_nc") - SNODAS_IC = ("hydrofabric-data", "forcing/snodas") - NLCD_REF = ("ngwpc-hydrofabric", "NLCD_Land_Cover_CONUS") - NLCD_IC = ("hydrofabric-data", "land-cover/NLCD-Land-Cover") - USGS_IC = ("ngwpc-hydrofabric", "usgs_observations") - TOPO_AK_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_10m") - TOPO_AK_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_30m") - TOPO_CONUS_ATL_GULF_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_atlantic_gulf_30m") - TOPO_CONUS_PAC_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_pacific_30m") - TOPO_GREAT_LAKES_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_great_lakes_30m") - TOPO_HA_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_10m") - TOPO_HA_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_30m") - TOPO_PR_USVI_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_10m") - TOPO_PR_USVI_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_30m") - TOPO_ALBEMARLE_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Albemarle_Sound_NOS_NCEI") - TOPO_CHESAPEAKE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Chesapeake_Bay_NOS_NCEI") - TOPO_MOBILE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Mobile_Bay_NOS_NCEI") - TOPO_TANGIER_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Tangier_Sound_NOS_NCEI") - - def __init__(self, bucket, prefix): - self.path = S3Path(bucket, prefix) - - -class IcechunkS3Repo: +class IcechunkRepo: """ - Class representing an S3 bucket icechunk store + Class representing an S3 bucket or local icechunk store Parameters ---------- - location: S3Path - The S3Path of the repo. + location: S3Path | Path + The S3Path or local path of the repo. repo: ic.Repository The icechunk repo, derived from the bucket, prefix, and region. S3 credentials are provided from the environment. @@ -103,11 +66,11 @@ class IcechunkS3Repo: in virtualized datasets. """ - location: S3Path + location: S3Path | Path repo: ic.Repository virtual_chunks: list[ic.VirtualChunkContainer] | None - def __init__(self, location: S3Path, virtual_chunk_mapping: list[dict[str, str]] | None = None): + def __init__(self, location: S3Path | Path, virtual_chunk_mapping: list[dict[str, str]] | None = None): self.location = location self.virtual_chunks = self.gen_virtual_chunk_containers(virtual_chunk_mapping) self.repo = self.open_repo() @@ -124,18 +87,25 @@ def open_repo(self) -> ic.Repository: ic.Repository Icechunk repo corresponding to the S3 bucket path defined in the instance """ - storage = ic.s3_storage( - bucket=self.location.bucket, - prefix=self.location.prefix, - region=self.location.region, - from_env=True, - ) - config = ic.RepositoryConfig.default() - if self.virtual_chunks: - for vcc in self.virtual_chunks: - config.set_virtual_chunk_container(vcc) - credentials = ic.containers_credentials({self.location.bucket: ic.s3_credentials(from_env=True)}) - repo = ic.Repository.open_or_create(storage, config, credentials) + if isinstance(self.location, S3Path): + storage_config = ic.s3_storage( + bucket=self.location.bucket, + prefix=self.location.prefix, + region=self.location.region, + from_env=True, + ) + credentials = ic.containers_credentials({self.location.bucket: ic.s3_credentials(from_env=True)}) + config = ic.RepositoryConfig.default() + if self.virtual_chunks: + for vcc in self.virtual_chunks: + config.set_virtual_chunk_container(vcc) + else: + # self.location is a Path + storage_config = ic.local_filesystem_storage(str(self.location)) + credentials = None + config = None + + repo = ic.Repository.open_or_create(storage_config, config, credentials) return repo def delete_repo(self, quiet: bool | None = False): @@ -431,33 +401,32 @@ def _infer_var_name_for_geotiff(self, variable_list: list) -> str: ) return var_name + @staticmethod + def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkContainer: + """ + Create a virtual chunk container from a mapping -@staticmethod -def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkContainer: - """ - Create a virtual chunk container from a mapping + Given an S3 bucket/region, generate and return a VirtualChunkContainer + so Icechunk can point to virtualized data inside S3 buckets. - Given an S3 bucket/region, generate and return a VirtualChunkContainer - so Icechunk can point to virtualized data inside S3 buckets. + Parameters + ---------- + bucket : str + The S3 bucket the virtual chunk points to. + region : str + The region of the S3 bucket. - Parameters - ---------- - bucket : str - The S3 bucket the virtual chunk points to. - region : str - The region of the S3 bucket. - - Returns - ------- - ic.VirtualChunkContainer - A definition of a virtual chunk that the icechunk repo - uses to define access to virtualized data. - """ - return ic.VirtualChunkContainer( - name=bucket, url_prefix=f"s3://{bucket}/", store=ic.s3_store(region=region) - ) + Returns + ------- + ic.VirtualChunkContainer + A definition of a virtual chunk that the icechunk repo + uses to define access to virtualized data. + """ + return ic.VirtualChunkContainer( + name=bucket, url_prefix=f"s3://{bucket}/", store=ic.s3_store(region=region) + ) -def get_icechunk_data(repo: NGWPCLocations) -> xr.Dataset: - """Convenience wrapper to return data from a designated NGWPCLocations Icechunk repo""" - return IcechunkS3Repo(location=repo.path).retrieve_dataset() +# def get_icechunk_data(repo: NGWPCLocations) -> xr.Dataset: +# """Convenience wrapper to return data from a designated NGWPCLocations Icechunk repo""" +# return IcechunkRepo(location=repo.path).retrieve_dataset() diff --git a/src/icefabric_manage/src/icefabric_manage/map_fim_data.py b/src/icefabric/builds/map_fim_data.py similarity index 100% rename from src/icefabric_manage/src/icefabric_manage/map_fim_data.py rename to src/icefabric/builds/map_fim_data.py diff --git a/src/icefabric/helpers/__init__.py b/src/icefabric/helpers/__init__.py new file mode 100644 index 0000000..5bcf70b --- /dev/null +++ b/src/icefabric/helpers/__init__.py @@ -0,0 +1,24 @@ +"""Helper functions designed to assist with managing data. Similar to util functions""" + +from .arch_weather_file_utils import ( + get_archival_weather_files, + load_tiff_file, + virtualize_and_concat_archival_files_on_time, +) +from .creds import load_creds +from .geopackage import table_to_geopandas, to_geopandas +from .nc_conv_utils import conv_nc, convert_files_to_netcdf4, convert_nc_files_from_s3 +from .topobathy_ic_to_tif import convert_topobathy_to_tiff + +__all__ = [ + "get_archival_weather_files", + "load_tiff_file", + "virtualize_and_concat_archival_files_on_time", + "load_creds", + "table_to_geopandas", + "to_geopandas", + "convert_files_to_netcdf4", + "convert_nc_files_from_s3", + "conv_nc", + "convert_topobathy_to_tiff", +] diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py b/src/icefabric/helpers/arch_weather_file_utils.py similarity index 93% rename from src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py rename to src/icefabric/helpers/arch_weather_file_utils.py index e3128c5..dfd300b 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/arch_weather_file_utils.py +++ b/src/icefabric/helpers/arch_weather_file_utils.py @@ -6,25 +6,16 @@ """ import os -from enum import Enum + import fsspec import pandas as pd import rioxarray as rxr import xarray as xr from tqdm import tqdm from virtualizarr import open_virtual_dataset -from icefabric_tools.icechunk import S3Path - -class FileType(Enum): - """ - Archival weather file types - - Enum class for instantiating different archival weather file - formats. Used when virtualizing and collecting files. - """ - GEOTIFF = ".tif" - NETCDF = ".nc" +from icefabric.builds.icechunk_s3_module import S3Path +from icefabric.schemas.topobathy import FileType def load_tiff_file(fp: str, attr_name: str) -> xr.Dataset | xr.DataArray | list[xr.Dataset]: @@ -41,7 +32,7 @@ def load_tiff_file(fp: str, attr_name: str) -> xr.Dataset | xr.DataArray | list[ File path to the TIFF that will be returned as a dataset. attr_name : str Name of the attribute of interest. Ex: "elevation". - Note: Not all rasters will be elevation in future. + Note: Not all rasters will be elevation in future. Returns ------- @@ -109,7 +100,7 @@ def get_archival_weather_files( return files -def extract_dates_from_archival_files( +def _extract_dates_from_archival_files( file_paths: list[str], file_pattern: str, just_year: bool | None = False ) -> list[pd.DatetimeIndex] | list[int]: """ @@ -146,7 +137,7 @@ def extract_dates_from_archival_files( return date_dims -def virtualize_datasets( +def _virtualize_datasets( file_list: list[str], loadable_vars: list[str] | None = None, testing_file_quantity: int | None = None ) -> list[xr.Dataset]: """ @@ -187,7 +178,7 @@ def virtualize_datasets( return v_datasets -def add_time_dim_to_datasets( +def _add_time_dim_to_datasets( timeless_datasets: list[xr.Dataset], datetimes: list[pd.DatetimeIndex], just_year: bool | None = False, @@ -278,9 +269,9 @@ def virtualize_and_concat_archival_files_on_time( arch_files = get_archival_weather_files( loc=location, file_type=file_type, manual_file_pattern=manual_file_pattern ) - datetimes = extract_dates_from_archival_files(arch_files, file_date_pattern, just_year=just_year) - timeless_datasets = virtualize_datasets(arch_files, loadable_vars, testing_file_quantity) - time_added_datasets = add_time_dim_to_datasets( + datetimes = _extract_dates_from_archival_files(arch_files, file_date_pattern, just_year=just_year) + timeless_datasets = _virtualize_datasets(arch_files, loadable_vars, testing_file_quantity) + time_added_datasets = _add_time_dim_to_datasets( timeless_datasets, datetimes, just_year, testing_file_quantity ) concat_dim = "year" if just_year else "time" diff --git a/src/icefabric/helpers/creds.py b/src/icefabric/helpers/creds.py new file mode 100644 index 0000000..b8b10b2 --- /dev/null +++ b/src/icefabric/helpers/creds.py @@ -0,0 +1,29 @@ +"""A file for cred helpers""" + +import os +from pathlib import Path + +from dotenv import load_dotenv + + +def load_creds(dir: Path): + """Loads the .env and .pyiceberg.yaml files from the project root + + Parameters + ---------- + dir : Path + The directory where the creds exist + + Raises + ------ + FileNotFoundError + The .pyiceberg.yaml file does not exist + """ + load_dotenv(dotenv_path=dir / ".env") + pyiceberg_file = dir / ".pyiceberg.yaml" + if pyiceberg_file.exists(): + os.environ["PYICEBERG_HOME"] = str(pyiceberg_file) + else: + raise FileNotFoundError( + "Cannot find .pyiceberg.yaml. Please download this from NGWPC confluence or create " + ) diff --git a/src/icefabric/helpers/geopackage.py b/src/icefabric/helpers/geopackage.py new file mode 100644 index 0000000..1335da0 --- /dev/null +++ b/src/icefabric/helpers/geopackage.py @@ -0,0 +1,72 @@ +"""Contains all api functions that can be called outside of the icefabric_tools package""" + +import geopandas as gpd +import pandas as pd +from pyiceberg.expressions import BooleanExpression +from pyiceberg.table import ALWAYS_TRUE, Table +from shapely import wkb + + +def table_to_geopandas( + table: Table, + row_filter: str | BooleanExpression = ALWAYS_TRUE, + case_sensitive: bool | None = True, + snapshot_id: int | None = None, + limit: int | None = None, +) -> gpd.GeoDataFrame: + """Converts a table to a geopandas dataframe + + Parameters + ---------- + table : Table + The iceberg table you are trying to read from + row_filter : str | None, optional + A string or BooleanExpression that describes the desired rows, by default "" + case_sensitive : bool | None, optional + If True column matching is case sensitive, by default True + snapshot_id : int | None, optional + Optional Snapshot ID to time travel to. + If None, scans the table as of the current snapshot ID, by default None + limit : int | None, optional + An integer representing the number of rows to return in the scan result. + If None, fetches all matching rows., by default None + + Returns + ------- + gpd.DataFrame + The resulting queried row, but in a geodataframe + """ + df = table.scan( + row_filter=row_filter, + case_sensitive=case_sensitive, + snapshot_id=snapshot_id, + limit=limit, + ).to_pandas() + return to_geopandas(df) + + +def to_geopandas(df: pd.DataFrame, crs: str = "EPSG:5070") -> gpd.GeoDataFrame: + """Converts the geometries in a pandas df to a geopandas dataframe + + Parameters + ---------- + df: pd.DataFrame + The iceberg table you are trying to read from + crs: str, optional + A string representing the CRS to set in the gdf, by default "EPSG:5070" + + Returns + ------- + gpd.DataFrame + The resulting queried row, but in a geodataframe + + Raises + ------ + ValueError + Raised if the table does not have a geometry column + """ + if "geometry" not in df.columns: + raise ValueError("The provided table does not have a geometry column.") + + geometry = df["geometry"].apply(lambda x: wkb.loads(x) if x is not None else None) + return gpd.GeoDataFrame(df, geometry=geometry, crs=crs) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py b/src/icefabric/helpers/nc_conv_utils.py similarity index 97% rename from src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py rename to src/icefabric/helpers/nc_conv_utils.py index 71476cb..185f500 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/nc_conv_utils.py +++ b/src/icefabric/helpers/nc_conv_utils.py @@ -6,8 +6,8 @@ from netCDF4 import Dataset as NCDataset from tqdm import tqdm -import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils -from icefabric_tools.icechunk import S3Path +import icefabric.helpers.arch_weather_file_utils as awf_utils +from icefabric.builds.icechunk_s3_module import S3Path def convert_files_to_netcdf4( diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py b/src/icefabric/helpers/topobathy_ic_to_tif.py similarity index 57% rename from src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py rename to src/icefabric/helpers/topobathy_ic_to_tif.py index 5d14e0f..4ee6057 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/topobathy_ic_to_tif.py +++ b/src/icefabric/helpers/topobathy_ic_to_tif.py @@ -1,14 +1,12 @@ import os -from dotenv import load_dotenv from tqdm import tqdm -from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations +from icefabric.builds.icechunk_s3_module import IcechunkRepo +from icefabric.schemas.topobathy import NGWPCLocations -load_dotenv() - -def convert_topobathy_to_tiff(output_dir: str, ic_rasters: list[NGWPCLocations]) -> None: +def convert_topobathy_to_tiff(output_dir: str, ic_rasters: list[str]) -> None: """Converts topobathy layers from icechunk to tiff for use in tiles Parameters @@ -19,17 +17,7 @@ def convert_topobathy_to_tiff(output_dir: str, ic_rasters: list[NGWPCLocations]) list of NGWPCLocation raster paths. eg. [NGWPCLocations[TOPO_AK_30M_IC].path] """ for ic_raster in tqdm(ic_rasters, desc="Downloading IC Rasters to .tif"): - repo = IcechunkS3Repo(location=NGWPCLocations[ic_raster].path) + repo = IcechunkRepo(location=NGWPCLocations[ic_raster].path) output = os.path.join(output_dir, f"{str.split(str(NGWPCLocations[ic_raster].path), '/')[-1]}.tif") repo.retrieve_and_convert_to_tif(dest=output, var_name="elevation") - - -if __name__ == "__main__": - output_dir = "./temp_tb_data" - os.makedirs(output_dir, exist_ok=True) - - # all 30 m topobathy layers - ic_rasters = [f for f in NGWPCLocations._member_names_ if "TOPO" and "30M" in f] - - convert_topobathy_to_tiff(output_dir, ic_rasters) diff --git a/src/icefabric/hydrofabric/__init__.py b/src/icefabric/hydrofabric/__init__.py new file mode 100644 index 0000000..52eae63 --- /dev/null +++ b/src/icefabric/hydrofabric/__init__.py @@ -0,0 +1,9 @@ +"""Helper functions designed to assist with managing data. Similar to util functions""" + +from .origin import find_origin +from .subset import subset + +__all__ = [ + "find_origin", + "subset", +] diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/utils.py b/src/icefabric/hydrofabric/origin.py similarity index 51% rename from src/icefabric_tools/src/icefabric_tools/iceberg/utils.py rename to src/icefabric/hydrofabric/origin.py index 82dc46a..1678d21 100644 --- a/src/icefabric_tools/src/icefabric_tools/iceberg/utils.py +++ b/src/icefabric/hydrofabric/origin.py @@ -1,75 +1,7 @@ -"""Contains all api functions that can be called outside of the icefabric_tools package""" +"""Finds the origin of the Hydrofabric id""" -import geopandas as gpd import pandas as pd -from pyiceberg.expressions import BooleanExpression -from pyiceberg.table import ALWAYS_TRUE, Table -from shapely import wkb - - -def table_to_geopandas( - table: Table, - row_filter: str | BooleanExpression = ALWAYS_TRUE, - case_sensitive: bool | None = True, - snapshot_id: int | None = None, - limit: int | None = None, -) -> gpd.GeoDataFrame: - """Converts a table to a geopandas dataframe - - Parameters - ---------- - table : Table - The iceberg table you are trying to read from - row_filter : str | None, optional - A string or BooleanExpression that describes the desired rows, by default "" - case_sensitive : bool | None, optional - If True column matching is case sensitive, by default True - snapshot_id : int | None, optional - Optional Snapshot ID to time travel to. - If None, scans the table as of the current snapshot ID, by default None - limit : int | None, optional - An integer representing the number of rows to return in the scan result. - If None, fetches all matching rows., by default None - - Returns - ------- - gpd.DataFrame - The resulting queried row, but in a geodataframe - """ - df = table.scan( - row_filter=row_filter, - case_sensitive=case_sensitive, - snapshot_id=snapshot_id, - limit=limit, - ).to_pandas() - return to_geopandas(df) - - -def to_geopandas(df: pd.DataFrame, crs: str = "EPSG:5070") -> gpd.GeoDataFrame: - """Converts the geometries in a pandas df to a geopandas dataframe - - Parameters - ---------- - df: pd.DataFrame - The iceberg table you are trying to read from - crs: str, optional - A string representing the CRS to set in the gdf, by default "EPSG:5070" - - Returns - ------- - gpd.DataFrame - The resulting queried row, but in a geodataframe - - Raises - ------ - ValueError - Raised if the table does not have a geometry column - """ - if "geometry" not in df.columns: - raise ValueError("The provided table does not have a geometry column.") - - geometry = df["geometry"].apply(lambda x: wkb.loads(x) if x is not None else None) - return gpd.GeoDataFrame(df, geometry=geometry, crs=crs) +from pyiceberg.table import Table def find_origin(network_table: Table, identifier: str, id_type: str = "hl_uri") -> pd.DataFrame: diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py b/src/icefabric/hydrofabric/subset.py similarity index 94% rename from src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py rename to src/icefabric/hydrofabric/subset.py index 99db880..25a1158 100644 --- a/src/icefabric_tools/src/icefabric_tools/iceberg/hydrofabric.py +++ b/src/icefabric/hydrofabric/subset.py @@ -1,40 +1,17 @@ """A file to hold all hydrofabric geospatial tools""" -from enum import Enum from pathlib import Path import geopandas as gpd import pandas as pd +from botocore.exceptions import ClientError from pyiceberg.catalog import Catalog from pyiceberg.expressions import And, EqualTo, In from pyiceberg.table import Table -from icefabric_tools.iceberg.utils import find_origin, table_to_geopandas, to_geopandas - - -class IdType(str, Enum): - """All queriable HF fields. - - Attributes - ---------- - HL_URI : str - Hydrolocation URI identifier - HF_ID : str - Hydrofabric ID identifier - ID : str - Generic ID identifier - POI_ID : str - Point of Interest ID identifier - """ - - HL_URI = "hl_uri" - HF_ID = "hf_id" - ID = "id" - POI_ID = "poi_id" - - -# For catchments that may extend in many VPUs -UPSTREAM_VPUS: dict[str, list[str]] = {"08": ["11", "10U", "10L", "08", "07", "05"]} +from icefabric.helpers.geopackage import table_to_geopandas, to_geopandas +from icefabric.hydrofabric.origin import find_origin +from icefabric.schemas.hydrofabric import UPSTREAM_VPUS, IdType def get_sorted_network(network_df: pd.DataFrame, outlets: list[str] | str) -> pd.DataFrame: @@ -298,12 +275,15 @@ def subset( layers = [] layers.extend(["divides", "flowpaths", "network", "nexus"]) layers = list(set(layers)) - - network = catalog.load_table("hydrofabric.network") - divides = catalog.load_table("hydrofabric.divides") - flowpaths = catalog.load_table("hydrofabric.flowpaths") - nexus = catalog.load_table("hydrofabric.nexus") - + try: + network = catalog.load_table("hydrofabric.network") + divides = catalog.load_table("hydrofabric.divides") + flowpaths = catalog.load_table("hydrofabric.flowpaths") + nexus = catalog.load_table("hydrofabric.nexus") + except ClientError as e: + msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" + print(msg) + raise e # Find the origin point origin_row = find_origin(network_table=network, identifier=identifier, id_type=id_type.value) origin_filter = EqualTo("id", origin_row["id"].iloc[0]) diff --git a/src/icefabric/modules/__init__.py b/src/icefabric/modules/__init__.py new file mode 100644 index 0000000..5b8f303 --- /dev/null +++ b/src/icefabric/modules/__init__.py @@ -0,0 +1,11 @@ +"""Contains helper functions to support NWM modules""" + +from .create_ipes import divide_parameters, get_hydrofabric_attributes, module_ipe +from .rnr import get_rnr_segment + +__all__ = [ + "divide_parameters", + "get_hydrofabric_attributes", + "module_ipe", + "get_rnr_segment", +] diff --git a/src/icefabric_api/src/icefabric_api/create_ipes.py b/src/icefabric/modules/create_ipes.py similarity index 88% rename from src/icefabric_api/src/icefabric_api/create_ipes.py rename to src/icefabric/modules/create_ipes.py index a2866a5..de0113b 100644 --- a/src/icefabric_api/src/icefabric_api/create_ipes.py +++ b/src/icefabric/modules/create_ipes.py @@ -1,16 +1,36 @@ -import logging import os import geopandas as gpd import pandas as pd -from pyproj import Transformer -from pyiceberg.catalog import load_catalog import pyiceberg.exceptions as ex +from botocore.exceptions import ClientError +from pyiceberg.catalog import load_catalog +from pyproj import Transformer -logger = logging.getLogger(__name__) ROOT_DIR = os.path.abspath(os.curdir) -def module_ipe(module, attr, domain, version, cfg_write=None): + +def module_ipe(module: str, attr: str, domain: str, version: str, cfg_write=None): + """Creates initial parameter estimates for a module + + Parameters + ---------- + module : str + _description_ + attr : str + _description_ + domain : str + _description_ + version : str + _description_ + cfg_write : str, optional + _description_, by default None + + Returns + ------- + _type_ + _description_ + """ # Create empty dataframe for csv parameters csv_params = pd.DataFrame() @@ -41,7 +61,7 @@ def module_ipe(module, attr, domain, version, cfg_write=None): } # Get output vars out_datatypes = {"variable": "object", "description": "object"} - + module_params = pd.read_csv(f"{ROOT_DIR}/data/{param_file}", dtype=datatypes) output_vars = pd.DataFrame() if has_output_vars: @@ -70,7 +90,7 @@ def module_ipe(module, attr, domain, version, cfg_write=None): attr = attr[attr_list] # Rename attribute names to module names attr.rename(columns=attr_name_map, inplace=True) - + # Get iceberg table parameters if "iceberg" in module_params["source"].values: iceberg_params = divide_parameters(divides, module, domain) @@ -85,22 +105,23 @@ def module_ipe(module, attr, domain, version, cfg_write=None): iceberg_params_div = iceberg_params.loc[iceberg_params["divide_id"] == divide] iceberg_params_div = iceberg_params_div.to_dict(orient="list") all_cats[divide].update(iceberg_params_div) - + # When dataframe is converted to a dictionary, the values are contained in a list - # Remove the value from the list. + # Remove the value from the list. for key in all_cats[divide].keys(): value = all_cats[divide][key] if isinstance(value, list): all_cats[divide][key] = value[0] - if cfg_write: - write_cfg(all_cats) + _write_cfg(all_cats) s3_uri = "s3://" - module_json = write_json(all_cats[divides[1]], module_params, output_vars, module, s3_uri) + module_json = _write_json(all_cats[divides[1]], module_params, output_vars, module, s3_uri) return module_json -def write_cfg(params): + +def _write_cfg(params: dict): + """Writes a config file from a dictionary of parameters""" divides = params.keys() for divide in divides: cfg_file = f"{ROOT_DIR}/{divide}_bmi_config_cfe.txt" @@ -112,7 +133,8 @@ def write_cfg(params): f.close() -def write_json(params, all_params, output_vars, module, s3_uri): +def _write_json(params, all_params, output_vars, module, s3_uri): + """Writes a JSON file from a dictionary of parameters""" json_columns = ["name", "description", "default_value", "min", "max", "data_type", "units"] all_params = all_params.loc[all_params["calibratable"] == True, json_columns] all_params = all_params.to_dict(orient="records") @@ -135,6 +157,7 @@ def write_json(params, all_params, output_vars, module, s3_uri): def get_hydrofabric_attributes(gpkg_file, version, domain): + """Gets attributes from the hydrofabric geopackage""" attr_layer = "divide-attributes" if version == "2.1": attr_layer = "model-attributes" @@ -178,7 +201,7 @@ def get_hydrofabric_attributes(gpkg_file, version, domain): except: # TODO: Replace 'except' with proper catch error_str = "Error opening " + gpkg_file error = dict(error=error_str) - logger.error(error_str) + print(error_str) return error # Get catchement area from divides layer and append to attributes data frame @@ -224,7 +247,9 @@ def get_hydrofabric_attributes(gpkg_file, version, domain): return divide_attr + def divide_parameters(divides, module, domain): + """Returns iceberg divide parameters""" module = module.lower() domain = domain.lower() namespace = "divide_parameters" @@ -232,14 +257,13 @@ def divide_parameters(divides, module, domain): catalog = load_catalog("glue") try: table = catalog.load_table(table_name) - except ex.NoSuchTableError as e: + except ex.NoSuchTableError: print(f"Table {table_name} does not exist") return pd.DataFrame() - except Exception as e: - print(f"Iceberg table load exception: {e}") - return pd.DataFrame() + except ClientError as e: + msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" + print(msg) + raise e df = table.scan().to_pandas() - filtered = df[df['divide_id'].isin(divides)] + filtered = df[df["divide_id"].isin(divides)] return filtered - - diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py b/src/icefabric/modules/rnr.py similarity index 98% rename from src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py rename to src/icefabric/modules/rnr.py index 07598b6..6906a1b 100644 --- a/src/icefabric_tools/src/icefabric_tools/iceberg/rnr.py +++ b/src/icefabric/modules/rnr.py @@ -6,7 +6,7 @@ from pyiceberg.catalog import Catalog from pyiceberg.expressions import And, EqualTo, In, LessThanOrEqual -from icefabric_tools.iceberg.utils import table_to_geopandas, to_geopandas +from icefabric.helpers.geopackage import table_to_geopandas, to_geopandas def get_rnr_segment(catalog: Catalog, reach_id: str, output_file: str) -> gpd.GeoDataFrame | None: diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py new file mode 100644 index 0000000..86d1c95 --- /dev/null +++ b/src/icefabric/schemas/__init__.py @@ -0,0 +1,6 @@ +"""Contains helper functions to support NWM modules""" + +from .hydrofabric import UPSTREAM_VPUS, IdType +from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations + +__all__ = ["UPSTREAM_VPUS", "IdType", "FileType", "NGWPCLocations", "NGWPCTestLocations"] diff --git a/src/icefabric/schemas/hydrofabric.py b/src/icefabric/schemas/hydrofabric.py new file mode 100644 index 0000000..dbb6d8c --- /dev/null +++ b/src/icefabric/schemas/hydrofabric.py @@ -0,0 +1,28 @@ +"""Contains all schemas and enums for the NGWPC Enterprise Hydrofabric""" + +from enum import Enum + + +class IdType(str, Enum): + """All queriable HF fields. + + Attributes + ---------- + HL_URI : str + Hydrolocation URI identifier + HF_ID : str + Hydrofabric ID identifier + ID : str + Generic ID identifier + POI_ID : str + Point of Interest ID identifier + """ + + HL_URI = "hl_uri" + HF_ID = "hf_id" + ID = "id" + POI_ID = "poi_id" + + +# For catchments that may extend in many VPUs +UPSTREAM_VPUS: dict[str, list[str]] = {"08": ["11", "10U", "10L", "08", "07", "05"]} diff --git a/src/icefabric/schemas/topobathy.py b/src/icefabric/schemas/topobathy.py new file mode 100644 index 0000000..25ed9b6 --- /dev/null +++ b/src/icefabric/schemas/topobathy.py @@ -0,0 +1,81 @@ +"""Contains all schemas and enums for topobathy definitions in the NGWPC S3""" + +from enum import Enum + +from icefabric.builds.icechunk_s3_module import S3Path + +TOPO_BP = "surface/nws-topobathy" +TOPO_NOS = f"{TOPO_BP}/nws-nos-surveys" + + +class FileType(Enum): + """ + Archival weather file types + + Enum class for instantiating different archival weather file + formats. Used when virtualizing and collecting files. + """ + + GEOTIFF = ".tif" + NETCDF = ".nc" + + +class NGWPCLocations(Enum): + """ + Important NGWPC S3 locations + + Enum class for instantiating S3Paths corresponding to the + icechunk stores, as well as the reference locations for virtualized + stores. + """ + + SNODAS_REF = ("ngwpc-forcing", "snodas_nc_v4") + SNODAS_V3 = ("ngwpc-forcing", "snodas_nc") + SNODAS_IC = ("hydrofabric-data", "forcing/snodas") + NLCD_REF = ("ngwpc-hydrofabric", "NLCD_Land_Cover_CONUS") + NLCD_IC = ("hydrofabric-data", "land-cover/NLCD-Land-Cover") + TOPO_AK_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_10m") + TOPO_AK_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_alaska_30m") + TOPO_CONUS_ATL_GULF_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_atlantic_gulf_30m") + TOPO_CONUS_PAC_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_conus_pacific_30m") + TOPO_GREAT_LAKES_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_great_lakes_30m") + TOPO_HA_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_10m") + TOPO_HA_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_hawaii_30m") + TOPO_PR_USVI_10M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_10m") + TOPO_PR_USVI_30M_IC = ("hydrofabric-data", f"{TOPO_BP}/tbdem_pr_usvi_30m") + TOPO_ALBEMARLE_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Albemarle_Sound_NOS_NCEI") + TOPO_CHESAPEAKE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Chesapeake_Bay_NOS_NCEI") + TOPO_MOBILE_BAY_IC = ("hydrofabric-data", f"{TOPO_NOS}/Mobile_Bay_NOS_NCEI") + TOPO_TANGIER_SOUND_IC = ("hydrofabric-data", f"{TOPO_NOS}/Tangier_Sound_NOS_NCEI") + + def __init__(self, bucket, prefix): + self.path = S3Path(bucket, prefix) + + +class NGWPCTestLocations(Enum): + """ + Important NGWPC S3 locations + + Enum class for instantiating S3Paths corresponding to the + icechunk stores, as well as the reference locations for virtualized + stores. + """ + + SNODAS_IC = ("edfs-data", "forcing/snodas") + NLCD_IC = ("edfs-data", "land-cover/NLCD-Land-Cover") + TOPO_AK_10M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_alaska_10m") + TOPO_AK_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_alaska_30m") + TOPO_CONUS_ATL_GULF_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_conus_atlantic_gulf_30m") + TOPO_CONUS_PAC_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_conus_pacific_30m") + TOPO_GREAT_LAKES_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_great_lakes_30m") + TOPO_HA_10M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_hawaii_10m") + TOPO_HA_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_hawaii_30m") + TOPO_PR_USVI_10M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_pr_usvi_10m") + TOPO_PR_USVI_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_pr_usvi_30m") + TOPO_ALBEMARLE_SOUND_IC = ("edfs-data", f"{TOPO_NOS}/Albemarle_Sound_NOS_NCEI") + TOPO_CHESAPEAKE_BAY_IC = ("edfs-data", f"{TOPO_NOS}/Chesapeake_Bay_NOS_NCEI") + TOPO_MOBILE_BAY_IC = ("edfs-data", f"{TOPO_NOS}/Mobile_Bay_NOS_NCEI") + TOPO_TANGIER_SOUND_IC = ("edfs-data", f"{TOPO_NOS}/Tangier_Sound_NOS_NCEI") + + def __init__(self, bucket, prefix): + self.path = S3Path(bucket, prefix) diff --git a/src/icefabric/ui/__init__.py b/src/icefabric/ui/__init__.py new file mode 100644 index 0000000..75174ee --- /dev/null +++ b/src/icefabric/ui/__init__.py @@ -0,0 +1,9 @@ +"""Contains helper functions to support NWM modules""" + +from .geo_utils import create_time_series_widget, get_geopackage_uri, get_observational_uri + +__all__ = [ + "create_time_series_widget", + "get_geopackage_uri", + "get_observational_uri", +] diff --git a/src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py b/src/icefabric/ui/geo_utils.py similarity index 60% rename from src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py rename to src/icefabric/ui/geo_utils.py index b64719b..3ef7846 100644 --- a/src/icefabric_tools/src/icefabric_tools/geo/geo_utils.py +++ b/src/icefabric/ui/geo_utils.py @@ -7,18 +7,28 @@ def get_observational_uri( gage_id: str, source: str = "USGS", domain: str = "CONUS", version: str = "2.1", timeout=None ) -> str: - """ - Fetches the observational data URI from the NextGen Water Prediction API. + """Fetch observational data URI from the NextGen Water Prediction API. - Args: - gage_id (str): The gage identifier. - source (str): Data source, e.g., "USGS". - domain (str): Domain name, e.g., "CONUS". - version (str): API version, e.g., "2.2". + Retrieves the URI for observational streamflow data for a specific gage + from the NextGen Water Prediction hydrofabric API. + + Parameters + ---------- + gage_id : str + The gage identifier (e.g., USGS station ID). + source : str, default "USGS" + Data source provider for the observational data. + domain : str, default "CONUS" + Geographic domain name for the data request. + version : str, default "2.1" + API version to use for the request. + timeout : float or None, optional + Request timeout in seconds. If None, uses httpx default. Returns ------- - str: The URI of the observational dataset. + str + The URI pointing to the observational dataset. """ base_url = f"https://hydroapi.oe.nextgenwaterprediction.com/hydrofabric/{version}/observational" params = {"gage_id": gage_id, "source": source, "domain": domain} @@ -33,15 +43,29 @@ def get_observational_uri( def get_geopackage_uri( gage_id: str, source: str = "USGS", domain: str = "CONUS", version: str = "2.2", timeout=None ) -> str: - """ - Fetches the GeoPackage URI for a given gage ID from the NextGen Water Prediction API. + """Fetch GeoPackage URI for a gage from the NextGen Water Prediction API. + + Retrieves the URI for a hydrofabric GeoPackage containing network topology + and catchment boundaries for a specific gage from the NextGen API. + + Parameters + ---------- + gage_id : str + The gage identifier for which to retrieve the hydrofabric GeoPackage. + source : str, default "USGS" + Data source provider for the gage data. + domain : str, default "CONUS" + Geographic domain name for the hydrofabric request. + version : str, default "2.2" + Hydrofabric version to retrieve. + timeout : float or None, optional + Request timeout in seconds. If None, uses httpx default. Returns ------- - str: The URI pointing to the GeoPackage in S3. + str + The URI pointing to the GeoPackage file in S3 storage. """ - import httpx - base_url = "https://hydroapi.oe.nextgenwaterprediction.com/hydrofabric/geopackages" params = {"gage_id": gage_id, "source": source, "domain": domain, "version": version} @@ -74,7 +98,7 @@ def plot_flow(start, end): end_dt = pd.to_datetime(end) if start_dt >= end_dt: - print("⚠️ Start must be before End.") + print("Warning: Start must be before End.") return filtered = df[(df["dateTime"] >= start_dt) & (df["dateTime"] <= end_dt)] diff --git a/src/icefabric_api/README.md b/src/icefabric_api/README.md deleted file mode 100644 index 5a8601a..0000000 --- a/src/icefabric_api/README.md +++ /dev/null @@ -1,102 +0,0 @@ -# Icefabric API - -FastAPI service providing access to hydrology and water resources data stored in Apache Iceberg format. - -## Features - -- **Streamflow Observations** - USGS hourly streamflow data in CSV/Parquet formats -- **Hydrofabric Subsets** - Upstream watershed data as downloadable geopackages -- **Interactive Documentation** - Built-in Swagger UI and ReDoc - -## Quick Start - -### Prerequisites - -- [uv](https://docs.astral.sh/uv/) package manager - -### Installation - -```bash -# Clone repository -git clone -cd icefabric - -# Install package in development mode -uv pip install src/icefabric_api -e . -``` - -### Running the API - -```bash -# Start development server -cd src/icefabric_api -python -m app.main -``` - -The API will be available at `http://localhost:8000` - -### Docker Alternative - -```bash -# Build and run with Docker -docker compose -f docker/compose.yaml build --no-cache -docker compose -f docker/compose.yaml up -``` - -## API Endpoints - -### Streamflow Observations - -- `GET /v1/streamflow_observations/sources` - List available data sources -- `GET /v1/streamflow_observations/usgs/available` - Get available station IDs -- `GET /v1/streamflow_observations/usgs/{identifier}/info` - Station metadata -- `GET /v1/streamflow_observations/usgs/csv` - Download CSV data -- `GET /v1/streamflow_observations/usgs/parquet` - Download Parquet data - -### Hydrofabric - -- `GET /v1/hydrofabric/{identifier}/gpkg` - Download watershed subset as geopackage - -### Health Check - -- `HEAD /health` - API health status - -## Usage Examples - -### Download Streamflow Data - -```python -import requests -import pandas as pd - -# Get station information -response = requests.get( - "http://localhost:8000/v1/streamflow_observations/usgs/01031500/info" -) -station_info = response.json() - -# Download CSV data -csv_response = requests.get( - "http://localhost:8000/v1/streamflow_observations/usgs/csv", - params={ - "identifier": "01031500", - "start_date": "2023-01-01T00:00:00", - "end_date": "2023-01-31T23:59:59" - } -) -df = pd.read_csv(csv_response.text) -``` - -## Documentation - -- **Interactive API Docs**: http://localhost:8000/docs -- **Alternative Docs**: http://localhost:8000/redoc -- **OpenAPI Schema**: http://localhost:8000/openapi.json - -## Initial Parameters - -CSV files for catchment specific values are too big to be checked in. They are stored here: s3://ngwpc-dev/DanielCumpton/divide_csv.tgz -Download and untar in the icefabric/src/icefabric_api/data directory. -For now, you can run modules by listing them in the module list defined on line 108 in run_modules.py. Text files showing all parameters as key/value -pairs will be written to a files per catchment. A JSON is output to the terminal. SFT, SMP, and LASAM csv files still need work to define the parameters properly. -See icefabric/src/icefabric_api/data/modules.csv for module name strings. diff --git a/src/icefabric_api/pyproject.toml b/src/icefabric_api/pyproject.toml deleted file mode 100644 index 3d529d8..0000000 --- a/src/icefabric_api/pyproject.toml +++ /dev/null @@ -1,15 +0,0 @@ -[project] -name = "icefabric_api" -version = "2025.6.0" -description = "A FastAPI API for querying apache iceberg tables" -readme = "README.md" -requires-python = ">=3.11, <3.13" -dependencies = [ - "fastapi[standard]>=0.115.12", - "pydantic==2.11.5", - "pydantic-settings==2.9.1", -] - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" diff --git a/src/icefabric_api/src/icefabric_api/__init__.py b/src/icefabric_api/src/icefabric_api/__init__.py deleted file mode 100644 index becebe6..0000000 --- a/src/icefabric_api/src/icefabric_api/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from icefabric_api.create_ipes import get_hydrofabric_attributes, module_ipe - -__all__ = [ - "get_hydrofabric_attributes", - "module_ipe", -] diff --git a/src/icefabric_manage/README.md b/src/icefabric_manage/README.md deleted file mode 100644 index dbb02f0..0000000 --- a/src/icefabric_manage/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Icefabric Manage - -A repo which contains scripts for building the icefabric from scratch - -### How to build locally -- The `icefabric_manage` package must be installed through `uv sync` -- There must be parquet files locally to build from. These files are to be downloaded from the NGWPC S3 bucket @ `s3://hydrofabric-data/icefabric/` and placed in `src/icefabric_manage/data/` - -Once you have parquet files locally in the `data/` dir, you can convert them to an icefabric warehouse through a build script in `scripts/` or make your own! diff --git a/src/icefabric_manage/pyproject.toml b/src/icefabric_manage/pyproject.toml deleted file mode 100644 index ba9ddec..0000000 --- a/src/icefabric_manage/pyproject.toml +++ /dev/null @@ -1,32 +0,0 @@ -[project] -name = "icefabric_manage" -version = "2025.6.0" -description = "All functionality for creating, updating, and deleting information from the icefabric catalog" -authors = [ - { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, - { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, - { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, - { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, - { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, -] -maintainers = [ - { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, - { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, - { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, - { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, - { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, -] -readme = "README.md" -dependencies = [ - "numpy==2.2.6", - "pandas==2.2.3", - "geopandas==1.0.1", - "s3fs==2025.5.1", - "pyarrow==20.0.0", - "pyiceberg[s3fs,glue,sql-sqlite]==0.9.1", - "python-dotenv==1.1.0", -] - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" diff --git a/src/icefabric_manage/src/icefabric_manage/__init__.py b/src/icefabric_manage/src/icefabric_manage/__init__.py deleted file mode 100644 index 49b9a3e..0000000 --- a/src/icefabric_manage/src/icefabric_manage/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -from icefabric_manage._api import build -from icefabric_manage.iceberg_table import IcebergTable -from icefabric_manage.map_fim_data import MapData - -__all__ = ["build", "IcebergTable", "MapData"] diff --git a/src/icefabric_tools/README.md b/src/icefabric_tools/README.md deleted file mode 100644 index 7ee2c9f..0000000 --- a/src/icefabric_tools/README.md +++ /dev/null @@ -1,6 +0,0 @@ -# Icefabric tools - -A collection of compute functions/services build on top of existing Iceberg data - -Prior to exectuing the "src/icefabric_tools", one must establish their environment via -"uv pip install -e" against the .toml file residing within "https://github.com/NGWPC/icefabric/blob/main/pyproject.toml." diff --git a/src/icefabric_tools/pyproject.toml b/src/icefabric_tools/pyproject.toml deleted file mode 100644 index 24cbf59..0000000 --- a/src/icefabric_tools/pyproject.toml +++ /dev/null @@ -1,54 +0,0 @@ -[project] -name = "icefabric_tools" -version = "2025.6.0" -description = "All functionality for creating, updating, and deleting information from the icefabric catalog" -authors = [ - { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, - { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, - { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, - { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, - { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, -] -maintainers = [ - { name = "Tadd Bindas", email = "tadd.bindas@ertcorp.com" }, - { name = "Sylvia Chin", email = "sylvia.c.chin@rtx.com" }, - { name = "Daniel Cumpton", email = "dcumpton@rtx.com" }, - { name = "Quercus Hamlin", email = "qhamlin@asrcfederal.com" }, - { name = "Brock Hinkson", email = "brock.w.hinkson@rtx.com" }, -] -readme = "README.md" -dependencies = [ - "numpy==2.2.6", - "pandas==2.2.3", - "geopandas==1.0.1", - "matplotlib==3.10.3", - "s3fs==2025.5.1", - "pyarrow==20.0.0", - "pyiceberg[s3fs,glue]==0.9.1", - "xarray==2025.4.0", - "rioxarray==0.19.0", - "icechunk==0.2.14", - "zarr==3.0.8", - "virtualizarr==1.3.2", - "tqdm==4.67.1", - "tifffile==2025.5.21", - "scipy==1.15.3", - "kerchunk==0.2.8", - "h5py==3.13.0", - "h5netcdf==1.6.1", - "fsspec==2025.5.1", - "dask==2025.5.1", - "netCDF4==1.7.2", - "python-dotenv==1.1.0", - "folium==0.19.5", - "geodatasets==2024.8.0", - "httpx==0.28.1", - "ipywidgets==8.1.6", - "mapclassify==2.9.0", - "jupyterlab==4.4.3", - "jupytergis==0.5.0", -] - -[build-system] -requires = ["hatchling"] -build-backend = "hatchling.build" diff --git a/src/icefabric_tools/src/icefabric_tools/__init__.py b/src/icefabric_tools/src/icefabric_tools/__init__.py deleted file mode 100644 index 8a7da3d..0000000 --- a/src/icefabric_tools/src/icefabric_tools/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -from icefabric_tools.iceberg.hydrofabric import IdType, subset -from icefabric_tools.iceberg.rnr import get_rnr_segment -from icefabric_tools.iceberg.utils import find_origin, table_to_geopandas, to_geopandas - -__all__ = [ - "IdType", - "subset", - "get_rnr_segment", - "find_origin", - "to_geopandas", - "table_to_geopandas", -] diff --git a/src/icefabric_tools/src/icefabric_tools/geo/__init__.py b/src/icefabric_tools/src/icefabric_tools/geo/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py b/src/icefabric_tools/src/icefabric_tools/iceberg/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py b/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py deleted file mode 100644 index c0ef9ae..0000000 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -from icefabric_tools.icechunk.icechunk_s3_module import ( - IcechunkS3Repo, - NGWPCLocations, - S3Path, - get_icechunk_data, -) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py b/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py deleted file mode 100644 index bd08485..0000000 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_s3_migration.py +++ /dev/null @@ -1,58 +0,0 @@ -import os -from icefabric_tools.icechunk import IcechunkS3Repo, NGWPCLocations, S3Path -from icefabric_tools.icechunk.icechunk_testing import * - -def migrate_all_icechunks(attr_name): - ''' - Converts & migrates TIFFs from local to cloud. - - Args: - attr_name (str): Attribute name of interest for a given TIFF. - - Return: None - - ''' - # Extract list of TIFFs from local - local_list = [] - for root, _, files in os.walk("./"): - for file in files: - if file.endswith(f".tiff"): - local_list.append(file.lower()) - - # Maps the S3 paths to TIFFs - topo_fn2s3_map = {} - for fn in local_list: - if 'hawaii_10m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_HA_10M_IC.path] = 'tbdem_hawaii_10m.tiff' - elif 'hawaii_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_HA_30M_IC.path] = 'tbdem_hawaii_30m.tiff' - elif 'conus_atlantic_gulf_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_ATL_GULF_30M_IC.path] = 'tbdem_conus_atlantic_gulf_30m.tiff' - elif 'conus_pacific_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_PAC_30M_IC.path] = 'tbdem_conus_pacific_30m.tiff' - elif 'pr_usvi_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_30M_IC.path] = 'tbdem_pr_usvi_30m.tiff' - elif 'pr_usvi_10m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_10M_IC.path] = 'tbdem_pr_usvi_10m.tiff' - elif 'alaska_10m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_AK_10M_IC.path] = 'tbdem_alaska_10m.tiff' - elif 'alaska_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_AK_30M_IC.path] = 'tbdem_alaska_30m.tiff' - elif 'great_lakes_30m' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_GREAT_LAKES_30M_IC.path] = 'tbdem_great_lakes_30m.tiff' - elif 'albemarle_sound_nos_ncei' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_ALBEMARLE_SOUND_IC.path] = 'Albemarle_Sound_NOS_NCEI.tiff' - elif 'chesapeake_bay_nos_ncei' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_CHESAPEAKE_BAY_IC.path] = 'Chesapeake_Bay_NOS_NCEI.tiff' - elif 'mobile_bay_nos_ncei' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_MOBILE_BAY_IC.path] = 'Mobile_Bay_NOS_NCEI.tiff' - elif 'tangier_sound_nos_ncei-002' in fn: - topo_fn2s3_map[NGWPCLocations.TOPO_TANGIER_SOUND_IC.path] = 'Tangier_Sound_NOS_NCEI-002.tiff' - - # Migration of all captured TIFFs to cloud. - for s3_path, fn in topo_fn2s3_map.items(): - if fn: - topo_push_test(tiff_fp=f"./{fn}", - attr_name=attr_name, - new_ic_repo=s3_path) - return \ No newline at end of file diff --git a/src/icefabric_manage/terraform/README.md b/terraform/README.md similarity index 100% rename from src/icefabric_manage/terraform/README.md rename to terraform/README.md diff --git a/src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl b/terraform/environments/test/.terraform.lock.hcl similarity index 100% rename from src/icefabric_manage/terraform/environments/test/.terraform.lock.hcl rename to terraform/environments/test/.terraform.lock.hcl diff --git a/src/icefabric_manage/terraform/environments/test/backend.tf b/terraform/environments/test/backend.tf similarity index 100% rename from src/icefabric_manage/terraform/environments/test/backend.tf rename to terraform/environments/test/backend.tf diff --git a/src/icefabric_manage/terraform/environments/test/main.tf b/terraform/environments/test/main.tf similarity index 100% rename from src/icefabric_manage/terraform/environments/test/main.tf rename to terraform/environments/test/main.tf diff --git a/src/icefabric_manage/terraform/environments/test/terraform.tfvars b/terraform/environments/test/terraform.tfvars similarity index 96% rename from src/icefabric_manage/terraform/environments/test/terraform.tfvars rename to terraform/environments/test/terraform.tfvars index 518b338..71c8ea7 100644 --- a/src/icefabric_manage/terraform/environments/test/terraform.tfvars +++ b/terraform/environments/test/terraform.tfvars @@ -4,5 +4,5 @@ application = "icefabric" region = "us-east-1" team = "EDFS" identity_center_role_arn = "arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_SoftwareEngineersFull_529cc40c0355e893" -lakeformation_admin_arns = ["arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_SoftwareEngineersFull_529cc40c0355e893", +lakeformation_admin_arns = ["arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_SoftwareEngineersFull_529cc40c0355e893", "arn:aws:iam::591210920133:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdminLogin_fe24f9db156f282d"] diff --git a/src/icefabric_manage/terraform/environments/test/variables.tf b/terraform/environments/test/variables.tf similarity index 99% rename from src/icefabric_manage/terraform/environments/test/variables.tf rename to terraform/environments/test/variables.tf index ad7adc0..dc5c863 100644 --- a/src/icefabric_manage/terraform/environments/test/variables.tf +++ b/terraform/environments/test/variables.tf @@ -30,4 +30,4 @@ variable "lakeformation_admin_arns" { description = "List of ARNs to set as Lake Formation administrators" type = list(string) default = [] # Will be populated with current account or specific users/roles -} \ No newline at end of file +} diff --git a/src/icefabric_manage/terraform/iceberg_demo.py b/terraform/iceberg_demo.py similarity index 100% rename from src/icefabric_manage/terraform/iceberg_demo.py rename to terraform/iceberg_demo.py diff --git a/src/icefabric_manage/terraform/modules/iceberg/main.tf b/terraform/modules/iceberg/main.tf similarity index 99% rename from src/icefabric_manage/terraform/modules/iceberg/main.tf rename to terraform/modules/iceberg/main.tf index c99b6d8..229e27a 100644 --- a/src/icefabric_manage/terraform/modules/iceberg/main.tf +++ b/terraform/modules/iceberg/main.tf @@ -82,7 +82,7 @@ resource "aws_lakeformation_permissions" "database_permissions" { } } -# EDFS currently plans to manage Tables outside of Terraform, but one can grant permissions +# EDFS currently plans to manage Tables outside of Terraform, but one can grant permissions # for table(s) (if it exists or after creation) in terraform #resource "aws_lakeformation_permissions" "table_permissions" { # principal = var.identity_center_role_arn diff --git a/src/icefabric_manage/terraform/modules/iceberg/variables.tf b/terraform/modules/iceberg/variables.tf similarity index 99% rename from src/icefabric_manage/terraform/modules/iceberg/variables.tf rename to terraform/modules/iceberg/variables.tf index ad7adc0..dc5c863 100644 --- a/src/icefabric_manage/terraform/modules/iceberg/variables.tf +++ b/terraform/modules/iceberg/variables.tf @@ -30,4 +30,4 @@ variable "lakeformation_admin_arns" { description = "List of ARNs to set as Lake Formation administrators" type = list(string) default = [] # Will be populated with current account or specific users/roles -} \ No newline at end of file +} diff --git a/tests/README.md b/tests/README.md deleted file mode 100644 index 4184d08..0000000 --- a/tests/README.md +++ /dev/null @@ -1,7 +0,0 @@ -# Pytests - -This folder is for all testing data so the global confest can pick it up. This allows all tests in the namespace packages to share the same scope without having to reference one another in tests - -To run tests, run `pytest -s` from project root. - -To run the subsetter tests, run `pytest --run-slow` as these tests take some time. Otherwise, they will be skipped diff --git a/src/icefabric_manage/builds/__init__.py b/tests/__init__.py similarity index 100% rename from src/icefabric_manage/builds/__init__.py rename to tests/__init__.py diff --git a/src/icefabric_api/tests/test_hydrofabric_router.py b/tests/app/test_hydrofabric_router.py similarity index 100% rename from src/icefabric_api/tests/test_hydrofabric_router.py rename to tests/app/test_hydrofabric_router.py diff --git a/src/icefabric_api/tests/test_main.py b/tests/app/test_main.py similarity index 100% rename from src/icefabric_api/tests/test_main.py rename to tests/app/test_main.py diff --git a/src/icefabric_api/tests/test_streamflow_observations_router.py b/tests/app/test_streamflow_observations_router.py similarity index 100% rename from src/icefabric_api/tests/test_streamflow_observations_router.py rename to tests/app/test_streamflow_observations_router.py diff --git a/tests/conftest.py b/tests/conftest.py new file mode 100644 index 0000000..a1bbdee --- /dev/null +++ b/tests/conftest.py @@ -0,0 +1,159 @@ +import os +from pathlib import Path + +import pandas as pd +import pytest +from dotenv import load_dotenv +from fastapi.testclient import TestClient +from pyiceberg.catalog import Catalog, load_catalog + +from app.main import app +from icefabric.schemas import NGWPCTestLocations + +# Setting .env/.pyiceberg creds based on project root +env_path = Path.cwd() / ".env" +load_dotenv(dotenv_path=env_path) +pyiceberg_file = Path.cwd() / ".pyiceberg.yaml" +if pyiceberg_file.exists(): + os.environ["PYICEBERG_HOME"] = str(Path(__file__).parents[1]) +else: + raise FileNotFoundError( + "Cannot find .pyiceberg.yaml. Please download this from NGWPC confluence or create " + ) + + +sample_gauges = [ + # "01010000", + # "02450825", + # "03173000", + # "04100500", + # "05473450", + # "06823500", + # "07060710", + # "08070000", + # "09253000", + # "10316500", + # "11456000", + # "12411000", + # "13337000", + # "14020000", + "06710385", +] + +sample_hf_uri = [ + # "gages-01010000", + # "gages-02450825", + # "gages-03173000", + # "gages-04100500", + # "gages-05473450", + # "gages-06823500", + # "gages-07060710", + # "gages-08070000", + # "gages-09253000", + # "gages-10316500", + # "gages-11456000", + # "gages-12411000", + # "gages-13337000", + # "gages-14020000", + "gages-06710385" +] + +test_ic_rasters = [f for f in NGWPCTestLocations._member_names_ if "TOPO" in f] +local_ic_rasters = [ + Path(__file__).parent / "data/topo_tifs/nws-nos-surveys/Albemarle_Sound_NOS_NCEI", + Path(__file__).parent / "data/topo_tifs/nws-nos-surveys/Chesapeake_Bay_NOS_NCEI", + Path(__file__).parent / "data/topo_tifs/nws-nos-surveys/Mobile_Bay_NOS_NCEI", + Path(__file__).parent / "data/topo_tifs/nws-nos-surveys/Tangier_Sound_NOS_NCEI", + Path(__file__).parent / "data/topo_tifs/tbdem_alaska_10m", + Path(__file__).parent / "data/topo_tifs/tbdem_alaska_30m", + Path(__file__).parent / "data/topo_tifs/tbdem_conus_atlantic_gulf_30m", + Path(__file__).parent / "data/topo_tifs/tbdem_conus_pacific_30m", + Path(__file__).parent / "data/topo_tifs/tbdem_great_lakes_30m", + Path(__file__).parent / "data/topo_tifs/tbdem_hawaii_10m", + Path(__file__).parent / "data/topo_tifs/tbdem_hawaii_30m", + Path(__file__).parent / "data/topo_tifs/tbdem_pr_usvi_10m", + Path(__file__).parent / "data/topo_tifs/tbdem_pr_usvi_30m", +] + + +@pytest.fixture(params=test_ic_rasters) +def ic_raster(request) -> str: + """Returns AWS S3 icechunk stores/rasters for checking correctness""" + return request.param + + +@pytest.fixture(params=local_ic_rasters) +def local_ic_raster(request) -> Path: + """Returns local icechunk stores/rasters for checking correctness""" + return request.param + + +@pytest.fixture(params=sample_gauges) +def gauge_ids(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture(params=sample_hf_uri) +def gauge_hf_uri(request) -> str: + """Returns individual gauge identifiers for parameterized testing""" + return request.param + + +@pytest.fixture +def testing_dir() -> Path: + """Returns the testing data dir""" + return Path(__file__).parent / "data/" + + +@pytest.fixture(scope="session") +def client(): + """Create a test client for the FastAPI app.""" + return TestClient(app) + + +@pytest.fixture +def local_usgs_streamflow_csv(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + file_path = Path(__file__).parent / "data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.csv" + return pd.read_csv(file_path) + + +@pytest.fixture +def local_usgs_streamflow_parquet(): + """Returns a locally downloaded CSV file from a specific gauge and time""" + file_path = Path(__file__).parent / "data/usgs_01010000_data_from_20211231_1400_to_20220101_1400.parquet" + return pd.read_parquet(file_path) + + +@pytest.fixture +def hydrofabric_catalog() -> Catalog: + """Returns an iceberg catalog object for the hydrofabric""" + return load_catalog("glue") + + +def pytest_addoption(parser): + """Adds the --run-slow tag""" + parser.addoption( + "--run-slow", + action="store_true", + default=False, + help="Run slow tests", + ) + + +def pytest_collection_modifyitems(config, items): + """Allows pytest to read the --run-slow tag""" + if not config.getoption("--run-slow"): + skipper = pytest.mark.skip(reason="Only run when --run-slow is given") + for item in items: + if "slow" in item.keywords: + item.add_marker(skipper) + + +def pytest_configure(config): + """Configure pytest markers.""" + config.addinivalue_line("markers", "slow: marks tests as slow tests") + config.addinivalue_line("markers", "performance: marks tests as performance tests") + config.addinivalue_line("markers", "integration: marks tests as integration tests") + config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/tests/data/gages-06710385.gpkg b/tests/data/gages-06710385.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..8f8a14a4968a83ac42f8b1fd7beb05637f218975 GIT binary patch literal 319488 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 None: """This test is SLOW. It will temporarily download all topobathy layers, up to 9 GB individually. @@ -21,14 +19,56 @@ def test_topobathy(ic_raster: str) -> None: Corrupted rasters will load correctly in xarray but incorrectly in rasterio and cannot be exported. This test checks that when exported, a dataset has values that are non-no data. """ - data_dir = Path(__file__).parents[0] / "data" + data_dir = Path(__file__).parent / "data" + os.makedirs(data_dir, exist_ok=True) + + temp_path = data_dir / "temp_raster.tif" + + local_creds_file = Path(__file__).parents[2] / ".env" + if local_creds_file.exists is False: + pytest.skip("Skipping as AWS creds are not available") + + try: + # export icechunk zarr to geotiff raster + repo = IcechunkRepo(location=NGWPCTestLocations[ic_raster].path) + ds = repo.retrieve_dataset() + raster = ds.elevation + raster.rio.to_raster(temp_path, tiled=True, compress="LZW", bigtiff="YES") + + # open raster version + with rasterio.open(temp_path, "r") as f: + profile = f.profile + ras = f.read(1) + + # assert all values are not nodata + total_nd = np.where(ras == profile["nodata"], 1, 0).sum() + assert total_nd != ras.size + assert ras.min() != ras.max() + + finally: + if os.path.exists(temp_path): + os.remove(temp_path) + + +def test_local_topobathy(local_ic_raster: Path) -> None: + """Tests local topobathy against local icechunk stores + + Parameters + ---------- + local_ic_raster : str + _description_ + """ + data_dir = Path(__file__).parent / "data" os.makedirs(data_dir, exist_ok=True) temp_path = data_dir / "temp_raster.tif" + if local_ic_raster.exists() is False: + pytest.skip("Local file for topobathy missing. Skipping test") + try: # export icechunk zarr to geotiff raster - repo = IcechunkS3Repo(location=NGWPCLocations[ic_raster].path) + repo = IcechunkRepo(local_ic_raster) ds = repo.retrieve_dataset() raster = ds.elevation raster.rio.to_raster(temp_path, tiled=True, compress="LZW", bigtiff="YES") diff --git a/src/icefabric_tools/tests/test_subset.py b/tests/test_subset.py similarity index 94% rename from src/icefabric_tools/tests/test_subset.py rename to tests/test_subset.py index 57e059d..9e6bf0e 100644 --- a/src/icefabric_tools/tests/test_subset.py +++ b/tests/test_subset.py @@ -4,7 +4,8 @@ import pytest from pyiceberg.catalog import Catalog -from icefabric_tools import IdType, subset +from icefabric.hydrofabric import subset +from icefabric.schemas import IdType @pytest.mark.slow diff --git a/src/icefabric_tools/tests/test_utils.py b/tests/test_utils.py similarity index 89% rename from src/icefabric_tools/tests/test_utils.py rename to tests/test_utils.py index 60f5398..c4cfac2 100644 --- a/src/icefabric_tools/tests/test_utils.py +++ b/tests/test_utils.py @@ -1,7 +1,8 @@ import pytest from pyiceberg.catalog import Catalog -from icefabric_tools import IdType, find_origin +from icefabric.hydrofabric import find_origin +from icefabric.schemas import IdType @pytest.mark.unit diff --git a/tools/hydrofabric/hfsubset.py b/tools/hydrofabric/hfsubset.py new file mode 100644 index 0000000..ab0767a --- /dev/null +++ b/tools/hydrofabric/hfsubset.py @@ -0,0 +1,32 @@ +"""A script to subset the hydrofabric""" + +import argparse +from pathlib import Path + +from pyiceberg.catalog import load_catalog + +from icefabric.helpers import load_creds +from icefabric.hydrofabric import subset +from icefabric.schemas import IdType + +load_creds(dir=Path.cwd()) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument("--hf-uri", help="the gauge # to subset from") + parser.add_argument("--output-file", help="Where the subset should be output [as a geopackage]") + + args = parser.parse_args() + + if args.output_file is None: + output_file = Path("subset.gpkg") + else: + output_file = Path(args.output_file) + subset( + catalog=load_catalog("glue"), + identifier=f"gages-{args.hf_uri}", + id_type=IdType.HL_URI, + output_file=output_file, + ) + print(f"Subset file written to: {output_file}") diff --git a/tools/icechunk/convert_to_tif.py b/tools/icechunk/convert_to_tif.py new file mode 100644 index 0000000..3375125 --- /dev/null +++ b/tools/icechunk/convert_to_tif.py @@ -0,0 +1,18 @@ +"""A function to convert the topobathy data into a tif file""" + +import os +from pathlib import Path + +from icefabric.helpers import convert_topobathy_to_tiff, load_creds +from icefabric.schemas import NGWPCLocations + +load_creds(dir=Path.cwd()) + +if __name__ == "__main__": + output_dir = "./temp_tb_data" + os.makedirs(output_dir, exist_ok=True) + + # all 30 m topobathy layers + ic_rasters = [f for f in NGWPCLocations._member_names_ if "TOPO" and "30M" in f] + + convert_topobathy_to_tiff(output_dir, ic_rasters) diff --git a/tools/icechunk/icechunk_s3_migration.py b/tools/icechunk/icechunk_s3_migration.py new file mode 100644 index 0000000..456231a --- /dev/null +++ b/tools/icechunk/icechunk_s3_migration.py @@ -0,0 +1,72 @@ +import argparse +import os + +from dotenv import load_dotenv + +from icefabric.schemas import NGWPCLocations + +from .icechunk_testing import topo_push_test + +load_dotenv() + + +def migrate_all_icechunks(attr_name: str) -> None: + """Converts & migrates TIFFs from local to cloud. + + Parameters + ---------- + attr_name: str + Attribute name of interest for a given TIFF. + """ + # Extract list of TIFFs from local + local_list = [] + for _, _, files in os.walk("./"): + for file in files: + if file.endswith(".tiff"): + local_list.append(file.lower()) + + # Maps the S3 paths to TIFFs + topo_fn2s3_map = {} + for fn in local_list: + if "hawaii_10m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_HA_10M_IC.path] = "tbdem_hawaii_10m.tiff" + elif "hawaii_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_HA_30M_IC.path] = "tbdem_hawaii_30m.tiff" + elif "conus_atlantic_gulf_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_ATL_GULF_30M_IC.path] = ( + "tbdem_conus_atlantic_gulf_30m.tiff" + ) + elif "conus_pacific_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CONUS_PAC_30M_IC.path] = "tbdem_conus_pacific_30m.tiff" + elif "pr_usvi_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_30M_IC.path] = "tbdem_pr_usvi_30m.tiff" + elif "pr_usvi_10m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_PR_USVI_10M_IC.path] = "tbdem_pr_usvi_10m.tiff" + elif "alaska_10m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_AK_10M_IC.path] = "tbdem_alaska_10m.tiff" + elif "alaska_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_AK_30M_IC.path] = "tbdem_alaska_30m.tiff" + elif "great_lakes_30m" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_GREAT_LAKES_30M_IC.path] = "tbdem_great_lakes_30m.tiff" + elif "albemarle_sound_nos_ncei" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_ALBEMARLE_SOUND_IC.path] = "Albemarle_Sound_NOS_NCEI.tiff" + elif "chesapeake_bay_nos_ncei" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_CHESAPEAKE_BAY_IC.path] = "Chesapeake_Bay_NOS_NCEI.tiff" + elif "mobile_bay_nos_ncei" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_MOBILE_BAY_IC.path] = "Mobile_Bay_NOS_NCEI.tiff" + elif "tangier_sound_nos_ncei-002" in fn: + topo_fn2s3_map[NGWPCLocations.TOPO_TANGIER_SOUND_IC.path] = "Tangier_Sound_NOS_NCEI-002.tiff" + + # Migration of all captured TIFFs to cloud. + for s3_path, fn in topo_fn2s3_map.items(): + if fn: + topo_push_test(tiff_fp=f"./{fn}", attr_name=attr_name, new_ic_repo=s3_path) + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to write an icechunk store") + + parser.add_argument("--attr", help="The attribute that is to be built to icechunk") + + args = parser.parse_args() + migrate_all_icechunks(attr_name=args.attr) diff --git a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py b/tools/icechunk/icechunk_testing.py similarity index 85% rename from src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py rename to tools/icechunk/icechunk_testing.py index a2ff7af..690a526 100644 --- a/src/icefabric_tools/src/icefabric_tools/icechunk/icechunk_testing.py +++ b/tools/icechunk/icechunk_testing.py @@ -5,15 +5,19 @@ file virtualization/concatenation & uploading/appending/retrieving data to/from repos. """ -import icefabric_tools.icechunk.arch_weather_file_utils as awf_utils -import icefabric_tools.icechunk.nc_conv_utils as ncc_utils -from icefabric_tools.icechunk.icechunk_s3_module import ( - IcechunkS3Repo, - NGWPCLocations, - S3Path, +from dotenv import load_dotenv + +import icefabric.helpers.nc_conv_utils as ncc_utils +from icefabric.builds import IcechunkRepo, S3Path +from icefabric.helpers import ( + get_archival_weather_files, + load_tiff_file, + virtualize_and_concat_archival_files_on_time, ) +from icefabric.schemas import FileType, NGWPCLocations ICECHUNK_STORES = [loc for loc in NGWPCLocations if "_IC" in loc.name] +load_dotenv() def output_icechunk_stores(): @@ -35,13 +39,13 @@ def snodas_virtualize_push_test( NOTE: Take care to not overwrite an existing IC repo """ - snodas_repo = IcechunkS3Repo( + snodas_repo = IcechunkRepo( location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-forcing", "region": "us-east-1"}] ) - nc_virt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + nc_virt_ds = virtualize_and_concat_archival_files_on_time( location=NGWPCLocations.SNODAS_REF.path, file_date_pattern="zz_ssmv11034tS__T0001TTNATS*05HP001.nc", - file_type=awf_utils.FileType.NETCDF, + file_type=FileType.NETCDF, loadable_vars=["crs"], testing_file_quantity=test_quant, ) @@ -65,15 +69,15 @@ def snodas_yearly_virt_append_test( NOTE: Take care to not overwrite an existing IC repo """ - snodas_repo = IcechunkS3Repo( + snodas_repo = IcechunkRepo( location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-forcing", "region": "us-east-1"}] ) for y in years: - nc_virt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + nc_virt_ds = virtualize_and_concat_archival_files_on_time( location=NGWPCLocations.SNODAS_REF.path, file_date_pattern="zz_ssmv11034tS__T0001TTNATS*05HP001.nc", manual_file_pattern=f"zz_ssmv11034tS__T0001TTNATS{y}*.nc", - file_type=awf_utils.FileType.NETCDF, + file_type=FileType.NETCDF, loadable_vars=["crs"], testing_file_quantity=test_quant, ) @@ -102,13 +106,13 @@ def land_cover_virtualize_push_test( NOTE: Take care to not overwrite an existing IC repo """ - nlcd_repo = IcechunkS3Repo( + nlcd_repo = IcechunkRepo( location=new_ic_repo, virtual_chunk_mapping=[{"bucket": "ngwpc-hydrofabric", "region": "us-east-1"}] ) - nlcd_vrt_ds = awf_utils.virtualize_and_concat_archival_files_on_time( + nlcd_vrt_ds = virtualize_and_concat_archival_files_on_time( location=NGWPCLocations.NLCD_REF.path, file_date_pattern="Annual_NLCD_LndCov_*_CU_C1V0.tif", - file_type=awf_utils.FileType.GEOTIFF, + file_type=FileType.GEOTIFF, just_year=True, testing_file_quantity=test_quant, ) @@ -130,8 +134,8 @@ def topo_push_test(tiff_fp: str, attr_name: str, new_ic_repo: S3Path, clean_up: NOTE: Take care to not overwrite an existing IC repo """ - topo_repo = IcechunkS3Repo(location=new_ic_repo) - topo_ds = awf_utils.load_tiff_file(tiff_fp, attr_name) + topo_repo = IcechunkRepo(location=new_ic_repo) + topo_ds = load_tiff_file(tiff_fp, attr_name) topo_repo.write_dataset(ds=topo_ds, commit="first commit") print(topo_repo.retrieve_dataset()) if clean_up: @@ -143,9 +147,9 @@ def get_nc_by_year(years: range): files = [] for y in years: print(y) - files += awf_utils.get_archival_weather_files( + files += get_archival_weather_files( loc=NGWPCLocations.SNODAS_REF.path, - file_type=awf_utils.FileType.NETCDF, + file_type=FileType.NETCDF, manual_file_pattern=f"zz_ssmv11034tS__T0001TTNATS{y}*.nc", ) return files diff --git a/tools/ipes/get_module_parameters.py b/tools/ipes/get_module_parameters.py new file mode 100644 index 0000000..05ac679 --- /dev/null +++ b/tools/ipes/get_module_parameters.py @@ -0,0 +1,52 @@ +"""A sample script to generate CFE IPEs""" + +import argparse + +import geopandas as gpd +import pandas as pd +from dotenv import load_dotenv + +# param_file = "../src/icefabric_api/data/cfe_params.csv" +# gpkg_file = "../src/icefabric_tools/test/data/gages-08070000.gpkg" +load_dotenv() + + +def create_module_params(param_file: str, gpkg_file: str) -> None: + """Creates module initial parameter estimates + + Parameters + ---------- + param_file : str + the initial parameters file + gpkg_file : str + the hydrofabric gpkg file + """ + divides = gpd.read_file(gpkg_file, layer="divides") + divides = divides["divide_id"].to_list() + + module_params = pd.read_csv(param_file) + param_values = module_params[["name", "default_value"]] + + for divide in divides: + cfg_file = f"{divide}_bmi_cfg_cfe.txt" + f = open(cfg_file, "x") + + for _, row in param_values.iterrows(): + key = row["name"] + value = row["default_value"] + f.write(f"{key}={value}\n") + + f.close() + + params_calibratable = module_params.loc[module_params["calibratable"] == "TRUE"] + params_calibratable.to_json("out.json", orient="split") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to make initial parameter estimates") + + parser.add_argument("--params", help="The initial parameters file") + parser.add_argument("--gpkg", help="The hydrofabric gpkg file") + + args = parser.parse_args() + create_module_params(param_file=args.params, gpkg_file=args.gpkg) diff --git a/tools/pyiceberg/gpkg_to_parquet.py b/tools/pyiceberg/gpkg_to_parquet.py new file mode 100644 index 0000000..05e04f0 --- /dev/null +++ b/tools/pyiceberg/gpkg_to_parquet.py @@ -0,0 +1,36 @@ +"""A simple script to convert the v2.2 hydrofabric to parquet""" + +import argparse + +import fiona +import geopandas as gpd +from dotenv import load_dotenv + +load_dotenv() + + +def gpkg_to_parquet(input_file: str) -> None: + """A function to convert geopackages to parquet files + + Parameters + ---------- + input_file : str + the gpkg to convert + """ + available_layers = fiona.listlayers(input_file) + print(f"Layers in GeoPackage: {available_layers}") + + for layer in available_layers: + gdf = gpd.read_file(input_file, layer=layer) + output_file = f"../../data/{layer}.parquet" + gdf.to_parquet(output_file) + print(f"Converted layer '{layer}' to {output_file}") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument("--gpkg", help="The local gpkg to convert into a parquet file") + + args = parser.parse_args() + gpkg_to_parquet(input_file=args.gpkg) diff --git a/src/icefabric_manage/builds/README.md b/tools/pyiceberg/remote_builds/README.md similarity index 100% rename from src/icefabric_manage/builds/README.md rename to tools/pyiceberg/remote_builds/README.md diff --git a/src/icefabric_manage/builds/build_fema_ble.py b/tools/pyiceberg/remote_builds/build_fema_ble.py similarity index 94% rename from src/icefabric_manage/builds/build_fema_ble.py rename to tools/pyiceberg/remote_builds/build_fema_ble.py index d22ddb7..553e308 100644 --- a/src/icefabric_manage/builds/build_fema_ble.py +++ b/tools/pyiceberg/remote_builds/build_fema_ble.py @@ -5,7 +5,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -27,7 +27,7 @@ def build_table(file_dir: str): for folder in Path(file_dir).glob("ble_*"): huc_number = folder.name.split("_", 1)[1] print(f"building HUC XS: {huc_number}") - build( + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/ble_{huc_number}/huc_{huc_number}.parquet", namespace=namespace, diff --git a/src/icefabric_manage/builds/build_fema_mip.py b/tools/pyiceberg/remote_builds/build_fema_mip.py similarity index 94% rename from src/icefabric_manage/builds/build_fema_mip.py rename to tools/pyiceberg/remote_builds/build_fema_mip.py index ee21ccb..c6e16d5 100644 --- a/src/icefabric_manage/builds/build_fema_mip.py +++ b/tools/pyiceberg/remote_builds/build_fema_mip.py @@ -5,7 +5,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -27,7 +27,7 @@ def build_table(file_dir: str): for folder in Path(file_dir).glob("mip_*"): huc_number = folder.name.split("_", 1)[1] print(f"building HUC XS: {huc_number}") - build( + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/mip_{huc_number}/huc_{huc_number}.parquet", namespace=namespace, diff --git a/src/icefabric_manage/builds/build_hydrofabric.py b/tools/pyiceberg/remote_builds/build_hydrofabric.py similarity index 95% rename from src/icefabric_manage/builds/build_hydrofabric.py rename to tools/pyiceberg/remote_builds/build_hydrofabric.py index c4d444a..81755d3 100644 --- a/src/icefabric_manage/builds/build_hydrofabric.py +++ b/tools/pyiceberg/remote_builds/build_hydrofabric.py @@ -4,7 +4,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -37,7 +37,7 @@ def build_table(file_dir: str): ] for layer in layers: print(f"building layer: {layer}") - build( + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/{layer}.parquet", namespace=namespace, diff --git a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py b/tools/pyiceberg/remote_builds/build_iceberg_bathymetry_ml_auxiliary.py similarity index 96% rename from src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py rename to tools/pyiceberg/remote_builds/build_iceberg_bathymetry_ml_auxiliary.py index 453c3a6..fa1033c 100644 --- a/src/icefabric_manage/builds/build_iceberg_bathymetry_ml_auxiliary.py +++ b/tools/pyiceberg/remote_builds/build_iceberg_bathymetry_ml_auxiliary.py @@ -5,7 +5,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -54,7 +54,7 @@ def build_table(file_dir: Path): # Iceberg does not have a dictionary type. will be inferred as int32 on read. # Arrow will make columns with a single, non-unique, value into a dictionary for ease of writing/loading # Thus, when writing to pyiceberg it needs to remove that. - build( + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/{layer}/ml_auxiliary_data.parquet", namespace=namespace, diff --git a/src/icefabric_manage/builds/build_parameters.py b/tools/pyiceberg/remote_builds/build_parameters.py similarity index 69% rename from src/icefabric_manage/builds/build_parameters.py rename to tools/pyiceberg/remote_builds/build_parameters.py index 7064ebb..becc453 100644 --- a/src/icefabric_manage/builds/build_parameters.py +++ b/tools/pyiceberg/remote_builds/build_parameters.py @@ -4,7 +4,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -17,21 +17,26 @@ def build_table(file_dir): file_dir : str The directory to hydrofabric parquet files """ - parquet_tables = {'CFE-X_params_Alaska_2.2.parquet':'CFE-X_Alaska', 'CFE-X_params_GL_2.2.parquet':'CFE-X_GL', - 'CFE-X_params_Puerto_Rico_2.2.parquet':'CFE-X_Puerto_Rico', 'snow17_params_2.2.parquet':'Snow-17_CONUS', - 'CFE-X_params_CONUS_2.2.parquet':'CFE-X_CONUS', 'CFE-X_params_Hawaii_2.2.parquet':'CFE-X_Hawaii', - 'sac_sma_params_2.2.parquet':'Sac-SMA_CONUS', 'ueb_params.parquet':'UEB_CONUS'} - + parquet_tables = { + "CFE-X_params_Alaska_2.2.parquet": "CFE-X_Alaska", + "CFE-X_params_GL_2.2.parquet": "CFE-X_GL", + "CFE-X_params_Puerto_Rico_2.2.parquet": "CFE-X_Puerto_Rico", + "snow17_params_2.2.parquet": "Snow-17_CONUS", + "CFE-X_params_CONUS_2.2.parquet": "CFE-X_CONUS", + "CFE-X_params_Hawaii_2.2.parquet": "CFE-X_Hawaii", + "sac_sma_params_2.2.parquet": "Sac-SMA_CONUS", + "ueb_params.parquet": "UEB_CONUS", + } + catalog = load_catalog("glue") # Using an AWS Glue Endpoint namespace = "divide_parameters" try: catalog.create_namespace(namespace) except NamespaceAlreadyExistsError: print(f"Namespace {namespace} already exists") - - for file in parquet_tables.keys(): - build( + for file in parquet_tables.keys(): + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/{file}", namespace=namespace, diff --git a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py b/tools/pyiceberg/remote_builds/build_usgs_streamflow_observations.py similarity index 94% rename from src/icefabric_manage/builds/build_usgs_streamflow_observations.py rename to tools/pyiceberg/remote_builds/build_usgs_streamflow_observations.py index 7d7661a..21d9e50 100644 --- a/src/icefabric_manage/builds/build_usgs_streamflow_observations.py +++ b/tools/pyiceberg/remote_builds/build_usgs_streamflow_observations.py @@ -4,7 +4,7 @@ from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric_manage import build +from icefabric.builds import build_iceberg_table load_dotenv() @@ -23,7 +23,7 @@ def build_table(file_dir): catalog.create_namespace(namespace) except NamespaceAlreadyExistsError: print(f"Namespace {namespace} already exists") - build( + build_iceberg_table( catalog=catalog, parquet_file=f"{file_dir}/usgs_hourly.parquet", namespace=namespace, From 40492a67834d39f8b6b364889762c4e9d01b3225 Mon Sep 17 00:00:00 2001 From: taddyb Date: Mon, 7 Jul 2025 19:03:29 -0400 Subject: [PATCH 73/97] patch: moving load_creds() into main function of app --- app/main.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/app/main.py b/app/main.py index 270d4a7..eb9c8c7 100644 --- a/app/main.py +++ b/app/main.py @@ -1,14 +1,13 @@ -import os from pathlib import Path import uvicorn -from dotenv import load_dotenv from fastapi import FastAPI, status from pydantic import BaseModel from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.module_params.router import api_router as module_params_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router +from icefabric.helpers import load_creds app = FastAPI( title="Icefabric API", @@ -18,16 +17,6 @@ redoc_url="/redoc", ) -# Setting .env/.pyiceberg creds based on project root -load_dotenv(dotenv_path=Path.cwd() / ".env") -pyiceberg_file = Path.cwd() / ".pyiceberg.yaml" -if pyiceberg_file.exists(): - os.environ["PYICEBERG_HOME"] = str(pyiceberg_file) -else: - raise FileNotFoundError( - "Cannot find .pyiceberg.yaml. Please download this from NGWPC confluence or create " - ) - class HealthCheck(BaseModel): """Response model to validate and return when performing a health check.""" @@ -55,4 +44,5 @@ def get_health() -> HealthCheck: if __name__ == "__main__": + load_creds(dir=Path.cwd()) uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="info") From 8540fde2b24e40f2078b1e915a05e86f9f49e08e Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 8 Jul 2025 16:16:28 -0400 Subject: [PATCH 74/97] Part I: NGWPC-6893 (#46) * initial commit * fix: dockerfile api to reflect restructure * feat: added export scripts to make a local iceberg DB, updated HF builds, patched app * tests: added local flag and catalog reference in testing * patch: Update tests/conftest.py Co-authored-by: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> * patch: fixed an issue with the local sql catalog not being built --------- Co-authored-by: Quercus Hamlin Co-authored-by: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> --- .gitignore | 6 +- .pyiceberg.yaml | 11 +++ README.md | 5 ++ app/main.py | 36 ++++++++++ app/routers/hydrofabric/router.py | 43 +++++++++-- app/routers/nwm_modules/__init__.py | 0 app/routers/nwm_modules/router.py | 71 +++++++++++++++++++ docker/Dockerfile.api | 2 - src/icefabric/hydrofabric/subset.py | 13 ++-- src/icefabric/schemas/__init__.py | 11 ++- src/icefabric/schemas/hydrofabric.py | 24 +++++++ src/icefabric/schemas/sft.py | 0 tests/conftest.py | 10 ++- tests/integration/test_topobathy_icechunk.py | 1 + tests/test_subset.py | 3 +- tools/pyiceberg/export_catalog.py | 57 +++++++++++++++ tools/pyiceberg/gpkg_to_parquet.py | 13 ++-- .../remote_builds/build_hydrofabric.py | 64 +++++++++++++---- 18 files changed, 332 insertions(+), 38 deletions(-) create mode 100644 .pyiceberg.yaml create mode 100644 app/routers/nwm_modules/__init__.py create mode 100644 app/routers/nwm_modules/router.py create mode 100644 src/icefabric/schemas/sft.py create mode 100644 tools/pyiceberg/export_catalog.py diff --git a/.gitignore b/.gitignore index c126ca8..5760d76 100644 --- a/.gitignore +++ b/.gitignore @@ -196,9 +196,6 @@ crash.log # CLI configuration .terraform/ -# Pyiceberg config file -.pyiceberg.yaml - # Terraform plan output (optional unless you want to inspect later) *.tfplan @@ -208,3 +205,6 @@ examples/icechunk_data_viewer/martin/tiles/quantiles/* examples/icechunk_data_viewer/martin/tiles/legends/* examples/icechunk_data_viewer/martin/tiles/legend.png tests/data/topo_tifs + +# hydrofabric parquets +data/hydrofabric diff --git a/.pyiceberg.yaml b/.pyiceberg.yaml new file mode 100644 index 0000000..4c42331 --- /dev/null +++ b/.pyiceberg.yaml @@ -0,0 +1,11 @@ +catalog: + glue: + type: glue + s3.endpoint: s3.us-east-1.amazonaws.com + warehouse: s3://52fcde3e7-5582-477d-7686ou4ij1ptxj8equ83a5xc51fsuse1b--table-s3 + region: us-east-1 + glue_region: us-east-1 + sql: + type: sql + uri: sqlite:////tmp/warehouse/pyiceberg_catalog.db + warehouse: file:///tmp/warehouse diff --git a/README.md b/README.md index 8121f0b..6b61ddf 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,11 @@ python -m app.main ``` This should spin up the API services. +If you are running the API locally, you can run +```sh +python -m app.main --catalog sql +``` + ### Building the API through Docker To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run ```sh diff --git a/app/main.py b/app/main.py index eb9c8c7..cf9effb 100644 --- a/app/main.py +++ b/app/main.py @@ -1,20 +1,41 @@ +import argparse +import os +from contextlib import asynccontextmanager from pathlib import Path import uvicorn from fastapi import FastAPI, status from pydantic import BaseModel +from pyiceberg.catalog import load_catalog from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.module_params.router import api_router as module_params_router +from app.routers.nwm_modules.router import sft_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router from icefabric.helpers import load_creds + +@asynccontextmanager +async def lifespan(app: FastAPI): + """Loads the iceberg catalog location from an environment variable + + Parameters + ---------- + app: FastAPI + The FastAPI app instance + """ + catalog_path = os.getenv("CATALOG_PATH") + app.state.catalog = load_catalog(catalog_path) + yield + + app = FastAPI( title="Icefabric API", description="API for accessing iceberg or icechunk data from EDFS services", version="1.0.0", docs_url="/docs", redoc_url="/redoc", + lifespan=lifespan, ) @@ -27,6 +48,7 @@ class HealthCheck(BaseModel): # Include routers app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") +app.include_router(sft_router, prefix="/v2") app.include_router(module_params_router, prefix="/v1") @@ -44,5 +66,19 @@ def get_health() -> HealthCheck: if __name__ == "__main__": + parser = argparse.ArgumentParser(description="The FastAPI App instance for querying versioned EDFS data") + + # Glue = S3 Tables; Sql is a local iceberg catalog + parser.add_argument( + "--catalog", + choices=["glue", "sql"], + help="The catalog information for querying versioned EDFS data", + default="glue", + ) # Setting the default to read from S3 + + args = parser.parse_args() + + os.environ["CATALOG_PATH"] = args.catalog + load_creds(dir=Path.cwd()) uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True, log_level="info") diff --git a/app/routers/hydrofabric/router.py b/app/routers/hydrofabric/router.py index 6c23345..06076b8 100644 --- a/app/routers/hydrofabric/router.py +++ b/app/routers/hydrofabric/router.py @@ -2,17 +2,41 @@ import tempfile import uuid -from fastapi import APIRouter, HTTPException, Path +from fastapi import APIRouter, Depends, HTTPException, Path, Query, Request from fastapi.responses import FileResponse -from pyiceberg.catalog import load_catalog +from pyiceberg.catalog import Catalog from starlette.background import BackgroundTask from icefabric.hydrofabric import subset -from icefabric.schemas import IdType +from icefabric.schemas import HydrofabricDomains, IdType api_router = APIRouter(prefix="/hydrofabric") +def get_catalog(request: Request) -> Catalog: + """Gets the pyiceberg catalog reference from the app state + + Parameters + ---------- + request : Request + The FastAPI request object containing the application state + + Returns + ------- + pyiceberg.catalog.Catalog + The loaded pyiceberg catalog instance used for querying versioned EDFS data + + Raises + ------ + HTTPException + If the catalog is not loaded or not available in the application state. + Returns HTTP 500 status code with "Catalog not loaded" detail message. + """ + if not hasattr(request.app.state, "catalog") or request.app.state.catalog is None: + raise HTTPException(status_code=500, detail="Catalog not loaded") + return request.app.state.catalog + + @api_router.get("/{identifier}/gpkg") async def get_hydrofabric_subset_gpkg( identifier: str = Path( @@ -21,6 +45,10 @@ async def get_hydrofabric_subset_gpkg( examples=["01010000"], openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, ), + domain: HydrofabricDomains = Query( + HydrofabricDomains.CONUS, description="The iceberg namespace used to query the hydrofabric" + ), + catalog=Depends(get_catalog), ): """ Get hydrofabric subset as a geopackage file (.gpkg) @@ -29,13 +57,18 @@ async def get_hydrofabric_subset_gpkg( from a given identifier and returns all related geospatial layers as a downloadable geopackage file. """ - catalog = load_catalog("glue") unique_id = str(uuid.uuid4())[:8] temp_dir = pathlib.Path(tempfile.gettempdir()) tmp_path = temp_dir / f"hydrofabric_subset_{identifier}_{unique_id}.gpkg" try: # Create the subset - subset(catalog=catalog, identifier=f"gages-{identifier}", id_type=IdType.HL_URI, output_file=tmp_path) + subset( + catalog=catalog, + identifier=f"gages-{identifier}", + id_type=IdType.HL_URI, + output_file=tmp_path, + domain=domain, + ) if not tmp_path.exists(): raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}") diff --git a/app/routers/nwm_modules/__init__.py b/app/routers/nwm_modules/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/routers/nwm_modules/router.py b/app/routers/nwm_modules/router.py new file mode 100644 index 0000000..d706628 --- /dev/null +++ b/app/routers/nwm_modules/router.py @@ -0,0 +1,71 @@ +import pathlib +import tempfile +import uuid + +from fastapi import APIRouter, HTTPException, Path +from fastapi.responses import FileResponse +from pyiceberg.catalog import load_catalog +from starlette.background import BackgroundTask + +from icefabric.hydrofabric import subset +from icefabric.schemas import IdType + +sft_router = APIRouter(prefix="/modules/sft") + + +@sft_router.get("/{identifier}/") +async def get_hydrofabric_subset_gpkg( + identifier: str = Path( + ..., + description="Identifier to start tracing from (e.g., catchment ID, POI ID)", + examples=["01010000"], + openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, + ), +): + """ + Get hydrofabric subset as a geopackage file (.gpkg) + + This endpoint creates a subset of the hydrofabric data by tracing upstream + from a given identifier and returns all related geospatial layers as a + downloadable geopackage file. + """ + catalog = load_catalog("glue") + unique_id = str(uuid.uuid4())[:8] + temp_dir = pathlib.Path(tempfile.gettempdir()) + tmp_path = temp_dir / f"hydrofabric_subset_{identifier}_{unique_id}.gpkg" + try: + # Create the subset + subset(catalog=catalog, identifier=f"gages-{identifier}", id_type=IdType.HL_URI, output_file=tmp_path) + + if not tmp_path.exists(): + raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}") + if tmp_path.stat().st_size == 0: + tmp_path.unlink(missing_ok=True) # Clean up empty file + raise HTTPException(status_code=404, detail=f"No data found for identifier '{identifier}'") + + # Verify it's actually a file, not a directory + if not tmp_path.is_file(): + raise HTTPException(status_code=500, detail=f"Expected file but got directory at {tmp_path}") + + print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") + + download_filename = f"hydrofabric_subset_{identifier}.gpkg" + + return FileResponse( + path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={ + "Content-Description": "Hydrofabric Subset Geopackage", + "X-Identifier": identifier, + }, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True)), + ) + + except HTTPException: + raise + except Exception: + # Clean up temp file if it exists + if "tmp_path" in locals() and tmp_path.exists(): + tmp_path.unlink(missing_ok=True) + raise diff --git a/docker/Dockerfile.api b/docker/Dockerfile.api index cd44310..9f33a5f 100644 --- a/docker/Dockerfile.api +++ b/docker/Dockerfile.api @@ -31,8 +31,6 @@ ENV PATH="/app/.venv/bin:$PATH" # Install the package in development mode RUN uv sync -RUN uv pip install -e src/icefabric_api # Run the API -WORKDIR /app/src/icefabric_api CMD ["python", "-m", "app.main"] diff --git a/src/icefabric/hydrofabric/subset.py b/src/icefabric/hydrofabric/subset.py index 25a1158..3b37db1 100644 --- a/src/icefabric/hydrofabric/subset.py +++ b/src/icefabric/hydrofabric/subset.py @@ -11,7 +11,7 @@ from icefabric.helpers.geopackage import table_to_geopandas, to_geopandas from icefabric.hydrofabric.origin import find_origin -from icefabric.schemas.hydrofabric import UPSTREAM_VPUS, IdType +from icefabric.schemas.hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType def get_sorted_network(network_df: pd.DataFrame, outlets: list[str] | str) -> pd.DataFrame: @@ -221,6 +221,7 @@ def subset( id_type: IdType, layers: list[str] | None = None, output_file: Path | None = None, + domain: HydrofabricDomains = HydrofabricDomains.CONUS, ) -> dict[str, pd.DataFrame | gpd.GeoDataFrame] | None: """Returns a geopackage subset from the hydrofabric. @@ -244,6 +245,8 @@ def subset( output_file : Path, optional The output file path where the geopackage will be saved. If None, returns the data as a dictionary instead of saving to file + domain : HydrofabricDomains, optional + The domain to read the HF from Returns ------- @@ -276,10 +279,10 @@ def subset( layers.extend(["divides", "flowpaths", "network", "nexus"]) layers = list(set(layers)) try: - network = catalog.load_table("hydrofabric.network") - divides = catalog.load_table("hydrofabric.divides") - flowpaths = catalog.load_table("hydrofabric.flowpaths") - nexus = catalog.load_table("hydrofabric.nexus") + network = catalog.load_table(f"{domain.value}.network") + divides = catalog.load_table(f"{domain.value}.divides") + flowpaths = catalog.load_table(f"{domain.value}.flowpaths") + nexus = catalog.load_table(f"{domain.value}.nexus") except ClientError as e: msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" print(msg) diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py index 86d1c95..4fb6ac7 100644 --- a/src/icefabric/schemas/__init__.py +++ b/src/icefabric/schemas/__init__.py @@ -1,6 +1,13 @@ """Contains helper functions to support NWM modules""" -from .hydrofabric import UPSTREAM_VPUS, IdType +from .hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations -__all__ = ["UPSTREAM_VPUS", "IdType", "FileType", "NGWPCLocations", "NGWPCTestLocations"] +__all__ = [ + "UPSTREAM_VPUS", + "IdType", + "HydrofabricDomains", + "FileType", + "NGWPCLocations", + "NGWPCTestLocations", +] diff --git a/src/icefabric/schemas/hydrofabric.py b/src/icefabric/schemas/hydrofabric.py index dbb6d8c..d396b70 100644 --- a/src/icefabric/schemas/hydrofabric.py +++ b/src/icefabric/schemas/hydrofabric.py @@ -24,5 +24,29 @@ class IdType(str, Enum): POI_ID = "poi_id" +class HydrofabricDomains(str, Enum): + """The domains used when querying the hydrofabric + + Attributes + ---------- + AK : str + Alaska + CONUS : str + Conterminous United States + GL : str + The US Great Lakes + HI : str + Hawai'i + PRVI : str + Puerto Rico, US Virgin Islands + """ + + AK = "ak_hf" + CONUS = "conus_hf" + GL = "gl_hf" + HI = "hi_hf" + PRVI = "prvi_hf" + + # For catchments that may extend in many VPUs UPSTREAM_VPUS: dict[str, list[str]] = {"08": ["11", "10U", "10L", "08", "07", "05"]} diff --git a/src/icefabric/schemas/sft.py b/src/icefabric/schemas/sft.py new file mode 100644 index 0000000..e69de29 diff --git a/tests/conftest.py b/tests/conftest.py index a1bbdee..f359b46 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -109,6 +109,7 @@ def testing_dir() -> Path: @pytest.fixture(scope="session") def client(): """Create a test client for the FastAPI app.""" + app.state.catalog = load_catalog("glue") # defaulting to GLUE return TestClient(app) @@ -133,13 +134,19 @@ def hydrofabric_catalog() -> Catalog: def pytest_addoption(parser): - """Adds the --run-slow tag""" + """Adds addoption tags""" parser.addoption( "--run-slow", action="store_true", default=False, help="Run slow tests", ) + parser.addoption( + "--run-local", + action="store_true", + default=False, + help="Run slow tests", + ) def pytest_collection_modifyitems(config, items): @@ -154,6 +161,7 @@ def pytest_collection_modifyitems(config, items): def pytest_configure(config): """Configure pytest markers.""" config.addinivalue_line("markers", "slow: marks tests as slow tests") + config.addinivalue_line("markers", "local: marks tests as local tests") config.addinivalue_line("markers", "performance: marks tests as performance tests") config.addinivalue_line("markers", "integration: marks tests as integration tests") config.addinivalue_line("markers", "unit: marks tests as unit tests") diff --git a/tests/integration/test_topobathy_icechunk.py b/tests/integration/test_topobathy_icechunk.py index dc16f8e..94ade36 100644 --- a/tests/integration/test_topobathy_icechunk.py +++ b/tests/integration/test_topobathy_icechunk.py @@ -50,6 +50,7 @@ def test_topobathy(ic_raster: str) -> None: os.remove(temp_path) +@pytest.mark.local def test_local_topobathy(local_ic_raster: Path) -> None: """Tests local topobathy against local icechunk stores diff --git a/tests/test_subset.py b/tests/test_subset.py index 9e6bf0e..1d85851 100644 --- a/tests/test_subset.py +++ b/tests/test_subset.py @@ -5,7 +5,7 @@ from pyiceberg.catalog import Catalog from icefabric.hydrofabric import subset -from icefabric.schemas import IdType +from icefabric.schemas import HydrofabricDomains, IdType @pytest.mark.slow @@ -13,6 +13,7 @@ def test_subset_hl_uri(hydrofabric_catalog: Catalog, gauge_hf_uri: str, testing_ """Tests all subset gauges in the sample data using hl_uri""" subset( catalog=hydrofabric_catalog, + domain=HydrofabricDomains.CONUS, identifier=gauge_hf_uri, id_type=IdType.HL_URI, output_file=tmp_path / "subset.gpkg", diff --git a/tools/pyiceberg/export_catalog.py b/tools/pyiceberg/export_catalog.py new file mode 100644 index 0000000..aabc74c --- /dev/null +++ b/tools/pyiceberg/export_catalog.py @@ -0,0 +1,57 @@ +"""A file to export the glue catalog to sqllite""" + +import argparse +import os +from pathlib import Path + +import yaml +from pyiceberg.catalog import load_catalog +from tqdm import tqdm + +from icefabric.helpers import load_creds + +load_creds(dir=Path.cwd()) + + +def export(namespace: str, snapshot: int | None = None): + """Exports the catalog to a local SQL file based on the .pyiceberg.yaml in the project root + + Parameters + ---------- + namespace : str + The namespace to be exported + snapshot : str | None, optional + The snapshot ID to export from, by default None and using the latest + """ + # Creates the local dir for the warehouse if it does not exist + with open(os.environ["PYICEBERG_HOME"]) as f: + config = yaml.safe_load(f) + + warehouse = Path(config["catalog"]["sql"]["warehouse"].replace("file://", "")) + warehouse.mkdir(parents=True, exist_ok=True) + + glue_catalog = load_catalog("glue") + local_catalog = load_catalog("sql") + local_catalog.create_namespace_if_not_exists(namespace) + namespace_tables = glue_catalog.list_tables(namespace=namespace) + for _, table in tqdm(namespace_tables, desc=f"Exporting {namespace} tables", total=len(namespace_tables)): + _table = glue_catalog.load_table(f"{namespace}.{table}").scan(snapshot_id=snapshot) + _arrow = _table.to_arrow() + iceberg_table = local_catalog.create_table_if_not_exists( + f"{namespace}.{table}", + schema=_arrow.schema, + ) + iceberg_table.append(_arrow) + print(f"Exported {namespace} into local pyiceberg DB") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser( + description="A script to export the S3 tables catalog based on a namespace and snapshot id. If no snapshot, assuming the latest" + ) + + parser.add_argument("--namespace", help="The namespace repo that is being exported") + parser.add_argument("--snapshot", help="The snapshot ID for the namespace") + + args = parser.parse_args() + export(namespace=args.namespace, snapshot=args.snapshot) diff --git a/tools/pyiceberg/gpkg_to_parquet.py b/tools/pyiceberg/gpkg_to_parquet.py index 05e04f0..578f0a2 100644 --- a/tools/pyiceberg/gpkg_to_parquet.py +++ b/tools/pyiceberg/gpkg_to_parquet.py @@ -1,15 +1,17 @@ """A simple script to convert the v2.2 hydrofabric to parquet""" import argparse +from pathlib import Path import fiona import geopandas as gpd -from dotenv import load_dotenv -load_dotenv() +from icefabric.helpers import load_creds +load_creds(dir=Path.cwd()) -def gpkg_to_parquet(input_file: str) -> None: + +def gpkg_to_parquet(input_file: str, output_folder: str = "../../data/") -> None: """A function to convert geopackages to parquet files Parameters @@ -22,7 +24,7 @@ def gpkg_to_parquet(input_file: str) -> None: for layer in available_layers: gdf = gpd.read_file(input_file, layer=layer) - output_file = f"../../data/{layer}.parquet" + output_file = f"{output_folder}/{layer}.parquet" gdf.to_parquet(output_file) print(f"Converted layer '{layer}' to {output_file}") @@ -31,6 +33,7 @@ def gpkg_to_parquet(input_file: str) -> None: parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") parser.add_argument("--gpkg", help="The local gpkg to convert into a parquet file") + parser.add_argument("--output-folder", help="The output folder for to save the parquet file") args = parser.parse_args() - gpkg_to_parquet(input_file=args.gpkg) + gpkg_to_parquet(input_file=args.gpkg, output_folder=args.output_folder) diff --git a/tools/pyiceberg/remote_builds/build_hydrofabric.py b/tools/pyiceberg/remote_builds/build_hydrofabric.py index 81755d3..9e271eb 100644 --- a/tools/pyiceberg/remote_builds/build_hydrofabric.py +++ b/tools/pyiceberg/remote_builds/build_hydrofabric.py @@ -1,15 +1,42 @@ import argparse +from pathlib import Path -from dotenv import load_dotenv +import pandas as pd +import pyarrow as pa from pyiceberg.catalog import load_catalog from pyiceberg.exceptions import NamespaceAlreadyExistsError -from icefabric.builds import build_iceberg_table +from icefabric.helpers import load_creds -load_dotenv() +load_creds(dir=Path.cwd()) -def build_table(file_dir: str): +def clean_parquet_schema(parquet_file: str) -> pa.Table: + """Clean parquet file to handle null types (ex: WaterbodyID and waterbody_nex_id) + + Parameters + ---------- + parquet_file : str + Path to the parquet file + + Returns + ------- + pa.Table + Cleaned Arrow table + """ + # Read with pandas first to handle null types easily + df = pd.read_parquet(parquet_file) + null_columns = [] + for col in df.columns: + if df[col].dtype == "object" and df[col].isna().all(): + df[col] = df[col].astype("string") + null_columns.append(col) + if null_columns: + print(f"Converted null-type columns to string: {null_columns}") + return pa.Table.from_pandas(df, preserve_index=False) + + +def build_table(file_dir: str, domain: str): """Builds the hydrofabric namespace and tables Parameters @@ -18,7 +45,7 @@ def build_table(file_dir: str): The directory to hydrofabric parquet files """ catalog = load_catalog("glue") # Using an AWS Glue Endpoint - namespace = "hydrofabric" + namespace = f"{domain}_HF" try: catalog.create_namespace(namespace) except NamespaceAlreadyExistsError: @@ -37,20 +64,29 @@ def build_table(file_dir: str): ] for layer in layers: print(f"building layer: {layer}") - build_iceberg_table( - catalog=catalog, - parquet_file=f"{file_dir}/{layer}.parquet", - namespace=namespace, - table_name=layer, - location="s3://fim-services-data-test/icefabric_metadata/", - ) - print(f"Build successful. Files written into metadata store @ {catalog.name}") + try: + cleaned_table = clean_parquet_schema(f"{file_dir}/{layer}.parquet") + if catalog.table_exists(f"{namespace}.{layer}"): + print(f"Table {layer} already exists. Skipping build") + else: + iceberg_table = catalog.create_table( + f"{namespace}.{layer}", + schema=cleaned_table.schema, + location="s3://fim-services-data-test/icefabric_metadata/", + ) + iceberg_table.append(cleaned_table) + except FileNotFoundError: + print(f"Cannot find {layer} in the given file dir {file_dir}") + pass + + print(f"Build successful. Files written into metadata store on {catalog.name} @ {namespace}") if __name__ == "__main__": parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") parser.add_argument("--files", help="The local file dir where the files are located") + parser.add_argument("--domain", help="The hydrofabric domain to be used for the namespace") args = parser.parse_args() - build_table(file_dir=args.files) + build_table(file_dir=args.files, domain=args.domain) From f83dba69f2bee4231b5f89772f099ccb8d142e01 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Wed, 9 Jul 2025 11:26:44 -0400 Subject: [PATCH 75/97] Part II: Ngwpc 6893 (#47) * initial commit: added SFT pydantic module * feat: added get_sft_parameters() to create initial parameter estimates for SFT * feat: added app endpoint for getting SFT ipes from the icefabric * patch: updated openapi_examples within the endpoint Co-authored-by: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> --------- Co-authored-by: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> --- app/__init__.py | 26 +++++++ app/routers/hydrofabric/router.py | 28 +------- app/routers/nwm_modules/router.py | 104 +++++++++++---------------- pyproject.toml | 1 + src/icefabric/hydrofabric/subset.py | 10 +-- src/icefabric/modules/__init__.py | 3 +- src/icefabric/modules/create_ipes.py | 82 ++++++++++++++++++++- src/icefabric/schemas/__init__.py | 3 + src/icefabric/schemas/modules.py | 68 ++++++++++++++++++ src/icefabric/schemas/sft.py | 0 10 files changed, 230 insertions(+), 95 deletions(-) create mode 100644 src/icefabric/schemas/modules.py delete mode 100644 src/icefabric/schemas/sft.py diff --git a/app/__init__.py b/app/__init__.py index e69de29..018ddfc 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -0,0 +1,26 @@ +from fastapi import HTTPException, Request +from pyiceberg.catalog import Catalog + + +def get_catalog(request: Request) -> Catalog: + """Gets the pyiceberg catalog reference from the app state + + Parameters + ---------- + request : Request + The FastAPI request object containing the application state + + Returns + ------- + pyiceberg.catalog.Catalog + The loaded pyiceberg catalog instance used for querying versioned EDFS data + + Raises + ------ + HTTPException + If the catalog is not loaded or not available in the application state. + Returns HTTP 500 status code with "Catalog not loaded" detail message. + """ + if not hasattr(request.app.state, "catalog") or request.app.state.catalog is None: + raise HTTPException(status_code=500, detail="Catalog not loaded") + return request.app.state.catalog diff --git a/app/routers/hydrofabric/router.py b/app/routers/hydrofabric/router.py index 06076b8..4ef0d18 100644 --- a/app/routers/hydrofabric/router.py +++ b/app/routers/hydrofabric/router.py @@ -2,41 +2,17 @@ import tempfile import uuid -from fastapi import APIRouter, Depends, HTTPException, Path, Query, Request +from fastapi import APIRouter, Depends, HTTPException, Path, Query from fastapi.responses import FileResponse -from pyiceberg.catalog import Catalog from starlette.background import BackgroundTask +from app import get_catalog from icefabric.hydrofabric import subset from icefabric.schemas import HydrofabricDomains, IdType api_router = APIRouter(prefix="/hydrofabric") -def get_catalog(request: Request) -> Catalog: - """Gets the pyiceberg catalog reference from the app state - - Parameters - ---------- - request : Request - The FastAPI request object containing the application state - - Returns - ------- - pyiceberg.catalog.Catalog - The loaded pyiceberg catalog instance used for querying versioned EDFS data - - Raises - ------ - HTTPException - If the catalog is not loaded or not available in the application state. - Returns HTTP 500 status code with "Catalog not loaded" detail message. - """ - if not hasattr(request.app.state, "catalog") or request.app.state.catalog is None: - raise HTTPException(status_code=500, detail="Catalog not loaded") - return request.app.state.catalog - - @api_router.get("/{identifier}/gpkg") async def get_hydrofabric_subset_gpkg( identifier: str = Path( diff --git a/app/routers/nwm_modules/router.py b/app/routers/nwm_modules/router.py index d706628..e316cb1 100644 --- a/app/routers/nwm_modules/router.py +++ b/app/routers/nwm_modules/router.py @@ -1,71 +1,51 @@ -import pathlib -import tempfile -import uuid +from fastapi import APIRouter, Depends, Query +from pyiceberg.catalog import Catalog -from fastapi import APIRouter, HTTPException, Path -from fastapi.responses import FileResponse -from pyiceberg.catalog import load_catalog -from starlette.background import BackgroundTask - -from icefabric.hydrofabric import subset -from icefabric.schemas import IdType +from app import get_catalog +from icefabric.modules import get_sft_parameters +from icefabric.schemas import SFT, HydrofabricDomains sft_router = APIRouter(prefix="/modules/sft") -@sft_router.get("/{identifier}/") -async def get_hydrofabric_subset_gpkg( - identifier: str = Path( +@sft_router.get("/") +async def get_sft_ipes( + identifier: str = Query( ..., - description="Identifier to start tracing from (e.g., catchment ID, POI ID)", + description="Gauge ID to trace upstream catchments from", examples=["01010000"], - openapi_examples={"station_example": {"summary": "USGS Gauge", "value": "01010000"}}, + openapi_examples={"sfe_example": {"summary": "SFT Example", "value": "01010000", "domain":"conus_hf", "use_schaake":True}} ), -): - """ - Get hydrofabric subset as a geopackage file (.gpkg) - - This endpoint creates a subset of the hydrofabric data by tracing upstream - from a given identifier and returns all related geospatial layers as a - downloadable geopackage file. + domain: HydrofabricDomains = Query( + HydrofabricDomains.CONUS, description="The iceberg namespace used to query the hydrofabric" + ), + use_schaake: bool = Query( + False, + description="Whether to use Schaake for the Ice Fraction Scheme. Defaults to False to use Xinanjiang", + ), + catalog: Catalog = Depends(get_catalog), +) -> list[SFT]: + """An endpoint to return configurations for SFT + + Parameters + ---------- + identifier : str, optional + The Gauge ID to trace upstream from to get all catchments, by default Query( ..., description="Gauge ID to trace upstream catchments from", examples=["01010000"], ) + domain : HydrofabricDomains, optional + The geographic domain to search for catchments from, by default Query( HydrofabricDomains.CONUS, description="The iceberg namespace used to query the hydrofabric" ) + use_schaake : bool, optional + A parameter to determine if we're using Shaake or Xinanjiang to calculate ice fraction, by default Query( False, description="Whether to use Schaake for the Ice Fraction Scheme. Defaults to False to use Xinanjiang" ) + catalog : Catalog, optional + The pyiceberg catalog, by default Depends(get_catalog) + + Returns + ------- + list[SFT] + A list of SFT pydantic objects for each catchment """ - catalog = load_catalog("glue") - unique_id = str(uuid.uuid4())[:8] - temp_dir = pathlib.Path(tempfile.gettempdir()) - tmp_path = temp_dir / f"hydrofabric_subset_{identifier}_{unique_id}.gpkg" - try: - # Create the subset - subset(catalog=catalog, identifier=f"gages-{identifier}", id_type=IdType.HL_URI, output_file=tmp_path) - - if not tmp_path.exists(): - raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}") - if tmp_path.stat().st_size == 0: - tmp_path.unlink(missing_ok=True) # Clean up empty file - raise HTTPException(status_code=404, detail=f"No data found for identifier '{identifier}'") - - # Verify it's actually a file, not a directory - if not tmp_path.is_file(): - raise HTTPException(status_code=500, detail=f"Expected file but got directory at {tmp_path}") - - print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") - - download_filename = f"hydrofabric_subset_{identifier}.gpkg" - - return FileResponse( - path=str(tmp_path), - filename=download_filename, - media_type="application/geopackage+sqlite3", - headers={ - "Content-Description": "Hydrofabric Subset Geopackage", - "X-Identifier": identifier, - }, - background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True)), - ) - - except HTTPException: - raise - except Exception: - # Clean up temp file if it exists - if "tmp_path" in locals() and tmp_path.exists(): - tmp_path.unlink(missing_ok=True) - raise + return get_sft_parameters( + catalog=catalog, + domain=domain, + identifier=identifier, + use_schaake=use_schaake, + ) diff --git a/pyproject.toml b/pyproject.toml index fa6c4b9..e115fa1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -51,6 +51,7 @@ dependencies = [ "netCDF4==1.7.2", "numpy==2.2.6", "pandas==2.2.3", + "polars==1.31.0", "pyarrow==20.0.0", "pyiceberg[s3fs,glue,sql-sqlite]==0.9.1", "python-dotenv==1.1.0", diff --git a/src/icefabric/hydrofabric/subset.py b/src/icefabric/hydrofabric/subset.py index 3b37db1..8ae50b0 100644 --- a/src/icefabric/hydrofabric/subset.py +++ b/src/icefabric/hydrofabric/subset.py @@ -336,33 +336,33 @@ def subset( # Getting any optional fields: if "divide-attributes" in layers: - divides_attr = catalog.load_table("hydrofabric.divide-attributes") + divides_attr = catalog.load_table(f"{domain.value}.divide-attributes") filtered_divide_attr = divides_attr.scan( row_filter=In("divide_id", valid_divide_ids_for_divides) ).to_pandas() output_layers["divide-attributes"] = filtered_divide_attr if "flowpath-attributes" in layers: - flowpath_attr = catalog.load_table("hydrofabric.flowpath-attributes") + flowpath_attr = catalog.load_table(f"{domain.value}.flowpath-attributes") valid_flowpath_ids = filtered_flowpaths["id"].dropna().values.tolist() filtered_flowpath_attr = flowpath_attr.scan(row_filter=In("id", valid_flowpath_ids)).to_pandas() output_layers["flowpath-attributes"] = filtered_flowpath_attr if "flowpath-attributes-ml" in layers: - flowpath_attr_ml = catalog.load_table("hydrofabric.flowpath-attributes-ml") + flowpath_attr_ml = catalog.load_table(f"{domain.value}.flowpath-attributes-ml") valid_flowpath_ids = filtered_flowpaths["id"].dropna().values.tolist() filtered_flowpath_attr_ml = flowpath_attr_ml.scan(row_filter=In("id", valid_flowpath_ids)).to_pandas() output_layers["flowpath-attributes-ml"] = filtered_flowpath_attr_ml if "pois" in layers: - pois = catalog.load_table("hydrofabric.pois") + pois = catalog.load_table(f"{domain.value}.pois") poi_values = filtered_flowpaths["poi_id"].dropna().values filtered_poi_list = list({int(x) for x in poi_values if pd.notna(x)}) filtered_pois = pois.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() output_layers["pois"] = filtered_pois if "hydrolocations" in layers: - hydrolocations = catalog.load_table("hydrofabric.hydrolocations") + hydrolocations = catalog.load_table(f"{domain.value}.hydrolocations") poi_values = filtered_flowpaths["poi_id"].dropna().values filtered_poi_list = list({int(x) for x in poi_values if pd.notna(x)}) filtered_hydrolocations = hydrolocations.scan(row_filter=In("poi_id", filtered_poi_list)).to_pandas() diff --git a/src/icefabric/modules/__init__.py b/src/icefabric/modules/__init__.py index 5b8f303..36787f2 100644 --- a/src/icefabric/modules/__init__.py +++ b/src/icefabric/modules/__init__.py @@ -1,11 +1,12 @@ """Contains helper functions to support NWM modules""" -from .create_ipes import divide_parameters, get_hydrofabric_attributes, module_ipe +from .create_ipes import divide_parameters, get_hydrofabric_attributes, get_sft_parameters, module_ipe from .rnr import get_rnr_segment __all__ = [ "divide_parameters", "get_hydrofabric_attributes", + "get_sft_parameters", "module_ipe", "get_rnr_segment", ] diff --git a/src/icefabric/modules/create_ipes.py b/src/icefabric/modules/create_ipes.py index de0113b..7ad234c 100644 --- a/src/icefabric/modules/create_ipes.py +++ b/src/icefabric/modules/create_ipes.py @@ -2,14 +2,29 @@ import geopandas as gpd import pandas as pd +import polars as pl import pyiceberg.exceptions as ex from botocore.exceptions import ClientError -from pyiceberg.catalog import load_catalog +from pyiceberg.catalog import Catalog, load_catalog from pyproj import Transformer +from icefabric.hydrofabric import subset +from icefabric.schemas import SFT, HydrofabricDomains, IceFractionScheme, IdType + ROOT_DIR = os.path.abspath(os.curdir) +def _get_mean_soil_temp() -> float: + """This is avg soil temp of 45 degrees F converted to Kelvin. This equation is just a reasonable estimate per new direction (EW: 07/2025) + + Returns + ------- + float + The mean soil temperature + """ + return (45 - 32) * 5 / 9 + 273.15 + + def module_ipe(module: str, attr: str, domain: str, version: str, cfg_write=None): """Creates initial parameter estimates for a module @@ -267,3 +282,68 @@ def divide_parameters(divides, module, domain): df = table.scan().to_pandas() filtered = df[df["divide_id"].isin(divides)] return filtered + + +def get_sft_parameters( + catalog: Catalog, domain: HydrofabricDomains, identifier: str, use_schaake: bool = False +) -> list[SFT]: + """Creates the initial parameter estimates for the SFT module + + Parameters + ---------- + catalog : Catalog + the pyiceberg lakehouse catalog + domain : HydrofabricDomains + the hydrofabric domain + identifier : str + the gauge identifier + use_schaake : bool, optional + A setting to determine if Shaake should be used for ice fraction, by default False + + Returns + ------- + list[SFT] + The list of all initial parameters for catchments using SFT + """ + gauge: dict[str, pd.DataFrame | gpd.GeoDataFrame] = subset( + catalog=catalog, + identifier=f"gages-{identifier}", + id_type=IdType.HL_URI, + domain=domain, + layers=["flowpaths", "nexus", "divides", "divide-attributes", "network"], + ) # type: ignore + attr = {"smcmax": "mean.smcmax", "bexp": "mode.bexp", "psisat": "geom_mean.psisat"} + + df = pl.DataFrame(gauge["divide-attributes"]) + expressions = [pl.col("divide_id")] # Keep the divide_id + for param_name, prefix in attr.items(): + # Find all columns that start with the prefix + matching_cols = [col for col in df.columns if col.startswith(prefix)] + if matching_cols: + # Calculate mean across matching columns for each row. + # NOTE: this assumes an even weighting. TODO: determine if we need to have weighted averaging + expressions.append( + pl.concat_list([pl.col(col) for col in matching_cols]).list.mean().alias(f"{param_name}_avg") + ) + else: + # Default to 0.0 if no matching columns found + expressions.append(pl.lit(0.0).alias(f"{param_name}_avg")) + result_df = df.select(expressions) + mean_temp = _get_mean_soil_temp() + pydantic_models = [] + for row_dict in result_df.iter_rows(named=True): + # Instantiate the Pydantic model for each row + model_instance = SFT( + catchment=row_dict["divide_id"], + smcmax=row_dict["smcmax_avg"], + b=row_dict["bexp_avg"], + satpsi=row_dict["psisat_avg"], + ice_fraction_scheme=IceFractionScheme.XINANJIANG + if use_schaake is False + else IceFractionScheme.SCHAAKE, + soil_temperature=[ + mean_temp for _ in range(4) + ], # Assuming 45 degrees in all layers. TODO: Fix this as this doesn't make sense + ) + pydantic_models.append(model_instance) + return pydantic_models diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py index 4fb6ac7..e8b8664 100644 --- a/src/icefabric/schemas/__init__.py +++ b/src/icefabric/schemas/__init__.py @@ -1,12 +1,15 @@ """Contains helper functions to support NWM modules""" from .hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType +from .modules import SFT, IceFractionScheme from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations __all__ = [ "UPSTREAM_VPUS", "IdType", "HydrofabricDomains", + "SFT", + "IceFractionScheme", "FileType", "NGWPCLocations", "NGWPCTestLocations", diff --git a/src/icefabric/schemas/modules.py b/src/icefabric/schemas/modules.py new file mode 100644 index 0000000..03948ad --- /dev/null +++ b/src/icefabric/schemas/modules.py @@ -0,0 +1,68 @@ +"""A file to host schemas for all NWM modules. Based off the table from https://confluence.nextgenwaterprediction.com/pages/viewpage.action?spaceKey=NGWPC&title=BMI+Exchange+Items+and+Module+Parameters""" + +from enum import Enum +from typing import Protocol + +from pydantic import BaseModel, ConfigDict, Field, field_validator + + +class NWMProtocol(Protocol): + """Protocol defining the interface that configuration NWM BaseModel classes should implement. This ensures consistency across different module configuration classes.""" + + def to_bmi_config(self) -> list[str]: + """Converts the contents of the base class to a BMI config for that specific module""" + ... + + +class IceFractionScheme(str, Enum): + """The ice fraction scheme to be used in SFT""" + + SCHAAKE = "Schaake" + XINANJIANG = "Xinanjiang" + + +class SFT(BaseModel): + """Pydantic model for SFT (Snow Freeze Thaw) module configuration""" + + model_config = ConfigDict(validate_by_name=True, validate_by_alias=True) + catchment: str = Field(..., description="The catchment ID") + verbosity: str = Field(default="none", description="Verbosity level") + soil_moisture_bmi: int = Field(default=1, description="Soil moisture BMI parameter") + end_time: str = Field(default="1.[d]", description="End time with units") + dt: str = Field(default="1.0[h]", description="Time step with units") + soil_params_smcmax: float = Field(..., description="Maximum soil moisture content", alias="smcmax") + soil_params_b: float = Field(..., description="Soil moisture retention curve parameter (bexp)", alias="b") + soil_params_satpsi: float = Field(..., description="Saturated soil suction (psisat)", alias="satpsi") + soil_params_quartz: float = Field(default=1.0, description="Quartz content", alias="quartz") + ice_fraction_scheme: IceFractionScheme = Field(..., description="Ice fraction scheme") + soil_z: list[float] = Field(default=[0.1, 0.3, 1.0, 2.0], description="Soil depth layers in meters") + soil_temperature: list[float] = Field(..., description="Soil temperature in Kelvin for each layer") + + @field_validator("soil_temperature") + @classmethod + def validate_soil_temperature_length(cls, v, info): + """Ensure soil_temperature has same length as soil_z""" + # Get soil_z from the data being validated + soil_z = info.data.get("soil_z", [0.1, 0.3, 1.0, 2.0]) + if len(v) != len(soil_z): + raise ValueError(f"soil_temperature must have {len(soil_z)} values to match soil_z layers") + return v + + def to_bmi_config(self) -> list[str]: + """Convert the model back to the original config file format""" + temp_values = ",".join([str(temp) for temp in self.soil_temperature]) + z_values = ",".join([str(z) for z in self.soil_z]) + + return [ + f"verbosity={self.verbosity}", + f"soil_moisture_bmi={self.soil_moisture_bmi}", + f"end_time={self.end_time}", + f"dt={self.dt}", + f"soil_params.smcmax={self.soil_params_smcmax}", + f"soil_params.b={self.soil_params_b}", + f"soil_params.satpsi={self.soil_params_satpsi}", + f"soil_params.quartz={self.soil_params_quartz}", + f"ice_fraction_scheme={self.ice_fraction_scheme}", + f"soil_z={z_values}[m]", + f"soil_temperature={temp_values}[K]", + ] diff --git a/src/icefabric/schemas/sft.py b/src/icefabric/schemas/sft.py deleted file mode 100644 index e69de29..0000000 From 9a22d40927e30c9847f6aefa00611030a1e1a3d4 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Thu, 10 Jul 2025 10:00:20 -0400 Subject: [PATCH 76/97] Part III: NGWPC-6893 (#48) * initial commit: added click cli * feat: added CLI to make config files * feat: added a notebook to demonstrate the API endpoint as well as the CLI for the SFT module * patch: remove cahnges to .pyiceberg.yaml * patch: refined SFT notebook to ensure code is working when run out of order --- .pre-commit-config.yaml | 5 + app/routers/nwm_modules/router.py | 33 ++- docs/img/icefabric_api.png | Bin 0 -> 375458 bytes examples/iceberg/querying_ras_xs.ipynb | 21 +- .../initial_parameters/soil_freeze_thaw.ipynb | 214 ++++++++++++++++++ pyproject.toml | 4 + src/icefabric/__init__.py | 4 +- src/icefabric/cli/__init__.py | 6 + src/icefabric/cli/main.py | 33 +++ src/icefabric/cli/modules.py | 86 +++++++ src/icefabric/helpers/io.py | 41 ++++ src/icefabric/modules/__init__.py | 13 ++ src/icefabric/modules/create_ipes.py | 5 +- src/icefabric/schemas/modules.py | 32 ++- 14 files changed, 461 insertions(+), 36 deletions(-) create mode 100644 docs/img/icefabric_api.png create mode 100644 examples/initial_parameters/soil_freeze_thaw.ipynb create mode 100644 src/icefabric/cli/__init__.py create mode 100644 src/icefabric/cli/main.py create mode 100644 src/icefabric/cli/modules.py create mode 100644 src/icefabric/helpers/io.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a258935..27cab3a 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -23,3 +23,8 @@ repos: rev: 0.5.7 hooks: - id: uv-lock + + - repo: https://github.com/kynan/nbstripout + rev: 0.8.1 + hooks: + - id: nbstripout diff --git a/app/routers/nwm_modules/router.py b/app/routers/nwm_modules/router.py index e316cb1..f504a02 100644 --- a/app/routers/nwm_modules/router.py +++ b/app/routers/nwm_modules/router.py @@ -14,34 +14,33 @@ async def get_sft_ipes( ..., description="Gauge ID to trace upstream catchments from", examples=["01010000"], - openapi_examples={"sfe_example": {"summary": "SFT Example", "value": "01010000", "domain":"conus_hf", "use_schaake":True}} + openapi_examples={"sft_example": {"summary": "SFT Example", "value": "01010000"}}, ), domain: HydrofabricDomains = Query( - HydrofabricDomains.CONUS, description="The iceberg namespace used to query the hydrofabric" + HydrofabricDomains.CONUS, + description="The iceberg namespace used to query the hydrofabric", + openapi_examples={"sft_example": {"summary": "SFT Example", "value": "conus_hf"}}, ), use_schaake: bool = Query( False, description="Whether to use Schaake for the Ice Fraction Scheme. Defaults to False to use Xinanjiang", + openapi_examples={"sft_example": {"summary": "SFT Example", "value": False}}, ), catalog: Catalog = Depends(get_catalog), ) -> list[SFT]: - """An endpoint to return configurations for SFT + """ + An endpoint to return configurations for SFT. + + This endpoint traces upstream from a given gauge ID to get all catchments + and returns SFT (Soil Freeze-Thaw) parameter configurations for each catchment. - Parameters - ---------- - identifier : str, optional - The Gauge ID to trace upstream from to get all catchments, by default Query( ..., description="Gauge ID to trace upstream catchments from", examples=["01010000"], ) - domain : HydrofabricDomains, optional - The geographic domain to search for catchments from, by default Query( HydrofabricDomains.CONUS, description="The iceberg namespace used to query the hydrofabric" ) - use_schaake : bool, optional - A parameter to determine if we're using Shaake or Xinanjiang to calculate ice fraction, by default Query( False, description="Whether to use Schaake for the Ice Fraction Scheme. Defaults to False to use Xinanjiang" ) - catalog : Catalog, optional - The pyiceberg catalog, by default Depends(get_catalog) + **Parameters:** + - **identifier**: The Gauge ID to trace upstream from to get all catchments + - **domain**: The geographic domain to search for catchments from + - **use_schaake**: Determines if we're using Schaake or Xinanjiang to calculate ice fraction - Returns - ------- - list[SFT] - A list of SFT pydantic objects for each catchment + **Returns:** + A list of SFT pydantic objects for each catchment """ return get_sft_parameters( catalog=catalog, diff --git a/docs/img/icefabric_api.png b/docs/img/icefabric_api.png new file mode 100644 index 0000000000000000000000000000000000000000..d505686708f73fea530a16c2fee2fff1d3859775 GIT binary patch literal 375458 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
    FUxSzNxfO95 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 z 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

    O(j7#A0o$zZP`z2Qs@F#%5XB=k9SHPODLfBct=y zaP|Sj+f7Wo4lTJ7AayvKJUdm+U5+L){qAkk@g=CETlS}XC5A5(4xa|KWjWhDRjv;!OLp;1+ zx^G#7tvXlVZqSWP&5q^6pw)_>@7<8an&oI9N`W!sA1b;~;o2YqfgWVJ75k2r;swFO zYXXdWJ;S|mIj9A9XXC+mm!~k*)!gSc4w;I72^KOWm8p&4M=FsanmQHj>kh=M(-+HeigCT)(uCRCy8>2_gpHrY4CbgCb=RTz)3X1*36oUkj4P9;8WiF zi-S{nl2TjM5;Y9Tbw?xjM1F6jZSO>JKo^HXzy+K}t~ljq2UoertNwbm14;a@BGX&r z{_L1GU#88je9&Kjnc>;&;SHwKn_+gz)AMxko^X34imbb-mZ#|DW_QHOgJN z<5INX{U22*ey$!<3B!%BPW;3HUO-E83Lq@=iHF-RiFdA4vv>P zrhI!Ax?ABFeqBn%Jac8`r-Sxf5kLm}z3uypdg0fnnjR4`BD-3SunViq}`PFA2}+7{YS@7 z;y3;{+qZhFhAg^s9BNaOMkNQ|j0S8tn-KF{SJ{r8OOYVWht#aY7kFa{Gzxa|R|K;6 zSBKN_GwZqdTSJ;6$heG(dD6JDsRHu@MEKlxBB)3#k0n(S1*dTm^auUIgq?CLCK#hB z0$z<4v)!w{zX1`48;cG{I-6-Y=;g{FOGkmI5f?0H)k$WLaSmMkjP~`>F0e&6DEON> zr=^cdE<$YuS)sP^@a`3TlnGpdm^{F`J!v6U35bwg-~P4GJdVjIFH=P7vlA0rXV^tO z`^H+c`4g4Z=ubNGJK$)9BK2s$D4&9T#$sRzlOgVcrjTFd&>GTGifgjYOCYoEOBe;x z)5mYtS|j8knEI9jghw+s=86&)X3%R(GgZ+b)0?+D`+2UHEqbvpEv`-aHD{-i)G z{%6%LTsedpRI;<&^NkM?CY|P-kg}N5@_6oXOadJ8_Q_);6(+;o=78*)dzAg78#2A> z9;eE5t#WB`XSXn7P;OlbfA}`tkRIR%t64=Q{Vv96 zINXLlFmOjRd0ijLOGMzX9t}&{ws~Jt2*Kg0h~9iM<%*oEFU5=~xcphWe!|F0I5AtJ z;^=Tqth>{^oi*j|y7*QSZRFUJfXin$rCfxlwggHy-b&$(L&E8lVf$uR0j*-G5P;c7 zYY1RG#(7+)D;6)@_TOGrQ{|KDaLRK=Zl-+fd#ihx8ZU+(TzbrFQ^v3KPQ6ejeM(4v zYqs(F#og0ANjZ-yn%~|8UWqQlQQQ1Q`ZqgS^1jgpsfiLj=-qG#C<{Zwr%!L>%?Hi6LOE^HG+$bQ(f&wgMr6*F4 z%>%{o5@%cq$(wL6RG*5^ zPa!L0wV02dVGsP)eQq9%Jw|6mspp%lm7NI526Qj<^|ssllWJSsOtbOK3QT%>9*bVP z`4|agzI-5?yNmG*vUj34Wtz^G-%gk-;Ii5?1cR_?V}xl}^Kb(l;y=gDcP|ZpO7e+R zDs=Oz1=9;K*A`Z94ldQgVvH9k`~Z8NYlInMNH{@uSQV$RHq@w3p&Lvw<0|MF-cF{` z6>I`jAL!abctV1h%@W5!`(lz=NA3C@Jki!Qgs!)p_obF+8@pBso4S#0Wg+;o#9Yl! zZiia@-LeHvG;(Q@48j`g(nhfZRfey2Dq4@~))qeq>bAOOV^C!^UaR)Jb=!zcEJ7DA zJJ0q?RX*R*YnrUbke)#eF)1sUYx4(95+J zOhwG+63pjzutjme;i(ZBj!z-bSdjZWU#7*Y55xk78);qT{M;aiJ?)SIFi&Mc$t^Qc z>#|}5QK;0ETg~NOi7NY6zw5|U(V!N1GnnS-YD9!t1*U0OwZCj#Jy+MLO0=4j@J-7b zZ5F?O0-t0=&-BpbkwIMaTvjs-x##M38Sn)xniS&phR=Tnh)*;-yMy+JD0Qxs(1-yn zpl=K)Uz`^T0oW+Q+{d5`heY~QaR0a?X#nT(2vovPXipTIo*C!S;`@%mCD7pDDvG^r z{&G@ab&^v_R*~uz^0mg#!Z49TISUZ+(fvo^sLzdm6bJ|VO$wg18RNBVB-+UpL_0mW zAe#21zNk!T66E7kFN8+YjQxGOHy`}aLdm@>mcXp1LqxyN*+}{nAl6LY`OrjuTomF1 z4#wT_)(%dBNUgWg*z-uQ#BhlA0wlhX_*8`pVXYafIuvayHx4FL{ICnP>E7+}4$%gU z=snyL1@wt1pSSxTe;@ zEu=oBDS|l>DH5Wnzj-2h$`@NMa~A{CiGd{Pcm6SA6dL{cj1DTJ!Q)An zYn=|lv@&w#+b6SbL@7{3BTa&>AD7F~OlHGl_2N>bVEwZCgc4E?4E=_1IB^l6jiOMU*HU~U><*RTF}T|S>$kAK$tfOsWd0XbzV7@ z9yg1mtvz{P(c!L%SLa_sn$adE^`ZOP5FnGO{e&0j!SbcsOC~Q=Yt3GHA3&h;IQi#{ zq6=Ka=XU6Duh~xcJ(O8T;teNDQ0ctZu&iqh^Srt@&HLk0g>Fp*BZ;xOjp3tD`Q5C{ z@r*%2zP(0#V&5Alv%~u*J;qzCJQ8E7zwrgV&|eM;dz`*+pM-WcFZBvGOye$*b=X0?Ue^~Oqo1j}W54>n% zzE))|!B&EsCHdSGCPrc-6`av))BR|N8@ zTljBHK7gi6`b7XhDFYgYVp{7YM#LF@OLw55$I>%QhX8i<=vReqv-I;YuFR$0&~6sp z*8~IDRZ%QsQ(oU)68yTWG;22mi0&9Az38>TwOcw)(g}A?h~0cc*IB`){j%7J4CMGrP^ujtwkp5d&Zt2i+W{&J?Ydumds=4)zdo~ zgzE;_WJwlH({w8ID8QD;FJtIVr1ma$*M)z*CB9?+2Noy=q93!%#m=eZ7*<3a37Sy` zA#Y7Y^zTAT5Raa!&d>Xjz>~bbDCJkHnyRRbfwcPVWjCWbqjxLJuVKB~wKdU%#1Sl$ z5Je;D-uF!uuZ3JL_Dr0VOv~eZk1*fBsLB0vbJ5b{d` zRmmg27ZA7?n|d)JC>%Iza}TUEuwB!uF6T;-cqc>=@)~^`oWR4MSXb;}v;yl)3r-Dq z=xq(53lDbHLWSjqgTH=4c{mWJ=(e(I0@NF)PfCMvx3jc`9*(T#;RrULr}LdrN!BR= z@tPL>DNNoKJ0VL~h9^5MKnFODYo#3t0w@SZrStMQaMrYx=IRcp{dUWLqViazH49hY zE1<>Y8)n&TETRUl=NZ;y@u7f10PK{`aPv8Ck=G<&FMjItrc5$X?Uy1vR{)}CLm}W( z8a67g4Uq1St3)Q#GaCc>n|gCivcp-~8{PdWo9?QEYYsR6fkOMTk#;7G>D9_;PdT@* z9zG(8HtjK~*%DN0`|9NcPH|ZBH#}R?2tWK17Xo%c){upOp5N|^sZb2ik+4II2H0Qn zLY-|VP#mw4#Z~m?Ulp?JrA@`W9$5Wmf4teqPmM&_5i$eU_76(hvV_BuY0iPe$))lk z&5V5o>?7x3K%v|SL~gm`7hslT)tf9xuKnDuRu(hDbjYw3!OTf^c9WiFna_uJ$4A(b z@Oy1N#yWsS^qAJR>egAPNX`)TrzK_|) zrkri;B{qt4VtP0XEyBKnLX(;y$AzpfzIN$R)LcK;*POPcLWz znkDSL)P8*9k5X>3)y1!g8!hh@->iJG0J7}capFa2*QBIh|_*I@C^nR+I z3@x}d_oD-hcSNZklio%r$s6;L3>)7WIg1>hk#MEFEcP z7{Sl9V5TdN!syJyRC7>nmRK->)o94)&ZEi*W!d{wSf>IXLK;DX{atF-ua8wlH}$WH;EGiZ&gQjW54M#Xn;fJUa=BVq{3F{9!rn z)ApN>&642Y^#1Ao*tPrYQKO=)G9@^~xGUsyP*>n<8H=Ng*HMoi#v4V3Z*y7{;84l$ zE(ty?+uSnm#A(p7IbU%Mq>!~4gGAO?rOZr&By!`aqifr02Pkz($=4s57LPaq*h8~p zI`E`hsPX>@pteH5Dm{z^nTrBF`<`-o?T?7ii$}TnOuojvWPN5sn&x2(1M~M~9B4)Z z17a%0@XGpy5#4}#X?ovj{%Try*GQtVy|3J+(L>oESK5GSkj*nO$?_?wh4kSeBx0h( zQ(Jpx%U)kuEBh)fYE0#A->y!VuW)lcMT$pdpQzrY>%x^pMAGkrl-o|iPznVl1V}T) zQrUbg9Giq^@2b%dU^4yU-M#%ce{twK(5_#a8o{pWwW)i|7KZKnor$4UK=porkp1Ud zNHfmcDVALQaE=9lLUCu@HVGtRdfsXR)M7v=5V@q`$c$u~uF#cYW#8rruC?+!$Zz(0 zoJ$g|K8TpHD03;Ep0ue0JP%oWiEXh`YT>=PtQb{_z8I4%je^2l_ojaAP5Sno+(mim zmlvMT@K(OZp`!<9)po`g+bxCl1u}k^GA~=J!ilu`^Hx{ zqYry<`TCS{Wb@=vv-o#6cGif=v#k8}!tqOY+OrS$gU$>Ek4ysi`dGOqF0ph) zwz~oe!sb8r4KsL1Wa5Q|KHV$m`I805k9$_&~~~eI{w@KtPU;c0HK+CdnF92CbWTz1ry|wT^nw0>2I903$X+4=2X> z++1_P{pjYv?0v2`>iLw$D%cx4UDvtxg?X*r>#V;|wqFu8VbWS9htJhYA5XSBHPG5RRo)+G~;WcrvdZhorBC9=G9_tRO-`r$d*Y=nn&~phIUR~9&KPia;r0i zK$dL|O)XdfIyeTew9rO2skfSk*W>y~pge{gdT5nB}f{%_n*o??!wwT`Z<&agcX+ zo%rcsS9Nf`^$7Vqn)d6d=DTEY-l~_WEcId16sF#_0KDA&KB(cTA+p6~Z)CU*#{1*| zkWMwH7Uh3rBq}?Jd|h~qBp$c?;eJ8PnJmf3Fb&^Dl&A1DgU80b*YVP$mE)9WxlVH~ zh5WMgzlsribJ}^m=pdjN8OacoiX`B0ZezI>*y>O3>q7vn7Uc-RXpaL0V;KhLCi+M;Wl!1o9}9%v_= ztun0jNRoHuJWJdx83c0CZ@c4@Es*Mw4g$?A=rs~_+bAjX0*~!87i%kgwCJU#(8DBj z`)agPyv}->n6uoKs+r_(lc_PsRO#yOpKS?r9eV*xCU#IPn zjvYYvCc4{g=iLvo zU)`f39-rau>YXkXo`GF%!(AhvAEB<+Y9Lvo=O1rc-41acAB6TByY7z|#5^VR$)Y2m zn^}wAyAL7A3ET?Ajyk6!=z+Er(6oB%ZRWLQa%5a)#sR1;Uf!oXiNSI@4hrcjU8)$&VYm__;f?t`W7Hdr?4>9RDD#jPR0!-$@b;mJ|Wi2k*gG zFo_u?ECJrI_Y67zk#m16E9Jf|D~?+kj+$$3wA-4wz5B~@wOQLo`V)w*m5Mx>st|L& zSgFrHp~c~j_VL^u@?j1=){@S)*QUk-l&|OZAqvH^f;e0f1AmOA-4+Jo=1J!oi+&xF<8~{)%IjT<0zS0@^QrMiTlbxrP(9yED*nMJ zBK~6C`H`zDaa2JO@zATrMsZDEhJt>*daFn(W>iWalT{JGN)N!eKwL;K7xy-!4-Rx~ z8*jdNU+gIIQ3;imj=P@wVdnLHrE7X#R}SuHaIH3yu=JQ91%W$1RM8p@r@2CcE{r;i z(AwRy{8xFs_I7D@ztIq%qq9`G*YUERTP(IH_?B$?T2B^#R1my`<+Pjl9Xq0Tad)|I z*i)|G5s(|)D2S)BYCcX~PAI0>Z{8Iu#{sxuG)GwIJMJyErni+>mTA=|<PLljzo%}C`5vM5J_RT2t#j6TjHOGb4F`X>wBUB% z`^&o58@R#A%|ORE?_4i=!Y(^Z#4Hg%mC-u;>Z<)*oo4U;_sUo$(@#paWCre-tV6&t z#2CMd<#xs!;Uy46hktxiCY*-fHZ(Li7FuNL3~PzjdEQEY9xISb4>`H^HcmGY(o3rR z95oPOP3eB5V^s%jQNPB-6%c(FRfY~nX|*FKp@Y)WD|k#zI)YU@ zmbpz03uYp;pHJ+p#tRblS?&wk<+)2(Jt?^n!@x%%m%Oi?xywEp7a%>@t6!R>lD<-k z|8{ENSzF-pcwjS|;F)W3tffE}W+<61GxKCCSIcjph&;Xp3Q{6Ra3^_{g(I;X%y|Z{ z)90`eNJJBwQzYT)LZf5+T~e4F2&VpP@YU{WJE+bKu5I_ym73uyw{pGa>R4FhRnHJ* z%NLNj!_H_93X>jqsP9ETDAph^l<6xp2mgnZ4kvTMCE#qQ`50#hTbQH>K+-BD69g4m zKD@_()0f4-hGkMfcuQsb$okJhkY{+7XMu+ZYst}S`k+x4JeLh37TBlqJtD;WYEN?a zcVV8QqOq^Q{dr2d`IF;08e!CZ|Dg4{py3N1RfMj~lQkKZ&-YjM%6(CQEnon(D9ITezav)8_Uk`9I>Gv0z4C+j-kE`Jl`R7~A*$To>Lxr;SZ31>1?g48?0?%KX zwqQbl2M!pJ;6qsW1iSHWlB1$EG3u4=>%Vu21QzSWvF(gEPR|bUd#y!15C1mj2c2TJ~0%)L+J&!OfiY^oRQI`OGp{By4;pk@d{VEDW?6zQ!gCzEPI?MG9L zEMn)4U-Het2m;2T7kA7r8{3*dFltWmY*hg-g$Yo@w|iU-ZQQmqZ@>18*%>{hPsl<` zOcm#!9^rdj2eYW2afk(bzB9Pj!uQo>O`=CjOE`+R} zhA=h${4rr>f2eyfqCLtyWUle}%gsE^-LHx6z@0LqvbY79hy+w5#cLq8l(SM^Gw?cZ zWrJ_ef-fFc%tu)rQBN+twcf2buB@9Lw*lAcz^8ED2g1)aiA(6Uf<-xcZCWbzbJ|u3 zj*ElWNZg`45p%rn*{=*Tc%7-~RhrODhvQ~vs0G=0mlb@7XJY~?7waIePJ$pW!XkBe z>MY0UEP(3STwLkO!e`?bdc@dc&k^ce>HFhjoEfyen0H~s{9X%bo=h@HjNSgTwdOK0 z(mDRa(UCiJe%@KG#Dr2V-vmdWD=!-Cn zO$N}8@>(WlL{fm=y!*yO{dg%4S@3#c{3*QJ%;Ds$jXZ{Q!QR-es~gBI8_8e@F%TA# zfc?3HNrB-l(%&ByhvuJ04L}Q~ImZm%dM!ap7eWm*@Y$`i<2vFr;WHF9_5g0RAR`9WHgfxG;j|SE*Y}4+R0j7ZGxVD)>cU*O{f- zfcoP`f_V6fG)WIK12x7ZwhMI4M$%-PofZv0iRrw6@vwt`5o{9i6R-ia1iWw_ey0Ha zh$)xU(aQpQ9qJ-zN8NyYDjvQ8zz@h?h~6AJQ9Ba;y)B{<^Ci%3dOI6TDv$~y{m4 zTu1cTlV{EQosyoy1&9Qmq?^760H||}5YmPISK6cwt!Ot7=aExyP;SpQ^WjMt-C7B8 zqF()V%wNFTSppN0=6oFf4-g`1q4)VuGKGZs=gxw^y$B95go!W`UD20csqDBK{Ug^; zs%#kTkxBNo00tt6atA@6F-Y>Va%6`Zfd$wFOH_&l+CH!GhRbI1_2Y@69en`Q<$uQN zulm$~UnSM~^X0gj(F4FEQN+-06<~ZJeJEIy+9W-xq^WW{?Bnp$sWT_+Rd^@yI%Ebo zQXcq2$^h$Wquq;Lc9)|C-nCQyus|c~02Mmr0Y;5bkr&WIG=s;8T4G^8r3LpwCK#Zf zF@aac49FkXw#_qwIzdQRON#KnsPX@2G%=)r8|pqqzFz|30}(5|G|Zp3`O-w? zmx5)1e-RT)b@&$epG@`>IK;qB zhJ`VF`Y(I--*)sr%Zc-!8~y*!*}t=}|M9BGuRk*nPxJTDN+PMxL}9hd>VWXad5;M= zm_U(G4!WYpQgnm=^_T*~jRyDUnO~M9OL$QsfUe~jA6*Fp9ax|!14vOKof&jRYK{ny zpu7;BzXy`PT}8tOCZqUz;zl!I2=wfCL!x!%YZKQn(O9A;A)vAyl z5+pkFKCHklJip`lBjlBc>a!M1u`)U*3%aQ0?@s=kjw|w?0YU$5+Wn`O9h?bdf`(EV zO-KN!JDBv~vO;pVe&WjK5xVnWTGT~_%ZRB!YCMOPz=AyH>!~zG;Vy=d<&jJKPqg`; zmG}Sj!vp3Q(gk5qdKUhlUN>P{j{loz_?O@Li3!Xm??6_c5CD?^0LeT<0ygc$E5=Md zpTsATPV@s0hh_ub3$F(MXk66}}rjMV%FYJ!s0<3F?&H$1pL^er8k_K_(_Q(c{r{QcVLn+wfk?mzw@ldtW#jQuxg za~(sSGBPsNzHKu}X{h??Ls-E}f+z5K;y~PSUxlL6+R7hU(IjEs(VwE z3sb0!x15IZS|OC!-SeP>8!?Hgm{c>CvxVKkikO%l$eZX(Cn|z=s2-k6h`0LdKt zUP*~EnU@!T>-R5H#3*-s;WpZg4voOxX65`oN*jm*M#}~=(coIRDcNbpzf(2ut8DQ4 z^}dPvx=V~o%@*I6x3THaTcB00X$Y~KQ2K}bt6xx7^78;NdE(}rv-op{%J?l}+|~H;24TLNpK?0)pAKDk&-#w|>9=5e z4U{Y;6F0^E5Vw=7J_49Uh53|E(-g0^_%uF!ARz^tXOE|bwf~sfgZ93p{KC(1aU6j1 zu_$lGoLQ|*VQzvHZ|LYM-Y^r2(}{_0-5C4)&-rzXsxQH;&r!znL{F4e6G34<83$=E zVi4xnC-3QGD7~|>vhuc+1sL#kk#%b_+$8`Sk}P$pnCyh9SHm7zb06UtG=i?eczs&# zT>{8j|A#RBFAjI~czQ=*q$q`jcP&V*?Ti(3MpHGs%%x&WPMRR-rT262s`xDz5MJh5 z{a*j2BR69`|M=&CD+*``X{>Kmrx&@cU;jf)Zhv;e%{EV4g=RCj zN&37qdD@^vu{Q{@vM&FZiqO?!rCV{`?=BTcc_i;O&brkoX%n8$FL0> z6LjyU7pm3~es%y4V|n@|lFlzgZPp80j9i#AY=8Y5OUO7ud)~2QI^5|{L2+zfeqtNp z3w$?I$8;o;{Wv^nOvrKa{OI@JdK)j+yruJ=R`ss?UVq8N3ses0Na@Z@yiutPAKb4_h4;8J|NEbZaQq{eF zir`|R>2FnF6sO?=`-pip3HlR*PGhEgC1}*LHyjy<+Gy{C5 zx~&FHj{gYy`lW~d#}zT&2JlYN?|+L2{Zvx1w zHGPYgkw*NK@VoGNbpSpeVfE_wmhH(Qz%*nf5kK(%b1>#FrNRfCu31+4d&_p~6d>Bs zlA%8?^Znl*>3{rR6mUAf@$(P=7jgKH=h9sD2hfD?$x1(IeotPtfYYNyM1F7CE;azr z#bz>>>u(a^zX7Lfv9SE!vc0ze2#R~~)f^#6Zf^PAhvW+*QWmJdk9vOB+} zZ_=M!08l|1T%fvzsQ0wqya8J`nlPov)T+4~1?kuRr+WF%^0cl&Aw%Qb?z_C{@yh%5 z`Q{jJR>v)q_U-JL++e={p|1Y(_wkgn(o75>!{>BZh8|Zf>!JUH`SWKK$3-`W8tCCjdq=Eo^N-Tgke~&Hy*R7X< z7`&OB;xyxL=H-vAf(i%3gZ#rhn8`o0zEckhz(IecPbVwtFW zPS1%ow+|tNuMDNKHPF`cJMU;C?h#LKT@r2h)a@m*L+DlUBrclZX>7C89Y0VVz?tUt z1k8J$YIdse1xw{Aqqt%WC#A~DfRr3*)+6t^fX<^0ru-n|-@07~$}#X|l9<@P?0mYX zLkk@{N&CNPbe1>%WJXzyu_{>2jhVT1-c?wj7&fS;YR>!%4{Z)mt3;h0m)*$_ttcRS##=J|6!xqAaWyu3S26aPs~) z!SCFnr7n|ViN~(l9D2I*V?ykf6nMa8{Ti~Rbauh@Uy__bwqwAbEyaFuQc&lr&d6Oi z@c?n(Jkk6eoAVvZp?i5px-9bX$JczK{kU0bz&HGtrz*Y-x$zn<1K``*=?DMiF75lH zz8KXSJRO?7>?rb&(aHd^n45R2BV_}-<_PKZ6=yWBu+@7A0uf34jOH}T6wW*|2lT}O zTgvW4VmM%}@_NVIJO3LG>>%sm7;pcE>2}yX0(|0vgYyYIn_3^5XqJYLW(UO=;+u^lu53cx6HGDc9{vG^# z{Vz&8>)6QCqt%zg&PKfU5eCcrS28=N|4 zZNN+eKi$`!td0ew)0>vOjRNW{bv99eu&R&(|M;ikGam{Voqn%$%(C(>22IP#dul$= zp}8SGkY_(QPit`HA3IJwc7G-_IlB+a-+oq@0H|6+2?>cCN=jx!Lqp$y)cwQp*!*`u z2rn|f>)^nbCWx>>;At-bEdC>o|EmM|?<}e#e!w||n;JY54%qslr$5LA_-pmlzd?X6 z`sFR{Amahe0S~-a_YIH@!B%zNf2u)v+JXCU*M3&Y4tRdg!3S|F!0~Q-?2CUW^?&?w zVNN9h$2qd$K8LwJ@GUW~GZ_D|$XNao83Ex5I^gaKWue{N!12-CqoRMAtz_*0VDd$W zCO7Pg_ck+qK969kx8KX_lK=Yfz2?i!nWHjG&1|@8>nG+ITCscMX*Lx9Q5ZUY2~*uN zb7K|Y0sfI_HjnxxT!L??|LZ4t0w`%&9<5PxU8?&D^v+vML2Nmnw_W;mW2*Se)m8Rk zjZN!Fg0h5D+kE5y0!JS(131b3MW%l`Y4X&)O`p`M|8;C+E~Lq$4>0uVV*yH^-m{_? zHw%nPqBf?hP8Ng=?>%9Ysl}wFNm$pOo(_wX{6^GU;hX|U%rjwo=5BqSt;J;bg+QXp z#SxF;-qD5S%!o_B==ID%B*9ym`WNpLq>GE%|0B2I&(@r znX0gBafFn%e1W@l-0?ZeGMbCyl=Molja0~K0ZRD4c@_Bv^foVTGy>@O!;p)Y?&6x{ z#7VL{quhR5_lIhGVMlJ8Lm9a z1XPU1Z38pabJF|~rK?yNcWewup7&Lvl@ZXDrNbs=E3l@`kmcp=+vPn8C#Mi~?UDVR z-iKR*J1c@Hs9nXh=jx1dRsh6AeD09K45ci@4Lfu_rFf%r@3|I_BCk}k?ZHP_4w|JT#8#2DHScAut2EQ%)`slbs`o*Z5vx^K#sccf zGvD2n>tz<-gEW2?`{6@5%e;og@?g(`m$&D=4n2EyeRfe8rKgKk;ms8o1bvXWahYL~ zw9`rqhv#0Dgv(2dhmR$>BmI6c^A46a@8 zRdhh$apz!L^4FK={mEwxc7B?nj=vc4CK(jJVw8=Yw2mP-81ngMLy6N%_)-eA%422c z$)Z0whZ`O)H-tc= zy7O{Uu9hnzX?J!|8F#3f-Jyg8lLjR;1{m2f56E1U=h|4}uKVrVCRK%o#eUURR#xjP zYL;Zz^Lt5$?cCiODg{6l^p_p#xcERJ!^oY5?$*h7t?%!v;*iY3&mKK==QeDrv$^#5 z`eglf06=W&zMjLeMyQAO*SmoVs85ehQ?4C)tE>$13X7M`p4@a>{u;8lB=%m_yMAX8 z?M8v`yv}97tHYLJWcW$oaE+fch4Z$1mP8 z)r%a4_#W=cyZ)EfYBCQ$N14zW18h!;+svzByZnsxO@0;)N51!G zJ>!Lq;;8QZ8MSVM^>sk(ZR}QClumh$YXNBTQ(&$xu*lK&P+Bd8a196Tak93Nw}~xmJIIB?lpN$59-GmnR>n-DfEo_avKfrIaaDnH)wa>!60$1 z7?`m;27oip%_mrf#~J7<84Ep?S9G34yS^tWUzhZ)>q(YX+1UcdPkGm5E$X-dvwV&k zT={6r?&!Y+`ZRWa7Rq63HGLID+BqQ}Ry8SNr-M>GE5j#uj~3!@VzZA4V#fsWeo&eUwD>&rdXhkDccBR*=@dPdcwxwZ@Z)19bShD05(7EwO|;PGuL9Zydn z8xv~pf?7u|0F9C7JAv3?NHZHYA8lJI1aL$w_)8eD~eZ(T~F zXCw4z1aT?ILEL43&H6oxUipycy7JGDUsU9kPg$5fcup}8TntyloA;i;8}C+w95utY zbdCD}HcnTv;X=7hgNRxh2iGm=zO<26cbpt_rgLXO_}i<%Hvxd%NqtXW8Gzd_e0!hW zd!vo0I&p;u8bsf?=K~VzJ|96!<@1ykXRO z!Lv%rGCwoPdRCMiQ_Qc|q_mIX8@#*VX_mjqx$DbuRC$KPiAm7GkEz*u+ot1{?=Rsu z&D7!I+4chtI>20|Iz&;w{7Daow65)Fev!zF>U%3{cCHY~nyS^O592}E>7=$4St4i2 zvQp6|3td0!kF8N7oEEAoHF|24ZnWUxaCTU<(BrQn0l?g$?%n?01D3s&aW!3uKTixV z;RSOUX+ZCVJpb0B{`Ob8`$?6At*S~xK8vWyL(ned+v&9_B-#SOq1ae*jCfX*1??|1 zO>5xe768=WIeVdk8;pqOyR`?9Vx&zaVvw`M$YxlSCm{%aG=JwABp5YvowZ~O;IW?xReP)uMzs@pue|uOe53nyM zrFaZ|bZfrQ-rbYfpR7{bcX7Q8g40}>kI|(O>F(9OcjwMt-hH=2JabI`BWRaNrCU~^ zdHJ(X%)$a$MDd$h2RMsIu_93;2USn*pKsnz$$gdfw7}?bRE0+g_1?}x%o?Q`auiV# zpSaP@{X~~uKKHL;HY!{2I-FF~bc)m+JFCHt=&3)7yTzN;{iXA1$-9DQMcd}X-`lyE z?{RJPZUJgK`XV#^9;v+VW1F}lIpY$$jL?&Bt}#?@b7AAuan`a-%(;&=c>Ki78)qemNhb8zIt4x%=@`rHe|Vq%j_0b4 ztZ0a6yjMa$Icd~Eqs4K$3M`2uMC<1p-o9<{2Hx4xq2*y4wWhxh`&2k1GSW|W8x2gwd->>?AJbCY$AA!9w*c!E$nsDLe+TurmLLFtUAGE zo@+9Bhb1j;exwLuy>00cu(=#4ms4{+S8h+6HZ)7i2q&~Ks6>U-zNxH7&ku!ubDBQM z_|zt1g7yuYF(-yM?o4?)M@@rEn4ZV=d=Bo8Kdn`#S6IK(0NDm=A&^cuF?iDPSh1N6 z;@ zG<rR_a@&Yoep%ZBA=v_hECoeX7NVLknMeAFf|T2hKlP0rlVgK zM%^dFMjfaR;DE)RrI+a&U|o|sY0w~CreMDD&}Sk4sXowTLQqyl?Q9+!ViamU7Z;T~ zFv?GdE&Puv6(@?zEmEn_C8*;3UseUy<|+Kd&*@!ze!t>lPbAkg5LRbiNN!U_#ix6UHW8GbsKEKM<1XoO}5ly$BP zn%g;REIAe3VYFPSm5B%&kz`;%nBNtw7c__=516o2Ozs`9cfA8E<1 z?AywcZxL*#Ou5*%)Wgd!`BQ$qa5nAzc-L^}!rX%s2YHW8fem@9v)(R?C=e6iv0jjQ zI(mgBLfkmRJISM_DmQ2sYf?ps{D!q& zx`Q8_^g-Z>G6UrkAA{3#u48rIZ<)zBK90|C2giQ?aO3!WJLS16(-M$QY8=?ZenRPJ zddh5PaOfRveJh9RC)V{mRquOGvf#7al5Y~OigR81s(iL5goH^*jqqoEAf-+p-me6Hs>^C9|FN1EotTGZk!(FUO2Pd zSSvx_9!4bMDYY`XY;Aw;Ns>h4*+OD;F9namPc|ScGb{MUHvpne*=4=T7X<7H@+NL&&zqx6~gW3 z7@Ej4D=%)iAbyAG1%V{+WQ{(Ads}>EsxlCD>rQHyYIX3twut0gY48K<9vdBY(G>U1 zN&Ot%-fJZvnQ}Uk!F3zlsfEy+5$!ijj{U2_%E1W!XQl^%3|6L1>af4rllweA}3 z_a@}9_YA^T_%}+bcgXWy!s4N*wcK5`oIVC$T+H`u*G_5zd>&jtSn**^5j?&w^c`1E z+R6P0D7J^$%93V_y~*4_Yl7GD3OP=QtUOBl@O^&-K1_cbHYDFdC=o+7?4#Y5c|$rr zT+Uo@+J!MN0Ce~~sk=(5_7ith`hF4X_hR}N0vVLQ5XnUU9!Muw1Y*1b*<#|Hho|gX zcT=FZ;FkeU{tQWSyw0h)ubPhw$t|6ToRV86A3#gipvNZ1zY=9Q6%?&((BJ*(n?ca)O7 z)*a`ozt{!Iy;MC=`culuE#5AnVz?wTID&Y$3@mEzarl$h1> zDe(Qu3vb6ysNE7DcK zkX>2r8o|2wtTd<-V{c@gsy|>2_zoY2vtaMfm=m7mnJGwvY_v#E_5MDx8L&=CMdz(8 zj|9)L78;+(Tvzt>>%k44Q9RVOrBAoZ^p)`Jx&aT}R66NWD&pE&qJ8~N)%*UfrB~cQ z+I3F4;ajeuGS4+?i-RSv6}er=V0tCJoyL&$cpoR$qxIaUM|D+Wzy_f;-1G5Wmk;PA^QaKUdJU?`nx4euip-4?yM z_6VB2#nY`8^lLW3iJgya+wb0cC3_RpB);A>2?@u^@-F%>ZVTbxR+v1S$KwzYMKrm$5c#y}cAAvbNGSs#0pO(y45}s?b#tgI;So8}+kadz} zOT)Rlfx&4xx~Z413yi^XO_0v1Ixmr?^I~bKa*rQ`b1>D2+2c#`fph-U`bV%K7z3M> zA<2QwzB-U<;!U5QE{mw?x){Cov}I4k?g8M+^YCkardt;u{7faty^58~Zqf$urP1;P z^-)g3R7{WDEo_zE$=+5eH75Qyq!3~+(DMJHXA1?Ai_sM4+qW7+r~(tdWra8MFufVj@>gDad~ zhNgqoO3^4#+L6ahPUo_m!%B1(wi3jiXf^(agr9az>bM|wIi{LkZvG|Vp();XPj>ub zdA;_EggI!cQ&H*mWWTw$1^y@nsK~v2qg#6}YloWa+V~`0(AwFo=eQXYwn!x{F>ysH z^-ZW&TmOuJby?-=2E4b7fc!a`|?>h28Dw?@)AA{ls@z zf#YPg?k0LsRc>O7`U|3ZjKi|T+CFlj?S-|FKv`7^bm;5y9x zb8Ih^PeVL5KJH?n@9w*93`!=ZI~vYP>V0TeLU<2{vYhc0ZT89|40PpgPa`4;ciYo) zSqHc3Gn&VaE^`f^J)n$gX=jq=R(=2@6PyQy26pX7yf!6Z{hDFdxvsBj34C4|%Nia9 z*Xbrn*)5BE1+tNvIdu2#d|eb0m~jj-4DoeD>k-t-(%enjr@;;UFm2G1+;ztZBji!z zo*#DOtL9nn+fr}w~uOjug( zcx7wVe)49-yJjw$acp|BRNrJo_?W;|uKkhExvJh1w-ih6qg>}6{P3f$Fcm5W;m4q5U)@iVFoWtzV*wp@MzfT$H?KOKg$zH^MH1aWQsx@yB^3?nAIGJ+sGCXDhm{fXT zWOoidOfu83AFa8$WnutbCga=FP8-Xd(?PTMR=zOtpALmS>y_7^#GCU;CcXaZ_H|#GG>zg7;RKqNtJyD_u_uPKEYn zo{UKO6DDd>IUM}StLbCnNn2;-k`^>yMm<+E!sIG0Crr~k9KXpnvM~%&A%41XF~}hx zQ8JAc_UQ}#aZuqek3M^YymtY_9~`k`w(f?8J7Y8Kw9hSo8_aGfabqwJWDHR%!jB^1 zpohE)w}}6Fa+OxGMva}hFZraH!y4i2i8~XuPB>C}o#r*tK2wlpb&wY*b7epfqX=f> z3+``~#d@P>^w$J#J0Z9jx!iUpX~FE$+~SO+-TnrxcwG!yM;_uN&MxEp<>4ZCBZjKm zmkjJkoN_1Yl67uuEDimB=E#IuH0);}0wM1)Q3CKF?+;}cX5xf3PaNV@RkI_;n}^Y8v4d$3Ut1ClH^V6*x4Juc~p zYyusXAx8>%>DbPz;Yg1pFEby8t=gH8mlc6&I}if`L&~x3_Ihw`qmB7FJRZSU8Dg-p zB8A<;KtdNtCsS>OfO`lJCA~rh`FuVGFMi(zNJ{10sx%=*o^!dg`r26+SQOp6Aa zF7*I~v(GCwy_^|+44cR5!)M$C{&r5JLV{)Y{#`U}!=0Ayvq19R@4O9k+TS` zA4%bE2|RH0-)>zx32j-jhHG45Vzu!5S^>RtutM8;{xEujS5bC}jxHdKL)vi9eS`iZ z1-@2iq(%oxn8`w4xRJK->}FoAGNn*h!eF{V=wi{Sw45ArGORi5yT=h{*xKVTHrWZj zsJS8& z(z!3f!8gAibeB4 zr=yOXtoL-7E$8$+T^k2SKA=mY>Y9ACZ!Xm$6?eRe(ui83CnCC>nWViMm}*HtdV!U$ zebKsOg>VrwPTSvbt0g$>QMJig-(q%%3vx((Y3d;;LRyId=zEW!F+ErDE*IKvh^3~a zmxz$`Epnc+g0$q6_sb2>h+8RL<`aJ!0{zG^p0zXgG${dPJ`Ld9U;uca+J%)$%B3WSfRo0Ag9#;Z2(y4fzmmr}`z{f{hALU+9S0qad5qRr8{$QU54$ z?STdu3In?I@#3gMlVGpG2XiS9{}8@a&Uk+sds;Qb;%w5J_|qk~#DjH5 z!pB@v^LZwdUYr)V=6h1z+2We{?K9%WpP)-IRAE2KPSW>1ZyRgyDBk>hWON~5%XWH| ztQ)@@(R0zuA@5a5(U;b>M>kJf2CI76t)>_E10Fs8BBwQ!vPo+Bx}hCIX;C@&@H2H) zUy{#uxAxIN#E*q$PoOVi=kdaqgWA#DrqlrQuC_4l+rYTXP*k#!1x$@fk)-|-hM8W| z;v61MR;X5rn_K|VvEMjeUiqbja!#oC*Q*#x7>GOh_*Oy0a@v-{tgNC;}5aYLt%Q!3YYZ!i|4f%T|f@-*T3rIGBk z@Zk!p-Fljww?mQ|Tc@NQG$LG^gF5wV+-}-oj?GJK>js9-y*aavH+x;cv|+vRwGU(Y z?y}x1PdbE{MU{4bqWPv+%{s0}?;_a=Tqg^57OHj1|$b z^xd1oMJLv%A>jU1pRX%n%{FwV%?I{Z=%vB+qFbbDoHU)|GQZKfOUi|n_zAED_+ZS0 zovPXD9MwUrr8XFr$JN~AUS!eIg5h5I`QA=yy#y^>zuR}(SiFzsmV5I&o!9_)Vnv{q za%N#JAs{XjwRc!B{ui>@C6LC9m6?J=(z)93UTGaFk9F3&CCDgSH&G0I>_OzRBd~Nt z5MsvCZZQ_)(?Z2+2KJ_&1H7Cg)XLxsX!*#K2=*7CeIJu^g~NdR2T->b_TOCJwAPO} z0TM=`J`BaR#}|joJ>AVV=Dfxg!6DwbUYAtbdb3*_Qy!Nb z5!yVbK;cG|my-fz)o>ye-P)u5)$!ylz1nf%94d56i&J(8)19h^9%(fWBqcx;(Ex!aCs#%b$ku!|@6CNzsKVGqHJkqRdRqc!F?kV~B=i?!J; zy~vTs;KiBrrUf7y&NSgd=X>!|%?V6zs(Z;vG2>ngv(8&7*Tu{nkY{ImFUb=xl zuDe+y)VinRI|+6wIV|vi0C)w>A^^k$LpT zh#4R>W?r($t^*#o@Y}9bwDt`I0vJRMz`Ut4=Uh8+$-O%W?cP~nV3Z9iY68RF1&|&L z;>(RQE8NY)%y7HqmsEAByadLHli-|_%T5;54akP4s^R$q7 zq9FeyPUe946+x(%84q8`zE7}R^!?hRBa7j&Npp|0OMfYsiltz82J=PlZJ%*Sob3MDoRpodv!d= z5$mV+^azLAt>a4~Ub820y;!Q6o^#UY>An!eO5?r>c};#<0RJ#Ho9uPBoxcN$)+B{{mg z72yZGUe2AD6o<#$2K%uWDwryo$_8weKCxe1>Pr;|rt$9z534lV_rLxaJSt%7cj6RA zp|KZH0n-t;^BT~U$GI8YdBP~3ZjE$p2ZCXMoMNz@9x6`L7;tkJYc1+?qW@;iVILUl@oss#pa?OKdl-(LA1p>5@FY{b)U55j#V81u*aZQO_XEvrL1;sjLvDlc4_=3PBa zUz_=(qOafgRk)%x*L?!LUO<@(L*9!wv$O4|gpVk+Zu<#hsh#+c$STf=Sl-Q#NEe5w z%86TLd44;tL%R;YDcQ`(4w>=}#KxN$Z7eq0)6LoQzx57e2j;QNV7E5PQa)!k!#mG6 zI}u_x>!sduJMZltOcS)yuxFUp<~+hPF;0d&il!DLo|^p+kIhkPhBZL8a^1gqNd_H^ zQnH?Q``9)$kQsL2ki63!t$O$D(y|TjAR}`=9nl=sJF_MW_5x{tP{y9MO?krG_Ws~d z4qif}-sIOF=;EB&ibu`pF6}2FEO3HQzZ%Y*9rw6=ht&GGcb9_J_S0i(5YOcH=e61_ z;AU5Bm#=w}3)mk>U-`}q;Gg%Q!6)_)#B$m=vb5NaiY+#Jnq*brW*9>QEdRCtA+--R@5`((ZXfB5Rw{MupJM zhn4+Fdgqq-huL301VcCO_@7$&v`O6>;a!EUlMYsf33_rXKbY3DC&MwdE${bzpJ#RD zxpn0UCgLb(r764F6pEdPzE{e$;~A#;tIZiV|0mPf3CNKKt#C!pPReg_=U9i3KypSSyggt7`DS)=JqA#rSIv7*dD_q;T_s4Q@ttY;6@$$TAPiBXwi`r#* zLhv6g0Gycz=AFDwkyb;uzr0L6>+327+iWag=lK z?ph$#hVuZPin-$Rf$j6mHoBe3C5vOU=#-N~GWHZKi#~Q>aA%lF8{KuQW6Z*cA?JXK zTXo z{*yrHz^VEb?Rx+?uwZ2BlUQNzi4^@Aw!3?51^M>XmQHh;m*ZJkcME`s!$plQ)}s7c zFZ%2^l(bg=P-uU@Hi$5+)O-q|fv(g74q~X!yT3Br6J=ONv1^sDhU|BbOe^gxkJgK$ zw0D(P89ib4HojK%hd&ETi;V`3EQE?zUYO-KfckhB?IoV3l^dF`?Y+Nh#iOVfsc=zx z^+i$Ikt>rXlujd~>f;L*0`})17v}Y5{~n^iB8_wxgh;$+_xX!xGP73L6v(jUwkQNB zD(n2dXvYT(`iucWxr1xpW$d94W1z^bdVgZYrPPGeot*{(&$K-QJlZ=;;Wit^b=zkQ zGyFhe*X~!c9!U((t7o{#ZDhU}l7vmONrsAZ{*)g3Xn${Zb9m#`v=Ufdnqzch2KQzu zF-LbI=PhuxGnjai42SG1i1@@*q+OduT3D!9ZKGm9R`iL!b;yMvS=j)HQ{6RZ#?)Jk zqy{pK2dLMLJ|l`VPacjqX>V&qgv?jK)7U1!8Q0G??as>I^hSyIz~FWF8`Na6hM2tv zW|#&Bue9JR{X(bq-RH#)oinm~t0F*?t}rKx6fbABZ!r}M`J5VZRzO!j2Y z#}w=DfPgrs%EO}lwwl^WU}B2@0fj>9BXOUmIA#lV!nmU0qR%@w~uZR zAM+@(<)4jS*Y|4R3y5{Hab%8pO(#;|`l2?)L{6zxL{W13eDhK^52Nx@LD9}w^DL?5 z1n9$Ld3fe`FJ+c=R|SREcrT;i>Hnlpf#3)>KrYFe7>#63Y}9Vu1IjRfX4dNQ3KocT z3_wg3s_Rbhq5FU_mlf9HGH4VTP$>jzXDQ-IORwc7_g<%(-#9c2oq7Wcy7d8a>QzG(T&pxQ3FPF7*b~*Zu+(eA{Eq2Qetc%9xe$WFsFXT@U8aOn zIH^aaJw`qvt2`5+Z|*(yj`@`k2-wP}p(tJ$}Lr#ezSei19i(5Z?c(=EHXOEYD5@t`6B^#&JUZKyRz#lIkt`(QCO~Ab*^Ay44ywRFaOnMu#NDnTZrwmoPXbWizYK>yIR#8Vp~AvU0v zD;B!?r!pYm4NPx(ymhmaxL&m2VMT(2jN;GVAUoHjl^W_n2ZwG7x}!@Xt96L!|JNi6 zX=tA`wzmxAia5A%wY#@cI{&Uw`p}Ix(HCf(v1L!Gl$9qOCYVaP7Dbb^D(%OAm~4pm zcM~o)T(RNv>yH5%Z4PUhJi%8>AdX9sZf72ehB)e)_Alcr-xm?EsS(Whf_Ioj8LGh* zu2u_rY-fphZBXNu)uHBys}C)dM9-mKIm&)Z#Q}!J7HUk?6K$!0mGbvq-!_kG&jTsH zsCRr{cqc4n4*^H`2z4NFqI+G7HyAgc6{8fTNm8au9GA*j&aG9wYWwCx?=9s(Ow7-Q1zD5joBTZPY4X9 zdUgQwL=`^gUNeHN*}F-5Y(c=;ThN#lE8FUC91fT}hg z)s?tl_87TZ5|$|OSXplF0nKpfukBV;#Jjy!e!pB#pvcF&+*$l}t!j%^j6j%ft?UL6 zw+HN-HCe|m5B8G}@#1tbpJkND!^h~qXl$beM2EPLt!cqQuYL)(=%Y-iF)?~Y=itI{ zfunh_Hy-Pf>d;$R0!1SHJEZHBCsn161_fE*aibLc(gbtNVVnl#LZlQ-sPoP2K1v)U}%|0zKZF#uV(qZ)Vcr z_W`dYSO}kU(eC9*LrI;OK^j5~FPK^#0wz=fPaJrkufs0>_;JBtJ{7VEu)^DcYKIWv z8BRv>BlDEAGTTf#1&{R+-9A}#If^bvP#eg=U3@aea^W+^Awa1fsAj1Tge-i2fwi+=Vb&Fu0^)un{Mz^{`) zNigoLN`tDebG1gc^qkEboc_WMv~8)gO{MHZ9z~JpsUsKfk%Ma~G3X#Dwo<81gEH2A zs@ufSg%5~(0Ex|bJ^uD1@dE#|>2Gg}CL$9pcwYYn)#H-4O5hfXxb;(fsBw1SRbbhM zhO{{TE~@<25^()Pdjd24ES+8)^wU+%NT;l1~@@n*q>E*d%g&iZ8$BvQR@A9r4sqh6;o|jK2moi15fo`n;Z5t zHUw9L68rOlRTq=7+8bL>kh*ST#yQiIU&1s$U*qprQV@P(aZkj-$o|eol?nTlF_?q? zCt$Mw-2XgY`IwksUI-=nsOu^p{b*E{`cNFvX%e3Az6crf+10yPUc_uw)mAQynK%fTg|MXT zH**XI3;0}rfwa3xz6&aSC}m67bK>$IAlHXwO*4!vO*CWW5=CmfUylzb$NOIzHc5D|` z4f5P>?lNR*`i7+<;LcS@5PS8(n=7Z_{iI5gflEdBI$Mc$!d3;2aW6Z$;Bn@IeX9

    a^oIbpmFZ08t^d+A2_|TQcY|vRxC#c4hwtSEXq8-w$2W z%4!TPH;*)Nct$KJ^qbc+=Q$m>C?jDdtp6Y4-ZC!Ab^jMOkd#nF1f&%dB%~V@0g-O0 z0Yth%xQY4oJ4j%?8{6>{q_=FiFDgliq5as3ncr7WNaE__&6m zc+VTsbbq4)_xdA&y#xo>J_xjt@3O?{vIVSIYirZ7^C9!tn01@VY#pfHRNEk#2q}38 zus)@yaX}8J#gDw(4-Mrn7p(zs{*H&v`B^!Kamy=PYS$#l0F=8ShnaGhmBi=c%B=U> zl@-x3`nyEK8$1&w1|Q~Ilt7m&CXOxH6LvZvlBVYwe4W@V%{^(EHa|k(m%Z;WV){{J zRgv(?o=|Bub_=jWVmnylC8`GvgosFbNgCoup-I{m%btVfy2;-P_CRkZRUYcCBB>6C zjSsqdL@_{igeiH+H?EBnp=s7kp0W{plvCCS%ykc%Ow~^|+_Y3)U+I9q$G*S8X}Zpt zuRJRuoLp84^yaQF5bZQFQ!2s=rC6)KESr5nwrZyr0c>$S-S?{~(K~}{`AA^{Lm5+P z(ZxnlB{9sITtECx{gbPv#$j5eue6n5&lgY~lXmKKdZI)3^CTf~x?E+cc)ftWk`O&IB7O)-&H4qkPR3 z)aT&h7zVZ^9RFn3%6hd%F8a>u>7*sQg3Cl3Mvp~BN3S-31DgTl&=0!vuZ_$Std`S5YC5|HL4Ny$h-8W5Ql{&l z2Ac_kYLL=_`I%SL_!2%N>ms0tW2at_n7$dKwk8Trvw1(KuqSkqh%gT3h6_p7ITHl+ zZU|As8Y;&Y!jgF+sqE^fdYO1f(y;7`qsVsq!ZKTARAPa-$`eaO0r|_E=JEcypksPF zn5zHO$@t{#b}MUVUmo^xXiLVBRiXZdCU7*>}xphMsv4&EgF0827 z9)5~gv~io>uS45c)A+q$Z#q-$hcvWGsuPFIDk~2i&qm8}L|55t5vb=~{)t@WdB1Y3 z?s;bzkvv%fm`nZ2KdGQiWMhnnF_Jh~ltS6Nr}H$rfc5JxYKH;cf`M!Y>#dB4!*wQ1 zv15qmXxXbDEEdX5vWAJhHGZGBJ6mqzBIfGWicep8;D+JLt)R_XPkLSzUjxLPD6ZVu zx6~8Lp8#p)$T0uq4yQ0H=vVGjIgAE&?0>Q8S{2|xFnfO-q$W(pfpi7PW|eO^4^8^I zd3;$>c~iBbJw*NMAaf3>Ut&6?5vLCYl-p*DioM1Gj}(Qw9IaYhReNpYaaJ zzTvpwxI86&-T=o^n|uOY%ldhp%=@}dndFd_$Y~09junEaLo-Uf_6u{wM{XsoK5X9( zqWly68&lKM4@uHiPd}GvK$a?> ztB7}ki?S|myKIc#SIg^-1XWKtppmeMk}y#AvqwR=C*FQhNDhCMZhP|};8Hcc5~#1h z@676?N&#HHPhz8FR{3A=pgJ{D42WV?=C zg955yZO2jz+m59f5@4VBnXfkvq*By1$+fiv^b+JbS<4v8Iq&ukmvm|wc#+{6LYxoC z9O0tPbXN5z>$@N+&LoML><#Bt?yKmS^qY!q3#X#Tp>cc579H&%fRz<19T?pryf(PB zBVi6fFt1*IRNv4GqrU_bOXPgZR%p!cWf-s3v?FBk$|Fdg$2@Y5U{8$J%A*(Qn*IyY zPi}Aq6%l;>(y-jEdD-4xn}1yQ>a54Qil}P@rKmcQn1BOu%}x~ny)z50eI0bJ6t9VJ zuO{HA-}bVY&ZtZ!tBx1P{p{c=#c-DE z-fe|!ol2`S$xtEj<<5ujkMXKGWoehTH(^_{#CtqguJ6f39J-z<$OJaP#D-LQ#gKZ2 z7)pSrFLPcM@ai2gsokL0tM2J?M-q}+=)1hfe<71fT2W7hTZTmLa5O!-LHMA~KTU>7 z@$P-8^HscQ{rK)T>g_^jlOGE5T%qS&uA9Ps8vN6$l9YVcv1`SS_nlTIN_9W$4K02B zd}a1f!qLeapZ{yVX_`y_gvbE{hd$8A-mfTXvyvp zvRwa&f60Y(SifBJ`jnk(SsYdLdor_)jylcTU2G<^P=Bh>r@jo&%i1S&> zO`w_IAjQ{&YO_{PkF*ybwt>@J4anl*H?8$<@hPd*E+(;_&Dk?o?DV$;hF(z`=!gFb z;~#Pibsy{y>5w!y4Ow7asF^FXn;`cwnD8u3NNv+5X_Q`Aa1DfoHmT8x45OYDtFh#^ zwz=9B!k+nmQSryl3>Mi@|D2IRg^QUDPR|C64A11Buxc+rBg;N*ZK&t6g^x5#xba$y z^BfA_b(XK|J{&I^1lHDwX%45QMpkbR6yntsNn^YdmA{l|?5ls_Fx`<%_yI~OJkp(U zlamj+ZAeI*X)~6>a5n9h#4DM{Bx)MdlK7_=F`Kr4&r^H!YY*dL(j0ZJn;4X2*1*}O z>mW0Cq6!){xi`kREWFw_r&ms>4tLr-+jxGBPlggNz*9&oPq3DV?44EY>OIc z`gD2(i7D=?ts#W4>}giyTwG4@b`6iaPO0MpOTGaI>qL&<@GN6m`vEOUTSWRJxO`&T zc0%SA@lEWLnlT5cMYu{&O za?*kkx^yDrpYoqp2H#B+=+h7(+6V&D-4`teO85L#yG0zOud)-1Y#Yj#a2Es*`=GIt z(sT!NEQbr{4#UOAuymLb4MT+kB%kGGJgl$(G1)W!E0i4<>%7(ESC32s$3-28Gg{ZR zO>tx1YjCcS2xRc=Hsf#JAE!tK#;a1`!XwsVreuI5fX0lckmHcDQ#icQD0Gc9EqrxF z0QRH-S&NRLkyW1D_nGj$1UhC(6rT ze}DhjWrWtuwZ66?cL{~+@V#7{a)I9m1p$7Z)y9gdjm>yD_FCorauM^snB9UEQ8AHu zS2{fuqJxLzc!=i~9MDoOMj}ETOX&WEc9UpN%w_u`l4**3Pj<|jg1!Vj0hFCMgn{QE zYnBpWfwz^yL+w}MTPsv2r{4($g42h%JrBFM_B&>$sz5!RL&tYz;M5a2o>#cMRAaU! zGjC4XIAZn9b(-xHv%)vX7V~-^z;@NnymQ*HZrQ1K-;<&e9eWa?ou1_M@<(g^T1rq= z{3GpOlda>BnPHc2pMB2lZdK=5c(cTu`v6g&=&93#jq2$R$yC_smex_@H=E~KO6UC> zh+=KV6Xg9fYNss>s0OUL>rD@Ckz-~WDv)cFEW^cxs}1Di2?ci3ZD>?ksJml}V6I9X zQ7wAior?L$02D({eyuPWi4xQf|vg3Ax2#TbCBW z{VZ_)*R3$^yBzfnaM2>Pc=W3DxRs{58&mF6v*uTOILn?2qAq!?@ggLAf)FtyPaLuJD(!N(dz^&L$etP9tV36Q1l|@(YZm& zIncsuHF*zw!0l0X2sjihyn|_dYP_tj@To|mWa`|)h$ozhlOZhA{LN(474hEa39HCl z^^WMwEqJC>DB3;}rmqei%|8KKnXEIN2y|(~o_NmV>#C1jPx5@lpi+zp6A#}{FXrsDm z!yK)lTa@xv$Xrk?xW`tw#JlmKKgePI&_%>(!2F?B)yLF>pDNQ0My)ufgyI#->TZ*V zUMre$w1_-nv7?uDqWfQ(s0cq*+IXgmrz1ZM7b4m>oc*`dTrOKpB7o#Xj!O@c(Y5eg zS3ZGr%IwjEWDVbIN6&!DSj($X04h6xHGRmB*uz|a*O3~24lZrU@m3x_z99R)7tDQu zQ{C0c<7g$Muj7#OTpxz()x)KMXh&-U8?0?fe=q#&x+s%P6dq!Hc8DeKJ814us*Ub4 zC#|XfXeHv!KwQ@@+vo4!J{NLoD3b(wt^AXE`jor{W`!Lt7xfQ-=#M_$swXdp#ujS+ zcoZsRhe@w>twkRS`HZ#P!A1DXEqF&_Ua1L`Ug(mEn45Q#eguhhINl4WK@-Fj?jhUa zXTOni-sm}wwYjzr*cW+KH-cdi+oaT)ja0Vo!W-BvpjBaPW9}t0hkdSg&3f!hP~k~K z0)VbQus^m@k=DgQ;#QdgzP*U2NY^G13WFqWNM~cqZM(S*!zczi!tX?lS zZv9alv7ZcXBu^E3gLl{e6k?uOpwSZ}DWCO3cpm89ti7ise?zCY^@P^ri_8pYZR+Ek zY7edK$zT0(xS_jL=g>6L{MR(ZZ{pfO)RW#9g%`l=k)$+$GzXB9#t&DH z52CW&3$r(+v}gaN`uR}Qp!cIE9q13nGa*<e9HT+ph~gLUEjFLoaf}~SnH$68=jI8J}xRx)JZ-OF}PfgWyyT| z78htu;@ntg@Yo;q6m~*SV?iZ{tkTwFRNh&6k|U$8&Yt5ZPRT4%uZeGq2_7b7 ziIAqdpIl4iq_1NsGNYene^awZg% zmS+=McIVc00v)hZSK_JhJ&PQ|Oc7 zjXA!3cy}~zK=47sD+vt!F3201cT29s?`ZKV0gsnWua`?t{7C2(hJ?>QQtp^{hqCOS zEsa}2Kj?{=Y-Qir_g3Oq?GKfh_Sj4PB03oAQ4#i;WmMA5l-;M|9E*su z=wd$4rh#nhppFSrGsy*xKtH)^|ccz6+PD&|?ls0(@S=px!5P8~fr6gnD8Vc|D&X?=#mO_bFdQJfn%2qG+EaJE&Z; zZ599OO56{7Z@zR+w0NHKQDbZpEx1)&QXJcetZ1YkSWMNojdkk&v9zhky1GXFBR5gF z?3%Mjvvo`%rIa@mPbbdeuW{XUB#!{wZ}h%RE(jVh>ejquVf;zTZh>VKj%z%92G`q9si8dSR`GrqgV z-C?$#E8|}7%T1;65o3Kse2lSVEoRBIxANrEHs628FA^lUC-7N(ca?3(zYf+N(MCv_ za+{|s@%F7~C)3+pB)4$4#AV&?n-+qIQnRkyIzQl@=M17Djc3oVTsg5`$*<5`vrQHRn$0!}A|mKj#9u-pqcMkRLSF5*+46lgp11 zcDq}e-qSN`Q|m`4=VE`Dc0(6EO-8IP>!j8c=MQacy}L5&!FrsxC_=qgnP+>IrruyR z(FLu4Q5x?u(C?o#eYwSqG#v#ms|DI@2)|5tYjGTJB9C3jubw{Ha?LlBF<^F` z7~!@3B8y=CAW>tx1n8^rI5^kCkH-g0tn->@rNcNP3Iq!F{KeK@aFNh#?X4iU8slx5 zNNiz1zfc7x$?9-@ZNMHI&^r_@QNAbHz(I~iJIQQ zNMjBsALW;MuB69%@W8Ym_#lF9kwVKW9h`RTNkrep18ck+UdL;NkcEv<8#i(sxPPs5 zE&37~X)VD0o}n8kO4>s1Rh%Dnk3C5aNxIFtpA?f!ReM#oFHlbWRf zTKtKNmjsnYjQi4a8Qf|e7rON$598O@H(aj{z(pHapXR(EGl>wj^q^UTHl5pw8Q*@7 zolne5 z0Xz^Ibl0uVZ?Tsjxg|kX*s##0)d{FfM!n6qWk!&`7;nbYFRoG_5Gzi(>8U3oYsSS^ zn*|yfUbSw8_jr{!YQPOnzmBODZijeoP}IgK8Eud+RK^b}#`d+G=nSpyH6qZT^jA zosCezmYr~+-nEAYr8+~7!pH#iYc2dXQw#`xyA3Qeo<0GG&Z7XIJM7&@a%xd9SRq5T z=P~o5d_=+KS{k&~`$S}>mb%Q>r+!CxvtFuK6lHA|mF{yQWeck;YQz)4l zZj2v*;$Hppn);HNtRSsq9*ajn9`1!93FnAQ!x1JlJx>IRZndy5SW5#nOPraxS5lnsQ3DV+leW3#<~Ys+>S8*lk>kvoya6M*zGFs3O>yE8>-m^>l7NHdJvy_t%IT#k znrM?2fruo_PoS^m0OxA{P&WWmLOuWdgL^JLDnk6+Ae-SA(0aRFqqOPF-jtc4XA5DZ zl>UGSJn$K?`N%~c-px%OSp)MS-j6zIqh3qf0=ig(O38hnQW*oz2262#>R;-p=%f)wCJU) zM4x3|^~8XnZ7ljTTnHn@`-H5+|6Qt)uh=n1$Q?s5{)orv=|*pK$SU2-HPdp7&4-l7 ztL-)tZ(BWs8w81qJe_i1@`f{bd^NXZ>9%y9u`0HlP0ZUmejFk8D>0Xm^7~*&<&(>M zNxYWr)cOi!I}5C@mnEm1k(GA$!zlG{52yJ)RS_RlL;LJ*nPtuyHTAB$v>tsOtl~L3 zdRxo=LHrw(?BiC=-0eis)BG<4k-zlsjaDh-eJN;H5)&N^*z82=E7f5Jm71i*;?KyN zYpLpvq6y|RK{2VG>Z87*I09f(Nopm2C=#r$xz9WVf=_vA9??U^4X%9*y*z{zbz66{ zxq)WIJ&()JjPw(xS@$Ot;Ikp)`RQp?W9(7*vpNm>g*7l?j4M7$MELGVt+4~#fBn4g z?|d2jGA~S~>hwQ+1@NH9rbW`RiKNJxsyvG#Q- zZAo6<{&UIO>ZXl#N0@AFhz6;(cbonrAn`=LlxR7`*e1lOr9b&nr*aqjOG={f_P1}B zB}FnG7ugrYDuyC0woN*I-7oX#q0}~GX|W)ya9rr@++>o_G)7G-^u2-pvSlb5LEs0; z-Nu-(bhF(qa@3v*$SBZ&G7b0GG@!UwQwY?7a~luI3p^zRvZr*rTPs~s>rDtf64g@~%*Iis= zPO-J!-QCyC@1z!|uk2AIvQfS-Htp3IC>rd;ydqtNlo%S#-&GaYs<7Oes*X+6yZu$Vf&z)U8x;(tD>;jMi&7zxQPw$ZX z2b2`@_ELUa?ypAjPYw{w>(Q;Ifd#OT|u0LJlfMSSQ*Ts zr0a8kY%_tm>lcdkS3HbkR%vVL~flVeD=j9ZMe zdi3oqf9RWP9Yb!A`z8K|i2aX5zN8gw14?^&kr!wGlXb|`EBT=KS7CJf!fEB>xB7TU zlnNsaVb808`~lw?zti9m8bbQF-@=(MB;GA13ydeIK^r8Vc~d?d>ENDl93f%kx1D+M_>!vFE#EX6;T3_dCFB1lkv2xlgNbShm+CYAyt@ZclQyT2ri{KXs3fPp{+ zgDeyejNRI?ptbni5_8r}RsFv>{+lDBrQb`b$FIU%c@i zJUuWeAf#Xb5qr&3w-msw^-sL~$6me< zFKEKYcBJ^I&%OI^r}w`NokZuwvrVaSqrzn+5u2M6IkvgxxBW|$>Z|@OzpIv}&-Y@0 znDmcu=f8#_{<-YFUkflDA!kzW+-t=TfMW_J(oP;hKhY8&V0l>c}bUV%kU z>cmo+({eq4!$6B}Zn`I?=vvO9{pdFPy~xyuj*|Y5@^$=HXJCDUy^>P@%rVLD=4~*; zTV^_J*}H)#)nR-n{(NxLuE`E%)IqXrurB$@4|1TfC~2uhCRm}FdsjD@&TU7^;_^Qo zn)g8WU!+kfAFd!pS3g91OZcy=qW?Ax{?C^g!19MU@Ue3k*0mNVCnu9Wqy_`khP#8y zDxYH4KONYM4~`tU!bdVy)U4Cd+Z%q?)!7*hoCkpZb0n8Z=cl7{vs($p->Z{ysnqca z1DBSTs9FZ z`XNgItmMvb*kKxyla}~x!+Ld=)Nv83Gba%eZj|+R0Q0jjz$(yQ_rBM6oLH0AxGS{> zDc1RVVuUWA^#5`W|A#mHZj!x($<9adJLbHqyb#%WS3+Y=8I8wqZH9v|4X&%|8q(G+W_U?K5}>W6Tz6I zS$E$!Zj#(vn6DE|<8({pGI@rHmA<1#D@@kn4ZWm$e}ekLA^be~Oj}C3%oK?)vz|&1 z{ycOpG<%-o*eHGHw;ngOrr`n8n7%T#7*QWFejw6v zcD&li0p&P;J>_zO{QuY8&-Bnb;eTlX{B3|k*K^G}(2i<*q*3!ywYMwDgkp79+@d5S z36115Hq2%QNqePw&ZSXbOxj8Qx19K>CB6mK+e`;Fp}kX~sT=Vl7oRON6;wZ&vGv)= zriGmS_|J&~L>#lL73KU3U(^3Tq}|JiK7 z^

    J+|hF#6Hj3$_Lp#b2M-_&T>IrRdPr*h?#FLEU7VZtIISDDNDG(xic=7-Z(sk8 z|E?_w5};6m|2wnvQ;Eda64$RQ_v=0VlEHAcw># zwGqSbJUqI{^NUm%BlwE=_pV(6BshMLvhHV9Nw>0>_yV!p_ASFJ7*(!0H z>Gu}O%0=jlPG>y)J&Si-;I#Pv^CJJH^yt9@Ts^vx{cnMZzqM#A?ng#N-KY^S&BbBY zYas=A2XMZ5B8`wrC3v?b|7?5uoB#8pe*O)+*~Y+iQZ$8#7{n8b_{UY?s)|FjO;IHP+bT(^8g^NN};=!y_78Cw)qJFVQTCmR$zeOt7G(m}5 z*>#hMKS;P;_omven%x4TozhRI$E#ai(l*-6LppwEUY7Xd9{Ep$MCAh(IAE!;tI-1< zZdfhG?Z`-AM~YT$3j>1Jx0Yc8(ISzkeO z({KBdyKB3y|1=*~u{XNf+$PSefk#)Kw@@9gZO^w(HEk&R_VKko^- z<|tpJm#;6#aTB*X!yf4x+$Oi?cM})YaoRe=N0JsF&n)P!yO1j0)fLV$zaAwYDC5L;81ibHiY=m(|*@Gdc+22GJbTY-4e>#cB%K2YAU+ zt<&1t+EIqUw0kmRd%*1*R*Uy4<=J6ybEVJ`ESKvDDIOmcvcNUJYs|gyEh*_B@3+=a zs`kv%!nNHNt>ZEyIlmO=ZB4;Rbr99NDL<&^xr-YB8v<$82FQCuv6~O3GkGbvj$<5w zQTUo-Pc*uK6x+4*@o($~-xS%lyF#wGpUsK%-*QMM^TgDFa8sy#NuM9Nmorhya}!7}?tc0K@q{_PMjA;rZF_S1vF)AYB~2!AxW z_iA9~vh|(YWb1g8t_Xz}wta z)G6!}n=YT~{RvH6W|A}y%+u;fz$yE`Dr_B7xoEfqCrq+~LFWLhkLOf4ax|eFEh|B|Iy)uplzr z^c{z^v#NKiGqa-H6`#I*yUfd-eJrbvr!*A0@J}DH-|Gw4>MRZXF7Uy=N0lODB_INM zC=v)eV`7c#ibTTilQecUkzD%o1mxdF^?$$ozb?31>5ZGGv>fg|_P)Je>)**uW&d_f z{(H>i7jVs5v1TpND%*OjEIKun4IC=biHQ%v#8=IgPYgifTQz^YG8i~K8a_qjw@rtN{5#cE<~sYoKPi)-$4dVW!SoT=7S=QeuVwRks=f1opY%{?krS(S>$KqCI)z zKN>oQOSg`IH=W6kkk~XF*MSb^7e6Lh+;SgBQ(oA6cLI*{s>NBKByrq$CF)R~H7p8% zLkxEJ_EHo8a7R;79DU0y#cv3IdrH2Dqv)^M+HWPiz_{;tzwl-UJFGAMs2>TK;lXd8 zlm5?LoiTFyo<|HU^uk1G%u*bZCI%Zq%_tfFcvCn}0-A>EFiZEIb+>1fCW^gEJTc83 z7Bz$`ay-usz$`pUbE&r09Ptp3C^H?4k9v*{#&A>DLS@LJ2=Cy<58{E#OJ!sGPnS0f zrWXM}%kX{NfOr;hDq>kMFP=y8_)FZpGVOzEI6LXGD|1|UpDL?M&Skv5g|9z#L@K6^%K_pFx=o0OX7XdA}Fs{{PS+$W-|`CfKG zJ4gHM-05Ds;@YKNfnW71U%Z*{ZtVZEV*-3v4_ZcV+5CqIE%6X69*%4KulWG*g@P?k zLCfzA(7k4BSnBo}rx!X8n43S_gFF9JuL}o)%@31iJB`w;~{z}&AWNf91d{>7S3t&i9d0#uz;mhk7&NI&yF(6l7iP( z4oX-s_;q`gpDn8xFD%4E!fLqz6~#fSo>B%w1hNX3ph$)A_g^N-aub zN~hPv5q{^fG~{%Ps-MbHA(0RLcx*D@Gr^immBi5n_?ejKF6B{4<%v6t$Y%Z>!8wP$ zj|0=~gEP9=t)5>ZH2NrQ(y!@{ZE~$ADg;f{P;a(a!1A)}KJNbOlfzKv*2@}uzel=t z>Z`QAPxIH$%`m6xhZBWyLq)p$3rG-ZIR5%&0~W~6*-K$jtO0rwvCkM1chn?`I`V%3 z&OQcB-BZ%mNDcK0Z(GlD7a^k zI#ir4?>kZRVYhZ`>mh(V=Q93MZiWkr$?!) zU1FHA@B7X3@sFK0M7+y}E}6S4=)ESgTmGnZGKhYhRgJ@$tnXP_VcySUDToP(mnZSc z#@qg}<}xoKkiN2$roEUGDgh)MH|H8pM`EM0XownA-Bg;i%)e-~7L^KJnJs-C!mrPf zkc$2ulO~?f5^mO+nLblLZB??rEa9wB;vxvN zZ5wjr>Vxkl0_iqohTDHR;-k%2e758F4kCnJ#yx^OA||A|zaiwp(l2viw6Nl`#HI>U zq)x=_z58SbL@hc$gjR#S^uuW^uPc`LTA%!w9qM|%#(hZ^5Eyh{j}lSac92x`J8O6{ zKYZ-IJ6QIvCX6pX{XQ%<4E7ut^7_Vd6!PDGK1f>r43+m~@?BGPCzZH$p}O`E-+)EK z0I+4(t9dTuQZq&`_+`qE%j?Lnqn(o@@|H8D$Q>@Xml;LD6u7<%v540-$1`P*4MQ+{c1^O-j<3WFbF;zzN4k7mtk=MHVt zHc|n~W&nnoOta|t2o6ta*26M)clUuRXJ+kE$DH!M3JOva)ar1`&daO%us2}+o=$P= zvc}RFvF{e>*dR|fkkxTOw6y5~D|Nx%ZsMl9C55b-AHu*_4#=glc8rxt-A>p;1G{@h zOC=nUQKfLfllCtwQmM*ATV%<6c2P`W$x=3&k~288I!Z1`8~%JqLtTaKB!gw*XT1FD zskyC>A1ps6cOK`4i*S(sR66`R^)EQ6$Y3-D9yf{4MrDyG`To!G2z_3XVsafT0bLAV zuIp3$I)Z3Odk*=Vz+tkbe=Wqu3`v<=I)M=6G{u!!-KzQbkjVTtD|B*%=E$_?mX7M+ z#I+z>#Em|982}wWzwgA}xJ1M2nu^oQ_~%V7zXyKlzUSKE;wL0#9!;117vhkcZ+@x? za-Pl755P_j>)X!^Zok+VuT-m*r6);Ko%+SE2tb9c{;2Lq%{)^%mn-z^IcxZ@f3~^r zB9dkdkNm^BUZ@zi#E7-W9?Rjsj{fWfv_ z7%n7-s1;Z7BHq-MJXn@-Jn(5&XiDjoT-SaZ z^$Gx6IBpy0KvO_&GA6ur>sEVCyxvM; zQQNo!>CXfSGY$BD=ErQwJ2BvI5vQ+e<5#%NdgCYt&D>q)h@2|XwM%ImiJB=*+b< z2_}=H(8Qx0D}A#;VafBWOg*9-%g?(s*%;tvwPi?5aS1Rf5L((*VXa|WMqNe=M{ksM zud&9u{wza2%s(eL@L?0(T$vl2a9>Jite$j%iqZYKL+tH0% zljo_z`z4Y&Q_VOXPjILo0E)}IPtMfjXI-1m=VF+Z;>isX$j25=Pp6rKlR~pvmVLO% zg9$yh>6h*l`JN6oT^{)J_Sv^$w!UgtVhSO*xBh(_X^?>|R|7Kj;VS*q8l;W-NKETsA#RGJx`Xdq5``CF z)he~j)R4}&hl&1$)532Xd(N>$W<)&T6gzM|0Q$02RR_`}I-yZG0^zbfYwxq8-iqf~ zkvO`rmq62w(u{~=&YTuTkV2=ftT}T5ZK|Eg%5y+0;gPX)#NH#%S*fLt9)4z5SPU>0 zlv~rJ7TqAhMcD_40hN$90~HpWWPaNf?)Jjl;md+9OH_7FEet2hOd@bgHb`wG8GON;skp zezENx%{k3SOk*NNQR8ak6}4hhnQ88nuMh>hA6$Z|J>E|YX6b%`CpRwQ5K}T;yQaJF z9eA=IFci2&SX~^v6Xi~fq1Pz~48lczmAHj6i@<$%uKH~Uti1fw)`DLu^M2cH@wB&zmkIoxFQL-ntHU`OB6G3V@FU9otTL zBv=kv=X7h7^)dU2>$)@_DzdE_Zr!*47_#^Kxo&HP8Ph3ZkAu`ECJ z;o{}@T8us9hf3hUqb^%s+BEx$M`pFph;!xcfoi!=4<)P%ve-7>-Hm0-I^+3SC(Ijg z9u}u5waZ;nEwVnU7ray{&@5ycF3{Xz(?41UF`o?0Abs%N`7zp}OJ}EcO~mD)S@tX@Xflh+<^3q~qOl$@p&G`hw3$(rAmu)~+#B$-bG}DCQcsYU%?A`9nwa zeYx(94%c`c&#n837wrW1X@TWEy&KZQgD;VLN(lVE zwVpNSBKHU=q+EL68@lCG^f_TYmE0vjq6XXIHoM*fnJbid$@O3=isdE*h_s9zH58925wh|+^OmJcpU3$Ja@w||V1K3^yM2i`uX;?v` zC`eFI^Tpvq5^tj0XSK>zNt`;9LY1LILAL4&xP!gRh!!PCj`oEOJIXIc!FwQIy&hZl(ELdd+u{mU6X@$U;4&N%Y2=dmEq*Q5=gD z!;~hoSu*mR=tRCap5ZamZ~&(0^SB51yOtIfIx^cmy&8rJG`j9G7cir>Y3$lUJg)EJ zh!GdKeiqqnKNO$&i8M9Z3%THQA%7%7+p0m@!|O<7kk>mUOI_#;i`SbFu-xP5^%Szy z$s|>E-b`3N+;H>=&+uCXx%+@(G(q>Y=lKCN%LIc)Mcn1C$i%Qh&$PtOm(|P?nY4K0 zz=#OU{h+RCQ!m1FszVW5H7C^x&xBp+&TvWJk2KMaDbgZ;{g9iFPxsx?`}VR@M`L9$ zPsW_A^1!p#gb*5HeYnd?`2u8>8|>K?=^+v|K4!K9Zph;r8ge1$)ySdgkE$ncE$;q# zac1DD;WxCm$;?&nRBsDpMvMrL^=tDc-{ol+J3iO@>3k-ctkitkn#eXg&eGWd~<~mBXsm@a3F}F%zezmEnQv?C9(EY}Hx@S=}J+;@k z(5Ym*2eire5cgUNHM&1x%c#c@gcng(uA}6tJHMmqV{6cU+XuE4MDp(pChj|Dwz zJ&;|hl7UsUxIe9BfU<531UC1l(}W^}>+iAo#ZR`4g(+924T%<+(_T(<_lV!Tb#$GP zWV6ZUFn{rOyQt^X!gM_df*yEoG}*PMFsJRRYdLXb4-c);VmJhm0(ad5_$!LVIRz-66 z3JjO0QM+$c@`H@kAQmLUcFcm_=qTm%r7m{Zz0HVK%E%G>Z*8>Rk36UjU#3p6G(Pbk zTnJ%h5A{g(KAL6bno@5r({H01??@3;5DuJo9nn5H86(na1ll2YMV&j} z9PfrgvmjO{{>L48DffDk^r;tky-yyw&mB~!pzD@@5oCYBbG|>|ZJf3iOgnxqS&yxP zBR0wrr4d@+4N&`?U)$2(i=#ZOhm&W}ism;EC$r{r9G z_iJ)v7mK-`M1LkwJxjjD|4@50PmH+xn7n5wGAly#1u$2=adc;+g;Dxr6o(k5GhF)QYPaXc8t^g$ z?(|ZPr<E6J#Yc0CfwY_(1e?}LNG1=G42j22>DHB0r@^ROMvI&E;_89*TXFt!||w8;z} z{TVP=o+ly!I+-SVl0@+7-0?OdbTla9j%5pipu5y1+KK2Dc^}FmixnCPOa{gkLsr{7 zzt)vBYH~ClJr!JA$L^IPQVC1Ii*m{BjkIez?%fmXGdU0_O#grAI`@Aj1OM-TIw9py zk|HEUB~(s1Cn@Dvid1% zkNcO;{U6xudSCCu>-Bu)+57~H3$TnzsPSUJT3?#pd1zwZcBp?3Gx41GVm(}ogx6^J zvZI^Z^w~)Y#vkHVE`-y!v;M+WQ~mNC*WBg-ljoUVaEGgiQM++h#Qm{U@IG+_M6PTY zt*uaFj+VToy~OY5DNyqxt%&UzQwV*d{M}ZCYgqv?0HWierh}$@j_Ts^($0d&!4+q` zQ_ty|JD&-h4Q|@9;+X*w?EOeF$zAQu|FqH9Wlk{36^!?9UEVblk?z+3Z|-dZr&E`T zW5_Z%#Ci5Yc(5_5#A~SkSP4CEf=!DDWh(>h_L}1dya?X~fL91*==q=v*y@eOC)9*U zVN{-5^5(}Eu}@k=UeW-%;!yOF7WKV>4}1-p!2S`i=PvlA7j9v7ekuKp3r*>Z7(fS2_09ufod;))+c>|`X#zr2ij~q zqgiD5GQHBViS$sIeY+4%cAK}tl*%bEpp=cD80iCrkI$MrKGv9PdeT$WJ~skk4?Sy3 zkETSMXIBbD&Rhkv-?$6S{-;|LhxqlRw1zV9&(L`M^6Ky-v)%!?RG@Ip3GT4CQ(UO$ z%@*nP_D&0@tB%esryvTu+k(PjZ2XGFuDzk@6wbqaaV3ZBYx3AL_(%U|f56-Guu4GY z4YqYlaFnm}iA>gU9mdyZ9S@Vk%;&>Zg7{~fi(4GJn4>wx-Z-_O_oWm*(cqUHNvnK~ z(Hyi4PpR=2>O8Mbf@43D0%49vOv(Jkc{K}Pfu0Ilu8N1?zkT(6ZLj5^ZBaX3EkF#> zmoog~75<{Umgl^p;yTm0#f2eUM0x3*QJ;Uj95c#h87Dp-!abmm+e~|KI50#gKswe<6Qb@rhH^rrmfi8@e8#`y zgV(J7`~k|?dE5T{C4iYYE(*bV%`E`9i-Zf&&Q%~x5KSoa?eq~&tuun#{_=%A^mCMr z(41W7D2PrToBA+g;zSVu*wAv{>R04x^}MP2^~56e+E;saqmPkkr)>sF=%>5yS4wz- zW11}>!1wlsyT5agAACClR{Au^$rt)dL4DQ_BOb9+dFG}+daYC+B5*M%zT0doOKg^L z?YG1k=+j>{4S&LB=Qs;LcZ;Zpj5S4RA;d1+F`tiM*duI;#3^?5%V1LBC{0Y5Ua-AB zA-&?(0QVWrJ%2E_)!t?bN&-x$qQg5INubN_Y|<;9WgZc_{yoxao-sGVcdWT0oDIEH zdAF6_ae0=;P3vlnPZZ$dYoCfic&T3iYTGC(;#c2Ap3|esLYeEa4zXZ5x*cbC?o8mR zDhDgnztf75qPy>dB{@+Wu*%n|o5cQ!o-gIGj^O2{=#4-ZXxsK=;+L2Ej+ReO zWFD`Z1|Z%E_E*(pBnj21U{X=bCwAZq)UWpLkd=FV z&0e<0;HdR5Qnwa|7f1;lx%py@uRF|VT~9bv=r9D;eKf`~lks$za##l+31$`yQprJ! zJVd<*Izl$_VDdR1%)sbWA_Cpq_I)dX7UGVH2wQnY2nM?lQv3(52>r5-4DbBr72W1C zAr{J+dGNU+;`HfZ->I&E)Z?7BDF^6S7AFHaF+E#_Vn!H2pDQS6+95uL{R5sLxkP%k;2*8Te zKb+=?QI|P-a$9`dGDYc`gIC6Avi5%huAXd%vwO_P%krdox&{{k094 zQ$B5PKg&tB=~wwqqQC`r8ILf$K%`5{dC)Ji%k>mYLQMGqqge3T&K`yJ^c@*+lyKm> z?EM|p+A~dq$L$pW>PLhmyOrZ`so{C?9kKD{?!Bh#Oz$3 z*?ZuXiBAw(O%dcW*;P#zXtf*M|1FrN%>@#qXq&)r4w9+A!i|gx&$(osuVUgk_Y(N zN2$XAh=1WtSl^?|{H&Zd+kT^x)1kNRo$#8`hZpoTIofDLY@8uQt!U}%6(va-ohR<6 z{H|OQ9zVe#<)QvO<7%l`)pH8<%M8*X#Dz}$nKIFore~2T#&@=YJ+OPX$M6D;Z`n0S zCOKvuEQ(`GrfPND)pjz23u?-wjlRbgAdKzZQ@&efBNC6|4vixD$XiyCo7${BvryWG zkaeSFJ`~7ZjUK+K-Q6mmjiNjcMIC3@xmz6s1wgnuKSWo>)r`%-L*w5r5)~{b?X`vReJ_MQn)hWB_mv*`)d(M7S?E4XUDc>f*|fL0<@I2wm>m!^1zR47p|z+H&$xZV@BRhv-`<-!_@mgS zTWKpCxfvqgd8zP$#`>Ne80_LPGbln2dYOHQojRx{f3;|9duj||P?WS=$OStu4o|d$t6w-S(KGbBtXd)1bwCH2VEx$ilrr1|P&Q@&~9A zzb3}%TlYS0b<5F(r%>4lVE$_*^ofYkH!lK6!ce##N7j0`Pv?G$TQ;i|w&B;8N&BW% z?@dy(et!K+ICI(3_~v+Am8MKqS}ooL9RYkb=s0$G+0@$r>~6eh(_tu14SZkb9gvD; zt))T`XEEq4$O3%$K{>*{u4VtY?bD7FmJ|6S^x*^qfu<=Nvg;q(Fa z7n|wk-Xzfl^LE3ZZlP9`(yw{)D>1dB(Sa)6dzB4*(yOXm+~$liMj$ho@LtEs5HVuK zEV#S(RVcfnitIm6K4%_EJQVi<{s?WDGu4)*Z~qNj)|#b3Fbk0 z1zily&(tvus$v@hP7*TVs51N2_yTEpw28nghu*iTV%GNXHW%JvB*dwor~tr}w^nm} z2t)Sv(EFs8E-_y9jdA^Ba|P@3^nH52q^^e0{MoZysXJL;ypn~NI}7jm9bU*A$+MH| zT0QvMw*<4-lYK6A`Kd%$b=j`Q%fJnU`_U#)>B!AbKo+?8ZxjT5j)Em zrvUS0stKYXF+^CY-EiBOn=CgEIYaZ;=>hK1vZe6#P6fkELW&ON#(JZKZrqT_%BUck zM?}ktS8K1}i}G@1=>m;Y?A((1LeR@r4y@22y8QhhS*fwH@JUsazX^m-8gTS+E1+`j zA~gGEY0cr`?!^>u`_O)x_QC4>{pngp_cvaWI%fosmKG;(+jS2Bwi)~;jwx67txBw1 zT7GeFq3-YkFqJ1>3#}ztRJmnwud*nOK{;p&?XGwk3|p5LP!Ak7+uT%p$kf-5R(PX? zU!|fvt{zMp$S1XMQUALV?YZ>nObx#%EV?b4`eu|)Yr9RzYFnv}TF&*@;%Lsq>(_V& zmUZm(g3^9AzT2!#b18n7^9xzk3zAO?0bq}&hE5_!yQBST_AE$|7xFMNl zI~;oUE!9jHN4`mujPDKSI~vO`>=0B3utm2y(^&5grp?A49Byry zKWlGfk%z;Dhcku%kPaDsS=hYFlJcK1MbRxwhn5pZkEM|`m}zxhm~{Vf9nQyI0xxZu zG|!3fTxGA4e@D#8;-RWEJ(t*YvLba%m2d--8^*wewY69xzltkIcdrX;*f$53*@ezs z0YZ}89$yj2r9oW!w9X!PZ7oGqtkaJGQ)HFJXU8T_uz9gH6zT%o@qiVB80Vc@_74K6 zFS=tM0gDtL+)Aj&5_cN$zUCo6OU2#F=MSRb@h|TE&!Pxe@olTfgnsYd>SG%KsFCG1 z!b&#gi%GIguZ0c@p>BsOY9s9XAyHj)y6u!Pyn*#us>so=g*$BvRO3ZD(61Kg=H|L1 z!f^X0u7Mg579&Gol>XEO;azd3a^T@6GvLp5+VXFDRGKTbP@3(>w{!>|P+>UWEoctg zo+zEfA3bwmKdvXDb13(JW?ks?c4c*BFM#+pdznLc^}8UVo;Kg4K{eZonB@5ZAfjQc zHh&=PEpz=9=l$vqJLjnLHp#}Y4oLiLkCr#+HFz}F4Zu3f^W!)>fA`=!Y4h<<#=ajb zdHP$nCD8xu4pJU=uqCwSPiQ_Nx^YiBFDz<%BP0XBJ=V?Vu#^cfwu?EJeA?YT6?~YR zw-SD84le3G(;jQ*_tW+Lr%&gPN6$Tu4eHvBEa1K!WsaDm`rGKdbhTouqcILGfxHhJt1#?Sm3` zh4>2bM$(uXqxG>QKtyL0rl>vM)qd_c=d5+&tgOQgU?UY)beLc$paF)E$Mc}=4%q3& zxtUQymcJ4{oWw z8=To!5Ef9^WZ}a6X`T#*&^x~*tI~io&#M>pa5ErjIr_;E&Yzg<|NR)7P$?|KU)|S2 z)SHvi!zZ2)asf4hvJk=km5?7jG@>&9CuSoaQ@3zZF9*A5=9{Tgsovvgw-)|t6`z*vUa zuPW!moKki*^4QSOUxXBRvS7fE@V->(eE4})<1?j?*nUPx7yH1i{SqAaUm(b0u;|fL zE+tbXho_1}z2ySB#Fq|9H<(=Pv3 zR4Fub1Ig}6Bejkhj53ihfcrIm;wbxoYO)VRR_3Ztw<1wQy%YdA@=lDlozVDM$Q>lO z_4w0uRZ=^Wx_;~(Jx_A#49fHaFi`ci8QcdDkp`du?=<%e{fpRUut!hg(niDBds$W6 zr7HmtIR+E0byo9i1OrD~@lhUHk_h^!?q%Ak_Z$jD$kM-Fqfql6uSi_`os*egT zF#3Wsc^4p>U1S4)&GN)8jQp%08z)hJnEl_^eSil82)V>~ue(P$pm!OQWu^JoOpu%P z*ZS*Zqt6h(6GeG*GVwWD!9KQi517dw!+QghmHXg2i)(3XN4pJT+EzvC4qas4dKm3v zlU?4dX@IJBD}M~4@ovh##r3>;D#3Jxl#GywWW3m^T4sD07)msco!?Y7hw z_J1mPZaC&ks8-tnFB{UFer{R@a_9pJNoyuKV)4q6zDUzMi#|wZSJ}AQ4-dnh@Vt>o zb%&P0n8X^;d~d@W3tf>{NREb>bG9#%3nxoH(}^JJKW@)Yms75 zaw1f0Beg1_agpx@QH^!C%UHy<`t8*71jN+!=exVp_C_-U6vLfIfNpW+g+S;yccD>D z+q`kgwpVdOL5PVKvvprWyRL$!k=%QJ%kiC)P~PS*cayI+j`?|pdP*?YwH%|@Rz9lU zh=RrF(E!c@@Bsj^NU-=40MXGAhg~tSf4TQ2K9`mN4Hr$>(K7kTcmy~glBU+S9BM)t z6dY)Sd^Dw7%iHHy>$SNc0YumVGcjj#1$$BpY zBlOfDMC!~6Icih~sLMP;%g|V)rl!Mc+iPSFbLk|(Ss7sU_C}{5WB*Oz9BZ+U?8%!B z8)wY-ZN(ps6MlP?d*m1_B zFLFtLZ=7+toJ2i>34Ai2)9yVEdMtl(=ETE|*bW`Y)#K&weP};%G^AW0obAj_`x|s; zBj6#%+mAuVEl(O$Cn**#IIv?4)m(6No|VIY@qfJ6`2*Yp8JZK!aC`Y#&|H0+n>~{S zA&x*Er0B5Jz30XoVeO@nuhYH&VGuCRdVFfrnz|2C{i&#(qY6E5nyr!x2+am7YC6Q` z5()5pFS(<*-Ml{Lei*Q7Db|gj9fh}#9g+j07Tfk$NJ8J&@6mBz!9yu&&L{gsA(dF4 z>p{}!E5ckfytO`CIl`sXHjjcLQ|Q9uKL1W2a;@^SfiP*5i|IJ+4-L=O7rQBR(<5WU zC86>M?7yq`Yjsa(Xt`tu-rm2?WHbax!vo)HxZYcMR&kVl7WtB7)3)&?U^#KD8CR!n z-~GFtqAZQw8CFWWWIQ)FmxeqJdU6hD!azjJ**>+8i^NIUKD9Mm1SCy-5&ofeAFn)< z2|lu5zw+wi?UKjI2t<8EdTs|2qDl)Bjo8Z32qE^7bi85i7-U%GRz}xIno7hQB?u-E z1|)_rLIqu`#k9QJ*LcTdBl?oX1|&iBxvDgp6g?d%>02feJ&|&`NH9xrmXgEc5#`&feKuDXg$< zxi*L_o(aZ^9^Q_>^6K3@(%30-43LG!&&a~ z_$X7dE(N4l-Va?E^{uKY65wd?>oAc(_w6;i9bOUBO~9({lwe0VwH`6b+lCd z;NI`r>^6YEb!qRgcr}Gd#>lPi@o(#Hqnn7uS;uwv5vBQAuHM#WvsplZ774yskoS3} z(&W}BeB&jMX)zR$ODbJwo|&#DPyPPR_sd9n+T^F7ZO=QKw6L}^&vJ^NrW^pv8<@)% zl(AInQ7ia-f~WH5dQ_Beor6prdeelDdsHweY+Tt}VaD!X>V`=`PaNN^8Ew98!$iUM zDTJ_jwfTg#^40An-jdZQK(C*L#SkLgL`CmV4g!X|uuEC#gJaSN2_8Mr9dr=6;7#7y zX&8e9as9N9wQmk<1NK<#2ckq5(ZvHVT)1V8zW%Hxj#5m8D}HigLQLO4ZcHWWHHCIM zWHt_VXf-`8ws0F$Sa?K=(#j{_7R(Y+1SERNH&*HLNn?RtavQV{AfZIXbF;)7!vJ^u zB2Z6Lg_d~l@z5)0Q3oH_1V)~1Ek|1%&pjKMQYw_AIga$1-p_&u{JT(HFHj5by)%)J1d5lck_mP`@;`x$OrJ7=MoHWsaZ8>fbs!Hiu4PUyMiRQK2 zcxFBnkHd>D0xhr-ZTiF5{cKh0@YINC?k+^-n$5FLv%Vb3g;y}0V`EW=B!NOlJ|Tz` zLif=tFWhoY>NuFJNV6z46!jrxhu(c^n*lN$Tgi_2(_WEdRknS#S?lTALI2Ieq;`@DL~gxo6;oyf5- z9NneHdDl#aLnr5oI$i4&Bzj+S{HO-iY3hqLX2wBBZ))%6F)1AWANNmbPGQwF)8vvi ztxT=-X>PN*YsV=MOE%?jE$u8En4N8RV~tBS3%$H0K7<%bo%;zu$g7 z{WrG*!Vw=pxUJZ+@#h=!jnb{*#a%$!=7BA_e~jP73j_2ju|EU3V;GbN1*sCVU3j1C zOX1J2FSn^f>)z&_Jrnwub9iT$gfsl<01*moi8hbWT5E24A4Gjwm5X~56JC-OaD7x= z;V=;Cy5TJB+3_<5!>7H$uYT<%9#)Au<~Evr8qE2&;Q0$vzzrjaT=ypX1L$3on$)VF2? z)c{FnvPAUebBFNSPV&lZQ@by<7 z3adQcIP8Y368*Qt38-5X44Pi!Jl6d|lS4ImpChV^uT|*L(mhrCt~&%yGHGt10OjsP zF|t>=%0EAER}>c8W;GWi+~4x7j?@T5Sx1jXz6~I|(-5uUv{-8$f<8LpcBC(lvg7WU z{cBzYAwHbHE#aH}fj(RArt5Gm}7xGVu-rfyH z1XUG3SzHC0p2c>Hi55s=B4AJ5nL)Y!>cOz8Z@&1dn(@YOUMp~wi*TvBTTb~e=4Q%& zcUG#$zmDrxZ}gV1G1Nu$@M_;%>7=I*Ouv#bta}CI&IK>1{$(CeE>V?EYPt5l@(2zo z>F1DbwS;zpt!MQ~CFrmBGK@`9FV?hbfmz#Tq-EJxxLKVNH7T z`ytSG7(g!uGOE^~PT+MaLQ7=PwK+>?e&ExQUe{xwT)OACEW4n=zb=|dlsVkVK?#rO9gnYt)|kP_*@qJ5H61fyNjUe_bh zEzGq2E(XV2);S7A(W+>n$hyQcn`DzE&{R?F`RbuAk+UO|%CJsHfgSop#B zj)HfNz_W@moB?)eO!fwjGjnT&7f zo2&Lkv`a>(j)}bOOnfVb_!9ML9*VQyh2}rM_kQ3bE^khBDW4d%tui2=b-5vckc?2) zBk>8{obY2wO%m>kAD!Sl|7GUlxifzzmpfjK+OjNfxAolEZQmO^uNF4A@1zGyzG zM$_XChnwjDHVh2`&>Q)*{8C?HPR_#CozXubRa0O-ZvK1+hT<9?nd&yh!F%qyjY}sY zAyEGOnciF{vc1eld4k*}XNc+Q-}DDOMUOsUE{zhz+rCXNsSZxBX5~xSjO+%@*(gBp zTFkt6*_v2y0LD2+q`fU*ddS;i_-Jd_2)O|zP}6Ee^e8gzUg?$=Cy(%UjI>=Qk>{p@ zVUE_oe#$9g(W{%gej z3NMY7eNJ2xe_F!piPLwFFkA@ zr8QP-^Q?a9%VLL8jJRXdSGR2U$jy99a{59|_13V!v{^^su}4Fj>7;ys9^!bpi^Jj&+ZOo|xVhtJM+qxUT$8hl!5OX#;-9%!iX{?{@ zI=&HJ9oSxlF; zoedQjNY%cNIu6Z_VvQ{uBLhiiL7&-qFc-LgEt`FKlzx$8Lr6UUo2O4cHx3qEln*UP*NL<|f(%1R5pra?R z*_Xc<4rA38jsDu(ec+Gr;&GAFl@8l4w$u|>959(`GvM4$4T&}?dH^b=OqS(PLue)y z`D}}oO8jKtmS#Vz$acVWGpzV^OM;ZR+}!_ zOigN7Ics;=0@=@17Yd&AsOLVLir3r#iz>W~>bT8Ta?1@`#VdP?g~Y7pe2!r5K=y%v zSnEX>o*1HAQ9vo@aw?v^{jq{p3{2)lf`?&F^Fy=YFE1TlSm<&jC^*N*ay#}nlNiA;FUtO*d2ai^Tfo0*KmGkF!|^>vSS(n5eWLFI=va3K6a1S}+>j4_ zRNcPvEl2Cav8cPj^&1H{i8{cWe`UI7_wk3s#~}~o@E;{5=SQ|r4q+P%b~k=)oK)|! zdD6ztE;mL7-9Hh-u2(aY3R{&$nSH}+UMur>0(vXOFLqf7>6DsW~zVtvq!&*N7&u4SEu>Xn--t* z!~kJ-PqLLg7Ut3mfwA#HYDBlfjjwJ4?;VSE8FKI^LUzIM?T!7{Zkad%b87YMc3yh6 zr_q~^2E2#A=XNWnp6*yQU)S+n!ZwfendMuG;EU< z|932>CmjNmEjIO;uW{K9(38IO4_%2pSB+mRtuTPFt zRnQr(u?~u?u7CveH|l(LfPQ&V2IP!fBiduWImniZdgC~^#s7pgZzM3kb3yp~;JxC* ziAqauV>P5;$9(JpuPoa_;6*3ys7=6>d#3+X@5tX-TT1^)>hA<(!gAAJo$sw~@VxV< z4f)hkfm5rFguT6V)efVbSkp9L|GZ`~*KK96(W7C*p(5|=-QX|UCh+8bHI{e3^^?pM;ktsV!@h4n0QJ)4mlxbbUL;f4(m1IhlN z#izZJWmvP=WSq=&ps(Z*<24SJu8nWE>N@V;0eDMJo>c9X%)-3ixtelz>SB1A+X@ZC zn!}zzNQvq{-IPY+BxrcrV^MdW|995adnV)iDmJT%tHJ$5RrmFe=f51XfE4l}X6}56 zgPQ*E4&SVLl{Go5`2Q-$$A6V$uh|PzJRxgz@al`wr#`fMG7aS*Lbt!QnmI&Lz3MI+ zHEIwlUZI3!6O+)Reu9cMz<-|1hh6r70KEXIp^SRP<)X$ZT1tD>mM0dU?;IWwJ3oe- zYiy#n@Tv26fr&wFO%trK$heNCpk1uuF`)ZjOoqJJt9>$CZXZ0cKUw(DvVy^&z&>)e z?>4rR#<~F?-b*oFMZQKB&M;5S3=R!~&j^7o9;}tF^bcn>RD~F;Z5{Opdnl>eHah@s znF6nlKTAKTSCmkS=>rxDT|z0_opa${iRK?#y&jAFcNYmG=K&c@uzAg zBdThY#k5{EDy)`psPyMS;#jXKhVK$no>f@bHt}k^-P>YW9zvA`e1698EBf>P3cptH zX6?K25dkUFh^XU7mYYMUBanMyN5^kRMV-|79up1N&y^yTTDO$>GFY{Mz+wJBjc!p$ zXwbK<&B0 zu9mb%%v0ba+=I$pP1gD&rDXJihQeNG;{(0$;Dx*v{E5m_(BWTBa8A)b`yu`{k2Qc6 zRMQ8T%4BV0;4vWdv{(*lrAdvq8V2U=*fdUEU(i!UbdxT$n_{IVtt{v}t*pFEW*zoqu^RGWC zw!wp4-z#|i3Q*l8uz)T>Wgge2I{GKP%C;*kw$Xc;$BMI4;>xN-9#ABniWzj3S?bBeCh1v_-gpqB zMxEsf7-=tXS=JPADmp6jxtFk*uS@WXv#j9U=%{qTKs>fbBP{guzBfPU!yCpC`=I~# zjN74P=4mN5FFUe*x|j~_5TdJKDW2gR!boI$2?9?46Ls30X<{+640^0M%vqKyO#Rl; zHS;(p3c#{Jwo_I@UpX3xtVh<74EJI4g@hwU!JZ1pUYQE}IY`Gk##XBDF-}V!2MH{`V!pfb1ra@c5{Q zj=J-C6Uf>f+-Q@R2I$F30N#^!>k81pL*8+8`rHz<$P1`!>BVncNVA0XzvqK(akM7p z3>s6~Z|ZtlaPb^F&BdpjLKufzy8UQq{Z@al&}|iE9eFG(k|ms=RQb1azs`?P&EykW z4Xf*jLOVu`^P$r2X|VR2UZO2zDLd2Y2TP3!Puu+U*hTy6wD{+ZwFRc{VG_|CnhVEA zh74=W`cfshXv;ci@$)!Z`H6bWxsRMLIm>F@8qWZRH$a#P7sP~KuX zdmErL)5D4UzQ z=XvF1`2=D_Q&v;y8b_XZW5?W>Va8-JU&o=}z{Bta{N%^TVt1Z@4cq+wFsNq6+n1U=*|AT8J2^(|Bx_6;rn*^;`~A;ykQz0+ zqb(IPF&A?SXcd;}+tp>CAa6oU`@O4`7V?x=s)Y7Ex|H}5G*_X}`#DgXtg-D+rxJPo zBI()e?AlMXcA+!qZD2iCt*XOUyrEfLX2@Hv3#DmwVs2X< zv&TBKbhQH-jClU;_Lz&Pc%`cg3F+xez|xOSDg z@~Ln{#Om+l(L7jTtnp$9FSi=sx+a64`pzKqBj>RQ;Cgh;$+Jv*qxSk}NndCc7uuT* z?z^^4NjY|6{^JwLzEBR%Jb6ul`)hvj@}x&hTF~yMKB?FM_FUheBEtHR3>J*MLt zET@E4?Qz$mqJq1Tm?K(sfrvPV9_HP<<04la>^I|*#8gMGt7IKnsIaI?I}0Jf`0d%v zJ3j=Dh^mX|;Y((i-{&nTpH^7C5ujX6xblBzcwT5fOhMABvGc1BDo!V4H4q-*3|M*7 z=ZQ54o>35gbK1)zYP(2Ipd1>3A1oLZomy`xe^=(#PSgcJP zUQkOL$m*M}#K0wW=lf5p%PPgh7Z0G`>=0G-r=&Q$?S-xKZu*(`^J&z{y`XQGE}f@( z()5i?TW2&oS*9(3=zw-H1U0?1R&#!vE>g`C(iG}N^>pNk*cXBEE6Ug0p3M#vSI`c0 zaAd3P(|}*-BZ1yc72z<{&16Kv6@J#z2Zd#8Gej$50>usDAwCp+rcmM+G0B>Jx`0DJ8Rn z%#YOaLgL>wN?BG-%y^F~97=SMa{rvHJ?t6JaiA0Hekd)&Axy6~HUE`-w`Ys{oZ)&7 zGY=#6HO|OBBA%BP>YyoVPHy%4a3ACtpdxH>PI2`~*^@>(_lCqN{!n>=^4ZN~ zWwK=eX38BSUd<=OrOnt-DC*P26}<^rPGY^om6^4?d+uh+Q=w~^ytKCF;lDFu8CNCB zzDDKVw1y!MV;xjr7d7Dd($Mqh-FQ-WY1PAfM`JRMe2pXKC0?d3SqY6_U`Z<>6aeRbw#^B!*=Ngl%)$-g{?vB+64Q zuTCZIf5-esIU7iS9DIn0%$nd`*^Gq>QW`&cY-EHXR09Uii6BLZ9J`*Oqn z9^bv(=E<1{BQg4XkNu=xXbkT&_LwhR8F?IHz&HV*H=rf2bJ1&W}jX5pIMMGvi#@pQV>b=kQj3b#$ zGb810uAWQYotxf|N-28*@VFWCPg<1V$sB+lduCQuXbm!op|n0r(OSQ%+HGgKyD{(5 zrCaqLP}fOs3a|6VASjf^3*qNh8_hu0u-|y#*Pe7<;rsC<2GVVpqHB@Au=^+9s9lf z&U5ODti>BFySY58p+pV8wsTO4f3{7zOScxjv-f0zgsNqXf0kS(wahnJJYtuOuQta$ zEq`&`r5zn=mdtRNW|zpjsdon&X5Q3u2y^OEnq~IpUNMMJ;tPY+#l=G}4lyBoG~JGN z2U&7^UpC57HIl)jy?bYwbFKbje*zZI0}UopyY&6=CnHk6Ge_lj~kBD^~lRg@~| zBH_u~0C)uyv8suV`3_5~Tj^UUSb5GHV{+^ByEdr{r>DQVJU~Z24~J0S20^Ow=sf`j zW=Ap*7U6(gq4jQ!M+8K)=5wutE(7W?vQa%UB-i7u&F+46?P-zz^UZsu9zGFEoqygM zkOmg#XP=vmk@@03R`fBRJQTkILRFqP$)^G=mOaqZBK*8UT&V7*j%+2+pvj8W2~WBf zTIO;k_04e%?BzWg+MUNg6f5rCy;p4T=`>E;ApHh70t?AlW9i_;#A?Pq06Y3cQLZsc z2!?GMS6$eS$8JigE)FZa7|B+$Fa^w&N@~}O5`fk(fvGgxeq#K0EY2=?Yk#tR#~x_* zW&_w~1v>my)FEW9gRr)t`chQ9|Aq~I2VP&%MaNCQTlLxQNPpS&t+hsh?D29q`;y>b zMgSl8!N&itc~AR=+cd7iCJ76Dx!|rPJh%viV&t(pg50mJreHc5*KEGoWHfm(cs-^! zQ@;HyXL}3$I1WkL2Nd-erwSr~`P(*2@-&t9QzJntF{iSGq+-j-BG-qgkA^*Cu8|h9_oe(^rr;W^^n9LP=Bi4lj^v z^EC5t)vncMO1w4RGjg3_KOawQvd#u{*5`C^bo+SvMq@+V1Q3~DNx`t1TA_1i%9DV% z^E_01aC%_ApgO%RqK5_1^52mdj};I1q^Xe#z$a{K*b20MNapWKWt(Vr=gOh$;a7+8 z?)_AE>UnvylEyZ18yQ#@rxKPR$#gLN1>7se9D;l-f$h+r{kdtd!R+1O4vHv_A>n`n zMEu2NTOmb+>{HdRm^T7Len*59fJ{KAAs6j9_h`}K4q#aIHr!|oziaz5u&aPkV&z!{ z_*0v5-IF8c#ljm~E(8oefj`?&!jeuw0tSnwJgy%WXq{>93OPi2EQ1qatefSUOJ{rf-WyU*Sc;m#4hZ<_9{MA_Bc zvpyTS*}s8kuFkNTnJWJ2`podot-p5DzBG#b|4^&-iE*(?Zj%s+fGcO6PwO1>Kk<&S#ZojpM@SU={ELc zKnf?VX~d<{Vr05{G5vPb;ZoLq)M0;?$3_G!*(p9U0iI?{30H`sVdA z*H?Y1F(MJbOOUDbA`bIFbl&Hi!zUh> za+ZtF(yT)hiQ_F_R)3m_h08xh1Z433&1X-8rH*q4-I44GR8(;qT>yM6?uS5#$^x5Wl3yAc2)Umf#q5%I;id*f`^?2J zRX*d&^r2b?vl>{^%ngkgsL#`Mw%TXcnl-4y0k^}^W^MD8|MnJ-jk5QOG<-ZEDNS`f zFIa2Qo-H&JfoVtn$j$pi`OUDx`TkQE=#r6H-+V2}0P-O=r1 zq!UaD;mZcwaO-6rlG;_)vIvOjkjuEWm~<7wf-+`vF`Ir$bO`CC#93$F{-Gy)k=Z_Q z(+kD?9bdXcc{AU)FZkyPoMjOs({zBqCBvi{Y1dAMQ)E(b;hynZju4i^T>a8VkZ=mS z9f>hOt>k{sAX}8J4W+RZSj zP2`in>MxjAh1q{KjwV*ym7eY|vXiaZEzXaVp+q&^Qq;UFK?oMHDJa zcsTOMC6H2~-kU5azQ3_BG{4T2)2cM;m^_!{*5gi@{cqa6RAP%~>gWf2gUtNG%o^m= zjS_aLx&2-_7hlryN8em4F5(vEc}aQBX)J|(24lq2DQel#hEV1G#D(wln_iJB*@V~o zcBP%{z7?AZilYx$Y+)Q1nA%m zQ!xDi(sTZv=Zp7{=>S!~h9jkC@b#CMRY*zOA0;&k3oM3VfW%E3;Hk~1&Yd)NU8j=| z!?%{xalkpM<|laOQhXmk+9?uFV{}z{r!#^f7oi#(lo8`IKWRutx7`gD-_cQ5R2cfk zpH#?Dt;5L6VLk{`2z+mJ$`5RG4}^*Dni?>`EvS8Mjs!^e+5jo1fT?5wZ-cRe)yw?> ze!F2J?sW=q^y-k^BFwCb4>w+=p-G0EX^Ys{t63g_O=Y+yagAbT0V~By%8_8lfXwm<^;tsT38I#PV?Yn`FmKb5 zQu3C}$=5NH9}S*;3r3vpu6^mB$+QULQ~!*cFJyE!J8d+N;Kd!qa3e2up@q%wTqo-I}iCRO#jgP zyQI<;E?J-}%==J2alM6^WYpzb$SZg8VP+R-nYps)@%d= z90#(*BeCoST6}du6K64Or!CL)fE(QLSX;-^7{Cs5@84@jG+VA;FXMRbPpI4%Y_z^~ zGzl_K57<8Q%}zD)>DPxQ>BuWrNtneJpWfdcGB{D&-D#C@r|)%(ELv2+wj?Wa4B_f> z+a*QSUilW%BlDxkf-cyAy4cgB(us4 z@|GBTJ&&kHC~Um=v7C4vC|p+UdIs0}3TD-KtMs&IkF1nrXCEoOuhTZetxH)SZqJ)G z){8tV90H1}0Y_V{-gP!BQeCF=4wt}rChYW7;<11LMUC2>XkGL7hH%GV z@F%Gw-!yYIAKhR6lAzg*vanqf6Z&y*nJ?8@UT z@~_2wpycOM)Zylqz*%=D@ak{>C`MX!TWh&NALo6%ZQMv2g=D7{1)#4-YbN90ybEVn zI}Md2YL)JB>EzXD#nv~QdIIGD%>v8&rqD$m5^D5q`7pIz5aRfl&AO; z<`aDt0%14n8HepE6_mHbc|?q^qidNzfEqLv=B#>r^85E__WH+Rd&WuLxl!h--dB%p(j!l~4Jq_m3J_%qr)WdA=_sPI>SCm6WJ2h$`pI0bjU3a+5u)Q^(9umCxG-*uY-~>2TA#`>mXDVj z*z2FD1YjjQN|6<4(a!R4_Yw|z{sOfDyiTPEaYBEZc@KBG)oRK?cM^KEGss^u8im!r%akxl<>d7O z0<5#z*xz0wmhgaEgnc)$E?2eOv*B$h|AxO-%oKpEFIS>Eiz}Z^l-aU(tCK)q%m7g5aaJYC~m z)BE6(85Jxw$)i&c4Va<&tn$4irV(i36j-A-;A<{C2GD9hi`rUxJ&3ysb#DU^`SM%o z-!2y_&*Dgp_c&AUL@VMcHVazh=Tp}G+?cQCdV4f72uuuFCya6|2HXbqif`@CxtR8O zX{F%MDEiusL5C3-y-r!8UNOx#Bj~EYv4g+Z%KK5wN2j_2v{Be-rvY|+6Q*d3Tz9NG z%;QPY2k|Q&HJDvHm>L&uJIMKlh$1*4jlL~oasxTH2t9vX6gjFOljB3V?o^gNr!SZq z3&;3zes7g3WHLNFUNXWmE?&jnC%3!eLNPFh0;0pc(6=bSSotHIX4eJEVZH<45{$Ob z?gRgsh!70|?WkI| z)l2ksd8lXD85;iLoD*#P`Xd#k{^$#)kSCWCuZ${# zo)Zi-78rKFZ1q&5QJV_3BV7z>t_n=w83_+5w?bOVLbVE)gzDdi%IU<@7l=5G-$bgu zS2tjL*8lmDD!Bno*7KL794~zI0%)V2VId@z!yUsVcEgYR6H4F2-+gvpYf#r4o3Pfb zn#THN&+wGUexmG=PLTmSq&xrB;J|=d-;xqf(ntCyZbdM(d@XEreKLFG>m0|YiV4Y@ z4|cT)hL9RH4UP4QW>*A8==NbwE~7*9A-QJWGp_uKZyhl_@eU#ycjhwsK|4b)Pbtb> ziw(JTnQ-Ui$BRv`Wc^eJL-?D}xw84vfh?6o0d6H4Y65=kk`P$zm*cH{$w$UYtZHeL zbc070s*ltWbbLFUcDOyq)9r%js)?~qeO73Pu5`70?{`4~ zi*P-tm0k+I544W8Wzih9%I zHAWgc(t0urfCf~-)WmIWXCk#;Iivd9w+BTdoR_INu?t-Ft@@F=l0_cCpeEaTkY*ku z;P$?Yiu_@mAdb6z!Jt0VFju>Y-r_8s7bzdaY8;eEG2j(KJ41g{-ixq!=M5j zZdB!(UGq4l&siwgsU9!KB;@4lEUK0$5*rFf%`#mbOJ3ZdkvT4VDDL6cP`cUz7mY?b zLKd&&E+rJB&czmROs{@)(X(FSMzV*RH!R@!dE_{#&sC zZhd8>NEDMQkX0}qaajD|0>Y~a>@%X_s=(BNm}id*}?bU9|a*tib?Vb*;x5*QM8DI0mrastA$mHk6pO870y2A z3vso_$7&CL&%-6z-vSp24$Xf2{2`;5dbfqEN8%JEIh@C6v85XN8^Hn9=I9NBQfu<- z!q$4KPJwOR&yUkf(!6t|@0$Qt<_)1Y=1RT+Y?vIb&izgvXFm)^hV%XK?bZBx0auJr^*d|5Xr z>fbK`mfvNAfXgW-oml-3YLeb!7A$A5EWqxye>E;3Bp|tQgP@qtOI{)31}!{>(bjJ1 z46yW5hv@<<$lN%;daj8B^>dH!G@MjSQJg=OdXSgB=?>tsWdNEdb@#AeF;(d_Ah>y5 zhG5#-|%8^>DwfAG!ig=(i<1aqO%MFE$IWd^;m*_SYfTwyWABK-7yfzy z0KF_hJHNyMDbkOJI)sZjT~Sg|E9Xp4COg-ItZEPs;WVxf$T&bbRGfcvmFuQeM{E>` zs*FOZ2xA1ab6(BRvNfD>MC2;3!NYK|&n>JqisSC*A6%%|7~{$Z5lQ|ehrlVhXKhH)tNi-EHQA5x`mM|Fi|A{j-Jn--#kyH6!|-mFmx4l9X`+* z%f-vZ#pS{i5%kCO)DR@WYngU_&GrAU14g9=Hk45M111fYnn>txZzJAEeg-CB6C$V+2Kzzm0!Q+m9zS4`ul;QYz@J5={2kNjg^Zb3r@vLoThK9tnMqF_|AYQx8u=ywDqrk)-)wmD& z**D%K_K5t6!`6RYB>%E%ym+=2oqrzjvY3F|Niw^Oy_h<)brjhRQ}#!W_Y)@?-S}H? z{8>Qz)njGt&z7_scUkVw>m;UdUPX?8kL-9?QU^D^P1akHQ5>$&Np~*8q=`n#^vRy= zzi8Pedk*A?{AQadKE9MdXWwy5L0eR+u1#kL?@c810|ngp#e!+tvu{^(O>}0z=hB4jB6`=(9$rL@T9z|9Ak+d9AcqyPA`pJ$th@7-&jTR_A%@>U?GgDj-yQK^Q%(PLn8d!HUzOb_jI(#MBN?4&++_xVQH*XCG@7pz z35OudLn4kc%T~ueu&wcTM-KdmHhZLh;jd2S*$do$5?F|Ms8Ey0#r`&12|>0;+%z~i z_~_J@4#>?0u7^*(tO7kY`AS9-*d9K*#67u<*CwZPOPjQg9ye8Pb^F&qmS2PF|Ftcy zer)K4xXzBBTD7~xxXsRMK@Eh#2%?G@!Dq^?y(a1Gm#t(x8$)_h*aq(N_LftwYm+(G zz-GY?3Hx2rUx%4ri-`SekWXF{{3GoQSwcin>a+6RAyNBE;-|as5*Hi!eGynhJPNni~ z4ldvDUhll4tU+Vzf5MmhL|_;!oVBULUJBsosu9E{*F1&aTPr;oPj@b4KN_5SG`E(j zm1Ws~wW`RIK7I4nm~H{V-x%-L*Yv9S6ip5}R6N&d4(h2(=W6JErOY>nhMx7qUS1{| zb;t>I##}ZVy|Pa662fBCJUv)Ve1iY$ zZ;1;V=8bRWSIoBk)E?iS$-4oOpy1~m*y&2vc|WzZw4{S%Bm(wrw*VDpdSWcl*#Rm1 za-+Q~HsXYvBlRej8=vzyI>uV~{~yi&>G-p-5^!Y?kwuJi(hj3|9|;Z=uy`35Bxv)1 z^*nk33_1x6Ok2fpt$OVyLUniJ-?a_@bR;%=scxG* z%yi|7dd%)NyOS5MS?eB4edeYueBSYtr+^pSz1wgjDEcT#Un0w2LXZ@15jlg;r!F;E zQvHn?R^~Gs-E<(XDK8ZM9q9n2LNPgN7=B7rV3B-R$GBQSh&iFEoOFtS=TK_h2>u(v zNOp>a>Z?536G;KXBgIV^5XO3E4-cwg-1ZEs3$89F@tq*~aqn+!%xI$q3NK{frnAH3 zCEtlA)GdPPdy7bOCy7f%rTYkr+o8&TXX4LZI2i3oXQVrhNxqW^2s$lN=3z}9t_Y-K ztKRt!|C5~YU+KWVPWlG9TT>LF$b1LNQal+#jYX2um&J%m616FLCrJPAyky$%7n)wy zHk0#D4U-w&2;7vtM)Vht{eLdP_OmkO0CySkH+;##BhHfoaTZH+mcOy`KqYhp@|q7Y z=5L|@8mB+q8UKAyWz#@H@xNdEzYoiQ8pHpc@&8@w|Misp54-Old;GQJT~1C;=OE{1 zLQd_CiEk70Nd?f8uDE8d!H_Pd z@ONUrY&6+E;gsiX6lSFRYYuOh+D$4Z1q?X2rZ<3dmVUYuAX)8+AsDl76aAg~r9tlI z6lFk8cD6yI6AVcaj9hD)09a}B*|kVG<4HyE6j0XEVL3b2a~vF2JwH9a{_a0Th+nM- z<=bY&2!Q&fC(=++p>_x(3#A?50Qj;rL|(_z~4 zZp~ehB-u)hNs15%6^fB)bXu$aHXq1wBZ5*jr5>s0C2$CLWGO8@uY0igw>~&n#|-Hh zHOC=Z_anQC2H*!6au4)^)S`@gM_QcCv4AiB$ z$ns!_goK2l5J?f3WaTJM8Gi1BwfdPL_xmN1=FYSX$-i1M|KVpx85aVKQ`t25JFci* z#(4KQ=IZF&Vq4Zt^6IQEMgnp->)C8uTX*Ek(8d+(X13LbE5$%G zRNT7dIR8%aaf6hAKi~r|rf`hYhAE0om#MxJV8b96K{at+F%Z~zU0SCM(KyY^EEu~p zu$bh2zsR*QXYa%Bq1wOd$o+?(O+{YYw^9r5IxvmBp)WUEF(Co)m$|vQLsTYXimxQ7 zQetA*4>cep%!lS&ntUl1~K9DsnDgOQ=&T4iG=Ef;mk(DF}jey9vB)}SvME+<3~KDo!dot zs8XV$SZ!@>M?lM5*_ou0aN2Wiik^gdNA5ag4fGfr)t}S+jcoV!t#cAo=<;LXJdnF9h* zxb;b%V4xgPC?Fidxsqa0`!`-&spfY^k_`aOyvn8dJ&zq##0p;g=WzxfD`CCqE z=9gN{U5i>nw4)U#FRD_N%H}@j(wvmccYZ!BlUT0^eLdf>!3qDW%#P!!h!t-li-I|P-?W1l!dZPro zoS8W}Dxj5-nVG3%XJ^-C^#juM@y6iy{I9{aHwdPQ@l2M-+P}++wVwN{YcG=S%*fs4 zyy}T{UQbV<+FZ3551dawU0tf4$xj!rMYWS@(m_b!l)xR8{W(~kU7PXUl z5)n*aSm_?P!Uk6Ey`qnA{%W8DH#XZA;91cdEIRxg;7i`Sckl9F{8B8D5b%#x96V#! zNkV7~L{(JYf%^4(r6%{;gBsGgzB(X14}e&_6ocv9S8mtGg}_j9@qc=viwXUKAr0X8 z)sV@m61=57y_qcGfmQY0`a#*=s;$CnqzJ9>oI0Xy4h;Ns)Z{Ezmif@PE1w;oz^~3RgTqFRm%M ziF?j~JSD3-khdcU*`Ihkk(7{Yw z3*fA5w=Q?EJn{s{I^1#Xs7yccaNTa_6gzf5!d@6D(C3j4y%fg`)4SnmvHL0Uu1lF< z9bkiB&KbQJAu}y@UBo_8kdkqW=F?sCyqf){&Xfnf(nD%|l~YE&cYUayfa%_npzvHn z^Rk7$zg)X8lKnjE%|MO4ylGb+~0H`T7(0*Z)n%~>*dKOUeKfMPR)2}hgiSeVbRNP znZ)+*-QWHAflZxyrLEQ%_qf!$(5iEux95&VZwjAP$4A#g>hXK#O;-<=JBy{>E*|s+ zyO7uTlICzeNrP^*&c5wEr4{R80y^xmN+}|No3rDzTPA-vkk_}?P--Q4jKmLowknn6 z2MT*BOAoA*WMF~s7zO*U2dp@d&+Q=@?jO7VI`sXwec8~+_0?^Z?>=^D#%j1DW_$l@ z|G;ODM1sl4Eei$ZQFWX$aBqqGp%TaLH-5f}T0N=$0w@9}iaM&YW zDR3N$qP+}56UpKxQSO7gt_#L$Yv>Soa8O&b;-#pWccN;IBn1ZL1_me(jiHx7SMl+) zDQa-}=DbZ{IMpk|9}|v)?%vs`!S=?O)K+_k&Si%IwWP8pjYNt(ultbzb8#t}gq?Z)y@QU7ZbrJndfIx1-wx_wU~?={*|c z;1w1I%pF04QQziJwGtr4tY7N$9$dmdqmU?gvs>)G6y)6}t-rhO!sCrgxA{F)aD#7%{xo+4rxV;pVtb6=M z2*DyR@SMcFcs!Qv>`G;sx3O_EQ1n_LUh^zd@g5r z_3yxN^|23bc_qH+;nwqk<@IYElAa$kPZ$-rbqc;zHGY{_g)YicNunmvmx-=W(P-xsh_fx8^Dzyy8-`?`I>J90zjA~f1kPh8jU^ULruwP zh*6suZgATUW@im*5EHy)PfOjh)v{^x-KgW2fUZ&Klh;<5o?tq&rg=q`t4gdMv~V{6 zhDW>SUo3%WZ2+TDAifuEK0FJ@oJ0~=yTeDajPbs}2J;w0wiB?3_7&G_MwU77#+mpi z*Nxzkq3F2QuuJfcPtq18&kFRU=eJwl#j|YG9jAQcGSuPFxXys}J4oIPW2Wugclj_k znpJ<{+U~~bP)wp@wOsi9`7aGymmdE4O$f{Q`NN%MR(WC^R40EWm{K{y#6Riep}XWn zPTVD?%`aN+IYpCMx~YW6J+H)|VA~14sCmmq#iai%7)jo%9#?8NU(_P}K1gQE)7tE| zpP4@Z=vdtJTW+c?@hYE{p{jFB-SOq+*=}KeXh9}ORaDL`;^4}H(k@>%7cl>MTUq7p z^irT79j!ad(I1Kq5sV}&CcyV(piUm?XD_#I1Cj&ZQm@{7uoH;D$oW^O?igKTzO{+D zbq~%zG%LCd5N}zj*85+N`dEp?d$!wjxjKb; ze@q+e=Aed3S1_r(6y?E7LrVXdRyKd%*Jw;jet&Pvlw9*IPMg#uxAk$?ajVlFt^R*# zKg={RKkbO+;Ssb}eY`K_b%zIG*{Q@rnN{poSN z-WxKBZX`#a)XvuBk$nIfRnB@$)1OqCbIou4|q2UtCI+z&(lwga}nD=tjRb zU-jbAr)(<#Z23h}{{MbPYB-fnjOch}E}t}9nPW`6& zcT72Zm~{E#A~-pI8}hoQ%pzH0T{}3K)#EbVJT=a7kbI2;RV!*Z`|X0S)u_paz&15W z>h_l7fvuWd9pQAMr?txIXcy^;d_vQu5RGI3`4r!EZ^e>He}`GX&4(UR52v470}5o3 z;M9^=zn>KgIMm8#c%?IBoA0&z&YKpl%Uqnkp>tU|@?k}15bmA=KyL-kND#5(DDkrS zcJh_c&K9-AETyQMniZ(D(6ZzbU-t zo~#S0GqIR2e)cVBcLHA{NtY&U;y777d4#-aSm7wxnEi}PyCm}?uP&cPxx3@o*Y=5Q zYIU&@>ga(9xzqh)%3RH?l3o7ul4cDm{B<{HS~d3G+4h&j4;90bZS=}g00JNGfMM;7 zD~x>i&V6NnXl5;StN=)v=@c5U({MkF%p0coP*xAIjwmYxDhdeCjeEigCmb|t@n>*w z$;zwqKd)J{j?eF7%3Mkpuiwkrl=#`!gCVp9+ntG>amTUdE|GBOBP>`j270%wC6k(Xi2|BI6Cp z1R+bk8W{}(^s+X@GNY;jh&S=-ruRq2sBHdT8y`PnqqTAU@l}4uA`R_K)p*T&{KL}F zg1e1KAY-F6_c*4js>H9TSKjmfL2dTR8_sR9x7X)4F4p7MiI?^oAF1X25Sz%8S;KDDY+!ueZeA%??2Q{uuEcB>63H1S)lADdc>)<`F z&AVF72gE7*htea4J(3v}HhSheA^EIFPbfn8O^)8WuMc&PGs4j$PkQbz*sox#05WZb z{+<(>EM55Ht)0MRt(CA2o|IXq zsve9PQo})b^v6jb9QG#PbJ&(p8L-5og{lrSrJ|W4AJ*?bbTYGc(h0wF=%J`I&Lg_e zM$1FWw|}jKz=erw#f5(1#~Y%4`pJRsTsnk;S~=lx0;L|=!85zWjx$|krdx1~Oa4)7 z%@wIH{ZsQcseIe-s*y=u!1GJB_byE1$&?@yD8K6u)O{q!kou@U2%WytQ#-^SFDiEc zLqEnQHJ%4#A|wglNv|b)kJLXjC5Jucb$Ve;C`h^M_gxUPJPeUMp2(R0@s@_{IvUq+ zqFL)x9yv{acV%Enu6Gl}bDe6bF@3b}hJ5_J+~9Q$oQ!Z3UVcgmvg_(+gb3}+Yz3J5#onRxrVr#Rnws> z55h|U8`OwHUCg=B$sbDQy*KXN<6}!6*}ZOWXO~foZf zF~~B!nv?o%F9*gvl;;s`6!7D;okrJ)-t)fPLRbo=N2xTYMnag%S!pC#ygo?AS1r3k z$F2XlQc&`Xyu6cJinqG-k+XT<3&>c!&54TL>54m#`$w(Cs z>d<5{mp3&|(i z$5;kUUs)K^;Z*oJfY+-#52h#}<%AEH7g%rm-3M6SgKd~8!iI8*Le!}(1V-712M*_{ zA9|(nC`rHV92)_tg(MyPGux5Xy#|LePNw^=1%AiFa6q76canx+{PDFl6;tE~fMAv6 z;)ANFuQwiZE0;14DAw@2-#=k24#gEa#hZjCQ@HT5O z6*>M7eX^?|4X?~2I^`+XVToV)ip?`x1k5{j{KA@qXOPQ190E3bcWeX?_n7bCJQinn zXdj0CgAT5J&mMGowB-_Y67pg+6b_}NpRU9`cUGz zSNGp3vKR%An+ABZ+!h1!pVeNdA)LvTSvFchUanKn3bB1M7F1)pikFew_#nTBkp%8KZ!-pEYc@dHVEVI++eGio! zjO#B_D~2WCLIu!?+<_MJA9RI$3i~vgzfU-Dasd)qm+x)d5ykPvQS_wO=?+^w*$=!)p zYsw?4TOsh;@YiBaGN(r>0=7RtoIDC$8|_b zn*+9ZMnspqByW+dr|Q7JX~j{v)?Lga7Cu>tP|u)Lde0zn?}aNw4^QFH-F!LjLU=^$ zF4tExOars(liK`?A;@k({bTiK@@@lyU9DJbrn!Et^dp}q%_grU5>VDm(qEYO`vw}$ z$Vp2p>7Se*mdsaOn%B5f@1a4~+r{n#R#~IloYfA5>zYlzwW*oWY z6LHs~C9`4XJD+^9E<=~$O(1x}^i2on1!V8#YNF;Pi`6*YDDRI*4n4<^NlM_jR?>-m zYk!W9SQUsm1^453x3lLD1m@3uM%6rJ1F8`Poh}%>8jv=xHd#p(*C{e`VA|^uqCC{b zp+>8CcT%1%jAFkgyo5ZTES{c+hhaPo-BtqRnPYF5Geuq;EztY+*r41V@_vL^mnad= z_!2T?`(vACL|W|UD|%MS)0c_-_079$5)z)PBz}g`OqfH3cgYe^39As1bGQRlpYvd5pefeoolvk;0@|Jr_ z^MJv(0b@0WPBLtY$2AeJMJ3x|>(dRpo(2L?9GLvpcA$SA7?aexvTJ7IW3Hz}(VyEm z8FJNI9yo-74g9P5mRnaA2ObKjTI6K}$5KX4ha!6)|#r|SzQcq}kT ztBCNi5f*qTg#hlnhD=#hZWfA>1QW}Cybv}*m0}mP3W%^b`Bu#6^?{&y;lVfMnR)g7 zhqczd@vK19Wb!rH6yi=>9MfU6z5yHlL8e(JliM5USNm098ryo$wH z@7|(Op&K;aBi~(7?u_kDZd`v7DR?)I@mTdsRmDY7q#9s01G)y=bxS+(UNws_e~*+$ z*|8JSl*}a8ACY}S#AOKQ)B_8d9+uNOXNB+S@({-WKz^~{Q-)jYe437qidv87Ts)eJ zXHkuiKJ#|3kNjrpe_Xh;Gfa9zAj;`?Bu0uG4G5zWx2e`mtScRT8L3^+Jq|2Jqfdj~ zd`_S;a`CG`#&_yoQYp;KhMJVp2cqzV1tn8lZyKCGn5}l{;L@V|R;Bbo9PQAC40M@+ z&MwiQv{`uTNOFl*&OdD#)VpDZMs1s?z!veFEww;R8o@Lx83i2`5WeZnB~pajqp#dm z+)PWufA&fZCS4XILpM#O$H(it8fI|x_(Sdpk3f_yx|?Y|pO``xWF}F>hlxPg+1^BX z@1q}XlCtNvf7;?Z*l?_&W9_(`6RK2^`CttvBZ*hV&^dS5mUjgk;v}$&D~s+h(HxQe zg?T9lroN>00-L^rhq(4wHGIT}%Nb#h#|5(FuccF7C=(R^0&#OKq%MTFj#2X(?Z@vr z$JP`1NMVfJx??^I>mwiraOOAt2Z;&rt|Z@eeVwQ4*ctz|jeAZG2Qt2wbtK?_?9~KG z1rwho8t=}bB8RY<^1jmE`zjM?r1)&(08ms!t?KqFoZorz<)|9Mpl7i&MkjUn`uALl zOZ0uPR|Q7p6X(}eh@~sjoQC7Y%u8N)p(YolRDf*b%NjM=jqwyg%28WEzo8k;BKzw& zdmUWxyn_;tS|onet@oqn8buPNg!>|QqUvuo=-tsa?}cREh(wm-Xwz5&Y!}R`2rJtF zl-UZ1sgEdsF5dg>lvj1Q%=4fQXUj@09v|9OGa1iI9oW$sI3J^HU9%f|eJ*4_8?iJUlw!Fp88 z&edBSNpy-7H8q`5eX3{fYz%tWJ&sB}6a>?a__+c$t-09J8uRLnxV7ku8x9|yvv*$T z`DhWa*n_Sz$%~bs+8my!8QtLJ!BfmOvfrYr6IbEjMbYY6I}#sun!tGtiRx|hxK6`F zLDLg<#=rHM6;s@s4;2NiXSl@iNqAa=(-So$cE0xZ2TnC?7aH6isCLino{`>y2vX%5 zbJDz<$+2OL{~(zfVX?g`Su@AR@(L@EY2h)w63dJFwoMH6r&~GH*_&a79`kARit?oI z@0xXuO{YwxttkiFWmmL5vcr$M^a#2ULhOt5OG9&czh)QcBSyxhp;e>tca>L0pjE{B zlP5FskgLVk4;Z!co?SDxDNL8Ty(zNWzBM9b@JiyUCBJMiEBz<31ko?q&g7pUmE(@v z^pe_Pr#2hvQ}%hMGU2e6u1NojuQfj|j~1IAbFcXZtYtp(eX#fOmLZqso5-sV+Ub?c z9v`oa=9L{yh)!G_@8r9LJq_sDk*Zths)DX}p(F%%#3RCb_M|Xw>!8879)&wddYZvp zF*!@GSWEdDy`PqB>s7qF%XrgNw=qp8_m_Qw0~z*RaXG2?jti>fhYlKznVozVgM(+Mf+;Tv zT^CxE^Trq65456RmH;-q-B2@AeW#$OZ&inTitF|VWYifdDC{k*qmTUuPRM`(xO5Xn z#aQPP)>DkCD815uc__-Dd@ouCe#Dg;zu_&0%Ek|M%;%)|d{+07->O5VX{oIolrgn3o!ZIKg#oc!zcO-myqvqafI_p51+;IcP)70`!k4Hlr9sxWd#GdpP z9KZl!ee1P=+dTGO1y#S>K;CdZ;YxFBG0z8Y3humK{i#RncV~2rrAI;x@OzW`jnaYL z79tmA9N17#isjeqaw4E9gC6u#5#qf+@Ld3dlgKFUxwy((Au8y1ybB*FZDm9Y)XvxB zz)~Bm*WVi%JFVS$PoK=BS1eduyBB)N*Es}kl=`qQv)vo*zE33JWWFe4&|VEYtqZVP zU=G-CM?D#zgv_n;o3PZd;9ZK3KTB`y-Q7jNpr;4|js4fOK)DQWhog2vwTG{9G5FwjsyM&$q3TbJ)lb!Jh-*U`PWsrYQku+0SM*>| z#HUl`MV*syk8l?_0%*Q;yO^%?J*WS-fQqwUq|u${c*npa3bk9~c*LD2I`?)nyQ(S^A>$Evri&Ezb@;mZQ)(S~T&PVuWGBrtrNX;T<$@Teh za-*Yz@O*v#Y->5qF}K-ML&wP)xe7-UWn?^6lYbD-i6E%2vkH@KYm?5F8j(gtzIJePz~-y|sO(%V5FP1wo$9~$ z$ZUM^9_3qUBB^3l?#=5oejWMD2sC-&q5wI6INd#=btnt>tC8=|;46KsILfF{W1Ako z9Me5To)&&t#F)tKp~b^HzaZ{ zTNqYwS*oS|L(bz`AG`|OQPfvWxA4%|z$gyCi?SO@^`5t_km&Dt1D*7aU=A(k`TU3N z`ZvESp}I|i`)g%d1lk;Ho)#^Ve8AoyI(fInkw#VYY9^2HQHJ&+?9~5#nSH;=*JN_> zm-!lDJjO^231W+^w>S2iMJrO@3AKEq@nB5)O z{vmrpA66iG2Urc(v-3a@lBY*^uFE(^*Y~K8aW5Xahjk_zQ+vTs8xwKa1GzdA<;{)2 ze!b2}-)ST?c(vM`l3YZtgK*V;pk;ch%ClhFoV5roz-N_Q1X1M9D|90Mia6#5sB;aR86?dea*C~)*h+dkP zVh~$o8u#5Wm>6Q#-0~mj0Um$7(uk-e*NOJ*pchgbJ)K$gyflT2x#t8$%TiXc6+}&` zA~cVIl>Lo!D*P zK1uY{cWJy9UZ1QE__R>@`1KZELt`FVWA}7R%S_*T7y2Cv%BSZl^a3~Qpu2nA>nA68 z=7Cz|T2;yjRbAC1Tuc`xXY(5ZE8lGqZ*sbkc=8!N@86bh04b@{SQ&M?JIc96uplfI zNv&EwmWV(tYTJ!q_7I1Ay)+%evMW=K5~&GkNE#0oBd2H8vjcBymg}_hwT0{7@;vPQ zG1ICZS+Qp5i(!!BV?+UE>gc3XyW15IT;kkatj~^tY_A+ym)eWLZ0R{;`H<6c zYd~x)+IS?rNUm!z?lqJBegKKm%L)#4;;)*000fhRR_kHLPWmRN@u1H{`*YNjP;J^A&! zc0AmdhtSU`WgecOYQ}3~Qy=!OR2b|SAFoGRgx`OR*dCb!G}pf4hsOAF2TTj%^$OID z5sxb6?`S>6f0y8>4TpK{6GoqmVpJ?HG?8uB`AD?Q$jr2=#aFBGC5E*%u==9EwJTYNUL2EKU{%YPYOcEvRdHBlhw~8%B-X zvR2D=)!ZBnXN{W!@ZFM5aXCq@&(jQQ(U;6qe@hp=#pF3Alhws!HLHmAzG0DKR%$=) z>Lh{N^(EV<{8LDY>^G7Zw`<;de=eT?=q@&$sWlr$5x<>vjfguz#2+2@ddD?tDx-fTH6e4>aYEdW29p5ziw;U);_(5FRB?c(G}_ z8JYAXxTx>3OPn$NrNtL|Kl@u1h$`L+Q`78UB2Inoz)*e!^xtCQtZRQ3FZY+`U*t($ z?NwBh#G&qBNpLQK+G_lEcj$WtnX|vh!8V^4x*-*{SNs>JSvjaoFb>zC;@qza7+ySD z3CIqz>ZTudb0}T_mgI%!j2O%4b9LA~!dkN5SSo6%2}p+U5Ultxw0I)zsJ^&ny;=Wk zH0W5ajL?*ijWhOqEy_S~!B+Nhu%`IpLI?0Pm!U1~!b^12^m@J`J(=(jACavl8k|g5 zL&kDY1*9Wx_bz?Gu>u_mXBI;!9mVWQNz{B%<#_3-2Iui~*`P)gla%AuJR-3npB%Lq zB%S?y*@Z(XKfQyexUvVMz_~6I^CLpEvHXjNV2ZauI*V3Xv!r#CsO8wa1vBgxRo+N% zPH1owjjq!&>S>P@?hYdUVKTFO7Q^o&2ehW29GX-tJO-GB%uaT?a!+d1jhq8|7JB%G zL@49a;*V3t<~(n#_@=zs_^>Xh!y<`Z(3XETyjL)<`&whq+jl0r+XNFIe?69cRIj)* zLCEo%9+URkhy#^2uaMF7kV9(QPK`Hafi#};3JLt2Jd~L}fD*HV-9v74q~XJ=yK55l zno>)F8d+ui7Yw5m=aTOl#nZLuUA!fZS{lCOwEyK^^YL%l4zx_1EBLD()WPV7pE1~X z?~+pyUpQ|q-g`+H@(7rY_hsm4@&S?QPpuLgj)E|aTpf=EEg#gAuahjx)^rHnP$(rd9 z2L|xc1$0wQF`6s_%X|#GX}MnW5#_IHnlZ)-`5(+V!oh;?mi*4Jc7n zbNZSyUJuI;E7e9H@r_I*&7Ea}tvK#B11W!$mxXRUY0_SLpaZ%8oN!2U&IFn~^MzhU zu{Wwx!pMpV=U?c(3cV@+Y-*4QMm>&pDD~N8b~VN(nZ4s1?dz_*m|>xVu0U4D;8z70 zAybD*ZoSvYZ5G{co^yu!CaYVq9MuIveWyQcN@vVx1Z5i(?xlt?E}uFh*8&c=IIE6} zxj%Wv6Hy_{$<%Kup@|c7UQ(^k98bV1@e`L1>^%^@OGX}{VRZ!kvH6dUQcUG%#p=w45gIToH0NDa-m!8lIM%b?3cOECZ0*3{^Y6m$u)*%<<4VJ&vv2t@0P2N zP-W)$$Cj(1&GvXbRt&AF-~A^vT1Zid=Qmo(5+umlP+vbfz#S)vs+K#<=uAeXu&YAY zwuEH4ZuMlxi%G<5dj{PG!B~3dyeHCL)G-b-;aa=?Zt(K>) z%p0K*dj5}+c}TH|CRbBS^@`b(ylPwjr3HZAewyvNeFtlp9xQG3Ah>W^E`JUAo1Is3 z4hSs2>KIaH=Zs;>jw$5yFL{ZHMh@QH`Tg+(>X+YKL}D9$I9#cVbHh>GN+ zsZ%n3>9ylYcKyK3i`2{?=!HGePd?*Eeybq*=0S(wzwI`NHbIviN1UL`?}?HxIw6iJ zszmuOiE5bUnZjU56!Xdl6(WkZDwFb!HB#Vyp~LH1gx?jEcAk<7WMJ4iUGqC!qD5o4 z_K;4PHqNMh2{VE}FA|k5SW6y%EVFg_Kis`%Sd(ejH9R6Bq7+4B1Su9kKtO4sgQB2F z5$Ro}ORu3LO0m#;k4Uef2S^|aD!oVxkU&H_0fMvup}Z$|eeUOdpLu5d^Bu?cV~&Y4 zCf9YH*ID*nd+oJqU;^YhG+ojtyvZ`t7*%yMmAwzpK&JPqG?JW}cKfB}Xbt6`A7oUG zTI!u&`1y70A`o*H=CY6k+XCcAt(!>B^ZF-!$kr}_XOByQXayyOO(Nk*?D`inQ!FVa ziPtVO$dL&GYr~{Z`(dPeAVi7X^M<_s(1;Bj(Xi0a%<7g_WvV~ofnaf^IW}b0t-dGg zzi)yx2Ir#vz3P3?>Vvqv4y^&JZ89=T%eVgfOSiopeMZNSFZvFmDBm?+o|M+lutgn; z>Zr1)p$S0^9ZusY>#+fiX@gHg?8>G=yja2Ex~DBybMfPnLu7l_QbQ>h;7i(atF~0y z^SG|#_50Ym$)}~Jwj7t?1p94ZZh(&ge8Pn*PR@$co+;9Tr-D`sqM@iMI=zV@j0hn& zWkT%~ylFR7M$|s|@SIo|Zd7~NQ_LhA)5Up~s}0?&dF}*3BNS1%-t;m};&*v`?XuDsK5^0L~)i)|7!XtK@JIF``Fi zT-!+Y@}r7Dhjb7mctfft;6GEIpE@vs76?GdcO9p4GD&drx+mGXbs9fETmFw2SH0 zREKdU6l*7fnYqc|L*~E29lPnz;*4hiTB-FxvY#6wU+>x@obZN%_C7&qf6Wuk<9Ok~ zId9dvEDbD(Q*eS&5cMs|>qD?AFF4mk!>L)8sf7i}xw8nBYNVR!g%vTlk%39e(B|SY z(Q`%v)MPl&sie>Cl4#oy&^rQaUnQ49hHFq|8O*4mG-l*j^h%zzcZ0ZTo7PO(ye#LQ4%@H81YG5~$W11iVU{~! zwR2XaF-|@P(`3>R-ryx8zh0U6?M1ld1Zrok=9Ko~F5!oIdp;zZP59gVS zQjZQ?+HTj65ng5~hIJAS{RfP!kB_wj-vHQ>1$0HO=BugMm`BA|pX24FV+U>58|ixY zp?hEyJC+-Fy-d=5Ck$K%)B<%rI86*6h7(jwpo5yq9rE1~UOHVwI-rU52fSN_cBZ~Z zUPxWc+k>=1y0E>eM=ASbSZ=L2t$3R+Z<+e1aUzxnD5u6v7Aly8WrL`#PX)y6+<_t| z>Kf{_OJopGNm9o$4&>Y}?fTg93GNV=KzQ|KMo8|?bntOcT~%89RZQ1AGshT7`ISB8 z31=JM(J_a$rLe%e4lMe$7Uq(psceB}lTC#T?3}6{;YKIarTv^oI3?SH*%>e5T05{? z5ozf>Y|^!xRxOj&Ok)r>1U<(g=dK*ysoW)Y%cZBSZ1UE8 zg7Q{;LOjAYUnVkToe~y@if2Y;bb?m*biHb`Qf25RlwLX4;E!w&ckv=Ol?dDKYMS$P zcLzVwo>)M!?miG@m{?8D&NV|%G0DYGlT=FDg%6>tBo(Y`>Rui5BhTVD zi>|C&_2iYHwX9PMVPVWx-O+_wnX$GSa?9}Nwt|C#$fa|Eat4f=__@r+hK|Dg%yc_u z&10We=cJ0zX-N0js$R$VVsrsf_=gB1-<@@-vp~Cfrf}E4zX>Kf z7sA6WUl=#hm#4;Gza7i%DZX-alt!{i&C%$nr*9Lj&jVEQ~8@E1igW0K5#xK<=l<)A-qsny?Xnefe=j(&@mayLE`pzd3` z$^chbZwe));Jr(0588QP9jb0sqp@5M_q&(H(tN8Hr+L_uo(~o6I^a%`$e6<>JJlpeXFJzH;_8o&k!pM|{ggT3uRED$H z`D>m3CUXAYpMuVDuKrl>Rq3>YN0*e`AllGLln0^Kb}u;{;FR*)nopp;I%{4J1@mO` zX+Cw9y-6`Sfz@(7ROFP|ZInFhyCJzB?HZIYAlDPC5jcKU-_xf1hUCJ>Cn2j;H7~P9 zL3!(AJx-?`*lMnI$~BO&NokFH0hp&3P( z0>LAiB`vG?G|lcl8xR*#+h+&%&|%K6znL&IMPG6%+8P!uJ90q-NaYknkGLR`=hcaO zl;ZGy=)PFAD5;Tt=}LVup3SxEmh#Sed#cw`#m_Z>B~dk;4zpbD5aW*b?;iT3U?TCF z)gxfu$Ieg zj4omv)hIMm*gb2wPns9#AX?Biu*lfq%5 z!>7|4;F1&W!c7|D8w)F~p}gakQnDCrYcxjN78=_)LSzP3PT<1hF4IUMLo9*x6?zSWaZZ#x%?Z?-glx_vDlsrgXMO1kE8M&IdP?{ z986twB$F~@Z=#Q060;}>rDpUjr&qsCmYMeuA`;?wqL>=(Cg@hQZ*a*1Tb{+av<+ zs#kHO%-U)j&620|K8G1}W5v2CEO1Jo5L^rl;(v1l zOe8dov+{XZd)CX17Wk3`Ck~baacI4CkFAvc+|CG39bAR)#Di(F+e`0$6-*gq$A7UK zX?S8^cKz;aCv*l;2*J2J%JICYfKbEvza5c`UJGBCrx!bg*62%2_m86#wm+CL?{?;O zd)@9qzORrsd(2H8oD>he^3?@!;zK3v;iazQ511(UnGa(G=+X58<@VUb?n=ukmOz77 zjh$@*%!6xl9#`NB+oaCg_H4J8`&3ffcHE`fKA8z0P6aEsb2*JR0(hMAHnAQ7zvPj_ z%Lt2ly1QX*@gtar!bnEkGsn-I;zbMlrL+2Ss|UW*W{11hPYh5g1RVZVC_+Ea zC2l;kcpk+nS)|~d0 z-E|z>Gk=W>H@0=8#u?7=E?5`f$ED?sH0Mt4hnx7=YC)MNHcAm2u{(Hw4*jyZ!m%0> z-Hj>{!}j$I1YpbNEf&!_k9w@=A6H=v*IVe9hIz(-rHh0YDAf5BJPZhH&P0sUd{}AP zoQ*CUciMWnwY5G^#WfDvJ~)lxylJA2v+T7HHp0kBy5D~UB9@fIQPy)>z*?y(Zl63& z#ZVIn`Mqd;=OWFz|00IiWDK!6!*NS{5rdbH6=!h8E`R^b4*%8UxrI&Px| zGqDQS7+2UHY2|LK>TUY&An&+mGinD<_1>~%t(&Xg!|jdaKBV6POzTER$D0sA3oA<4 ztOXe+W>>qnG1WU!Qp(_fsfWDG@LPN1id`O8eGSRS7qC)}^BlMRPQtnM#sD#G@@2Qu zmB25Sk}wmJFVVEP4q~=2aAmBv{nQjvqv!g30633Pb^*Qu({i$x{~qkJC`a(9r(YR> zr7o1JOcNnQln6#9>&a_O)6i!3JtvlL%QYNqKm0MRQEB#k4f2GVs>?gz@L91ImIo|B zIHd9B+-$sgl-+fI^2EwAWRIiqDPJe9?Qw&99%y#?Br`O7!CqQ~=dn zFIim*){<4f6!yU0sA2P zo{|JKs%{tjcn`u##o#*X6e3R0ZwJCu(;24+dKy1h<(iTi( z6s}I21twFm6>iWiTLgdG(RMd@4r}%8!xzvEVvVi{RbuzCan8K#ANUH*T}|wEYmu`|+u_V~Zx$Da^vsgNLL)ZxOvb?Jb+Aj= z+i6z4VbY)qc1U*Xm zIF^Eo5SMU{wOXtIUY7ve5zdit}9bRXugarSZ}e-hh35N!99cg z{L1nKHCvQeUz8;$>sCbaIUaG>yI7^PvY@vWiU0Wwlv#SdqpA3<8 zLLO5f{Z3@-(>U<|jKiSf{k()K{RTZ+6es41gZ|OKM5tEO$>8sWXOWW_Q z^)206>x8#cuLo1Jtt`2vT?*X0RZqtQgg5duV7zJKj*0$TrBm{kn`!Z(fyJ&KYZwZW z%#tbjZVeP}nO!7K&nAT{E-S$<(lSEEM}`PWinGkgcyH-C$ohOYU|V_xmf^`l-J4{G z!0{2iJ_WC*TT@ic<1gy{X{8P(g6ExXWkK1>>bF$1eoFCtyu?H;)J0xg=KLBsAspCx zQRezw9{R51Zz+~#ElRR$1(-D2LFDD1M#%9S)|uXh(-UJg%hUKe$Pqx{yEUjKV$uJ( z(3GsKBx_NoxJ7GEIEV}ll%LX}#;7kHY)E{+hAn~1t z+t<_@!t^M*XO6Zz&SryqvRCf#vE1Rt=?DA?+}&wr2?XMs722dXrg|qilmECs`ugJ_ zi0L8RIN;}rfa@sL6k%b9*>_yxXUZffo8N6*jXlf&O_<^X?@3I`?=HD1l>Z=Z*~g6H zE!xwGua2!$=8f1A7)5d&Yj9Z#6qDb+wj2Aj?tEjSh^vost}DkljNd)fL~|SGPo6>wq9=t&-&Sg)_H?PC#b?Ik1RLt!R6AfhdXyr?e&5XXhS5uHbMhjUFT&Nd zLx%N_MLIhhNINTP0`Le^AC$Oi-J=^mr1DZx_2W1lZIq^j%LHC zWzzj(-A{|Xuz;-)+$hrQd-Ml6>w8Sph?9?_K?UBsy25+xp7Q$OI}7?ZelRQaUQzfZ zIjM3&0luz))z1AY8T&-q>ocYBGOe(uK`ZN6id$#B=df>VkleSAY;S=|6H@>t?G?MP zpT&1x$`uz|v2_-);)e+x3431(rB3chzfQj1Hh1Ggnx7EOVHpmW8<+0yncWs3nj_=- zdH!RBtaw)u>)zfvh5UUs0%8@czgXWD_W8}g(o=9#k0HwmcTmjGAFDx57_k#U!CL;Z zNM^uSyZ&)pn|nij7Vq%;+lGx5?Q|lUDbLH0Tjf=2_1>xXh}d19b)UH8OhpfB`LnJ2 znRor8YSUPa*hMGTAb2kqS3hzlOCoGO9FpSG{iRgjjUI~o!$a9E9|Y0&Do?ADHVLS0+Cgwf*S zbf3lc0KC+ssr48!ovi)FPVK&#y!7O4*g5mw(%Pa1->VD$vw4+Q??4i4IsD1Esqq(S z;fqs~=Fiyw@C4`Fp>RTP<{A6WaG7Rh^W@21&Cm4oS%b!YW(QsIXGNGyz|z(o`aYZJ z!EbSY-9N`&X(gHzT6zUtI(pd-@@}vsnVYPw7Po=xM)j-%HPx$eA{sXO^_Pu8Q7nF{ zFOZj+noT06)!;|{+QtYGoKEqu>Ds*cRo4)PbK_Gv542_qZAE^FN6{b}SONGwS82aP z1C2r1@~r{G=e>`WdCX$sIu}W&Zb<)F4SbLx<$E%5A)Ga_&zts?t@CC1S5$H<%YkT7 zv15}18uDU#33kg5U$L{ydxYJkm}KOZxvY`4_+!QS^(j5Okj;G(JnhlyEr5I%yw73R zI?4E(42E(?L_`Fqc)ql*WT+9AvXjm%#X{b`T1lFyL5XW--8cCMADfT+)08 z441)Squ#+p*EMwW+3i8{xu%pW&qV%-Nx7A}@@ohgRBAUs(XyDirM=TVG3ps(Cu`NL zIAxg78a`~}3!#ER#D$So%XoW>amX#HVLX+sH z2hhGJORqsvQ|6GDhR3~`MPS%ANV@@UWkWAYS=l|X=kIYIas5Ct1Vv0#n=-qL1U)6m z>YMl28eZ0SdQOAC&b(=WiKJOeE5qjgaLe20wxc$CxKK0UlGi{AAP*(*=@fUoo#||R z+pnSOBaEqUqYWnfJi{t}$JBR|me^Mf6Q51b(|~+?zhUg=_N~RL(R6*`W%6q)4!pENuChHshe#%|Ar-_6v2s#r00FDlbyrh33L)O~Y1 z74UV48d#gxdT{#YSG30ouFG>dagn4ZWi+4~$_!aF_}SbcdiL2lvN|3DbfBx-V!TnO zwz;OKP9xlz--p><-jUOoj3G4htJQ5k(fa0>v7-j+2$J3h_35nQ&2y_Dt=iJ;Bk3R_ zAmJ>V$z47_Ezxfdl=cbbfj*ee3k$h-51Vp_x;R)xdJdOtC6G|!%7J(LvLa?d%pCMZ zqk3_BJNR}J=)_duEY7Wh{Q39&k_D&7`@5SKpI(Nntt}m{^M56Lnt?Dh{k>W{d_ZVu zG1g*pC@U3K)i;5Ki*6sB+%r#=uq^??1ZuUZtq0>a0n!_!M`5g8PI$>V(Y2y?gt*IA zsc4ZALjFEsnTMV}@S`tH&yOz;bNrEMD2EMWTrsBfG19XKzp!CAwO`NCc6@eMHB9MH zQnA6a+m;~kUH*^2_1`GCbib4Efk}^N@kvG6k+3AbQ$j#d=7AUUk4wjcR!1bTwf3MF zwOzE0Hm^&qh~K+$6Ut6im)TP=>XR-4=ns@OTagKvLMai=MKsS4nLq;!n4>oxQ8s zqX$+4QEWXoquk(j6bm(56GoM)Gyb%~Hu{$@Q92IJyMOzrikjqN9PzUFoZQCE5-FhP zXnpVS7zw|8@*0lzL$j-<4#&8|hrIFfaHOds_u<~0yhX2UaeJ!#aNCu2ALit~Xz9A3 zRVIGD2gMhbaYGZ;q4KHX4mW^ZQyhrRO_fskN;O-`E>Uwp9AmpgZ|4@=W)m5JQW2aW zpEAH<+2>R=*;JdSl0%!i!`~H5Wg#ka!4o6Sa{iLA`wQmTN^Bhy&$6&|z*fDjY3`^# z9+9TTu&`9sTiqQecd)cBG()FVBP=sN=YQx!PWwKgA}=~qTfg`AVeY+mPZT5oZ2~cH zusB@Gzus*v@VpN6V+vW!mLaj){x!EH_URVpnj%k4>6JXXy|KRoD2m6A@gp6yb(Spr zVN0OYvjk%2UhE{zlu!6#!01d;M~pHXZ>Jiy8)`?rPQ#{8-19XsEEd<)SzoSYsjF^z z!^0u8j3u5aTX2;n!S}CvF@DTbW4($tb2O{fXyk3x^~b!oj#_DS8&A)1*hJ+G8IR*H zV#6YNG%oTC73sP#KNy5Mb!E5gv&vVyXusDB^lk7stvjOeg*c$h;eTa+r2!*9JD@uB zgPl7(9e+6mpU=~!_PgPxl+3)Zo*SHH7FWl)))=vyiQXK(bP<@)I_sHwA;3PkwhUQ! zEgd*<51<$ObqP@(6Koq_5l1%50M&)rQzBd3!D!vV6sr#{z>^a38xqg!gqHZOIlZ8%{vKl3xWYmXQR>oD;r`}%Xc zHWtv1zptLy&e3@79JZ<^SCPq?#gtm}xQcB9wQTA;@9ogiKzm>}j5(YiiJ6sxYBmAk zrtx0D9%Z8SB)rF{PqH>Fxe#1vFS$nrDt-_Irwzzao|BlxhCjMO+y)E=Hx0CX8#7tG z0s{}JBplYmc1jnY1ytdBlbco?jA|(-l7<}&+qjZMH<3g5JVz6!citJmG#-a*)w@P#<0 z6-1{a(arm9=&noV7hzSiA*L2dNHxJbY{#)r{tm+&JyhANhAo<5FSR(!d{zPFp*?nFGFz<@8KbrC zTPV~r{b%o8l=if~&tES5HC%V^pjDoZreug{9{07IqSJl$5u-D^j0Dg8&UBncCu1C} zYsd<87f{^ZG^UL$e{Y5+PiNE1tJm?+9*cl5UFVM%Vjkf(<&^2WDVlvd`_T+v4& zmA+!y=ky4V^?Sl-4bQoDx?tul)c%LUw^C!;$^!GzdYm%4x!bD;%}mcc{82Z(y~qVS zj^oI-i`MCj@VA?HkE3sYz6-F)IIFz39$v3^OHYSQ(Xdd{6ZwbzQ26|naYy=Ky!rmt z=S8fb#w_Up|5t>An_}0Kg7JLmNSdz2U0PPigJQxM<;%ns&x*XM5MR9CI@?8IFa0M2 zor37QhP5d1@*6QJdwY>12OogxkPN6^NwqbFT7++&;<_3Z)x#uL<4@SxT`Y#LI&PIG z9A=kkV4Ozg$Ez()#d$s}tj(d(ce-Kn>jZTc z97JN@H??o$^`L0Y0ib1I>gCfP+!6E@)rxLIlJ!J|7nF75PnI56WrOC<{+JyTL8j z7{q<40}~A;hzrczU56I0mfL)L=2j|sV@-+I|9RvDP7i%>5Y)Yq7g;gO9ipd7E&IHW zxB@6p?{+p43mo);3)LT;v)y@t0Q78fqc_c@A02~9M36rah|8kPPa z-P5Z&-?qe>@o37V;2WLRH?O!;AxQ!m+z^=A!$sXFlM3(6&>I)m$7l>tK51v19EzUg z&7k_`RC=4)QAQ*af_zs6I#qtpCkfE1jl4%4_1TX;@RxIv}PA$v+c3k8;~2gj}sj>Zt$pkxeg9k3}zEBO}!ITmhHmDB58sNL`+ql>s(zc z&)2aoGj<`)oQUQubra7Soumirvw90T!A{Am7g7&pWZj;>2bHhPt_mt)vHN?otWI;I zrMd%yi=WBKD&vy??VZ?bC+ zk)N@M(DlGu8h5`DN?d0;Qh8big*9eu7`(11d-?85=htG;VY+Zl#g4RPmBsh1I|CZ% zwgwM^ssf^ECvN@oabJ|-koV3S(_;|g5}|?u4s-Z@`?R}X+ee}%zP}G5SI$E9;HR54 zOz%%i*r&Zj!9B5F=8Y@*&oVz`AKL+jy53LsSj4vCS;U^JfXt2Ss`;GOvuB%C00%WF zf0DH`PF4eKS*$_{3;Pxsr;B-3WXD4`8!wM54zs zb=2;y8fKamzQ$`ojq?5%amwojFS<`bUmz(=0?$uAyf2%ma9vrLbXp>)zPuMR?icvE{bgtDHto_trwb)_Ns+TT} zk1y8mJ{^P2>`dL+=o0qS6)!WmJSt6dp}*&PW7v{rRuNv$>k1C4lu}u#yu&wXg&g-Q z0`tyhols^wb8<|yPr~ts`7K2)fK4@PPdAMhwkQ9(cLj zS^r0G*9u}Eq(XbGV}$0weFALu>@sPaur5*oxREKKyuvJaxRvJZ0vU=14US2Gs=)z+ zbB2aGTBSTkvQQXQJPX--$`=-PyfiA@=l&68&X^ok#9frYc#^(eNDq7Wg3W8&ttGvg zcAosXBIC8pQnCn2!jIYixm!uLE?JdR8)eTzt7J4V}$t9q6Pdqg*#n(BEe;ko zF4?{mt_Ur7PXxUhtNg0Zb=pDIopHoi@orQUE0ca=M+yXZ>n@F)ih+sjho?h7)w`CS zDo+wWmQ(N)SNA~J?W09+!(Z+%|qGGU^#;u|S!5*=U5@MXEOg~OS7>iT*K}W)2^&+L#s6ot_ciMMi z;<;mk@8pgF;HOQu?Png9f-B6WZHJ2d1qZ;MGnTd6NSYw8^+*%nWD-R6e=pN!(V0Y) zGd25eEk1XACMAin>(7^xc_wF6k@@1ij)63EQW{Ub@kPhfRa5{XPhLzbGjJ=U z4O7InAQq;}Cilfpw{xXpy#Y7=K)C02`$2krYwMrVSpC8a1X(3E8Al*NtCZ2IjE!MW z2(z1&%e@h|AbqPIDU}JT+$e3%4U^g*ncNIbRh3>6)ofKQubI40pj!N`6M1id_BjJS>>1cxDzQ19)a~70QcX_NP_tWi@*EW#4zrTBFUktf&L!9ZAUJ9lJ%5FFF zL{@p$Ls7-ctX<+H)0W!>Iqup2WpDml3Ugf@G=6_6gna~@d7c;NpI5d}rg_@q6SZ#P zDAh#0k~1~OPQMIG6*js{QAizZ_hNZBk$8fd*#tMGE&k324jNZ|0)pJN-9Y??*$^9aEB1(b3$y-Xw(!5C3P;9)%x%&t z6tLS)1-_C%1yepgOMSTa4xU4D@ZaBuIJ#!KFO3Yt@Fv`O>KTGsnaQ*0^ndW}mU=~k zexvX{Js-ieKI@+ZZJ{)}1l_ARQB;)ige0o?ThJY9n-J0wbBOc^u_7n@BjzbrrD1Jg zwCW#_CjVeX59a%?F725hMG6b&L52t^B0#YdP;^7S;~J_AZ&%K>I(bKK#==@ z5Ec1m!Vnhyy6pW9C6nl|po4s)>m759q}U@d9- zd*hXnL9h6myw#Qrd>|E~iL ztb?wA=jDB=ri%c1HP-|Ae{5`{kiYO7M*_!7Js??lxQzq@8jQYu$@I=q?(poxU)Oea z0{64S%|Av9-gqg*_hAGW&B3~U{=axXoM3+r4x~Do`X_9bD^MZn8p z*)CKJ6gAfyv*4d87j-n^>>`0CXYz&8zxvBTd%%se7p513P}k-3o2ax;*|F7);gFZU z`@KI~c$%Z8|Hc1;ul#F&`1jwt9|YdO`S;vaogh!zOfEQ=*#!-4I(OFQk%(HE&3%v6 zyCpV%Rsj27QrPE@wB&COzI9FmD2-lOZ({32cP!iJy={t-A-pc9h)GUMA!t*&G4$!M zmV?4n;xE4a9AohF9dAw}UV)!qj`6FwX4GUJ3e> z6Sh{3s!^*QyTCSQo#!~W@k=H%T!tU1ntjt7)P+Sv8s#ruycnCADG2-|fQx(K75Rf| zdy(@yrVr=o67DEYf^annaA3b3*;<_2wQ|w_BTV2wH;;df*ZB$s6p;1%BzE3(@OY53 zGL9CwOW>%QiGj!un71^ObQj`&;aB&%DeXB?bGC$inn^=8<3q4#ALF0`VhenehL>@= zr#KD*?v2)Q89B;{Xz{IRQqaXK{`pb=_u&w9g-IV_Fg*!DJUCj?1E)YkOnCU2Z}Kd_ z645lrNqM6O2dH?|h@jPcw4jiD+4=epPeVlu3^pur*-?qPzwl(7kF+W90=DSn}KGL;-u65W2Fglef*_ry;S1>ccpapzj8YL z`|gn0ALFBdLaffH>tc}fbo_p;SHh=pg(EY@dDsW`e%0TkkOfe~$0Y0Hlb|uT?qIam zA#Lwz2Qn%Z8Mbuuu^wC6<&)Y%yO5%sR2Soa|L&juw6sF8o@Ch>u2FR@JN`a-3i7aK zEf>ri-IEx3abW+7qVzi_dZx*|m5vxi8)BERN`E0K27~73n(54G4^hrxq!BtsWD5J& ztoyU86rAcsCjyL91cdxzxYBCh?#+E)cE!mV9e=tCFoQP-ypcESnmqY}!{mie6VsJde{mD+A1WSdmYiDJHq5m%+f(i8GX$8}a&e)-JEDz9f{l-e|faCY@j~0J9XaF;U%lM=2cI`1IHoFtf z(w?urd)7M`r3*zUc%AWQU8)TtI#c6%u$#61;Vb&Tw4)+lyrA{QR?r59wKkZZlol*Y z0*uB;6smU zkW(5weY9%7@~cmn8Om=vu~K0a=`@n!lYqePCunnMb4`6l?Gz>Q{l&j{p8jp6E#0AT zyoqD4HL;p|=c~$z`i-antXxZGPK=yL`}0fj-zSK|+0&nCd|M4oKZh~bgWiak8#n$J zDfRzHbaJ%NRGL795_`z*68xvPqW^lo3OV5G_b*)dHQ!GzGZ1RD2S!QU`ISYY!1)+_ z{o3i%zp|74UWC z%JN?uw(C1biPnMd=d-^yUt_@6uNvt8+OWm@f$WUyQ1%D)ug%x{;Oqb2F7w3g)4*{4 zD(h!M_R-{Dn)r`CPy%E7D^WbdYi(cep`sPMUVe8R!K!0jUYhis`IV*MdHEPCCBj_R z9oldWb!7E{IxW6kI;B5w%3bk~Jw*P8tBstXw4XO>t;l=W(FqpWTn2R*+JRF>W?0Z3 zD=}X2OCHfGbqW%{f%ssuqUj8_R>JID(CY8I;@=%w@IYd9^$uRDcEB@(t#$tGmp{3i zJZ$}8@=q;*|2U4y-%$s@!sn_ati8lfR?xn}y0|pT0H>&Fhc;{|+JV6j7_^&m;sg=P z?j^6l6%+sL760QZk0?&qmrH|M)zj6D4fk&@B~QFu8iDck*)_*DqgQxw$};o)DhrcP zzZw}WT?f^;1lGIaP7(9L_x|ML{l~@1AJW7N2t3Yyd4F?l)YYrh;W6@AA~Q823&bid zQ(rdkoC*$`Zh7j=O5NMh5nE~?ZP5ebzLQ6BpU?NKh?HNl!yH%P>_(-=(T!Z@Ss~}g zx2w`qwm8%{vz`%(WCp-mj^pu37D{N#_XfYcR^a}bntpv--Y&oWa!tP_jL-J5OVlHt zu3y<>J__=eA85pU;fBaKEqLyD+NuZCsWZjs(jK0t4Yanf@cQIT8;s0a{o(bAvRQGF zWsffGQ;pO%GEaD0T0Sv$4G1zXoLzW~Zm`xq6qAt+rF3Oe%UHxas!yA}u{E~BlYy3ZtMe3Q z6B2rpa@x@(0j`L{gcbWw*ZyPb{K;%*kBu_(@EOvt#v<%ejZ2^|x?MDYuk3$zO&CRulGXjEFDpI_1AsJNxa ziPA27tW7PnqVf7~v-sS8HdAw0Pa&rf;vLRMH!r^X#!9xu;jgToM}rgu@pm$Nv*NsF zhSPbBkZmx2=gN)}rhEI5cb9spnt`T);I4AZ_uaVz1iw!yQ359FMalZ^7pBj)5%mVF zvD-I8R>O#Rq8U(wxnyO>$)Gu((vK400AT6_t==YTuSG@z=-ew#g7O#QzPArP{tch$ zp%1nTai$FcZz&J*Wqdi3P5Q1Pz&g?u>iAp!R3YlWkLTyp!TGtl-dU?3bX7!-%`bhJ zuzfIYrp@U`7%mm|Qnw^V7c!VW#!E(?{vXbcKM3D~22YPDcmbs$72sRd$TwMg2S7%H zQ2mzkQ>2C!r{5k9P$)ugdOgK6)@m5PS5FYN^?0WAgSGG6Umh|}GZ1a9 zf6>{9h-0EYwEsp2m-70Crr6qsGWYRKDz6wV5_>)p{^H#pqkMb?#O+)q?F7+(;l~AZ znJ8#z<~gPUJz2Ff$wa=%H$LC~xOMOUF-C1sAQjrPVN%2bte3-2_My1rWd_qTPLue6 zq$3bUAc8vha9RGZJ8`OjYEyo&n0E#@aN@+zPqST=y&PTl5n!C$6UmAHeG>oI?Cjt9 z;(z^g>h#FpG_Q_kBA1AWmawq!HCb5`5SZnFZRiv!p(NCH)at&jHPT0(vKhJwjh@m2 zlgN+mukHvzgGbT0!GgC!a^^lsb!0KWUNwzI{l4@!(F&~j*fKb z#5=5sVWH@PYiGn`DG?DzXN?8P8Mcz94MSxCq@b?`9dT@DD?0YX^w$W!wY> z(LX(l&sTv}_AKD|+L&z6Dk@kX%}*U4tgsy=e{hNV9LMF!2WMk{zI7w;#1PaH|PM2kuS1|Jcynh1!{wUi(Dm*fBA7{~7XN8BeTB z=9b%?XIy|{8iN`kKx$~AFH7x-L8a9{s=0~Q&;e`Jn6;UX*-=NR?V~|_{&j>#H^~lY z5>(oct`!VTRDvgawj%oVZS0c^Q+1gjp@>!XbXOqF*R1QN+BZ0AQd=Ch+>#T|@52cLOfU3ctHmigmTCt$1Yd8fEMx!&FLC%gSD2oOLZCI(tL^?36a=q zvmMM$I6*sc%g%&Wi`VQLx5MrQE=5DoA}5>D&U|5`HbZ&6sdj?K!M#5QZO&wcQ9U$F z-FcDoq>pc0k&3=kua}li>Jb%flb(vT)vTQ~;%70uNsvB;Lr~fnH1^jwd7PF;8ik(< zW#afu017x+J32L@*eKAVdwz$VAx@w3(=WnQL9y*8j2aZTDcOdGCgvQ=a-fK$~H z$TA;Z)+;jx9&ftQsa8gR7FG@#*Zbbe5g4C+=n;KLLA-cVUkX}31k;%LtVmB6BZnY% zadnezD+bFMUpcTqThU=3x*pY)dS4-eZLQp zmI9FWV|&(5MmH{M<@nWC23aBrs+xhY50`jUz3yaY9;iMUx_px3T9T<}#b8lQ5*h`Z ze;=0`>IBNkXaen#AL0XV7a3bM5)l)A(im$!wT^^w#U81-8-HuW06GRw^Pa)Xn*2h- zIUo-<7EWunWQDO`Niqp26t(xtiRaVd(~C0;Fu49|B~T$?-=hMd-g~$!{V4hAcmr*J zgN`)(T_DG%)55s#+zG#@yOu_OGNcWfKD9v@Fbbt({|+6Qs+G=#!U7Kb__%jTgsZPk zZjq2pHLc72`S>31ztOTvru4Gl7f~#jp$puQ2i#LIQH799Y zx(&azRK?ofZ6dX^j_kavd9pbhXDI5#ec5vC&4UzdRS#_lJ&lklg(LG zvX%1Ztlf6N3d^;Ql0G+8^7kIBPg_e%==MqX7Bv%#7wrQ%&+1B*^}H>%Z=wl3CJpVf$316v z_n3H-!NEu|XyFMAE1Rt1T12MfkDG^mLZnSYeZrkd!^>AlO(-34C)$9>Z~m;r*DD&47KSD-(S z4%<9dA|fImP)uY zGcp8DGYiH7)dUq2Mk^tta*Dpmv|$rC(G5^GZ$NtO)%vKx{S)7;oz4?lQ{WSU#~-e+ z{0&CodKeG~`aP0wItq-s^%l*3jsKkoZv5lZ2|G+_($K8Z>rDdYVZG~2uItR(#}$vc z@Ha=K0^LG(3NxFp}Bn8*=ALqV}(aD%%8y$zz$J5JiU+=T{r^~~Q zPP@G86q6yhItknBhKC7~%$tke`FK^Q*S7uBev;om?oN>QNuZev!tK0|a}(+q6SHgd z^fB+~%Q_x+fd=E&6{04%zU%0t$;dd;b4rtZlF9l`u`_huIWExN=T$fGI$6%pL!|T$ zIH3jNj=B@z=z~Q3!|hAxonC?drPyNB=5B+ur~RC) z!_J@(u)y?EtVjIG(1`2KN}a@c_^EE}_+Uk;YNkYwnFl#zKWFZ+3JQDrSj*wkSD3@c zeqTL?N9RwR;Jxs9qWq=%g3jGzF{UT9-@bmqsU!7L`|OvO86Q4;Xrk`VIo0oLP>Y_U zj8n4`sjBK+T6qC2I~|*zo_-D8MJczpu8PlDimbVuaRCIfjP~zCxfoVVgq4RGE^g}w zdns`Xedg}K4JlhrWnO=y^JWz#*_@*rV!XE6?H#*0?t1-p9^6Cs$JUu(SYtFNdRdaV zf7jlqX^frQ+PpbuYxCQ=mDsy*1G)TC#C=uc4<(0$^lUZwo|~{{zyvYyH^}I3w}+z* zf}GjP90tqlbF*GW0{7X(5`&CmGdt_d?aakZmAeZedEG3<9TPQ|9A-P>c|~GFG+|ow z>p-Y1*<>#jsgugSIqQ66nz%QHU)sPDS#!-`Ig8Z@yr$wViD>CqJ1h0O&vcun`Tj0z z$HQC|NP9K!z>MGEiR{ulA%tAmnA2R3iSYA5eg5D=h`7ymc(u*Xl5f4s@NDI%&Lso4 z84_NcyEwD-)qZ)v6Qm|j$-c^I0pFDIB@_US_ zp1M1i`Tm`|F;_yC)AkIvNMs8R)kD^;I3LMplP|wiS`x&`+;#?Lc0ugOhPv@AW8m|GDR*}%Yr;Bsa9?|KNl{~DE1Bq0$m-x~k`?mJQdhp2V z=i@gF(AA>GD)S)PN5@x~bN?RZFj&_ls?}?WSOEX&@%~rVw2gHoG=sVNNxDn%wGNpO z-83<$D-kSQ{_KJ?IO^cE=B_`NSp{_}KEWkJEEQnv!|mcW8zrhKa^zT0Pd_u!psHTUr*>9_EEY4k~r#_hZ0ml&O|RZVq~-(jl|UVF!k1s^4yc*?`tMRu8FFi zV-(aK6ExtwvpdMULLJgtq_&?Z{V>=Uz+DG!x4)LDvdg(kS1ozdJh0KPOP3A!=uo9< zqt#ImZs#ad(nCrJIZQ4dmXUcV-kvA|s|lzVvH+~GZy$2`R;4jN>~h%~HWy_bO4Cl` z{SoR)XEb&nP>-8d&9e39J3*`7iDB^Vp_^&kr^kDe#qQBC^Vw`Zw7q@uEUTDJqJ6qS zRsO}H2CXrClfS~@<;tfmPP%c3N8WMVrN%Ar;mGG%8)CWBM5;**%6P5XtzjZF9MkTd3}A&63B_@%x!FTc2V(;B z9#pRHtY&{XcOiA-9Rzg`<9cHEIWym{#A_ zEOL%oT4GUZ?Rv<$Dk2=cudz$=|6;7>GLdV?<2|26)>@hy{e&mR)tlMdr=xZksdskr z&APZ@ZvKIIU#CzzSnG3)hl57pxAm%9OPiXNR^1Kpo^InS%PHT-cJN;ZQ+HVSYp_T8 zRmygcwmD?~%Ew|jSEJ|;@x-zvIP8H>Kj~Rdy6xhJ@GN=7K33yUfnqm}oH_=qbo zweg>i?_jc((E?@xKWki2Cy2dUyKMi5x%ZB0GTIh>6-5vcumIAFAkqZ{qz0r32&fQ> zG?ga3NiPwls5AiqsSyEz1cLNVC`yM&F9AXi5PByN@;>%C`@Fr!Irm=mjW^!=Psa$! z_pLS8T(kb>FKl1FEfemr++CSMjUi2O}@5T-H9l@+tlJNq8-vU1kApn8{fo_1T8q zA02cf=|JmK)hO14tV-$reJ+WyI^v=#OruJ$Iq=|ND&^7byyXHZ?_7%FFqM07!xXeo ztB>{hrc5Da&21ZFsr!wW=z3yIq};h~%KEL&b=UXHyf&C~Ui@UTI(V0{Cp1(HkY(T{o%chSoF8#4 z3^NpU+L#=!v_SR!ND+ zRUE80x*nfUb|35R7Jv-~;&D7fn_uKqwPTNnTx>6FCeOW>Ey zAGD0xkXh$lVPXq!$$Ian;t z&SRsPhKY$k5(g55%h!Ca=$#Pdr$j_+v77Lp-&AHFCoGIV<u!+DknyE-Yv!`$YxJJ*=%Q zT7E>u+=&8r8PSYoq_#a~|5=uFV6)40sI^R!r_#VNkrV{v1`wuE^WxK|#6Sqo=h zZkK(9k1l_iB?e*^7r*fnSROM1=shU_t(@ z>kCyVRLafSAq4`2U%m6dn%BgVN_!yd3BDa^UX#`sl?1_~N8hy4mR|N}3>(A7IjuTO zEP|EySJA@86%HjW4>j3k%P>4FFCE9SvS}Yk=zPzo;Ktzu@?k81ldHT(sKZbk<0*n` zNRPWk0=l8T_=~of`uM@0+ea@PH!L#r3zGZbUXmbRvz6GVVo0*R%-ItH8Gv&LcV++@ z^T4D4v#H3S!&H_Zm|p+*tFj1#=&LV_z!>HosYUnARK5w5$Dx;*Rz_1D0`N5@mhG|g zsx=5Z%u)!|Ro1oR3ec!FQDPCRTUQ-vDv9wJW+`^ZA~dBXor7HbRNPpOC+i)Ge@D zV~*#Wbomn+2>^KTEhs?q^Z4UiydwpES|>BPEBE3%bAPSYCq8&MV6=;kuyBv6RpFY$ zyoOIsF^om&8f{o$9p1aPPO9^>IY-0^k_GH zzBht!?9lAMS@bP+q})thV&y@B4N~RYmOHjP@Oi2 zpr16pqq#NLV^u0>_}y@!OWUm1B&-i$RMWi=4+moZAh*lB^@ye~lJG~lQjz+gxXpQb z^Az|{trv97ErsGE6Gyv2Sj~ld!Z`{D)SzQ7r7+48gpTkc`_41kfxB>09Jaom?HVR& zc`=8dUnlJ(%Ce~Ly~KZ9uF`6tim6K0Z7dWLuW~7|?Pjz*7eM%kwqP^ow>^|!9j`Jr z^KWEGAA+J>VNc3z1_MkV9|E1Nj|V>vw|~mJW}>5lRL*CR)_x(DSZOaH^A_;sju7?z#57@^#WQ7yJF8Mlu3d>7vK2lEz^-(U&@>`0acdGc$gVbg7 zJNLX!Qg?7-Z8wyVlus(w;$p>Yw0TYO%hyrufh^S}ff90G-b@2Pn(Ksc(uI;XM|M*Y zzc}B~`HhU`t%cko)kFaNrU77iZ}|*Lsj8@$_f;KUBbP+MUE?l1F{;bTz)+YHXLX8? z-$qAh;eEf=%kKa>mlJRAyjldY)-i*0j=QB~Py5L+-5o{}x(ivaD7 zG^-+Kd9*c3Y>b&Yr9WYwPNd*E%z0dwy+MRp#mUDgZ@DF#wi>ZpcovwX=Zx@g9vlkV zUl|(+m_kNR(&Eyd%zA7#zdV>B{sGj$e{WnWZ(q;xFmTl_6WT+ol`5^v2ts#Z1DEPz z6uf;ena>(7)|I_f~4I`5SGU+xx?My%&{Vbo&)sNL67mf!AX?K z$!v6YAKV7wKA2o#Kdh0C*bXjRLp8~)Ka7b6;Rlw-N(>|cE_w1$HTDf)#f-emc#=00 zIb+m5Vpca?BD(#b#zI7fTx)-%u-7{0ejZI`z!qgH&e03wp18Ae7(3YQm|wp7R3lAV z=V^fKxs8R;PF@=Mms5{!es)Z+Nyq)FK^U$`U1mM@E&jEQ=G!p;_RtoN`^eEe-^w;* zjPq?2q*+`1*b!gq4}C>bX`i?jbidakS#&3H~^Vi-*dauO2S>9~!rkFCtYKJ#d^LRUzcO!Lf;D_?U0`5r-9S;Ql(2*gAlXyw6+ zNSmLYnMxFpZhhgj+CnpVSHQ2@Ur6Cs|EVFV5y?0>$dtUy77*QTR#b!26mEM3L|5BoukAOnC|+kJ}vbgGL#_pp&EpQ z>m81bU+oTZTg_yJ1BX+x!e-<6Fx+x2^|0kmUO-U0tc3e-im=A@&miZhS9((7V%Nt$+cNeb_8 z-)?-vh2#{8C^z1UKdUv%ZqVU$zG-6J5~yCstEs?EVeP?6ga=$1o_VEgXr{&A7t(Rb;n`@?i`4b+` zjLFD!lYMsvdTX|Y@Z+|d)ypVRw|UjV027|<7Qo+9CB>AY2)55Kj)+&fIZJt{Mp z?-RDOGNIMv5Wl>No=Avhk>Ti0DJzm#>L~2D(bmup01Ov8S*2m;NQOKSiwPvk00tW^v8ltp+^6)@ zfp`JySUldVR;X9-)F@=lo+18I0Jue`JX1~SDN@I#CpBL6a*AJsXHnC3oDPTs>{K8y zKWL*v47(|)dxxy4-!6fU%=zeH>OHXh)6MrqK8x^k*&krqt5Um*lLiuSim}OCgxEKM zMv6M1lYUR2n5Kh{^@+J@dA{(6oz`xyFM`TNy=|ulSX_YR+OvOr;=A!4(nqO9M;XvlyYw z4t!U8dwO9OJD^n%P%f)MWm9 z{@EFlV(;FgzH*go{MQ35ergnNZ9D6E3KlA1=i1|*9A)@f_O}ojR-ZqAE^5_cl4pR- z$TYVu0OAV*KA>n#_Hh;%>gIH;aE;jFgu8la?pARW%d$RI92#-az0?Qcp9R3`N!e-Y zx1wJjTBmFuq_=X?tnpqw*uBgY79tb_NQ$=WWUWRV_7(s0PR67X*}&0G-Hr3Rly_2wadcY4PSomSk^*M653L_UEu3RJxoKEgSZ;dY4)(WR&yqOu z7d(|r^xaJ_e>zl1RJnlMN-kR~e^mPNN+zdY!Bg?358YPN}p=T?=Fe`@@`q8*R$@fIuNKEP^cu_wn3#Of+U<`LBw&G+2rU7 z<4dFg;eKPMuva;(+s2w5n4-BJL@OHSgd;44xd)z>4xq;PO|m`U*!&Y<%t_l#>JKMnVOw_j1O65HiiZDliOYXWaGofUNME0< z2kZ74(aV`alt_)LmW_G8xZUxU_CNS8yV({{Jdf&bsiu01O0Ia6?hT77Vx@#!A*T+l znVMxL53ZRlt+}a;5M0jBJ!*j&O1ZTdnbh}mb5s&?q*cHTO{Vj+ zqnJ(SfLY0T93oWng9|U8fF02z*NG7yWbxf+WM=|D`<2?oH?mM&c-Z(hEK3U)6(tl6 z*QjIxtC+}@IS;Gvt%II94rkQ(Y=1LuRI-2D+62Hc=jIcAdEk_$8BM#Q-ir--2KI99 zd#R;Py*;qI2>#g~eegG33IZu7jXb^}hVPkSPwvRk@~`PA{(=IMr8K=e6OLP@{Q=e} z9|OYMBpra0EF|oOn;+3KxH}XdDVHORJXTdjO7-;mSDkO#Uz^}zfx1(NNei{Lc34D% zI8mT=N>oiqX5Hls5Xy0^bmNFLSo2VxP-T_!YJCWe&bv3Z>t);UTHdYs^03rcT|uR3 z$>Hcud9?A-P=QPqT2qcCWrcQ&h3VL&>be++I_8Ds(LR8er2{NT-S)j+@c6DK#op5K z;r5Wtz=>#grR%l%5*>rl8obF6DoaIkQVf4ylxEH6SNPdY(A;daJT1!)$(%rfUposB zN=X+5?w@?0YqkT6FWS(ulJ4@)n=E(v&p;XA_+gq?gB$vS6Hw@aeEN3Ove8DR@2$lp zAVVB4sTR4r@**FH+5ue4TV6nnuQ(S<^5S%v@M=$=sEOFy*l)Um53?4FS21GKQ&KYF7Pf2Hh z@Gq&wkA2Z&`B4HZGFsZ(n7-NG0;OcYA=$}!C!f~NrHhCbt6|64yz&jIyj(_y=!uilB#I8meg(j%zu;}l8* zl11!4To=-NB;h#uH6k_sXWc}NbG?zEbA*4Ve3z9jhkqC>VL}DmUH@t6Ie53i-3F_9 zsi??R)T_t8cd(z3!U&%zbo>j^a##OE6y)#1DlO_7pq_RE+b z0!IGGTI;A*=KrQ!{>P%GgTjmcwKGb#eN(o$;zC~CA)u73&MSJb{Mlw0fP;-T#x)iL zwGxJF!HL`KG;37ux-mCw18uZhTLO5lT8$4EMU{^%-hMCd)n`{zZm93GRP=SI+Ux-@ zP5tV#{D(%X%)=rLNPdot=e+tKZqcmWqOU9;He{mT>8;neb8-*$o;Dx%aS= zLnS=E2^jBX6cKkA;<6sZH1S4Rc|HK@SWP$mfMh_+9jz4cgqBELic)n?G^?DDU~+|c z`6%Q$J0NtCDR(~tz{aZdLODz1adU{<$uX(z_~Ohqhd4*za3eT#Z=}?=ZH8~o3Up4O@sbS5Lb{6$cR^qX((pI(8lTReS+vwlhx@|Y|zI6sdowF!DPMNE;6(v z(@uPxqxZjBxuls~ohkC^iFPe^g}fO|rlIF|EuxR`nAnf6KIGD|%q=q&&SEByjQ{Q&4}?szl;6J? zs;(fdcy>%d8$k_jJW$Zyym+yAyU?`QX@a_VgTUP$8h8>ywPm;(7FU*XIS4PGG&_ow zt~@z%Ms|LnHt4VhvrNh_tq*?XULQ>{Nqj3plb&vkAm_ciwM#GP{@bUApQnzw&%1vt0OknOHtgapbY$(0JKofT$f%h=HK|;x2`q#hO!Mr9 zQ#D6$u=+2`FOBVzy5C#)U7K8p#5~|I})lz>&P0{36BN={n7?Ube{7FZmu#JOQb9hS!5>f}mQy2M$_H27n4~w6j zaQelKL}y4=Mh*he;5;z=TNx&)1e^8vt@TiK)j#Aeta{y>_Is@=sbF`WZcbt>7{13t zBmbXKKKC0ICvN*fZkPZsnXz&G6%JGPqcgNO>aB5k*!c?j>q*5j2DVaxFm zFXrZ)9Zp4dq)ya1wEhmZ%BZ9~%5LAc1T;8wj+Pu#;{|=?FSMj`HQ-p*XS;2@YW*DssUgyq4bAQK(3YSgU_87T7Am~wy zIcHAvOd=%R{LM~~cYN$eWp^F*hHq=gcr`xB^VpYD?7q(~o9i4+9^|sml=b#SZw_^5 zt~EEeruWvz{m~mS5baxSdADPls_ti5*3(?nob0|Kn@urYt^4)JmdjqwP2#a?z}j)r z89yGrV6-?%h5yc?h;46en)tKcuPT-u1Dj@WFJqQEfv$8ydM)xuB-4bW z%L(QX!o+eWy&Y)pyDZV)Z~gOug`gE!8hwU9)6%^6m>J zMx`!!;;Dhw1CIvlG~=tEZY^~3gi*7^I-)(>#z(hVgaa2@R)SpW6n#P9*y*d(B8;20(`Z6qJfLI5Rn=q=LJ7-jE zSyg0Skth?s)(kL}eoH}rEN%ekzT9^O9&RmEeO6KTiSEJyJ@DHr1Zh#A;^JXZFLpj* z#hLM2=C4O4AZ?hYK3hJ1fVW1V7J>>DcPC*K`=ZDCl)M0762q;1+i zT}1c&>`uA|L;0|s+Riy6FgiPY_*(|7!+{p;IOMoIUR48T(07L3vrRP#@KCQnARL3J zf^lD-*GRAw(Bu-nR5Mm1G-~{YS^Y|i`~wbgmII5=Roi;U4^k)u_qWLfQ_!!7b$|olxU3JG3x;F-oSJlDnN?aSAoEmcP7J3EoEJZG8Y-sBvqq&~w?<&T zBTf@NLwlb`41J~#5ycSVS$Ma}FRZ6ll0BE#nu*)uujiw1K3QP6QQNpf@JqRK(`-US z!&^Fm!;6`3zYjXY`M5vOCm!2LN#ozFjFlPd=TS^sKN@E461!nvj`R6auM<6pu)l0v zHddf2?#r?k{jTjR0{6v154 z){V|m3X@oXS+L#~YyEQ8@O`z5;-o$@ePdM;PGBqm5*}^~T?~gWfAX}GoVqff5~cTD z&bOAK01JZIVt-{&Ypq@;uNXO*t27}!?x-E_gg6DhNf-q5@I*ib_zeOVN}{VCLx_`l z$QREbLO@y*N9gl)I=Rr)?e3mZ1C|>mCM==iq>@nAYus&t=uPG%GXnP3M!fpx&!6gv zLUPO~V*+J84eh-5kO}<$l5_25HJ&OorCIDZbJ;YN_korSvcpI&nzf?~Drxe3v>(DW z(MOjwl|Qf7`@#`Ba?ZOVw!Q{W+Jrv_ZCt}%vmD8BHPZ>Em^QQRtDWvjD(TC8?rslZ zxt%6rQ9S&;e6Y9m&B>&=iPhgxLcHb1p zns$p41x-2nze&OMb6#mnw|SoiAF7u$>R85*Q{=+Z(g%isOc9Hgbe0A)q0x2Yl0d3y z7#gk3H&ExbF2AqnP=Jzf81;pvPySnn8Ql0>$k~L z&!lU41Qe(zG%8)V(YbfV7btSDg!?wW>`uG>OVH=ikuJGe*AJYI!FqC~PqW zA@(6(Z8-F|EEniv3$+##)h3z6^(CAqU#vR`V%(ht0r+Lrb%D6!o~a%}Xwj_5DB5ksA@!k|hau2R5MP1*6#M;SxCLax zxHKPqxc{5e42Wf=_g6z z?g;Kan1_3w!Md%zT*0O4sE ze1rSnkTRX<=LMcDZ&pTYYEBdBb|u0qK=w6coXqd?432=4^j5X*PPV~xm));i`=vzM zBnf|3S)oqWZs1?pS2PN!(aC8PsG|K>MssaCTq@U?-NgB5t;R#twr}A2zGQ3fwgPFB z-|m`qaKNfXN@viqd^W(kQED%wW_l59)xEtbL2b!?yi&E@S71*KeQpuJ3e=|r-QD)A z3$g?G?o_T2j+{r4>ukHa5*e`|bNQ-e*j2z%c(2DYv)F3^!ymIs`5(N4y<_8538#(6 zb(-T!iv55LW3M^UO`-9A2v^vcuz1|0Gp3&4Hr2o(>C0;mndi;@e@@gp98pj49F;& zYuES>x8~!S_)LU-287AIQ+C3|@hb5Et&}N#vP4<=K}Hj4u-)(P@)uyKGCqb^ul3ROQK4eBis!p*BIm27q&&Tc9<(RiEVQZM zcap0EMl#cX%|0wC$mfGe-;oU%8qlP;kbHn7)<4GYF<2s`7uJQ7`K8<~y-G(7#!A-~ z%dQsILD5^d=CHQzcqcc9v3i0qK%fpA)GwNe6!rh{$bJGtiu!^_&#GxAiDnmkXjr(n z*U^wZEb2Lao7VslF*=wG@XnN4qKAr0aO9wYcMWAWz-=HUsoZ@Wu4dj58Vb0 z5J$HXFIwF$rZ(;8BsFxFgD%nwwT5AOhNKTNY69PJJa0(jZq z38!_25-@i$ex;PwVwA_PxT)|3+U!LixsKEob9*Akpq7a*~EFnNmh?Mr1?k?9P^Li4eppDLbyL-PK_vlmsATl2@yd={n6YQq6Vz-tf zewf|EdXTZy_b?_ITQw=MWURNDkm|9^<`q}kyhP((3o$*R@b-&hi4m`{?2c)*%HoIf z0usPhc>HjZ0W{hK!+b#i9aaNRkx%GCshPNeg4z-xn~jfWpOo2I*~@*V`zmDeu?_}X zZG1~Mc!@FN32XrT1StKvNKLIXXv+!;y#K1r#Gs{at-AQDQm<{&PRaCCV>7I8jrDz0 z)Z^!S#Vv0%_jFtPt1M=D1{)5Hs9RM8XdQ7{8}S{2##g|7B!OLC*xa5K~19=z%`xex6*7!i$?l z^!%aljS8yl&=4DuH&c0Rk#Zy)AAyV5w724)l{>sW$#Pm0bY0E`<`*v!kKGl3iGG%* z8cX&Xc^c!HgV?9>%{KSh6-bEj>$*{`FUm=Pe2Q(9I<^llMp40uC^mEQQHRY>Q&FX5@f!tSt2OSN0 za06ui=sG#SJ7w3yiwmAWKd9&Bgx{-mK6_qN1CTgX^_)#${$D?NtCJ!(uml@lsui>^ z{Ku8ZO#>8g=btzgJbw&iXHLC2lm9U){6A%@9(Vx{v!v~BOU6zUXdAe~!VGj#znztL zq5Hk1`LF$RnFn~7)LVWUz(P6GZF{9P~NzZ~wYr@-67+C@D9cmxBkySGmb z_&>f(pyb(}s3&;tDbtHlBQ1>~+(YHGMPz3MOp)>v5+wCSDH$G!?ESy0f^f3&d-0k3Bb+FPNW3B z^90+dY*fr4)K-|#Uvrf-J@2ZJZ9NUuQtn6p*WL7!nK*4KV6Uo&wwy zU|b@;K{8B76%z{1qhj?oQvG8xi4cIgqTbTE&wg%Nt%s{)K-@L<HnmQ`Ls!2@f09-+gYi}q;UqkcsSA0`rm+cq+aP7aA><eZ{985tQ2fhQdA?K(CxFD#uE51|TaZEe*wF-cuK#jLW|8Ku(wsqO%lia}tC zp9ax9C4D`;_gaukN+r-Hpfn92D}Gc|MVRT4S3EEJbGpXs2FSw(%HaL#qX;mEi2>O# z1n^!P!x|}raeUL&_bZLKk5|{-+p89pm)y*Q=Q`-l^K|h3p9u~B{Xi*%Qlv&*W!U$~ zpKD{}6rKzep;0lDP4>F|>_4wyAhUt0^MAz1A zH2;_YeJWd)pBjdg-WM+>-s3g6{dgJkYBKk90j)g%b_|0Dk3X{-SyT6;N(S=bj16Z` ztN1b*rTJ=3j=rfO7q*+G!26Iqot+eB6u=jrrII)OBSO6bz(88*oi7BoB{g>6!L$r zcSF3;_xWdE1tw{DrZYHMoWf&|rS3;6R3fMl#LuV59K{XwU(Yv!gU`=KGf)hJn;;{J z;QDb!KB?l+wm8YKD-_gk{C@t;27jC+k%{8!2t&5EAKr)|>uA-Cj1`Hx1?1xzM)C80*8QS8yh*~!Zq~auf`7Ao``^}` zrqY2_TlGEjz4+S@)^~~BWLG0`w_^;lRN}W)RW^XK0}Cf=K+vdT(FNzGeSxtxzE1iS z(NU3!;(jIV`@p`xC}fwi)&6Z1z`x2yp9;Hjq_0}i`Ks;ZOR?gdUF2`VLP8k8jopA6 z2O4N!P3xe)SjW4_Nxq%7zHNfqhf*a*hH=g2qnsLu~%|vH%oO5Wf<;X!wJS zR8CTNE{*K3MNec6Qfbdugf)7Qj~~Yw8L)o64}`fqd%Z4&qzpFgj#GxCkCvWKy=u(* z3(*c@r@zDRpK{h&ZkV>AyGoASsXQe>Y`c#<*soXe?S%CdTI{?NA_d)jViuao@UP4B zuR8PJ_w3*GxX`(?Vsnl?-5V8H6X)SLDOA4ZO`0{ONlG8I62__1m%OAfdV1uK&9{Ht zR6@@#)B?LvQB_Y_;%sepHOK|D)BU}I;lgl@x6qLYrRncJlgjY=Yl#PG_X=i>YyFOhQ<5GP^Y`eegN2=WB~k; z@^9|SGiOf$JP3iie{7}x=kHLZ zF0_Ev)^Y#lUsyT-oA&tB=>wp?p?|e*ui=2NXF$jJSE3p;b;|Vz0Iy?Cr9(fw|L#n0z9h`QG4&1pvDC zcx&1QB_svN##FI3t>7%~N&Lx(mwyVl!pBSA7a9O_6l-E0Iw~n9{9d7wK0s{BF%)_2 z>eYx}73nFR3li>YR=1P?My#hquWV2ThJ}VQHaerK7%oU+lRSLRH`TSJa5#${J6>p< zot*^?#Zjldes{Sfcj4x~zaph8-hOtW21vWaJ;tC72AifsMAA zf?UL|JN2wiZ+2B{lT5R2r9XEOqhY0|=MmW~+8TThvLy6Ix)rfjw)W)zjbd$}<)-1} za5K*M;HERl#BJ|Qr*>yNpU&w*v)F9Y#bCc&Ko(g3VTc{g)j>NNx5FakIy10+`4)_+=n?#sOY5FVQx!rxg3djkAwO-Pg2?AXO%^g#FWlrJkAo3J!Fg18bX%_p{>|4DhU zVzjI*`&AETd7a_kXx1Qpqi3y2=R_f`Iaj|56?^2hW?5REegE#=9a!)`?CoZcc^3jt zCJ)K9ge%})@du{>1HnfO52xCEN4;O9jO%@=9jL-np;-m~YSST#&)U<)iw_SxtGJ1m zx0D-=f%8(Qaq7_@03|GyRBr(`17-rLL6r&;xZEMjHNX9d{EgWB_5X#b_rKkK_M4;< z&|~9-75sgT1%X?F;S-4hG^~t_8X+4IwH!{Z#biyhGc(G>UfL$LH50C)i$#5PGbL9U z(tkP{jQ!0IPEpX^qjfiHar8Bxe}6OEcu5)HBz6L{twhMoxIXk_AJ3;k zoSSa;6uRSkm3;q<#b2D2AmYc@4CL#&-(qOVhiRKUZl@}E)A-W>0UG77CXdq)fTD}i zJ<`9>I&U5{0O@cpt{>zfHakn9xo2LzP-VMo7>xx2OYh&uOxH|GY9~=lH~M1l{bobu zzuDS-=BELf`fnLPuk_E{t4{jlJT&PiC%mj2awOACQL7&XbM`xe+|}m%R}QbEf~d$3 z_&>^V)?Dv=`~ZOpDAVJ8)PtE=4EvKK{SQCl<0;(IHn=l)f`ow_bR|GFfmo+~BEPMp znkL_RNPWp99$qQyF~|}tY>yy*CrOO@(_hFc1Z^a$ zs!*Y5B_!MNu=RLV8}!Fp5~K$h_&VH%s$SH<-0mC;^n8Dvy(oT1ij`!mZBRV>X^?%) zzx$fMb3z`FohBk)Gq!O6rCQM4VQlgK&WS=gqXoxQV#8pS=7aEJ>chdrKaSv^A<4T2 zgr%hmDc4zY6%KMEFLCh+@in8M=QwE?Sa~P-B}jgAjNiY!6FbXk8sMBAdl;o2`*>|{ zkgR0O{RZ=(v+>4<==i`t*YkNacifxm3TA!y@>y$dX<9c}{_k7bi)pmuX+kmfkZByz` z0mvr3r!K?s-c=yp&GcjGkQ=asg>Om!u_=}ZM4Qv?iX$e16uet}-Ai{)DWdX-h!1}% z?x%rw)M=*RKN56+9sANtNmz5in6jxij=xi9yqzn3mIetq~vz`mZ)h;`w};OIM?-;3quY_b7K z{MiNkkrmk5ekJkO7Qp7R-%_$lR=9J%i8xk-zQTntS+(|AoUZAg-~t+!Jx|Ki${i+! zWXjh+-79l~CYL*~b8FC*Nt*U;NtzeLu?-U(A~y%b%H{zWmk}=Us0q&oiOV>rCM7hx znZp`Og_86tCAG6U8PDFDOwHz{s&EIht#m zZhmq&#J2>wlX&wO-+6)8B;KRalS zF>*GSsOyb~l&<=RtkF^iZCojgiW7$q8#gJ1?k04Aor;If)qM{@YbS|WWE@vdQ$v-g zA?~loy>)${0mlZ7MQPH0*=WnmG#a(?>$6v$uAPf z`h;+EXq3mZ@u#bFw*B?*Gb3q#TLp{ivh(q2z{Ve`Q=Pags75jgI;Pu0GjhbNnz)vB zpLp@=f30+wEEAjnpe?c!?}b;-5C;{!>+D%Swr%9gZ+@NmYK1wxxwSv4R7@OKga&j+ zKIeG8rI%NeZL;&osp4)gXk2Y{w_{e1Z#;pY%aFM4quI-Ycc-NZ=QAj%4HG;8>WbkRWwXG*}LF{~^O0MGw@rVW9#1&e7?1 zEG15a)+{i(We6Yt9Z*x->o2VRp`t{X)H&T}=%KVNH*C-XOr+5DsGyG+pUCW(pM_Ka znl%>JXE6}AJ126TP*C)BVSQza>mAS&GA#M;onpW>Tp6iXf=zgbdn71@B5w(M;$9Tw zV4Er>Tid?K6AF|ZChJT;&YsLxD=+HOwc6W5MEzD(UxEyoh!p#KI~NQ7u{Dc|0Q5{^qDE@XKIYP zaYEo10rEDXeZA4bO3I)?Exdq?gQ%8XF>jf>=9TYcx-Qv$#{ClM)wS$07fj zONmM>S=uO>!OUD45A z=?uM@pH*&zZ$Pm4i;77(%Z87NL%zO(fSDmYdL|M;>UezA+(X28kU=!d`!fv&KaqXl zu3L)9f14P}7VQ)lA|o7{xME6S*~wGKFCOzt@5fN4p2|80vZs_U`Wksf_&3Z}(aqLu ztNxy$vmfaA1>zJ&+kkTTYH?8e_Y8{y%~RDjh<>=5zsqlRx}Z)@g3wig z)+kml2YliACNbR6T!S^YE)a6EVTAy-Ze2-LhVq8ReT8u^CyVO`oR2@52M|`Xhy_O5 ztNW_^^wnjFD>0+T6X0)J$^4y(0d_lVBEDbrDmSH(``N!4uKB1RbhhrO{h(KUv^pwH zrX80VOMp8m?H8Wo#N?5NO> zWpd^dmei}%PROIdY-L05QAr(lpKb9}vtZP(uDkcB+!<}VD)qdBysBF7qWuK=4ML#a z;>d~DkR5vc_9s0pSrL)PduyY@y}cqW_eP7Yb|sXH_eyMf+Uo&PW)mCKDn*Few&&a&w#%-* zLmBy!HtDc}1doVP&-`zFNW9HwRPt@LYTA>4uV z$HeQx@~WDP+4H!rFG7Skh!(#a4;gq-gc|Jp(NbBBRUFCxJ_` z-}vBaD-TWJl?}ZvsY6faC-dv~N4GUX-ehy@BrvxJBSFO~bnE!0m(*az^+xd6gS|U8 zpTT6UiB1IlAp!xO8ZIv!W5k(lx0#aV8bTHu((GZieir!{$Nd@%IcS3ccj&J z;k8~H%W0^2`#Ralr-NYc_ISaZaoy@_S+hM)fV{YV*suIvCn6E%%@JiXnU?(aJ`2$PT*zb zvq@2)pwSKvHS;d_k*mVi%bXHSOWU{STGt^W29Z8tSmOtS%aSr`rfcrT%6!BSuOzTuVtgGv2o3jYmS<+C$HpT4HghE2$WTeIX&o-}h`r>u}DkKFTmyja5g&RhET^ zOYYfTvYtCx`GzM+`6fjj)7ES|W4Mks!3zCPVQlqkAFlITV&;a6kr*Dik=PKn_8fks zTg1_f<|_I&N|6EoOdfg9c{xH2?-qP1u8HtUWa>lEggA7#CiIMUfsPZ=|vXY>Z;rn5O0D645+4OS8-e+_sNk3B8zOT!@aEhJ$~85hJY0 z|KcWnt6%=H+?HjPOt(|Z@dOLBePI?o-?X%Sl|I0g%`dER|JA3jQn7sExDDUd=(whO zYjab%duom23wDoCV*E7qh9QotK^T3$M>2Xvarrc0#vTi182}Nw$cc?kRoo-z2%n$i{>GPyLU$bx{EL5O+d%t*bcZ|80b@ZMcrWN(GScvOp>|fwJUbClAX7@*}1&C@S z`CMq6h&q~TE(6TtTV_f{NJ6#xg&o#~a=1M@d}6F!i5jz7-EEM0dc;D}HiW~Tf;qx| z0*~MG2H9_cuFn>~%Rl+@OunQ&S=e~%{X?iI>ZuMuoV7OhDGSqkG}bJwUPJ@Ru(-PF46`i$j_S7@hNBa&CVc~ziDtkj|fwkyeWZ(Zi| z3XQZS0%@GC%Pwzo(~O13Uf+*e)sMBmer;6>21$C>dps}d-1EfGYuGAa!qj|iYWwFq z=lZ8S&QUIt^aRnLA-T5?7n{L|*=5y=^(M0Al07FrdHZWQk)L8=PyBqf=>a$?noigV zH!}UG5Z|!j7$iD|o{#O-Pih`#!SA3H6 z)>^Gm)cwr7sxxUaFNgEv{l8l#m7&{2oHc5&GKM&YGQfMu%) zM{BmdnU+COvutY~uB$TK#qqHT<{=$)kBe2gIKNu*^Tw9t$KT%*KZ?!1&CQWv3fH$v z45&fuIvp>FRV2x{uci8-=FRqh*#|~LlMZ{l>czHG-52&+{p5M3S1*c8=DrhY8gT6` z+8R11#}$6FAwYC5g7V;ba+Sq?N^kDiI= zF;7pMV2Ja_9B0S5F|2o&EyIC@ze}m&rrnc*M?QWvLzf|*-6>aN#q~r(LqD%dr>7f- zmSC;CwQe5R9HWx;R|wkj=$gkfFJ8xRF+D7PP9a?Bf)5c2@;*rM<1dL2BXd>WBix1&-tBu zpVvA6SF-nm{bWBQWLdM;_5FUY^10rZcEMVK0&&`qTCUn*T#W8EJjRe>bY|I(gB##^ zwqPqa?CcG9_G~n|nOz#!9ETDU$Xh(Kbn?o@5Xp?kp{9VM-{Rp5mhO)_oWMxwJ;;IN z!0Pzu0y9O;gsupv>cvOEcO9SMhRNAE0H1fWI=og_gc{NqvsFSa;j{6Ro`SHpJhXgd zuDa4qFO`nKq#{2HI(nu)n+sU|KE8B=6nLhE@P|qyD8zoph^V1S%4B=?Y(NA_5gp`k zjzl;y6#yZ~B$yMCU{swUpI*ZVD;^$|X1!Ke1Z9xgJ)&b`;)9UCym~C1GIihc=S^e$ zOuKCjN_m&zSf47Rss&DJ3DqKdgO5Xw2J(V#AZ9<&FO;c)a((JOm^*hc4GG)IgEG#@&(aBk{ItdciG%W7bt0apSwsiGYCMMvR*)G;W;6pHc$5BGKH&U z5q_c8o%Dhxj8oo&?1b_80&Al^XdM4tjt4hSsghGSK#<-1DVyANPXgR4>a8TVM@?Ch zQ@b~O0(Q36;HlA{D41DajzRe;7K)U&hQh=j&#Hh0a)9@&h2 zs)-{ep2eW6g(Ca+OO#2GYhZ*f?XVzk+(et16QcXM+agzkAjKcOP)thhj=&@OBfSvkqN zv0=}a7;$d2I;kv8btj3|xMXRH-&!)T3+x_s`T7&*ZK_UkrraGSQ!)rkrcd)sF30%5 z)$ot{xOL_B*DmbD6~P#d=|h+`ad`zwRm7B;R^yX>Q~tVxVG1lf74G_ap(nA`Y^1B$ z!&b0beB6UN4;`rD`%bJ$gYCx1p9R{cf4Wp&4{sQqEPUjj1LLy@Hk#glo&~k#UfkdO zc?a2#Tf9bbvQz?0lH*>()w(G?G@>0+6mQqSYZ)yu&`>Pl zf4<%GN!ccRA%n0;x&T&* z)V6q7W7C|Q9-bxvp4nw9$p>km%`KZ`gfSWW$swh|tLT#yB9dZO-aa6CqtI0&`&)&9 zW#CF!^ELrAS!&*MP?egK`{&#~cJr8M2-SILv33;cqd$wn`D}qB)C+k0>zio%isy?C zBr8eM-=z)^Cli9Q^^GseKJHK@I>*l_&yIQzp7g^k*aw{4+Ay03(BsFTKisqqS)3=E z>O#Z9QhNceOA?U9=Uzqa)!}uHf>-;@dlvz?A=AB4ssV2GYwnBZ)BD>In+Ddvc)g!xjUeye~c1 z1=D~Oh;?0|;{MDVfA9<^?G0pD>6~%ze9yhi@zHLDjQZ+CsWyV(_P*LU49jNR=$=t( z3~QEYk^}GJ9v12R=!L{f7byVRm~c7lZsxQe$#3Uzl2{ws4*P?uG3(Gp*FG7*MK|5aiQi$|+vKFqb=*@2pbQq{z{>8)s8hXf z4UI=2)9Ye`ex_X`2njjaZac6qZl|2<+-}R>oEH1YpmgW zq0Iux@U5ZSYCG*FTy-E57cRQY(G~{DCi?G#3KlP3lwNjy7rVS{@9TLaz0?tGU{US7 z`#7_Yd-6Dn%G`_tXU;>@m5Z3EiOG@&vli*>+tzVwt92%De0N5LvC%rkN>0irrEQz@ zIBAS{Ihn$bRE(R1NE*u%vz0oH-_~^y-_4<;YC%DFf>kG0bA;nO@t=k5OJUG)|Y-lVj$>ri1UtqzZ4uvon{ z68SU@(J4VEH%uXtgjgisDkGIXbfSKN9qy^Mup8006Ej0^RRs|;Ssu5B^>s?PLMMx- z{gWH|`I{%fr97FAytHCPRo4a@m(PZKzP=o6k_5%dyf%x^IVlJ!CxW+taa;lfZ={-{hP zp&)x#1I1%C&F-1wF^W%pZk_{n5pq^9x2Z#GUW|7m-cCdi8+B{wUe5LAg~uY6@(E z@B{^K^6B%Z2r(Ev^uPp~aF~EhPF=U@(z!rPZq^0ani8ns+KcLB*jWVqlWJyN--j^+ zv%v;Sg+TfO!tqcd{XSnZ&?C&>$q61gzH9sw{pay8MP&@J=9c%63bQ&^T+{q$wbDRw z`EU)D{Gg3_WUZ|8;8y?I`S~7@*q3T<3EKMrh5>tXpe^VKzlML$^4`0Nc+c;(=Q7bSsj z>#cE$aC~eH6*aY3rLtdUUrTiID!J{w7NOt;TcMGIT&x>V+D{J}6k_WD*?9p8$;HK3 z@KwH`Rn?2trHN50K^k8D?vfhaS8do__m1q5H5G09h(H-6t0cD~*ee!*E5HxAVD7gC zO=e~)9#ylTGxQ`l=rXyqE1364GDBZ$*2XetOM{)Lop~ho`~p7^@mO2K8sCW9>e1<2 z1Y`cY;Qm2Lv7j{$hwLsk4Epr4FJMKvwSe9g+?@rXmE^6g@+7vA@-2PmRA z+b$)Dpc1d4@8yY3t-xdSEk_trDx*KobxK}rpVSX5!>=npeTIAI!KZ&{B5GgcWYP(9 zYZUM6U8*n~>*rtglRV$j_^6{26O;Tz4#D&(Yd$8aJZW6?dYxH7>&#F=U$Qp?WO+4* z-+RipQm>J~$~hKb6_>bmb$xlr^)s5M9C?_bJTgNHxxzPr{j8NCBhZ^Bv*@80`vZq? zA`;aDVD=bgYU`jT60>B$=G&XHeots_B<2E)Ua+^M`+i|#=|v`dx=5>e?DXoar;y2w zhifWP>|W|TkZ0I#BqClQ$R#=FO-x5D=jFD8$0=D(EZE(mAt(cXRhbeoD-7rB2+Mp7aBwmU6O*IkqF)NxeViIY}1R z`-L-|39pScK_|++Adya@^nrEShV7o)wDYm~kPUcnKI5&7P1C(kLFFmGb_R9P8&$Y| zl^HKCW1$i&aaN$cF5Xrv{&p{` z*Pcc>K;&EDW}9`R481_H=TgJcPUwD{wWOY3nwn=F4bI)6rZy+Li#~vr%5G+q^n&xA zlhSgHJ6EBaY-=PFxk(0u%Wh}o6_48{s}>;hVg`i1yEWBa_I&!*3&%31T1r{2QR`+L zbQ{B}2ivshlUrnd2wPks{d0f3Z<~d-qvgR-Nfh1GCBtMnvdnmOZ?to@W}1w4lHfrH z4Dx;Kp-%o2O2ae+effvAF!B~mj~N%P$JCasSQk~TQ(&R#KMih{m?}$j5nHYfoJNTR zEF1YJcj@zWL_p?y148mf_x!>d`1R^F4;e=i8*ih#;1ihR7`wC)Pg<4-x3sGQM`39O z)U2XzDJ7bQKov|-G+)3K1`-V3EG)G5t!=&v_0V2XpY-bO{i6(qu0a#ILJkp@Wqy5P z*UI#rOZ4E~G@*W8yY>zJr!iKe=cMgmm2ZfW%E}B3K|Dr@8y+RBaOQ66pI;X*OOUl% zZBQB+S*KCEYjnmDE!dRhH0=!G2{<}5MIi>5IzSJCjI+PhARwi9nv6-+Msh-G39tqV zq^gq+qa3?q6;<+jttgQ~)Kw-UL+#NYZ}S_L!oo%Q*yL^X6ap0ne|p%meK)F2QP^)7 z*RUp~6VhAre0*2l8()bN&H>ApE9{#SrZ^gp;H|sR3>gF4C;sg|Z2_}ixj(BZj*D%S z-146GDA=k9JCZ-V>X$bYx3kC`giwu*Q}9XON_EYsUA7tfF81|fDc9Y+F#=;z9ser;&jY}eKPr#^4mC)I$? zP+vC``l*4ONu|#A64DOJCgrNSih^>co$L>pq3-PisfRp^obSGcyMw^aZLxiZHCe&u z)l=mfboAN>N@fQ2{Pa|AEBm*h>D_nA4ObVKW{)_7x*N*)&7Caxqu%Q$^M$#%J28EA zh+UKP|K=>s>}&Eo=XuZGi`3S|OfZS3<{F>CV~=Ye?sB~2pEQx)koC};A=+fZKH38< zNSD>#Gx-s2+(o>2AGEw0Z9u=KKt7Hje3BWjhL@C7niT2V46l9~(TBZM-3H^%C$DC4f{ib~Mn2+VkNKqenYeu^*0}q8z;(=v!=6a*aii zf7JV4u^L;<+e`NH)Vip^Pksszq5Sxr@x~sC??*Kk?@;vi$D9L(Js&cxR zZbRQwZXjBY`mkrfE=J1%m_>_M2Gtb>7-xyT1;L8_OcQ@LZoo0o(aMkkRnP;e%f33~ zyS}mm-FGJRLD@xSu(&DH9cNyHhC(Zs>%SK6t6w*2+J!hwX2a~SD;DV3sCU2DHdK3I zRytf)le9L~)cS&!nmTc1$M(Gb4Kr`I$Y>_QxpAc%^kbJYwcHA+c7`J3iMsQr8}hjpv^g>MNmksZ&O^YD%v;H!j+btDpcpnWUL2ktM>Pk?pUFCyl)SY1 zHXACpdGg+IfZ-yzKK4_48lh= zEzi0PGAM5^baIbZgmsgED7RxS2MTqdr_e4zrh0BOT%`c^lLYgkaVDX>9S6}UDrDFW z+-rx5T*AQsG*RXMeMIO(Vvfo!>#1dj?RAtq`Jg$maha~a?~KBk9K_dG)Pc%kc_TqgwbQ zceE*MvP`N+EuNXU^Fs2v=hVoO86_=sa`1`&qja$>?RI4~bW}W-qN;L{Y3X~jcma+` z*wHYDag#@5dc-@?kU6)uNe;KR3bDPS?c8hK#{DK@7)VgcZM)~l+KE!YA4yW`!nBe% z+JwTzC!`&3n1%e{O}#GQ1G3cwEl)fqb7V3J#P)VV@t<3dR1eZzTw&a>pY(B>4(u{g zQWJ$VGrjuFUK=g%0DT8Om&VCiqgP=c4fvZI=7)9Bz9?C5RUB!fzhUIFaSr|+pNxhPos@shugA zIB0l$m0P7R7Z+@h>ojoRjqa$AD)J%YzI>%_h8@WEVW~7(e_x0vZbJT9q6PmoKm3b?`%cR=->^-G*~&mf zoM(1`?L~g5cBri!2#LXFgVoj81Lpj7xxhXKC=$uwdJhD7>F1F%irxJU)&o%7%u>g3Egw(AhOKY(Jc!F z=kC_-{t`eic=oE%!9e?9@k-8>t5@fx>Yk*EbV_$8bup zdPd(iZZ9c&yNc#q=IZ?*9AbU{(F8}TsBgGu<{f?Qu0{B09(;Wvkdbio9M~)K_B{6% zlBPBwUN_M~R^sirohi-UJbRx{ z$(M6^xG0hv<#7fxWvH~+S`)YoEeN_XsdSbA?8jlp)cQaQJ5b>e#~pFR zO!$<+JfNQzkGnzTcTj$$GyKjK)<7c$CkSi~-bhqQUB1_k51le7|D=cTJp z{e(@WpL|mxAgn;mlwS_GwDm%a`lP|e7EICPe2WTo)*T>6zae#@#Qkf@fDxm-Uw!Gm zYgCD3+1WY24^_l;^C#@Y_!#+kVa|g3n-j7lI!t0k^Nt!T>L%w}GBBTzcObm>>#Nk6 zBdhJ2fxs9~q17pF{bY$_;+x$S$?rFHPw-E&L?`y{?ntG$?7aX$AdoU-JB%9|D}42h z@4BF0RvAO->L?sZ6uYpVGW!2KZyu?F^+~TzQ5OHS^>t~P+tkeR>~OCQVUk7r$+XMx z!b1mwUWC$-Lu);G@@7y~$XxPerPyXHWqYNbU zT3y%i^Q^kyU(7VVr#FHh>iXtdUX{L5~D+`9>E9USq{8kIJ6832zU2Up*#I1dR4P8HiQd@nb1bVm8me zajc+34{9R3dFG~U){CK2fq;FDUg66$;`4Lced&_mnrRTmVr5XkZSgrgr2Vy_syKJB zYuPK}OE@dkBTde~YC$LkHE;heEkJQFr;YkLbzeD9F}uVjH9FJGIOR07%?NKP_44^o zKi3w-uV;_5zkBJ%u;RwOVk7B-y2|U_uj@22G=Iv3J8v?TsNe*3U?$xDhLzjK5gZi?br$d z1#0olc)~qumAVbs#q#KJp6umx&hA22%+?5<*h(ly#GmBTnITai_;JXtP2;*tlT;sY zb}{*w1JZNPiMn~VmBG)+b!)`-V)l&}re6c1BH2Wz$E^hm^x27f962_vegw>?B}ihP zDXlmCzWuyrGY_l(sQw5@`>p`loWp^nN4TrNi?TRbFlo#h^r9bQj|&Rv9c{9K^7EF* ztht1GDwf?w)&&|?+IHRwd(TCD^kzgD*kDK9UXqr;^HEfTAgQ$6zxf2;_>bXUG_F5< zrU4DXT@N!sp z{zv=-8Yo{M$YJrh`9)VT9TfyQad?AxHe%UxIakPF`Qmk{l?XAHCb4_ZX3bBOSI~SJ zrJ$33+^ChN^v9sIy*gp1(LyD}u8ZUeu!_95pE>kq(N!;ZfwEiBkXav5Y2A}hh(;X+ zCf5Z8a9NI5rc6R<`0q@+I3*Q=tk)b4WS`gEd?zKCDjKd9yV;;4Zug9`a~4X3b3c!H zvX5<4Ix?j`*CO!l8%BkOB~d(vTaR4OEces1uf9I-i@l{|#O;=DaqcG77FSfp7;cW& z9lyZ^#gbj1kxW|<<=oAGD2o~1{Cr`-F~_9ZqyAutS++zI3>&o!nW=z}HX%N~Tqor= zW==hFywJiEmBkGRj(E-c9NV(O%@|Ot+|c=p_0Ur~fr@NE@M%#qg#c4<0OSx~v-beZ;mbw~f%*t=f*F znjj-@WH)ZD{AfwcL^l5P8+ddyWjtrF;<7u?2|B-p*RF{Rr=51e4+Pzc$@*X?wddB@ z@Tb$05{3OKAi>dmlTc}fTTFj^m8)mp_XgMmztJw@Id~I1l38E_%xjgm!>ci0wA0Fp zwWZ|_+^`=x01`vDsTQONvVhXEN-T4vFB$w2F4t`$zx8(cG>KjAMBJTs*(Sl+I=z`C zQZ4$AkUW zQ-EV#o6k(9EVIB7emz;+uq;`h9|iBzHcSuR4D!N>wXHhf2iz>yruCggS_TegGq~~~ppxE9IiBCIA8H&Ae_&QQ9B7z=a zqLn4Zc_`rvO=#kiy@Xo!=y?~;KYowZwHRKawstA9Sg$D?t zjP^vbWM`Ea^h&1*IV^kQxpSud#+5-06GV)`079*u^Hwi-2eR=oWQ+FKr2jnUqFE&Q z7!@ByUU~@qgs=dXUSPz3tvv8DW_KW7q}Gq8GfQj{)G_qcF7K%8@|8>pxHZK)TCaAd z&n4GwR#ku8+IaslI3VG96rEqW=lo(o?a3_gXcf4oAwZH!CFw5loAYqjv`O>PBOdCI z#?7@?T;3oeX)=X(*Ry^6J8Q6QN=K#M`lQ{vj z$6B>77F8oB&pgJs!M1D3u>t(9;H=Yp)?5zxSg@Sa(Kv+wVUJP(4A+_nLiGj7#N-K7M+b~!39~+fOd2Yf8KF~@)tVtUXF^s}i>i|UWu!(0ci19F+ z|0Yg<-8>^rP6y-+pT92o1*l}+<2#TlODD_MXAhXR19daEUg5)Q)*+xO{^bF0gU7`DrvI?4gk+R<6^yq}G)yhdQ= z`#Otqcyd7_1-bUoXFI8_T;zE$HVZWut=o%auOtaHP1H6Hd<8lygD-#k`K}{=FneXl zOPl&NF!YD7^Go&gIP!HM&P0CVhs!e55vFb%29}4X^%k*E5U8Jk6LrhHKF0CF0QlBg zo`yk3Ri}rpJCp6VFKg6!=10rj%q)|H%}eTVDZf&m^DRL~o|U^mHA)4S`yaapCP(9q zh1bYg7OfuNML%#fBB(&wsH^`y32t zRsGZ?yVcA~jkeF52EYmLgp0eCRaCl5Cegyk2DB692u*zbHLNnv2v15ib$P$Bi25V? zb%Az5M`$n3e3Mr>;{m6zvJGyPn_s=MLX3+`@zGen_fu-;pxQ-#<0jv-P;08h(z?n6 zuhdZmeuHQ z=ExcIJayQ6HJXeGKd(H z!m`{lfU`ul21_!b_Zy9T3|$8z%=J&e1;UTgULqE|<=mWTxPTW*JZQfTI4=|kj3f0b zU{g*e8D4|?sht}xQ8_z+2#l~i{dhNzyqp&XXmWx#PxB7mO9DGmrQ`W1Lf41P?2*Nc z_;A^y-5YTWjl(1pwLl?_lP@4 zyf*$k4Gm>13^bniTKP9)WsKVdD| zybZHD7HhS%^Du~U_OK$)jJ`3RS?46p9o5%pD~4ZQzR?-alRV{W#n|bfSF7zP<;V3X znk^>b#oQc_?`+~af!{82dzl8z!aI+OxhZGcbpO-Iy6Nu6TRMY2f}syAu5B^twr)#% zt%;k9+&IZd2HKq}yZnvvpIA)yiXY!~nQ74XVn%d)LNY;U=Z6Aw_k+uEK@a6h`dFc zCHj8(4#uK<)?%$k0`S=_}hivINfNKjJWm7{!u3< zoc_1)%(0t0S3XL{TZ>1hHf#UEyPA7hME9qphC~TOorn@R^<{Y)2*ut^AoZB4LC9UaP#nxVni1?uDVm zi0jN`B^t=&5-;qMiB0Sd;RZ23K4(t-*?yRkuNh&k-8iQn9q{r2p1630MU61hs_PZINqH~Gyfygt@F+ky|USOAb z&mvlqr+gPO4Fk2ddFDdiBtgZ^2R@;fV|5q0krMUQD@IIhvYv;Lk&MDWfS_#9(`nP_ zolM{(IiHiO z`&dpoiW9L57`7ly>!nruQhWV_HchOr!PrPs(E(%|&{Hm=0jZTu?la1Sssm6~kh8_i0d!_>sVg7@2#X=%a zZc4XS{`71j`sVo~qk&;4m*HnCSXBxDm5zg+Ak<1QhDA)%0BQsl#L8=X`ep~O2Nl{ zsBY}RJ1I|tmu5lnO~#j#1S&&qDK8ej&KI?Z0$un79{!4-tzsg9yD#C2Lrc`TK=l}Z zm{_rS_+g;J^0)@Sc7km^fTMh6+isJ=PnS4Jh|40k>tQ+Qa~ zw0m*!2nC-!xQm34B>^g1;fWROOcjME@aa#LcBKu&j3@hUaF81PX>ZWKqD?`he(=AxbcfES1@BauOZoi=(!f_k+I@A)h)xYoX^zbWHtM8hV>#}kPgq?})j0y3kW zv7B&U?TgoYveq;no?!{q$_My$a=+Le{_O_<2}Jm`-e;LZFi~jh>RGu`r-APf8@5h7 zFn!E1bu*nsv3rLHwU6wbY$sf&Z-GfU!AFsGeALJk z>D$X^QyBcw1fcWvR0+$vWWq@-PHa5EX7MtIhUr~aUB~IV2XE?0I*>mED5Q^GDeTj` zG1pQ2k~~V)?i64VKo%!06TG<)Iup6f+Z1LI91842gj-gf`mg4X!#R9^1H4QLxVfWcOOO8vtL8J@yspN?SR?S$q;#htcXxl9hSJ#`H_F z7NBD-?i3+XrCsmBO_#Y*^XjVV`BR9;s}4E}Gi88eA(WH$qv+QO7~gD8>6aZY9DhTJ zSSSFOAUj2g7)Amv8~>7lJIAl?1r+Q6x$cw!lBV=G?mNQ=;1aI@DE>Ek&M$xnWxKU4 z%N#ZI#f^pcSw%|8Z-5|xXA>L&fD;3^!X2al2EqMBn@tU1NCEN6LysH3^lJW_X0wm{ z4|2aLpglMx_y50}{9OV|t`QIfz3&uUrvV;%830dVK7INBEIj4>>F5Rae}F8*dukTX zD>UGWj^|s@`!>Pp?_@n3v@>%!{-m&`?&T9oaEU(uOR0;$wtp!w0dG{BYv&bN}S+`f2G=YWGUF8U<4%^q4;}Nh)MiH9Y+5$NRN+ZuSbWrzZIms5eF%t>0C(}G7$ARCuqVhqg#8e(?FpM0JfcU8y;r2TmA8y zmJckVT!7`kvmU=;I&=%zJs5sa{{GWo2c|@v8U=k@74vs~I#vJ#(^@TXk9GoAUG3oQ zs;vB9UA2Gtg#W$z{`aqfKVAQFc1|eqg)uZ=DibuhBMm={1Z&Q)_|g>I5cMJtDaVSW|CdESaQ0h zamefw$$tbAM^~G0wmnC?dl@|wyV>vRyD_0`%Pw>OzTWN$6FEQ`;KhY!SxJ)3nQ%-| zg(79YSX8TQB;|8Es*O)QK3>xl{q2PXEEKb%vq4I0Nk1kHHQuG8RJ$MPuPfB*vz&tO zrhKVGO+UK=b;Hk_+R>!DAhrpvJa>lV>)ej#np53@!|&HL7=QgeSKjls&c{k#k2hld zsb=`Zb`m7`L%^QEAISvFV&DX{${TX|m0VB}EmLWGCD8YPQm7@#-@dIJt(5hFaxz&B zh~>BKS1#nfjK0k9_9bif=CMUY&61QC0hJI^V+y@;G@7Edc*$>3WQy2cC3h z*CvBVdU!K3L)wmnrV0ZmZc<+k>X;xytNGX)I6Q4APU!R<3A==p`|D@>)u-XgNJ;bz zh-pB88-d-NUyN#+H_;>6Gpt$Ew&%{_$u30*KPP<)MDB?}qO08tbw zMO1&BU0j@*TIBMuPhmVqOGznQ^4c`mRTg01-=9N#d056bCsp%$&ftz22A&<=q0Lj> zJy%E}=`Q}LuPvkT3)$Cy=*^$YP)Pc4H%>^ynfHTa%+$x6P_uZ+a+Y(zhZQ^Ld@SE6 zcq`&2{FpHKS$g20`+z1HV=R{2vCF9Q=xYyL!oBf6^N|=~=O~;t5GEfY{H!>=f3#mjFo)Srh^MXdj-^r?p-+NoBsT6#IXT?C?L%AVJPEcK4>FoJx94 zv~iNap3!SgTTz-Iy> zgY3VE1HX9<;J|nOi#YJW3`JM%e-Q^>25{v3|5Y4#U^LTI{J&__gErtRXa0*uJ@^15 z*ncna-}UeR$x#pgUgH0V=lai%dieJe{~xZyuYCK@PILM9DgO8V|Nn4d|MzeI*=a8S zKE?m{oXr2P&;HL2Z2I>p{;N5Fzx>`mJFw|r@2I=4Fd;Le;)d+{d|2<@=hAau>e;9h zC~E8Ih`++jfF0+S0ULD2aaUrh`M(PDMl|@kgWe_gi2XKZor3u0lvuyh%X&CrZ~WE0 z3|+bZa`9GY0`D-+3r!7BTyz>oTbp|Eeo?F5-TcS?V_3uONAA~$3L+B*^PrlZuiwSn zbxxhf`9>e@ThVG9@tF8I=llaBzJe1@hX)iH@e$Z$UL=&7!TNB8V7WjQfW}L7CQN@Y zqo{XWd@o}Crx1D?+OfBAH(%3F7s{_IGExp1Uhb^0UZFy|rHK{sm`m5}Oey~&L-#K> z1C(fiQCXQfU-dS$*<}(Rva|xd0s*rhE>}4AlDFGaMnL>z`DurtnfL=_n_X;kqcmgdo7Lf1`1`q_}JBESF3PdqY;p#Mj29KjWOS0c~XB7B= z8l<*Oe*z6KqBZY%FaZDn)zZuUQupECIje%F+s;Y=8ZeD%YT%x|sw00tmqK?sGJ5Dh z4!9*aGf=Eqf5G^>6A7Va!SW}>p@!NDn{JCb2H*4MjKCnrrc~g%8|1)srA>b~iyq9c zJ3FK;pIGmSRS&hF^f9Rr{WF^@aE(JpblK~Aw&ZQHRq zmrom@7m!(o+n8?79}x`kaK0Hqpp61?r*l4*2jJP9d=N0L?tTYMLEqm}mGoFDUFeNB z-DYg(eaeowb~gpomCVl%s1j+Gjhb00kX(A|*|L&VtUad~PW z6fWR!W>>rbW)J8dWfAdRy?L;jh9j%HRAe2RJSj6{)-~;Fu5etYB~K!zJ;@RVy<}as z%ql7WFBX6v!dalMT$#RZG0ENb!8AIM7Z4Qh;a5(IWrt@V7uIab!%E&?t4K?e(KGxg zYlgO96Z5OMYh2%A;VpO{tfO7;<;)|`h>~906ONm58?Kxb)m9(JYDmAa{9VhSQ`J9% zzE>;u;Ipg7Eg#IOq0O8#WtZtIG?D#5@fvBqIdi_V%6>+5qS`t01wAe$#fXzm*2JJ} z-1TAmK!&qmP{=O!IQ^QS-ZziPgmW#3lP!i7d_WM=EeGh5z3p|L<1P-(I3>?6=jCl01X5(Ddi;u5kAp*SMgaV{#yl zqooezm2@)yu~00|>9WfJ-Bsi?j2u|`lcj9EDwF*Z#Y0tK4jbkH({NxB?#ru^7=M~= z7pq|6f%Q_=vp7x_ywdb*VYx|#b{ zYxpC-8bD2W{HBY<#2j4_GU)XcrB-u?;LXiaW9zNgyqR+ZB?j%^-q1coz6x)~j+XHQ zpg&tAvrEIX(Q=Rwuw+G1w5&3B2s8fWMA8v%N$T^awZf2tC~$wTYiQEUfC|+&-VCiQ zNvwBraUy@$hv3F5P9XS(#>z?8rqVjY(7hL%8af9XR8WrWs0+$FNi2)~bDU6ogt>9! zPnOPf$sVzu#OoBO2rOw$cl&9p6clUy+o@UAqE{|Ah)ZcMNuJnIwT-DdbH&F>N~$o& z5$mCRO*^`RZA(Dn>z9sv{2xW*$IF5g;P zT2yiz_j?VqDammn3cXF*)>p#|=~vV?$ohs__oNJL5EfDB?uf<);Oy2jXoy2kG(kh_JHD$bR6Jye$e;Q)L z7EZn>s;8PL2sn_|v}2H*A5bccyf) zgA!LL5W7oIPI5(d;*O9+mj>ibeP4H7cC&LCU*Mj8SVnJ!=cLvOVH;d=lm&r$VYqhn6O=O&2}vqQ%Y*8Xk#vBhvzt1*Z?W9BY`uY5dfRr{>nwv9TH@C8~vYGu5n>{jd ztm!9Y`-ElDMRfh|ment$$`#_yHdz9Irs5P!V6|KoiLxL|m-19!9WLTz7JqS1;wlwE zNBtD5wKDI_CUyg;{?hvCj+P!z$?>4WBt_d)x1K+Sr1kCzn0l*D@?`ByV) z-W4^3Ae&nBx1D2Hu^KwLejEZ}C?59dsOhu_DzY>5-3(^J*9)Elvo{bmZEU7Y6}bV9 zAarLW@f5u=8q#|eW=dV>fr+D?$*?RF`K8X;ziy0YuWwR^ph}I0N_R7W6Y*8s+xPF| zfOEGC;G6Z3LIL%R#tuM;9!h_(LUvA(y&-U3{K{pwsU4*>ncYt>v4^=B@sh3H*sC@x z7x>HcQ4I>DfbETzBCpAw@r#Qw@+Z}(jEgZfeoD@FOee;zgPiK=iI46 zX@g)0y<*oi9QPPj+iQ&@$a&^Dz|d@|w2e(<>+=@>#s09ryiG3t&AB&hU5d1_T&MdH zI-HuhEBkSTlHxRP>dT;M?;r2!mz+aebhDGiA(Wv7QQ&Vm`QGdSfLLv?^zj7*MmoSq zzDRE?D6j?_o>(&a&f*PXr7>)XD~QxU68Eoe2S$*S$lh3E09BmZJZ*)w15vTHvU0$u z4iHKAA8&2@W{xzMftf{}Ki)N~m@?74kKSDIe>Y+OS0CW7&;S4QABdFpHyWPhC}$r$ z$@nPl#CP%f-4BtBqKA{*on9;jk0Y+zelnB3LZuzY-wUicZI7S1v>(jaiF0k9+;{J8 zN(eo-nzx?&NlRp{`cIeK|0o|6*)@qgEN>`dfpvN741I1@iJQ2qd%KClrksDV26={a z|9B`Ly;zQ@?!dFaZQA>Sxax!<7vN@R=N4V~_~%tj-AMvA__cAh>owHYQ#%->25_=j0~@fd_oKPs!aPj?nc*>H>QQLN#r*D&;mz{XP0*@6TEuy(Hi9O^ z^cxeE3%aSX;TS(@dlm3+mInJMLqR4uB^3=EAPSwESK&kFZ z{F9V>%{KwrHm;G7Ib3Ecp&9+-)4NldjCftHzzPe+iR+Jo?Ny*t)2~;N9Dk+k33LdU zxskgbkL(0|L!G^pb1k}w@y-9IS^n=om=!tQMi9j9ZjnE~y}I9+9e8}$Ioll4YZV$E z-UXa;lwk!$J}tB7TCUz5wBcbp8BR*7U@6M1;o(j-4 z=JlTUbSIe8Tle?JZllnXG6e2_q%uZqKSu-jASZS>xlcKT6ZfJKE4$IVw_a0Szjp50 z!^?WPysy$BMuw{A76;^^XDZ1-l|iy!ZGu2A!m zh#+Fpt?f1%J?xew;1QWSJ!xij?x}{d&QlLo2J<57)_W6UIaSolEgE+fbJgONwKAl* zjVo>UmN-&PPs7SCmyltaP~4$s%*ze&Z+R`-+@f5Hhc5+>rdL$c#G?v%WTEB=juDVk z!mOZnGDN4?(Ek~$|AHkTdQF=iYwMNjip}9!n~0=7I~RVg{4d+yuVflsg)XK`dMI}# z3GlZ^v&0wa7N}2FJ3+dHeYdSw#=hoUz7X>^8fm|} z&G98PX}z~=IB#V{Q&L?@`10jxqszJ-sAJh}C_TD6l@neHfXf`R9Q6{L^}}2ZF9LI} zMXEUeZ}LExnZjCB3&{B@c_}Fqzg?zV z^0=|}DtV2ho(kuYfJPT$u5rco5VcmjtS+=Fl4%AB+>Keqnr^DN$LH=q5P1vyr6aee zqoIed;5<)XLSl)8)Ot{fv*yZJQ`nGP&el#Z`mG+eui~AXDHONTwwl9YXx4D#c4VGv6**1{*A&u42)WgIuux3 zDsxRPDCG;2a5Pe3g;a&+j*J3cXlX#bZBBRB&o(8pBhPpSe#3qVl*`mDPGxQJ`k#$W z<|m#GpN_5j5}x67F_jyYLe?9^Jj%>8rl}mTsV{7)+snfb(0dhU*1VW`y3w7g_*(Jx z;@q3}>fyU9JyusKBzTP;{`Ud)i(hS402Os1G9K|p`ExBJl6|24uRW=VyI+Sibxz{B z*m#O%cFSl!;Ufl%{c#6Yh{<;BL|tM7$wUmk1$h6otm0bYE(d+ia)to9 z{+WhUHQ3qfpS~l+xfV{&oLob+<@QeW^t+4-)8pdo{g%3`+=kHfrF~PNj|uKvsZ;_< zljgF_dpvYFSfvKg-F2=|Waa2{XCYkcrURhj!0`6}uf6w$;;en2u!5{Oi5(X$ZK|)%?lLdw5D>{cNv|8UDFZTc>Cq z7pY2V>eDQuRkg9cRkx~^?T0*6B1aW}pewthIMpo6eYanBXGC6v-{aDx4k%xOTz@Jaaew}4lC2(M2ps1tgi7U3)nVoifqd@;YvM^_EIE93CS}7g2p1dR7D2T@aT&?iDQf_ zWpC@&kbV9FY54=JcOp`q7R5@L2q(HN1)@0H^pf^_;~LK`C?h@Sjgo%k!S|OmyAJlX z)&?O@o$Bn z*clcn_X6rld3=?2g|5m~t*S(#Q>Qqsm!CH)50v;N0HRXk2xh5_koxNuUs=7@r=p*n zT5lukkYfk8n?_giD1C0-&)ILVDBCwpd8w&|ST?MELCvpYhbH|ROA4u|V{0_*TOj%UZ2 z{@+)~DH6bvYVSCRB)s@7@$u9NAe|WPv2ggEBP;(Y^w30q-qv%3{rbe90kr7tt~N$XG2Q*0LIL8fIC**bfbNaQm}S?3NRX|sByl+B!?4hZ zOwze__P2KS@=11Lhbn|lY5s0~76q}#qyXJ#N9?@KNVqlKZx!5o1O{B#(L?3;?jJ$| zxShBe>&KK>hu0wL55m;%OIG~O4g0C%6eHod(iQL&lV?I=qJl5v%gFrL$L)h^Gcz-> z-%Gtkd&6ZXF%7yR$B%`u27EHPJWjWF{_NSFr(+Q)CAwix^}IHAishT5#9j;&j$na` z1~%o(Ivv7vP&PuQCU@0-3!k->5pZGAorYNd!D@Oss}?H%$;1aY6~O=4Y@|5Kvt=Lj z34`2`*f&aFgfa2alAmhLQoKCTmwfl;@4!`vhvNvWgeeT2W+#Oursd{f;Q%LkUivyqxvsw%Tj4 z3zYF<%>r}|x@6*Dl8^U^>X>@M<;zH)7}bv>_9u5ToGoFC=Nk}2%AKtW(WU0;=FJ%+ z7Bs(euD3LajpbO_v;9NkYfA^G#^dSs-z@Vovt#8VE>h#qpFiLGbb^P%;aqTbV*?ej z$36Yej!oCf5a(u(tMD-VL%#3=G-5n{#zqJkuc(0xRS;qqmA@$wU$K0 zf3#-@@=|oq)5cgT&?&S+i^;fp&`wNC!3pc)9ofw77&6bkaF;BeK$G%xX+h!3<7>lD zaOn6?_oUoq#w?gwwM8kX{)-c!yL2Zq=*+28bC7z-v=er60T5*09wrV#l1?bGN(&2X zmu!;9$@QI5U86s_{;}lSZ=G*k{HOOg_9>LQ(E6j4M;}C3Z;}TYA%m!haZhniNrRBr z%FI}OZ)b`)TRH~x(9`nWZq;ELCU>CD{?pJu`pprbdFs5sZ46c>lVgSIGODAJT9AU7 zj!rq)DQ)xu_nD&8bs#=_Yd?o{qNp`HrrGILFYKA>o3k~7lgm@O);Evn<{r8(e`+Nb zQe!Cwb{AN9RPpQEZ~WZ4&jx`A0?%0u*5MHGdQ1jjKX13B!e-Wu&s#y~Hg^P4N`uP> z<9;I^LPW6@Np{zBr^G+l-edGT;RG8S8|B4|?+$=3@ifWtTo421Gay3S(Ydr)1eDPk z@fSM(Hqw8N`G5Pw8b=f+@0rBZ*Dha%pvb>D0g@qe?+wTqn3(u^F6JYif_C(+1xI9w z`uCk9IaNnUK(KkQ3>8OEe8M#hMLv&ea-kuPeEvM@l7;Ym_T6A7c(u!K0Xs)&uMte- z!OKDW^9=7er_7r-0-aWNxxI-TiRuov_*BpPQS)2^E$d>9i`dF9h`5rZc=%N5v%6JCYz zDDxI7S8`sbx&Jg0{`Yen;Bja|^ochV`3O_g_eRh4ofr9|rq=c6igZjR8mvHm%Re>p(^>%aZmSY?am?aSR7X0tm^ zUN}5$P(S8p$7d7>pgoLuoW#WFcmp**{75sE!G&!+Uw#%eBOF0LWIV1EL|r_|&ON-7 zU`zQoj5{SGBcFnT0wo0nYhYlY%Ik0JW`qxm8`!V!pW$Moz_XOSFn&ToJga_e_2zj< zH{xL|BgP9D<+Oygcn(d(+rH<+|92_+kN-We27Bf2?*nQ#x6l3996pSE(NI18Q=|Q_ z8}iSM3* z(P^7fDxgVK`m!iO7j0XaBp#n{%62D`MQxRGeYTxDe7;xBDXdho>23G88O~tst*bnU^DThs}cm2|*F)Hr^Kn{kSS(c-%FJBmy?%KkgWs}7-^D7O` z66HYX^Lof8%Q<*9%ct_2yS>MTQlx^P#R?40=_+LXs>d@Q->>;&?#lVe<(#n5J?6Bb$Dk8T#AW{y zb=Khy2jc7)zLRj`Ao#ThVZOEdcQ*DyelcIkV&=7WpdyaUQU=Wd8tcl}7g9&we}K;Q zp-ZPaVw&>XF{h886q&K z5#G0Uu_K|M2;}goRHyMi{1m2Hno;IgDefcE_V}SC>X9HZpr5)x&mj@o5H43Fr&N=6 z|9Z&Cfn7kX%|&wuZj0%jmCp5Uk-jE9m#mg6+Ge^=Ro3FQES&lsUu;WkJ>R(pNE?ez zxD?%fkt{{Qez5!^KBn>^#~xzjqDQ+Dphb>Mlf0T&=^;}6aujw8`9uavK=5N!im1-a z3*@C(ZrCL5ee}tm%hlsL&%oX~lmZMoDOHll!U4NMD*M@Ky)FKhH1V{cXF(iQgw?oQ zdEj5(vX!#|spHLxr`|AT34h&unc1p7(3cqZOy$u|S=91$jF9m5z>vW0%BAx$#fCo`$ExVqCsiB5;T8r3(%6!P zg4b;?&=I`Z56!i=%gU3(^Lnl;^Av}&lntXrRK+%XyM{^l&e4V_zak|$Q^({XSJTa9 zTY0NB%Pc|$Uk!*JS5=C#TN?9{)ZdM!RH`*NPq*8nodto_AmgFuFj{2|5>I5a7T*)e zzuKd3vJOWmj@{T^v7Q^wHrhKM68~hIO!d`GTpJSA6ZK@f>VR7|H$-1yH7m{kvYH;h zcv5x*qhK)EMUhfN6@&DJ08{71TZ;(`FU!>^nRBtwVi z5!P(4`MehKLCEfZnV952(UfS|8CF_X--X?{!}6=MxI9|aCH{-Miu1uVQr}|ct;G7q zH`tV=XIb~Yk(dpaC=9{H#KDxa7^TUG^&O09Z?0YB~QNoE?LDMKM zCg__hUdwHq*PArr(^+?~;j1Z##V;)9CQHCI-niM=_uc*5R=KYS70-2E^}j>FpGPmA zFo?0?x>i?YQj1@!+}t1ct5hKg8hXr8(TOnfk$AjQEbCAo4S5lfR&u{2cUM}BLe~8| z@m15s&$n=Ey#eiGc5&oZcYCwbge;>ken-?JZ|}PWHSosIFSyzE_TF5$4SHtSVxPGQ zyR1q3`E+aAXeA)}uGXK1>RCi5GvaD=tJRl@qsEYO3HDFpqF!`2zENL-y2oF5DkoAZ zQ{H7OPy1TZ_KAc=cFBnO&w$Ru19%vm>LYX+^9fwNmv_@M{i?@YkotSw=ORFXRVN8mw>|unO>P~)h|wx zyL|bk#-oh2>NCFx_zRust-``5aS#0%xo;ka+hYAm4 zlI1kqmT{qMQw93k_2;h$J}A9Wx|SPuZmni>Uh(Eety4~j)_mR<`S*3OY+YSb*+yd!{dkD3%`KveQuZP)XB*7M&RCh zJaL@y?RpL!hh3Xqo9`?OZ_VBA^lcn#P{X?YPFg%d}iCrN}HOlL1{FydR`Cx1Arbh@jlSg zVW5MKcFM|JkyUPX9*Wn+%`~EI+?0?5wk+-5uC&$tNOxBtRoG|)#sxqjnTFMdSmb?o zl*UMwQ{a@ZhVIQ>+U>qs)fHJ<* z&23hhUrKs?qU=QBjwO0 zN=!&(%w;J0{=&l`xo|Pi18>_|v}hgO>EP!k7Kt9CT39|^hbhb@XPat{H=)r;onF7F z>!b&f?nvcK>JGVRyqx1^TNE&+bv^FKTnVSw3{D)&5b z3;bpl3@@3!O7dqw$ypS)ocL@}w(yNm7E6Hs{ytNI@M}y0#9NI9TC( zu%RjJGGSb8-Po_<{k_lg(+@b7-a2k+q4~=|_hu^=q3u)ZzS7#-Asfe1a$v3(3NQKE zt-aKM(4H@hUT=cIZO9+-Mf<^*#K|)W>Y2u@xr2*euBaFanAW^wvJLmGcwk>O(kiV5 zo$v94sLHMzRMiC0OEVGcf5t`X@fU5}!>qHwryhG{t*dGOYU$F@fwmGi9W&^+F#NHa z#=K)<)0l|?(;eYh;yENeL%g)R_;{&0rN7H@>;Axj$Kvk8nqSp%Y$l7fZoPk~lvvRu z*%*`BCE;0p^64Jm@`@_c>iBNO7d*=N5;!<(32j z&K)%v@mk2^)sE0`vGEp1idHSK84*8Cp&9D|8AU^NcD z>iDdwR*uJ4%Hm7N+WRFb-zb`%eSXtQ(ocx_R-jSE6pMNl{3&{W+h6 zSxAPl*W6%5risPU<8H3jgfYLoQ+1(_Af-jEf|VX`c5AnMEw;7E)+LSJ122dtCl8?$ znJTT}zV{1R^uRl5ooRFQgx4(}IDM$7`ChNBo5l8Z3MS$Pxq}_h#vX9>A`#Q(XwF%AzZi%ujb(@lVfCGRmeK33^qy4iGgNNXc9x zmIE%@_Wivp3C#0l?erq?;%V|(!VC%wb)sy7Zdg0sU zviSzD-U=7@oydlty2cgbW{yF~P`0V*R z%|WvQs*!0fsx#7$71n-Uc{R~ccboSOy`u`yu1ky;{7g=>6rsAjCkoWxSC8*VPcn(b z(fb1ZlhJCKGSq*Hmh7**0yfZ%rLR+oUsGU>;{ORFYELJYHD8 zG^l&S^InJlpt?z6*b{om{P36R;pL(yap(IZg#;Key`HGT%L#*v+fo#HOd0b-d`b z21bZI7BQ@Jj*jQl`b>-rd^ra9Y_rIHVPP^PLd;~+%{!g#YM|4C&n*aoxu*!_bsEuC zs?`Y%R%EEvf;rDrftD!J0=8oQTs~;hL7NX-u3mE^SMy&MTp$+buDH$xTdvYB>CvIQ zbP1G;!r#gTq~FXZ^!Y+Blf%T$$EQ2PXPBB~;Ww0FA_mJmcJ|aK(}ux^f%if4B%LoA4(inLpm} z{sD;B_Z4NKg?Gnbmo&dWnOPP9+PYtXopQu}xb$qEz@nc{V-GQ3?z(N+U*@;btF4Gkci?NO7F(#+4qUA&ceW*extEnvFDJa9 zLA_dv#tlt2u*3}y`h9yXQ)vQjWtd;DZnNRYn3}%8!byBBIa7~j-sc5JRkJ0(nEv%9 zyj<4oct370l$uwiujH|&HdhI%$iHcY$gLKmNYT39C+8pI^(L#3FRi*im(StcdnCRQ zN?dcdMVs=&{)^Nx+&&wbY{V{enzV27#jCmoX-XrN8h#b875v@K#i7l3iUcHP0EFrZzlr-R9a`|Ta>zy_`(L_OyFprY=Y9XOZ6+*|LnN^yMyT)aO-#tN zJRWrp4!f89;GvMU+7qe1nLo&VbC-(zoY6stfNS1hLc770*TR15&B5{ zi~7c&ad}Kll0)ui;RvCTA@}%J>NN2XsmjKaBi^=g>1~N-($&C!XKQQ-G?EXoKJ;N-7C9KWuF$y2~p-cB4HB~rCDRm3YJ;82Ax^u z5}WEEE}?ChMaFts2r} zK@xPa@183}%H~Vz-rwpzx3DRsH0_9faPAV)-s)TLZU(_BVI|0Af07q9zI^%eJNNFL zor)cZ5!uU9o8hm+dVR*(UUtm}r~E2Q<{tgxEbelX7p#^nBP~FNaQDFP878b<=We5g zHR-9tDxJzfR6xS0Nh05fa3aF*g+2JosMu!N42@W}(Tc+)_4*7sctB*TifAPDRv6q^ zvLhpykf%9ugSj|WaFq~Vv?-Lm)v4)IkmdW@*}HNF4XvELz7o`cc}i5&q*;nAhHtl0 zTlb6o^8X;ekr>F5xLW}&OubVt>8QfaACwy1u#=L`Z2lZ~_vAb0 zqq&REc=kN>BR|`Ta8B^wBdH$QLfg-F3@S<$X22JAofkaDniH+5HXlqEhw$%sELqf~ zK_>g;e7Q5uWirmnu-{M(EvmerdyJ!Sal!-wD%B%&-7nC4B5F14IDbe`=`iSVlNa<$eE>S z_*Evw!NW@=SZp%Zj348wRYKz3F)f%f&h8oOljHp&wQHUMl6}}D@%cE<@bVtpF%O^C zB8#*VvAKl=l<6x+_?~G*n(S2s!SZ(K?CoH&@aeqHf$->k6!UT&p(pn6_|b=~<>6-#6%8>$x=NkKhbxTPA80+(eC`*O z0dhv#3)42<38KIesy?h}$-5x~j3oXWu-+TV+um#IoYp=0!8IoHh1|uTwomwt&@cNf z#l7jOP;qf#F>3(NcQ@&cLW@p0ERNOa)9x3|FBVybJ@$o6V0j1O1~QxSLS8c;w)(Ey z-g@D=4e1ZL92@~K$+rp*kGFN!%r#m=zYKm6M9j)?7Q7fs&Dq>q2MgyFSO) z942~d_l?yKB0R4czhxAjXdwy0N#zE&68yNEpAsHVV!^}}vG6NN6o{<{zQ$-LlFrVw z^1|SC2IJftz^Yx%CGCVJ_}8Cl%a^IlQ-65w{%8#o8%kVlfY$dPp&m2iN`I3XK_d=^ zQqaI+*rf28Iuov(fnb6mKKG;4(xG`q6S_1gS!yE);e{01ZcII^1g-`jzj01Ml~$2^ z)i@e$vsbJ&$=SH0P~-AZzxWe;C8O}cqD>quI%4IE-mj9=b^7fl^r$*O`T=1bu5i4G z`4K*jA{AnwZp>qweBd{lz|G<(&5Q)XYKO0>KhuKp@u#vVdbk|zx$Cjqr-PSuy@#q> z(HQT4{KTlV9-wuKoR{~!BwQwv^*;EenKlg2B@D}Nt@=M6V{0^yKmm_64tNkh+d(BE z4HG|_zB;2+#&}aChl7_XB!+8|4Zx1NE zjFJ8;WpucXof;=bvl0Bnti7<^-j(VP4MPVp6{4m^?%ZA@piruHj~(seYWxdiSG>>8 zXNr4Rk0_XW*L>XbS`BdRMl>UDLk|46gK4pDO|Z}e!B;FEc6~{+nu%<<>91ECXXQon z4<1=m&2L1w`FDzS8{(+CV3G85v1(eKj+2t?OmgXL2sX zS>MxTf;sHt%UnyO0#_TBzA1kRf0W>Yh*(uqa9+c0aUQ6Nlf>FQT|!nnFvGP<{1WxZ zBR;(Bz%<@!)o~nL*`0n)JRmlLPgFS^bvxFgSUT6j_GR+C|3ZppGKl?zEqIYW>f=s9O<;uXXxGo0;7LkJrT(&~Xe%Pe)X zWNFWEMeJrzZ`9gmCso${n!Po5Q1$q2IgZ}W*VGu2sNukBEVH%N`O;zs-5_;U?dfCw zc&-GbQo|$BPiqQ9R#NIl*Nl4oY7|z4Wv#x+>U{f!Esg+sj&C_mZuq&%{@5DeFV8)7`NGiYt(G(8%PJ7y zaK1oemV?}T&Y<|N*SDHz4{#A@(VtPqvOSn#!?fa2br!d;S8~-3uYz*6gU_{D3jw&h zPq|rmuhx5$i_l)^SK2=EgtG77XLR%N~ z1K?m=N=4)}CUdK^$nR8lcPoHd)Ha{i5 z7zdAF6dMbvIUgkDj~^-T<4-ES#yiZ78#Er__23N>d?S44qgA_&6+$eUo>-r}fG)#E zA5uNZbjy}b$U50~w;Si(SN545jk6W<8`&BzBTWFIR%BES=>kKj6z+bQ`&ZWo*6*xm zdv_dEwv(k!*R_GL;Q2?86-WadeHMd1$CI^h^yR2ko#O`tY4%X|b4d-5eF5#QlQI|K0XKpPS^?A8MyAn11~~ll&9{hYE-MhrgQ`Q+^)N9IC$EVq!~8Rn zb1DG1;Hi0otj~x%i}~Tb2bQ)4Ly+eFiZm4HKps$3@m>s?STV&OsS^M7b$j=lQoBOm zkM40bOTfLt*!E@lFZ6f7wULV1Q-@o*ki1_}#Xa2?dp$+Z(SZ9pZAW*h3^lQSj3IJD zlUY{d=r6}0n6>y6P+x-_4jB9cE7T8i7$><7KP&er6x15 zZ4*-ptZ-EsPT-Y1u4s$1?b|$P)+e7Z{~D!`8|dWLAyxc{9nreGn`y=yhV0l2D~wsJ zL8fRN8AuQSBevUduC5xXinygTXr-@MT-D4SDjU<Rx@Iy(#{UiVRikGEU-x4uiBaFLD)YFZ<=l&Z>64tMmJ(zW zy7X0I->rc*aMg@kQ#pw_jp#3XgVI!yE`LVaO!{K9Oosec-q3`0siES6lM3GrJMsPpKmZA!Te$SZl20$N z)N~uge=}fxeceVg@dh6cU8T)FeKqz2w`vOrLUi`&06@1GJU(~#VWw(|sP^63z zJP-Y@eWDL?qZTgF7+;VtL*LvR$L+M~aHbWfM$|a?J+JEnt4z>1E0+<%i{F_|-&@_# z+}ZB!VaAsU-Z`(*f-bMn2a(;hO4p2BgHmX13F&mJTG}^~g9akoYt?%?)9+w?xJ^F{ zYKo{X(&m7sxO&6!^8yAI7a#uS&4!`=VHwEwon0j9XXsW{i&5d&)4U3F0#&x=!r0T$ z;xpnsX}Cgx`M@;G6zJU83U!)*V6~K6DOr%_ABmtB`=P|WXJSoJrfO1=mE#>=27>W! zM+-ELGt>0%v|D-=JyySdkr_13WDzu2D1G4MhCHm%V~Ce8I{=a490@arU8l#oK?~yd z3KS=n7p%<8eFuhS&Vz`Bi>=pp?eM2rx-$H+mheXst4r#JU01Z95Z3==%U^(+oA;pR z=E*3OxbQ8FlB>s>IqNXJvS@_d-vYUYX5DiOOG6hv;y$GvCO#}{F9?V-6vqkVNj0l= z=$DAKyqau!H{!E0i2e``jx}OzU@!kky^Zh9P|;1hFcWY3@f4h)|eaqSFo9ow&_gjwoM_KA&*z89eO=|Cc$CYZ&I}&%$ZhX z9+-c5NngnHk>4Ck z_ph*XMF?rAF!H`+7$ZTO=5yI6m54N5`lH}vMKh>BzULGtzfGQ z*SRQ``%3Qw{h>s5_#+>$Gz#XxjUpT)Uwz%aC5ew}bjaq-winL*DpV=9&^YcF%%RS; z`|`U^Dp`V>hx=ntZ12bJ*qCB)?@<8JAT4)zk|~4O%(f1tKcA6t5(~;piozfNAQ9xqED$jD zer^I`)gvd!HK-jtYk_R-qLQQIRR}B`W4Q`)%A*WRK5jxQkInKZolWv=oI#VGTeogC z_pa1lz+MZ6GRleP-)!6&|3d&vQ)5Wi-5qiHpuosP09Jju(tn8G?7ezHYAWArG0kB= z76wcPhKM1)zczA-tGejHIdUU8t0v8q*xnJT`OF?41DWLY{(8>MgKJfu+tGJZq`LQV zp^7_K%f%LIt~cI|Ch$VTi;JgM3p022^%oFOj|DD%4xMLVl$4ZwqlaqSP_fHq_f^PC zTk=BPS9OCvQZDcBIvbEJAC!1R<_>JWp6{i#f^UD?(ohB&1ND;WN|eQ7@r#|R!#Y#b zl#17wwZke^v*Hkru$5|mlhK%Ui`F?aLE{PzkhcHche6>@d{nISNUIT-YbHx!7Cr9@ zXJBvx5w8;Sj`;RvC+<=ceknfIU$u*KuuJ-zRLYx*VEWFmr}B>I-L-v zUTO*wR~}~%pqlc*1fdseU`T@`t#7GPyiFR6;=FT+#}RBlTU;!gpYf*|WqO&F1y3ik*#O#=V(C>W+2ye6PlTwoj1{AdDL~7@`I8U@;MpT0H`P}b)6W`Rfh0h zd6bQs3drxQ(0zm0OMJAT#j*w$=InOY8aZCwZZ=bj0oHC3VKFuAOdV>Zj4iLiEs7U< zV%VT(_e;foEX_D%!UUbOU~{h&FmkQE5gMLGW)n=zpNLq|ncR02)&G1@xDpv9V*T)- zRZ$g`@K$RdoLlRa3jaz`Bw5NesCW`f4zSQyoslEGL(!m) z`2~$3W;S`RYU|lM@(N7?!bRSwA*Qd9VpW%jYu)!NdTcRYs-V<6NpcUK1qBDcv0u*h z6sE|JD7Ecy1POLlkMs88jY35GxD3Uva+pV@kjj8EAH}kP2`Gt!Jg+o=amVDm7ABGb z9g56fa8BWaP&e{VZfWtQPJRpD}%J+q7kZJiTnEm9eG4KUC@a{mYhyCy0we z-8N>{-rsQgnO-%7${rofv*-SxT^KFV_&&H!KM%&fQGDhZBQ17BJG&97eFqu8vM8vs zx6`yDY_lHX4i;3Rhmetf)WJsYqP{(R@j%D>{4!F{0#yEh!jjA2wzd7cqZ_9FTKw^| zsn!PvW2Y^-k6c4W%mG?WcnVMWqKB$!h*t`^b?by1gOdfBi&}bSFPk`f3{dmT6*Yv{ zx(h(LVqaWqs@>qz`EOqJ1QY|`dvg^f_OE7#z5Yb?%(QM@N8n%6M z^8|_zHXYvJwg&dgj{L;2XVNsKiy8B%FOt_<#>gZ&G}C4Zw4q(ZRA>`To)A)v^?A#F zC|?HnF*EAHnR9QN8PGP|+s-l|13v8r z=7epQIXVT@J%kSwyA|C{PI0lFF#gErVOPDDoWKV?KR{C$ePnLpfJVC!a;OWUV^(!~- z<*7)!;isx$yW)eM>PUi-J|e$huAJ~~Av=Qy#UkOZyZbezYjid+TG6LgZpVoPL@QKQ z`vGU?`pQ7j;OypeS+RtfcyWD)?33$6+;5MLvSk6ddE7~7)$@;0r|KMUrO+mQIR)r- zx|9dga|K8o2L+UM?;4+wzQKC8>y*XyraQOBqE~;m&A4mpcb%DuP5*TNv2?^6ZnJyK zM2fMULSp3(Qnnt=tR$~CKTB+uJpT#ExlD={H0{{$5pb&C@2%uHo1fnTI`~oV*!ASU z9zILn2bcg4P0e;yy{!!t{Jd%czA(-*e0TLQ;oK+26t2GSHlFify=^(g-M&aJ8FA*+ z68(x@&b1#usMRdm#EsfFT*WkkMR=w6b7TG1uX;^ogiM~>o=C74Hv7z|MP1F5KsmUT zx>V8pBd%?#&9V050^X_lN&?0sk1&!^jtdlXvF#qnvchd49x42woTK|mY(t9M06GO2 z(XznNW0scnz~>tG)HOBA2%pwq5>+6b6})dZk5Ur7pV?`6!yoeuE$p-AYxW#J2tl6R zdz&R(V8VS&{lN*oWseF;buz%E)$KSsfB?)dlou-kc%u(Awr_u*>p86!7>=Xd? z{?2e#%$>T3Ry~z}pr`@zycQXC!|m*DN*5=3lQ)LZhQz^ z8@qpqqUVp>*y{7&zw#GlLj{ourVDM&F z{=oJ9HJbk$llK4c+JHQBnjyAixZ=l<%j_fKD}jH5qMkl|TxksWHz;b&N57!t{!5cB zI%Wby!<5Z1N%?sV5;t4EVuEdKXerNpeDDd%E&E~VmRRt#qNDhIxQQTN5pwKn3`zI=(31l*UHb^9&0=$&$7Kb?gO!rZmnTE{kqQ@33pz^kg0xl3c7EM+J1qJ<- z15}ZKEP&(W$&-|HbU!z`$)9)9q_JQ$$#bsgUKzG5QUS1=9MFH;Nv_&3ndUd%CrhJz zg(AOhoaf^5-*_ZI$|A#wokBLx)!XkPbsfLK@3bp+iX;IAp(Rp|iPUuvHz%wj>oED~ zStXDvCDEs@1El#I$agVG3AdoWG(4A_w`9>PXGD?-eq;E!;!kK7A>mTJpm%LNU9N5F zG8D`J$vuB381zEk{XA3;rUPCmzg1CUJ>4(%>W$gc=|HQed%xT7do}CR=M}q;HFsh! z`f@4RsGkEk10^>nK;>7(AP|v7Fag+WK!W++R^+6j`D~T^RbyFsQwG}khmLQKiU#{v zF&wYuDfpX$VYh%PwRJOH#LCzEg5+DXTIOS4ntn?hKP_irgF zwN6tBeJs;Uyft*oMw2-H=5!9_G71;9@f%bbpSlU)aEq98)tMYuZcQzTPDG>SqnH7? zjT6=^2&}OWRQA%whijg$uElt>pgKt0YKjYf?Av~k5>)8{qrdQr{Ltq)!4ElkF4K^b zJ-PqEV921~-gZv>JBoGdq#a-G;_WtmJ|Z%$dtDXKD>f7PQ<1x0oy{4)@v#+gc+`PJ z@07Wv^NhDP-jjt+ToxLJjEq?84e^>3UUouMZ>cz)V6Fc%06Aa6axRX9JjWB^KhKR z?=eVC28(+%b))zi>m$?l^G5o5f3Y9!#ea?xr!pRybZ0VQC88-3#uSlOBW+r<5F^MG z=^NZ4StExAp&hfzSMh$-J^IAK1sQp1$AJx%k zefV;xlSJ;z!%{ng*vz$gpMx-7eUAjTt>xwA_55+_ppHm3Vsgo^VA@rBbf#KcRrtN7 zhkL8rqg(cHA^$O!$zGU3n^Eu)SNZRg4a_5A_BIb|N@bdSF&ohs>c|q7Z7RDXNCXT2 zY(-=`X0-pA-?Ykw+q=d`ZIOR;O1P#tv~Iy+Vgp*ZHNWwm@LSu~*!cAe$C;V1=bjwp1Fd}e<&_G( zy=woI+BBG(3@Va~xHiQ1_9(K`1Ls+DTL#DMIIDk@C;iKJg2;5oO%%4?FYM8QaqcNU zS*7}^zi1+~<=e6|NmUh|eGJh)d@R^xp3QtZ-~1~4jcGIDI!#YX>fny-zR8NzRetI4 zV{RWAM*;n_zClrBTE{LAv0MX*9qDKBcFi^Js-R;&={imSMIXmEX=~m~X;eX_e9!)6 z4URO$W?G7%*|b;ZNRIUFe@e`EQsO!z8o*F{93??SJVi!ax6#pj>|s7SMKr-53MfjC z_r7)Tvu!K$V-K^K;K^!yL)7s$<0Qd0_}Sj|kH;P+^rV7k+e77}>e|1rL7*@A8UE71 zv4@!#z*=P?#BpTZ{$dw(!}TvC^S_zNe;JwoX \u001b[39m\u001b[32m1\u001b[39m catalog = \u001b[43mload_catalog\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mglue\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[32m 2\u001b[39m catalog.list_tables(\u001b[33m\"\u001b[39m\u001b[33mmip_xs\u001b[39m\u001b[33m\"\u001b[39m)[\u001b[32m40\u001b[39m:\u001b[32m50\u001b[39m]\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:257\u001b[39m, in \u001b[36mload_catalog\u001b[39m\u001b[34m(name, **properties)\u001b[39m\n\u001b[32m 255\u001b[39m catalog_type = CatalogType(provided_catalog_type.lower())\n\u001b[32m 256\u001b[39m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m provided_catalog_type:\n\u001b[32m--> \u001b[39m\u001b[32m257\u001b[39m catalog_type = \u001b[43minfer_catalog_type\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 259\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m catalog_type:\n\u001b[32m 260\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m AVAILABLE_CATALOGS[catalog_type](name, cast(Dict[\u001b[38;5;28mstr\u001b[39m, \u001b[38;5;28mstr\u001b[39m], conf))\n", - "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:210\u001b[39m, in \u001b[36minfer_catalog_type\u001b[39m\u001b[34m(name, catalog_properties)\u001b[39m\n\u001b[32m 208\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 209\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mExpects the URI to be a string, got: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00m\u001b[38;5;28mtype\u001b[39m(uri)\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n\u001b[32m--> \u001b[39m\u001b[32m210\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\n\u001b[32m 211\u001b[39m \u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mURI missing, please provide using --uri, the config or environment variable PYICEBERG_CATALOG__\u001b[39m\u001b[38;5;132;01m{\u001b[39;00mname.upper()\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m__URI\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 212\u001b[39m )\n", - "\u001b[31mValueError\u001b[39m: URI missing, please provide using --uri, the config or environment variable PYICEBERG_CATALOG__GLUE__URI" + "\u001b[31mNoSuchPropertyException\u001b[39m Traceback (most recent call last)", + "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[7]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m catalog = \u001b[43mload_catalog\u001b[49m\u001b[43m(\u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43msql\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43m{\u001b[49m\n\u001b[32m 2\u001b[39m \u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43mtype\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m:\u001b[49m\u001b[43m \u001b[49m\u001b[33;43m\"\u001b[39;49m\u001b[33;43msql\u001b[39;49m\u001b[33;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[32m 3\u001b[39m \u001b[43m}\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 4\u001b[39m catalog.list_tables(\u001b[33m\"\u001b[39m\u001b[33mmip_xs\u001b[39m\u001b[33m\"\u001b[39m)[\u001b[32m40\u001b[39m:\u001b[32m50\u001b[39m]\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:260\u001b[39m, in \u001b[36mload_catalog\u001b[39m\u001b[34m(name, **properties)\u001b[39m\n\u001b[32m 257\u001b[39m catalog_type = infer_catalog_type(name, conf)\n\u001b[32m 259\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m catalog_type:\n\u001b[32m--> \u001b[39m\u001b[32m260\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mAVAILABLE_CATALOGS\u001b[49m\u001b[43m[\u001b[49m\u001b[43mcatalog_type\u001b[49m\u001b[43m]\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcast\u001b[49m\u001b[43m(\u001b[49m\u001b[43mDict\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mstr\u001b[39;49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mconf\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 262\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[33mf\u001b[39m\u001b[33m\"\u001b[39m\u001b[33mCould not initialize catalog with the following properties: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mproperties\u001b[38;5;132;01m}\u001b[39;00m\u001b[33m\"\u001b[39m)\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/__init__.py:159\u001b[39m, in \u001b[36mload_sql\u001b[39m\u001b[34m(name, conf)\u001b[39m\n\u001b[32m 156\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m 157\u001b[39m \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mpyiceberg\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01mcatalog\u001b[39;00m\u001b[34;01m.\u001b[39;00m\u001b[34;01msql\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;28;01mimport\u001b[39;00m SqlCatalog\n\u001b[32m--> \u001b[39m\u001b[32m159\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mSqlCatalog\u001b[49m\u001b[43m(\u001b[49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43m*\u001b[49m\u001b[43m*\u001b[49m\u001b[43mconf\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 160\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mImportError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m exc:\n\u001b[32m 161\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NotInstalledError(\n\u001b[32m 162\u001b[39m \u001b[33m\"\u001b[39m\u001b[33mSQLAlchemy support not installed: pip install \u001b[39m\u001b[33m'\u001b[39m\u001b[33mpyiceberg[sql-postgres]\u001b[39m\u001b[33m'\u001b[39m\u001b[33m or pip install \u001b[39m\u001b[33m'\u001b[39m\u001b[33mpyiceberg[sql-sqlite]\u001b[39m\u001b[33m'\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 163\u001b[39m ) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01mexc\u001b[39;00m\n", + "\u001b[36mFile \u001b[39m\u001b[32m~/projects/NGWPC/icefabric/.venv/lib/python3.12/site-packages/pyiceberg/catalog/sql.py:123\u001b[39m, in \u001b[36mSqlCatalog.__init__\u001b[39m\u001b[34m(self, name, **properties)\u001b[39m\n\u001b[32m 120\u001b[39m \u001b[38;5;28msuper\u001b[39m().\u001b[34m__init__\u001b[39m(name, **properties)\n\u001b[32m 122\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m (uri_prop := \u001b[38;5;28mself\u001b[39m.properties.get(\u001b[33m\"\u001b[39m\u001b[33muri\u001b[39m\u001b[33m\"\u001b[39m)):\n\u001b[32m--> \u001b[39m\u001b[32m123\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m NoSuchPropertyException(\u001b[33m\"\u001b[39m\u001b[33mSQL connection URI is required\u001b[39m\u001b[33m\"\u001b[39m)\n\u001b[32m 125\u001b[39m echo_str = \u001b[38;5;28mstr\u001b[39m(\u001b[38;5;28mself\u001b[39m.properties.get(\u001b[33m\"\u001b[39m\u001b[33mecho\u001b[39m\u001b[33m\"\u001b[39m, DEFAULT_ECHO_VALUE)).lower()\n\u001b[32m 126\u001b[39m echo = strtobool(echo_str) \u001b[38;5;28;01mif\u001b[39;00m echo_str != \u001b[33m\"\u001b[39m\u001b[33mdebug\u001b[39m\u001b[33m\"\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m \u001b[33m\"\u001b[39m\u001b[33mdebug\u001b[39m\u001b[33m\"\u001b[39m\n", + "\u001b[31mNoSuchPropertyException\u001b[39m: SQL connection URI is required" ] } ], diff --git a/examples/initial_parameters/soil_freeze_thaw.ipynb b/examples/initial_parameters/soil_freeze_thaw.ipynb new file mode 100644 index 0000000..10f7c5e --- /dev/null +++ b/examples/initial_parameters/soil_freeze_thaw.ipynb @@ -0,0 +1,214 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Soil Freeze-Thaw support\n", + "\n", + "The following notebook contains a walkthrough of the support for the Soil Freeze-Thaw (SFT) module\n", + "\n", + "The notebook is organized in the following sections:\n", + "1. Icefabric API support\n", + "2. Icefabric CLI support" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Running imports\n", + "import json\n", + "import os\n", + "import threading\n", + "import zipfile\n", + "from contextlib import contextmanager\n", + "\n", + "import httpx\n", + "\n", + "\n", + "@contextmanager\n", + "def change_dir(destination: str):\n", + " \"\"\"Changes the directory to the project root\"\"\"\n", + " original_dir = os.getcwd()\n", + " try:\n", + " os.chdir(destination)\n", + " yield\n", + " finally:\n", + " os.chdir(original_dir)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Starting the API locally\n", + "def run_api():\n", + " \"\"\"Starts the icefabric API locally\"\"\"\n", + " # This preserves your original directory\n", + " with change_dir(\"../../\"):\n", + " print(f\"Running from: {os.getcwd()}\")\n", + " !python -m app.main --catalog sql\n", + "\n", + "\n", + "threading.Thread(target=run_api).start()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This will start the API on localhost:8000. This can be visited at: http://localhost:8000/docs \n", + "\n", + "![Icefabric API](../../docs/img/icefabric_api.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To test the SFT endpoint, we can use an example API call. This will return all config entries in JSON form. Each item in the output is the BMI Config contents for a specific catchment upstream of USGS 01010000" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Make the request\n", + "response = httpx.get(\n", + " \"http://0.0.0.0:8000/v2/modules/sft/\",\n", + " params={\n", + " \"identifier\": \"01010000\", # the Gauge ID we're testing\n", + " \"domain\": \"conus_hf\", # The CONUS domain\n", + " \"use_schaake\": \"false\", # Specifying we're not using Schaake for the ice fraction setting\n", + " },\n", + " timeout=30.0, # GLUE API requests can be slow depending on the network speed. Adding a 30s timeout to ensure requests go through\n", + ")\n", + "\n", + "print(f\"Status code: {response.status_code}\")\n", + "print(json.dumps(response.json(), indent=2))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### CLI\n", + "\n", + "Now that we can return to the user all of the information / IPEs for a module, we can use the icefabric CLI to generate config files to disk for the user\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pathlib import Path\n", + "\n", + "Path(\"/tmp/sft_output_test\").mkdir(exist_ok=True, parents=True)\n", + "\n", + "# Ensure the current working dir is where your `.pyiceberg.yaml` file is located\n", + "with change_dir(\"../../\"):\n", + " !uv run icefabric params --gauge 01010000 --module sft --domain conus --catalog sql --output /tmp/sft_output_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now that these are created, let's view the contents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "with zipfile.ZipFile(\"/tmp/sft_output_test/configs.zip\", \"r\") as f:\n", + " print(\"Files in archive:\")\n", + " for file_info in f.filelist:\n", + " print(f\" {file_info.filename} ({file_info.file_size} bytes)\")\n", + " f.extractall(\"/tmp/sft_output/configs\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's view one of their contents" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "files = Path(\"/tmp/sft_output_test/configs\").glob(\"*\")\n", + "first_file = list(files)[0]\n", + "content = first_file.read_text()\n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also view the metadata.json file that was created. This will contain additional information about the query parameters used to make these configs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "metadata = Path(\"/tmp/sft_output_test/configs/metadata.json\")\n", + "content = json.loads(metadata.read_text())\n", + "\n", + "print(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Through either the API, or CLI, any modeler can create a BMI Config file for SFT that is compatible with NextGen" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "icefabric", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/pyproject.toml b/pyproject.toml index e115fa1..2b61ede 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,6 +34,7 @@ maintainers = [ ] dependencies = [ + "click==8.2.1", "dask==2025.5.1", "fiona==1.10.1", "fsspec==2025.5.1", @@ -65,6 +66,9 @@ dependencies = [ "zarr==3.0.9", ] +[project.scripts] +icefabric = "icefabric.cli.main:cli" + [project.optional-dependencies] docs = [ "mkdocs-material==9.6.14", diff --git a/src/icefabric/__init__.py b/src/icefabric/__init__.py index e701dc1..8116e6b 100644 --- a/src/icefabric/__init__.py +++ b/src/icefabric/__init__.py @@ -1,6 +1,6 @@ """An Apache Iceberg + Icechunk implementation of Hydrofabric data services""" -from . import builds, helpers, hydrofabric, modules, schemas, ui +from . import builds, cli, helpers, hydrofabric, modules, schemas, ui from ._version import __version__ -__all__ = ["__version__", "builds", "hydrofabric", "helpers", "modules", "schemas", "ui"] +__all__ = ["__version__", "builds", "cli", "hydrofabric", "helpers", "modules", "schemas", "ui"] diff --git a/src/icefabric/cli/__init__.py b/src/icefabric/cli/__init__.py new file mode 100644 index 0000000..f3097c6 --- /dev/null +++ b/src/icefabric/cli/__init__.py @@ -0,0 +1,6 @@ +from pyiceberg.catalog import Catalog, load_catalog + + +def get_catalog(_catalog: str = "glue") -> Catalog: + """Gets the pyiceberg catalog reference""" + return load_catalog(_catalog) diff --git a/src/icefabric/cli/main.py b/src/icefabric/cli/main.py new file mode 100644 index 0000000..73cdd60 --- /dev/null +++ b/src/icefabric/cli/main.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +"""Main CLI entry point for icefabric""" + +import click + +from icefabric import __version__ +from icefabric.cli.modules import params + + +def get_version(): + """Get the version of the icefabric package.""" + return __version__ + + +@click.group() +@click.version_option(version=get_version()) +@click.pass_context +def cli(ctx): + """ + Ice fabric tools and utilities. + + A comprehensive toolkit for working with ice fabric data, + hydrofabric processing, and related geospatial operations. + """ + ctx.ensure_object(dict) + + +# Add subcommands +cli.add_command(params) + +# Main entry point for when run as a script +if __name__ == "__main__": + cli() diff --git a/src/icefabric/cli/modules.py b/src/icefabric/cli/modules.py new file mode 100644 index 0000000..690742b --- /dev/null +++ b/src/icefabric/cli/modules.py @@ -0,0 +1,86 @@ +"""Contains all click CLI code for NWM modules""" + +from pathlib import Path + +import click + +from icefabric._version import __version__ +from icefabric.cli import get_catalog +from icefabric.helpers.io import _create_config_zip +from icefabric.modules import NWMModules, config_mapper +from icefabric.schemas.hydrofabric import HydrofabricDomains +from icefabric.schemas.modules import IceFractionScheme + + +@click.command() +@click.option( + "--gauge", + type=str, + help="The Gauge ID to subset the Hydrofabric from and get upstream catchment information", +) +@click.option( + "--module", + type=click.Choice([module.value for module in NWMModules], case_sensitive=False), + help="The module to create initial parameter config files for", +) +@click.option( + "--domain", + type=click.Choice([domain.name.lower() for domain in HydrofabricDomains], case_sensitive=False), + help="The domain at which you are running your model", +) +@click.option( + "--catalog", + type=click.Choice(["glue", "sql"], case_sensitive=False), + default="glue", + help="The pyiceberg catalog type", +) +@click.option( + "--ice-fraction", + type=click.Choice(IceFractionScheme, case_sensitive=False), + help="The ice fraction scheme used. Defaults to False to use Xinanjiang", +) +@click.option( + "--output", + "-o", + type=click.Path(path_type=Path), + default=Path.cwd(), + help="Output path for the zip file. Defaults to current directory", +) +def params( + gauge: str, + module: str, + domain: HydrofabricDomains, + catalog: str, + ice_fraction: IceFractionScheme, + output: Path, +): + """Returns a zip file containing all config files requested by a specific module""" + get_param_func = config_mapper[module] + domain_enum = HydrofabricDomains[domain.upper()] + ice_fraction_enum = ( + IceFractionScheme[ice_fraction.upper()] if ice_fraction else IceFractionScheme.XINANJIANG + ) # Defaults to Xinanjiang + + configs = get_param_func( + catalog=get_catalog(catalog), + domain=domain_enum, + identifier=gauge, + use_schaake=True if ice_fraction_enum == IceFractionScheme.SCHAAKE else False, + ) + + output.parent.mkdir(parents=True, exist_ok=True) + + _create_config_zip( + configs=configs, + output_path=output, + kwargs={ + "gauge_id": gauge, + "domain": domain, + "version": __version__, + "module": module, + "catalog_type": catalog, + "ice_fraction": ice_fraction_enum.value, + }, + ) + + click.echo(f"Config files created successfully in the following folder: {output}") diff --git a/src/icefabric/helpers/io.py b/src/icefabric/helpers/io.py new file mode 100644 index 0000000..306405e --- /dev/null +++ b/src/icefabric/helpers/io.py @@ -0,0 +1,41 @@ +import json +import tempfile +import zipfile +from pathlib import Path + +from tqdm import tqdm + +from icefabric.schemas.modules import NWMProtocol + + +def _create_config_zip(configs: list[NWMProtocol], output_path: Path, **kwargs): + """Creates a zip file of BMI configs with a metadata.json file containing query information + + Parameters + ---------- + configs : list[NWMProtocol] + The list of config NWMProtocol models + output_path : Path + The output path location to write zip files + """ + with tempfile.TemporaryDirectory() as temp_dir_str: + temp_dir = Path(temp_dir_str) + config_files = [] + + # Write config files + for config in tqdm(configs, desc="Creating a config file", total=len(configs), ncols=140): + file_path = config.model_dump_config(temp_dir) + config_files.append(file_path) + + # Create metadata file + metadata_path = temp_dir / "metadata.json" + with metadata_path.open("w", encoding="UTF-8") as f: + json.dump(kwargs["kwargs"], f) # Removes the root from the dict + config_files.append(metadata_path) + + output_file = output_path / "configs.zip" + + with zipfile.ZipFile(output_file, "w", zipfile.ZIP_DEFLATED) as f: + for file_path in config_files: + archive_name = file_path.name + f.write(file_path, archive_name) diff --git a/src/icefabric/modules/__init__.py b/src/icefabric/modules/__init__.py index 36787f2..7483397 100644 --- a/src/icefabric/modules/__init__.py +++ b/src/icefabric/modules/__init__.py @@ -1,8 +1,21 @@ """Contains helper functions to support NWM modules""" +import enum + from .create_ipes import divide_parameters, get_hydrofabric_attributes, get_sft_parameters, module_ipe from .rnr import get_rnr_segment + +class NWMModules(enum.Enum): + """A list of all supported NWM Modules""" + + SFT = "sft" + + +config_mapper = { + "sft": get_sft_parameters, +} + __all__ = [ "divide_parameters", "get_hydrofabric_attributes", diff --git a/src/icefabric/modules/create_ipes.py b/src/icefabric/modules/create_ipes.py index 7ad234c..7902727 100644 --- a/src/icefabric/modules/create_ipes.py +++ b/src/icefabric/modules/create_ipes.py @@ -9,13 +9,14 @@ from pyproj import Transformer from icefabric.hydrofabric import subset -from icefabric.schemas import SFT, HydrofabricDomains, IceFractionScheme, IdType +from icefabric.schemas.hydrofabric import HydrofabricDomains, IdType +from icefabric.schemas.modules import SFT, IceFractionScheme ROOT_DIR = os.path.abspath(os.curdir) def _get_mean_soil_temp() -> float: - """This is avg soil temp of 45 degrees F converted to Kelvin. This equation is just a reasonable estimate per new direction (EW: 07/2025) + """Returns an avg soil temp of 45 degrees F converted to Kelvin. This equation is just a reasonable estimate per new direction (EW: 07/2025) Returns ------- diff --git a/src/icefabric/schemas/modules.py b/src/icefabric/schemas/modules.py index 03948ad..61d13b0 100644 --- a/src/icefabric/schemas/modules.py +++ b/src/icefabric/schemas/modules.py @@ -1,20 +1,25 @@ """A file to host schemas for all NWM modules. Based off the table from https://confluence.nextgenwaterprediction.com/pages/viewpage.action?spaceKey=NGWPC&title=BMI+Exchange+Items+and+Module+Parameters""" -from enum import Enum +import enum +from pathlib import Path from typing import Protocol from pydantic import BaseModel, ConfigDict, Field, field_validator class NWMProtocol(Protocol): - """Protocol defining the interface that configuration NWM BaseModel classes should implement. This ensures consistency across different module configuration classes.""" + """Protocol defining the interface that configuration NWM BaseModel classes should implement.""" def to_bmi_config(self) -> list[str]: """Converts the contents of the base class to a BMI config for that specific module""" ... + def model_dump_config(self, output_path: Path) -> Path: # Changed to return Path + """Outputs the BaseModel to a BMI Config file""" + ... + -class IceFractionScheme(str, Enum): +class IceFractionScheme(str, enum.Enum): """The ice fraction scheme to be used in SFT""" SCHAAKE = "Schaake" @@ -62,7 +67,26 @@ def to_bmi_config(self) -> list[str]: f"soil_params.b={self.soil_params_b}", f"soil_params.satpsi={self.soil_params_satpsi}", f"soil_params.quartz={self.soil_params_quartz}", - f"ice_fraction_scheme={self.ice_fraction_scheme}", + f"ice_fraction_scheme={self.ice_fraction_scheme.value}", f"soil_z={z_values}[m]", f"soil_temperature={temp_values}[K]", ] + + def model_dump_config(self, output_path: Path) -> Path: + """Outputs the BaseModel to a BMI Config file + + Parameters + ---------- + output_path : Path + The path for the config file to be written to + + Returns + ------- + Path + The path to the written config file + """ + file_output = self.to_bmi_config() + sft_bmi_file = output_path / f"{self.catchment}_bmi_config_sft.txt" + with open(sft_bmi_file, "w") as f: + f.write("\n".join(file_output)) + return sft_bmi_file From 1702604dee199f1ea750bcbbd6f2f4bf1d430ce3 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Fri, 11 Jul 2025 09:06:29 -0400 Subject: [PATCH 77/97] NGWPC-6919: Create an API endpoint / method for accessing Albedo data from the version controlled format (#49) --- app/main.py | 3 ++- app/routers/nwm_modules/router.py | 26 +++++++++++++++++++- src/icefabric/schemas/__init__.py | 3 ++- src/icefabric/schemas/modules.py | 30 +++++++++++++++++++++++- tests/app/test_topoflow_albedo_router.py | 15 ++++++++++++ 5 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 tests/app/test_topoflow_albedo_router.py diff --git a/app/main.py b/app/main.py index cf9effb..3cf851e 100644 --- a/app/main.py +++ b/app/main.py @@ -10,7 +10,7 @@ from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.module_params.router import api_router as module_params_router -from app.routers.nwm_modules.router import sft_router +from app.routers.nwm_modules.router import sft_router, topoflow_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router from icefabric.helpers import load_creds @@ -49,6 +49,7 @@ class HealthCheck(BaseModel): app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") app.include_router(sft_router, prefix="/v2") +app.include_router(topoflow_router, prefix="/v2") app.include_router(module_params_router, prefix="/v1") diff --git a/app/routers/nwm_modules/router.py b/app/routers/nwm_modules/router.py index f504a02..f519b5f 100644 --- a/app/routers/nwm_modules/router.py +++ b/app/routers/nwm_modules/router.py @@ -3,9 +3,10 @@ from app import get_catalog from icefabric.modules import get_sft_parameters -from icefabric.schemas import SFT, HydrofabricDomains +from icefabric.schemas import SFT, Albedo, HydrofabricDomains sft_router = APIRouter(prefix="/modules/sft") +topoflow_router = APIRouter(prefix="/modules/topoflow") @sft_router.get("/") @@ -48,3 +49,26 @@ async def get_sft_ipes( identifier=identifier, use_schaake=use_schaake, ) + + +@topoflow_router.get("/albedo") +async def get_albedo( + landcover_state: Albedo = Query( + ..., + description="The landcover state of a catchment for albedo classification", + examples=["snow"], + openapi_examples={"albedo_example": {"summary": "Albedo Example", "value": "snow"}}, + ), +) -> float: + """ + An endpoint to return albedo values for TopoFlow Glacier module. + + This endpoint matches a catchment's land cover class ("snow", "ice", "other) with an albedo value [0, 1] + + **Parameters:** + - **landcover_state**: Land cover state: "snow", "ice", or "other" + + **Returns:** + A float albedo value [0, 1] + """ + return Albedo.get_landcover_albedo(landcover_state.landcover).value diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py index e8b8664..3190283 100644 --- a/src/icefabric/schemas/__init__.py +++ b/src/icefabric/schemas/__init__.py @@ -1,7 +1,7 @@ """Contains helper functions to support NWM modules""" from .hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType -from .modules import SFT, IceFractionScheme +from .modules import SFT, Albedo, IceFractionScheme from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations __all__ = [ @@ -10,6 +10,7 @@ "HydrofabricDomains", "SFT", "IceFractionScheme", + "Albedo", "FileType", "NGWPCLocations", "NGWPCTestLocations", diff --git a/src/icefabric/schemas/modules.py b/src/icefabric/schemas/modules.py index 61d13b0..6fb1439 100644 --- a/src/icefabric/schemas/modules.py +++ b/src/icefabric/schemas/modules.py @@ -2,7 +2,7 @@ import enum from pathlib import Path -from typing import Protocol +from typing import Literal, Protocol from pydantic import BaseModel, ConfigDict, Field, field_validator @@ -90,3 +90,31 @@ def model_dump_config(self, output_path: Path) -> Path: with open(sft_bmi_file, "w") as f: f.write("\n".join(file_output)) return sft_bmi_file + + +class AlbedoValues(enum.Enum): + """A class to store land cover-derived albedo. + + Update land cover classes and corresponding values here. + Values are [0, 100] + """ + + snow = 0.75 + ice = 0.3 + other = 0.2 + + +class Albedo(BaseModel): + """A model to handle `/topoflow/albedo` inputs and outputs. + + Note: + This Literal will fail static type checking due to dynamically created values. + However, generating dynamically keeps this function DRY and creates the appropriate API inputs. + If changes to albedo values are needed, they are only made in `AlbedoValues`. `Albedo` will never change. + """ + + landcover: Literal[tuple(AlbedoValues._member_names_)] + + def get_landcover_albedo(v: str): + """Return the albedo value""" + return getattr(AlbedoValues, v) diff --git a/tests/app/test_topoflow_albedo_router.py b/tests/app/test_topoflow_albedo_router.py new file mode 100644 index 0000000..e4280f9 --- /dev/null +++ b/tests/app/test_topoflow_albedo_router.py @@ -0,0 +1,15 @@ +from icefabric.schemas.modules import AlbedoValues + + +def test_albedo_endpoint(client): + """Test: GET /v2/modules/topoflow/albedo - all valid arguments""" + for landcover, albedo in AlbedoValues.__members__.items(): + response = client.get(f"/v2/modules/topoflow/albedo?landcover={landcover}") + assert response.status_code == 200 + assert response.text == str(albedo.value) + + +def test_albedo_endpoint__422(client): + """Test: GET /v2/modules/topoflow/albedo - fails validator""" + response = client.get("/v2/modules/topoflow/albedo?landcover=nope") + assert response.status_code == 422 From a6953bb21989418ca4d1828343b30e24d6036014 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Fri, 11 Jul 2025 11:54:55 -0400 Subject: [PATCH 78/97] Remove /v1/modules/parameters route (#53) --- app/main.py | 6 +- app/routers/module_params/__init__.py | 0 app/routers/module_params/router.py | 44 ----- src/icefabric/modules/__init__.py | 4 +- src/icefabric/modules/create_ipes.py | 239 -------------------------- 5 files changed, 3 insertions(+), 290 deletions(-) delete mode 100644 app/routers/module_params/__init__.py delete mode 100644 app/routers/module_params/router.py diff --git a/app/main.py b/app/main.py index 3cf851e..b6c700e 100644 --- a/app/main.py +++ b/app/main.py @@ -9,7 +9,6 @@ from pyiceberg.catalog import load_catalog from app.routers.hydrofabric.router import api_router as hydrofabric_api_router -from app.routers.module_params.router import api_router as module_params_router from app.routers.nwm_modules.router import sft_router, topoflow_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router from icefabric.helpers import load_creds @@ -48,9 +47,8 @@ class HealthCheck(BaseModel): # Include routers app.include_router(hydrofabric_api_router, prefix="/v1") app.include_router(streamflow_api_router, prefix="/v1") -app.include_router(sft_router, prefix="/v2") -app.include_router(topoflow_router, prefix="/v2") -app.include_router(module_params_router, prefix="/v1") +app.include_router(sft_router, prefix="/v1") +app.include_router(topoflow_router, prefix="/v1") @app.head( diff --git a/app/routers/module_params/__init__.py b/app/routers/module_params/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/app/routers/module_params/router.py b/app/routers/module_params/router.py deleted file mode 100644 index ff38f12..0000000 --- a/app/routers/module_params/router.py +++ /dev/null @@ -1,44 +0,0 @@ -import json -import os -import re - -from fastapi import APIRouter, HTTPException -from pydantic import BaseModel - -from icefabric.modules import get_hydrofabric_attributes, module_ipe - -api_router = APIRouter(prefix="/modules") -ROOT_DIR = os.path.abspath(os.curdir) - - -class Parameters(BaseModel): - gage_id: str - version: str - source: str - domain: str - modules: list[str] - - -@api_router.post("/parameters") -async def get_ipes(query: Parameters): - if query.version != "2.1" and query.version != "2.2": - raise HTTPException(status_code=422, detail="Icefabric version must be 2.2 or 2.1") - elif query.version == "2.1" and query.domain != "CONUS": - raise HTTPException(status_code=422, detail="oCONUS domains not availiable in Icefabric version 2.1") - - gpkg_file = f"{ROOT_DIR}/data/gauge_{query.gage_id}.gpkg" - if not os.path.exists(gpkg_file): - raise HTTPException(status_code=422, detail="Gage ID/geopackage not found") - - # Get divide attributes from the geopackage - attr = get_hydrofabric_attributes(gpkg_file, query.version, query.domain) - - all_modules = [] - for mod in query.modules: - mod_json = module_ipe(mod, attr, query.domain, query.version, cfg_write=True) - all_modules.append(mod_json) - - final_json = json.dumps({"modules": all_modules}) - final_json = re.sub("NaN", "null", final_json) - - return final_json diff --git a/src/icefabric/modules/__init__.py b/src/icefabric/modules/__init__.py index 7483397..45be687 100644 --- a/src/icefabric/modules/__init__.py +++ b/src/icefabric/modules/__init__.py @@ -2,7 +2,7 @@ import enum -from .create_ipes import divide_parameters, get_hydrofabric_attributes, get_sft_parameters, module_ipe +from .create_ipes import divide_parameters, get_sft_parameters from .rnr import get_rnr_segment @@ -18,8 +18,6 @@ class NWMModules(enum.Enum): __all__ = [ "divide_parameters", - "get_hydrofabric_attributes", "get_sft_parameters", - "module_ipe", "get_rnr_segment", ] diff --git a/src/icefabric/modules/create_ipes.py b/src/icefabric/modules/create_ipes.py index 7902727..92ac1ee 100644 --- a/src/icefabric/modules/create_ipes.py +++ b/src/icefabric/modules/create_ipes.py @@ -6,7 +6,6 @@ import pyiceberg.exceptions as ex from botocore.exceptions import ClientError from pyiceberg.catalog import Catalog, load_catalog -from pyproj import Transformer from icefabric.hydrofabric import subset from icefabric.schemas.hydrofabric import HydrofabricDomains, IdType @@ -26,244 +25,6 @@ def _get_mean_soil_temp() -> float: return (45 - 32) * 5 / 9 + 273.15 -def module_ipe(module: str, attr: str, domain: str, version: str, cfg_write=None): - """Creates initial parameter estimates for a module - - Parameters - ---------- - module : str - _description_ - attr : str - _description_ - domain : str - _description_ - version : str - _description_ - cfg_write : str, optional - _description_, by default None - - Returns - ------- - _type_ - _description_ - """ - # Create empty dataframe for csv parameters - csv_params = pd.DataFrame() - - # Get list of divides - divides = attr["divide_id"].to_list() - - # Look up parameter csv file for module - has_output_vars = True - module_df = pd.read_csv(f"{ROOT_DIR}/data/modules.csv") - param_file = module_df.loc[module_df["module"] == module]["file"].to_string(index=False) - out_file = module_df.loc[module_df["module"] == module]["outputs"].to_string(index=False) - if out_file == "NaN": - has_output_vars = False - - # Get module parameters - datatypes = { - "name": "object", - "description": "object", - "units": "object", - "data_type": "object", - "calibratable": "bool", - "source": "object", - "min": "float64", - "max": "float64", - "default_value": "object", - "divide_attr_name": "object", - "source_file": "object", - } - # Get output vars - out_datatypes = {"variable": "object", "description": "object"} - - module_params = pd.read_csv(f"{ROOT_DIR}/data/{param_file}", dtype=datatypes) - output_vars = pd.DataFrame() - if has_output_vars: - output_vars = pd.read_csv(f"{ROOT_DIR}/data/{out_file}", dtype=out_datatypes) - - # Filter data frame for parameter names and default values. Create dictionary to collect - # parameters for cfg files. - param_values = module_params[["name", "default_value"]] - param_values = pd.Series(param_values["default_value"].values, index=param_values["name"]).to_dict() - - # Get sources - attr_list = module_params["source"].to_list() - - # Create dictionary with divide IDs as the keys and parameter dictionary for the values. - all_cats = {} - for divide in divides: - all_cats[divide] = param_values.copy() - - # For attributes, get list of attribute names - attr_list = module_params.loc[module_params["source"] == "attr"]["divide_attr_name"].to_list() - attr_list.append("divide_id") - # Get corresponding list of parameter names to create a dictionary for mapping - attr_names = module_params.loc[module_params["source"] == "attr"]["name"].to_list() - attr_name_map = dict(zip(attr_list, attr_names, strict=False)) - # Filter attributes for those needed for this module - attr = attr[attr_list] - # Rename attribute names to module names - attr.rename(columns=attr_name_map, inplace=True) - - # Get iceberg table parameters - if "iceberg" in module_params["source"].values: - iceberg_params = divide_parameters(divides, module, domain) - - # Loop through divides and update default values with divide attributes from geopackage - # and iceberg tables - for divide in divides: - attr_div = attr.loc[attr["divide_id"] == divide] - attr_div = attr_div.to_dict(orient="list") - all_cats[divide].update(attr_div) - if not iceberg_params.empty: - iceberg_params_div = iceberg_params.loc[iceberg_params["divide_id"] == divide] - iceberg_params_div = iceberg_params_div.to_dict(orient="list") - all_cats[divide].update(iceberg_params_div) - - # When dataframe is converted to a dictionary, the values are contained in a list - # Remove the value from the list. - for key in all_cats[divide].keys(): - value = all_cats[divide][key] - if isinstance(value, list): - all_cats[divide][key] = value[0] - - if cfg_write: - _write_cfg(all_cats) - s3_uri = "s3://" - module_json = _write_json(all_cats[divides[1]], module_params, output_vars, module, s3_uri) - return module_json - - -def _write_cfg(params: dict): - """Writes a config file from a dictionary of parameters""" - divides = params.keys() - for divide in divides: - cfg_file = f"{ROOT_DIR}/{divide}_bmi_config_cfe.txt" - f = open(cfg_file, "w") - - for key, value in params[divide].items(): - f.write(f"{key}={value}\n") - - f.close() - - -def _write_json(params, all_params, output_vars, module, s3_uri): - """Writes a JSON file from a dictionary of parameters""" - json_columns = ["name", "description", "default_value", "min", "max", "data_type", "units"] - all_params = all_params.loc[all_params["calibratable"] == True, json_columns] - all_params = all_params.to_dict(orient="records") - - for item in all_params: - name = item["name"] - value = params[name] - item["default_value"] = value - - module_dict = { - "module_name": module, - "parameter_file": {"uri": s3_uri}, - "calibrate_parameters": all_params, - } - if not output_vars.empty: - output_vars = output_vars.to_dict(orient="records") - module_dict.update({"output_variables": output_vars}) - - return module_dict - - -def get_hydrofabric_attributes(gpkg_file, version, domain): - """Gets attributes from the hydrofabric geopackage""" - attr_layer = "divide-attributes" - if version == "2.1": - attr_layer = "model-attributes" - - # Map oCONUS lat/lon attribute names to CONUS names. - column_names_xy = {"X": "centroid_x", "Y": "centroid_y"} - # Puerto Rico has a number of attribute names that don't match the other domains in HF v2.2 - column_names_pr = { - "dksat_Time._soil_layers_stag.1": "geom_mean.dksat_soil_layers_stag.1", - "dksat_Time._soil_layers_stag.2": "geom_mean.dksat_soil_layers_stag.2", - "dksat_Time._soil_layers_stag.3": "geom_mean.dksat_soil_layers_stag.3", - "dksat_Time._soil_layers_stag.4": "geom_mean.dksat_soil_layers_stag.4", - "mean.cwpvt_Time.": "mean.cwpvt", - "mean.mfsno_Time.": "mean.mfsno", - "mean.mp_Time.": "mean.mp", - "mean.refkdt_Time.": "mean.refkdt", - "mean.slope_Time.": "mean.slope_1km", - "mean.smcmax_Time._soil_layers_stag.1": "mean.smcmax_soil_layers_stag.1", - "mean.smcmax_Time._soil_layers_stag.2": "mean.smcmax_soil_layers_stag.2", - "mean.smcmax_Time._soil_layers_stag.3": "mean.smcmax_soil_layers_stag.3", - "mean.smcmax_Time._soil_layers_stag.4": "mean.smcmax_soil_layers_stag.4", - "mean.smcwlt_Time._soil_layers_stag.1": "mean.smcwlt_soil_layers_stag.1", - "mean.smcwlt_Time._soil_layers_stag.2": "mean.smcwlt_soil_layers_stag.2", - "mean.smcwlt_Time._soil_layers_stag.3": "mean.smcwlt_soil_layers_stag.3", - "mean.smcwlt_Time._soil_layers_stag.4": "mean.smcwlt_soil_layers_stag.4", - "mean.vcmx25_Time.": "mean.vcmx25", - "mode.bexp_Time._soil_layers_stag.1": "mode.bexp_soil_layers_stag.1", - "mode.bexp_Time._soil_layers_stag.2": "mode.bexp_soil_layers_stag.2", - "mode.bexp_Time._soil_layers_stag.3": "mode.bexp_soil_layers_stag.3", - "mode.bexp_Time._soil_layers_stag.4": "mode.bexp_soil_layers_stag.4", - "psisat_Time._soil_layers_stag.1": "geom_mean.psisat_soil_layers_stag.1", - "psisat_Time._soil_layers_stag.2": "geom_mean.psisat_soil_layers_stag.2", - "psisat_Time._soil_layers_stag.3": "geom_mean.psisat_soil_layers_stag.3", - "psisat_Time._soil_layers_stag.4": "geom_mean.psisat_soil_layers_stag.4", - } - - # Get list of catchments from gpkg divides layer using geopandas - try: - divide_attr = gpd.read_file(gpkg_file, layer=attr_layer) - divide_layer = gpd.read_file(gpkg_file, layer="divides") - except: # TODO: Replace 'except' with proper catch - error_str = "Error opening " + gpkg_file - error = dict(error=error_str) - print(error_str) - return error - - # Get catchement area from divides layer and append to attributes data frame - area = divide_layer[["divide_id", "areasqkm"]] - divide_attr = divide_attr.join(area.set_index("divide_id"), on="divide_id") - - # Account for differences in column names between CONUS and oCONUS - if version == "2.2" and domain != "CONUS": - divide_attr.rename(columns=column_names_xy, inplace=True) - if version == "2.2" and domain == "Puerto_Rico": - divide_attr.rename(columns=column_names_pr, inplace=True) - - # Soil and vegetation types are read from the gpkg as floats, but need to be ints - if version == "2.1": - divide_attr = divide_attr.astype({"ISLTYP": "int"}) - divide_attr = divide_attr.astype({"IVGTYP": "int"}) - elif version == "2.2": - divide_attr = divide_attr.astype({"mode.ISLTYP": "int"}) - divide_attr = divide_attr.astype({"mode.IVGTYP": "int"}) - - # Zmax/max_gw_storage units are mm in the hydrofabric but CFE expects m. - if version == "2.1": - divide_attr["gw_Zmax"] = divide_attr["gw_Zmax"].apply(lambda x: x / 1000) - - elif version == "2.2": - divide_attr["mean.Zmax"] = divide_attr["mean.Zmax"].apply(lambda x: x / 1000) - - # Elevation in 2.2 is in cm, convert to m. Except for AK, which is still in m. - if version == "2.2" and domain != "Alaska": - divide_attr["mean.elevation"] = divide_attr["mean.elevation"].apply(lambda x: x / 100) - - # Convert centroid_x and centroid_y (lat/lon) from the domain's CRS to WGS84 - # for decimal degrees for 2.2. - if version == "2.2": - crs = divide_layer.crs - transformer = Transformer.from_crs(crs, 4326) - for index, row in divide_attr.iterrows(): - y = row["centroid_y"] - x = row["centroid_x"] - wgs84_latlon = transformer.transform(x, y) - divide_attr.loc[index, "centroid_y"] = wgs84_latlon[0] # latitude - divide_attr.loc[index, "centroid_x"] = wgs84_latlon[1] # longitude - - return divide_attr - - def divide_parameters(divides, module, domain): """Returns iceberg divide parameters""" module = module.lower() From 6ee52fe03dfe931bb17f252239edd5cca851508c Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Fri, 11 Jul 2025 14:17:33 -0400 Subject: [PATCH 79/97] Patch: Changing CWD in the SFT example and updating paths (#54) * patch: ensured CWD is correct * updated API image --- .pre-commit-config.yaml | 6 +-- docs/img/icefabric_api.png | Bin 375458 -> 337506 bytes .../initial_parameters/soil_freeze_thaw.ipynb | 35 +++++------------- 3 files changed, 13 insertions(+), 28 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 27cab3a..7268e63 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.6.0 + rev: v5.0.0 hooks: - id: trailing-whitespace exclude: LICENSE|\.csv$ @@ -11,7 +11,7 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. - rev: v0.11.5 + rev: v0.12.3 hooks: # Run the linter. - id: ruff @@ -20,7 +20,7 @@ repos: - id: ruff-format - repo: https://github.com/astral-sh/uv-pre-commit - rev: 0.5.7 + rev: 0.7.20 hooks: - id: uv-lock diff --git a/docs/img/icefabric_api.png b/docs/img/icefabric_api.png index d505686708f73fea530a16c2fee2fff1d3859775..3801a631fb42b2881dc884fe4e03881b88a20bb2 100644 GIT binary patch literal 337506 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

    ^5d|jl9sN+h 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

    y_0BC|o=2*&X*vEkc;dMmS6H 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

    FUxSzNxfO95 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 z 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

    O(j7#A0o$zZP`z2Qs@F#%5XB=k9SHPODLfBct=y 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 Date: Fri, 11 Jul 2025 17:36:09 -0400 Subject: [PATCH 80/97] patch: Update soil_freeze_thaw.ipynb --- examples/initial_parameters/soil_freeze_thaw.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/initial_parameters/soil_freeze_thaw.ipynb b/examples/initial_parameters/soil_freeze_thaw.ipynb index 3369bf4..b027b34 100644 --- a/examples/initial_parameters/soil_freeze_thaw.ipynb +++ b/examples/initial_parameters/soil_freeze_thaw.ipynb @@ -126,7 +126,7 @@ " print(\"Files in archive:\")\n", " for file_info in f.filelist:\n", " print(f\" {file_info.filename} ({file_info.file_size} bytes)\")\n", - " f.extractall(\"/tmp/sft_output/configs\")" + " f.extractall(\"/tmp/sft_output_test/configs\")" ] }, { From d607f77d197d90350423f530a0c9fc8ec5ddf79f Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Mon, 14 Jul 2025 15:31:40 -0400 Subject: [PATCH 81/97] Icechunk Tests (#55) --- .../icechunk/icechunk_data_ret_and_plot.ipynb | 180 ++-------- .../icechunk_version_control_examples.ipynb | 331 +++--------------- src/icefabric/builds/build.py | 2 +- src/icefabric/builds/icechunk_s3_module.py | 8 +- tests/integration/test_icechunk.py | 16 + 5 files changed, 84 insertions(+), 453 deletions(-) create mode 100644 tests/integration/test_icechunk.py diff --git a/examples/icechunk/icechunk_data_ret_and_plot.ipynb b/examples/icechunk/icechunk_data_ret_and_plot.ipynb index 550989b..c4fdb81 100644 --- a/examples/icechunk/icechunk_data_ret_and_plot.ipynb +++ b/examples/icechunk/icechunk_data_ret_and_plot.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "d2960e7e-b0ce-4fc7-bc91-509ff38180db", + "id": "0", "metadata": {}, "source": [ "## Retrieving Icechunk Data\n", @@ -14,20 +14,23 @@ }, { "cell_type": "code", - "execution_count": 1, - "id": "92608737-174f-42fd-ab07-b599edd9d1de", + "execution_count": null, + "id": "1", "metadata": {}, "outputs": [], "source": [ + "import warnings\n", "from pathlib import Path\n", "\n", - "import matplotlib.pyplot as plt" + "import matplotlib.pyplot as plt\n", + "\n", + "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", - "execution_count": 2, - "id": "28c1bab2-5106-4ea5-94fd-502de7859a4d", + "execution_count": null, + "id": "2", "metadata": {}, "outputs": [], "source": [ @@ -40,79 +43,22 @@ { "cell_type": "code", "execution_count": null, - "id": "2b3b1ced-6760-4ef5-8cdc-4bde82a287fe", + "id": "3", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 874GB\n", - "Dimensions: (year: 39, Y: 105000, X: 160000, Y1: 52500, X1: 80000, Y2: 26250,\n", - " X2: 40000, Y3: 13125, X3: 20000, Y4: 6563, X4: 10000, Y5: 3282,\n", - " X5: 5000, Y6: 1641, X6: 2500)\n", - "Coordinates:\n", - " * year (year) int32 156B 1985 1986 1987 1988 1989 ... 2020 2021 2022 2023\n", - "Dimensions without coordinates: Y, X, Y1, X1, Y2, X2, Y3, X3, Y4, X4, Y5, X5,\n", - " Y6, X6\n", - "Data variables:\n", - " 0 (year, Y, X) uint8 655GB dask.array\n", - " 1 (year, Y1, X1) uint8 164GB dask.array\n", - " 2 (year, Y2, X2) uint8 41GB dask.array\n", - " 3 (year, Y3, X3) uint8 10GB dask.array\n", - " 4 (year, Y4, X4) uint8 3GB dask.array\n", - " 5 (year, Y5, X5) uint8 640MB dask.array\n", - " 6 (year, Y6, X6) uint8 160MB dask.array\n", - "Attributes: (12/24)\n", - " multiscales: [{'datasets': [{'path': '0'}, {'path': '1'}, {'...\n", - " KeyDirectoryVersion: 1\n", - " KeyRevision: 1\n", - " KeyRevisionMinor: 0\n", - " GTModelTypeGeoKey: 1\n", - " GTRasterTypeGeoKey: 1\n", - " ... ...\n", - " ProjNatOriginLongGeoKey: -96.0\n", - " ProjNatOriginLatGeoKey: 23.0\n", - " ProjFalseEastingGeoKey: 0.0\n", - " ProjFalseNorthingGeoKey: 0.0\n", - " ModelPixelScale: [30.0, 30.0, 0.0]\n", - " ModelTiepoint: [0.0, 0.0, 0.0, -2415585.0, 3314805.0, 0.0]\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n", - "/home/farshid.rahmani/Documents/GitHub/hydrofabric-ui/icechunk_data_viewer/.venv/lib/python3.11/site-packages/numcodecs/zarr3.py:145: UserWarning: Numcodecs codecs are not in the Zarr version 3 specification and may not be supported by other zarr implementations.\n", - " super().__init__(**codec_config)\n" - ] - } - ], + "outputs": [], "source": [ "from icefabric.builds import IcechunkRepo\n", - "from icefabric.schemas import NGWPCLocations\n", + "from icefabric.schemas import NGWPCTestLocations\n", "\n", "# Retrive data and print\n", - "land_cover_repo = IcechunkRepo(location=NGWPCLocations.NLCD_IC.path)\n", + "land_cover_repo = IcechunkRepo(location=NGWPCTestLocations.NLCD_IC.path)\n", "lc_data = land_cover_repo.retrieve_dataset()\n", "print(lc_data)" ] }, { "cell_type": "markdown", - "id": "e4c698c4-49cd-445c-ac4a-2929fa01185f", + "id": "4", "metadata": {}, "source": [ "### Plot 2023 data" @@ -120,32 +66,10 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "9d70e76d-82aa-4724-93fb-9e53b979363c", + "execution_count": null, + "id": "5", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 16MB\n", - "dask.array\n", - "Coordinates:\n", - " year int32 4B 2023\n", - "Dimensions without coordinates: Y5, X5\n" - ] - }, - { - "data": { - "image/png": "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W1sb6uvrTeeH379r3ZueznE4HFH9r/SEhARMnToVOTk5WLduHebOnYsXX3yR9+0ajh49iurqasyfPx9xcXGIi4vDwYMH8R//8R+Ii4tDZmYm7x+RAQOiXiQkJCAnJwd79+5VzwWDQezduxderzeCVzayTJ48GW6323SfGhoacPjwYXWfvF4v6uvrcfToUXXOvn37EAwGkZubq845dOgQ2tvb1Tl79uzBjBkzonq5TAiBRx55BNu3b8e+ffu6LAvm5OQgPj7edP9OnTqFyspK0/0rKyszBZV79uyBw+GAx+NR5xhfQ54z2n5Wg8EgWltbed+u4c4770RZWRlKSkrU4wtf+AJWrlypPub9IzKIdFX3SLd161Zhs9nE5s2bRXl5uVizZo1ISUkx7bqIBY2NjeLYsWPi2LFjAoB4/vnnxbFjx8T58+eFEPq2+5SUFPH222+LTz75RNx7773dbru/9dZbxeHDh8VHH30kpk2bZtp2X19fLzIzM8V3vvMdcfz4cbF161Zht9ujftv9ww8/LJxOpzhw4IC4dOmSejQ3N6tz1q5dK7KyssS+ffvEkSNHhNfrFV6vVx2X25+//vWvi5KSEvHee++J9PT0brc/P/HEE6KiokJs2LAh6rc/P/nkk+LgwYPi008/FZ988ol48sknhaZp4v333xdC8L5dL+MuMyF4/4iMGBD1wW9+8xuRlZUlEhISxBe/+EVRXFwc6Usadvv37xcAujweeughIYS+9f6nP/2pyMzMFDabTdx5553i1KlTpteoqakRK1asEMnJycLhcIjvfve7orGx0XROaWmp+PKXvyxsNpu48cYbxfr164frLQ6Z7u4bAPHKK6+oc65evSr+8R//UbhcLmG328V9990nLl26ZHqdc+fOicWLF4ukpCQxbtw48c///M+ivb3ddM7+/fvFvHnzREJCgrj55ptNXyMafe973xOTJk0SCQkJIj09Xdx5550qGBKC9+16hQdEvH9EIZoQQkQmN0VEREQ0MrCGiIiIiGIeAyIiIiKKeQyIiIiIKOYxICIiIqKYx4CIiIiIYh4DIiIiIop5DIiIiIgo5jEgIiIiopjHgIiIlL//+7/HN7/5zW6PXb16FT/72c8wffp02Gw2jBs3Dn/3d3+HEydOmM579tlnoWka1q5da3q+pKQEmqbh3LlzQ3T1RET9x4CIiK6ptbUVixYtwu9//3v84he/wOnTp7F79250dHQgNzcXxcXFpvMTExPx8ssv48yZMxG6YiKi6xMX6QsgopHv3//931FUVIRjx45h7ty5AIBJkybhrbfeQm5uLlavXo3jx49D0zQAwIwZM5CRkYGnn34a27Zti+SlExH1CTNERHRNf/jDH/C1r31NBUOSxWLBY489hvLycpSWlpqOrV+/Hm+99RaOHDkynJdKRNQvDIiI6JpOnz6N7Ozsbo/J50+fPm16fv78+Vi+fDl+/OMfD/n1ERENFAMiIuoTIcR1f84vfvELfPjhh3j//feH4IqIiAYPAyIiuqbp06ejoqKi22Py+enTp3c5NmXKFHz/+9/Hk08+2a+AiohouDAgIqJr+va3v40PPvigS51QMBjECy+8AI/H06W+SHrmmWdw+vRpbN26dTgulYioX7jLjIhM/H4/SkpKTM+tWrUKb7/9NpYuXYpf//rXyM3NRVVVFX75y1+ioqICH3zwgdphFi4zMxOPP/44fvWrXw3D1RMR9Q8DIiIyOXDgAG699VbTc6tXr8a+ffvwy1/+Ej/5yU9w/vx5jB07FrfffjuKi4txyy239PqaP/zhD7Fx40a0tLQM5aUTEfWbJriwT0RERDGONUREREQU8xgQERERUcxjQEREREQxjwERERERxTwGRERERBTzGBARERFRzGNARERERDGPARERERHFPAZEREREFPMYEBEREVHMY0BEREREMY8BEREREcW8/w+VFf2cQcAoOQAAAABJRU5ErkJggg==", - "text/plain": [ - "

    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Print data for year 2023\n", "print(lc_data[\"5\"].sel(year=2023))\n", @@ -165,7 +89,7 @@ }, { "cell_type": "markdown", - "id": "982fa54a-cd71-43d0-af65-a60184956bba", + "id": "6", "metadata": {}, "source": [ "## Topobathy\n", @@ -177,35 +101,19 @@ { "cell_type": "code", "execution_count": null, - "id": "617115d8-a7d0-486e-aab9-2daedad9074e", + "id": "7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 681MB\n", - "Dimensions: (band: 1, y: 6304, x: 13504)\n", - "Coordinates:\n", - " * y (y) float64 50kB 19.0 19.0 ... 17.25 17.25\n", - " * x (x) float64 108kB -68.0 -68.0 ... -64.25\n", - " spatial_ref int64 8B 0\n", - " * band (band) int64 8B 1\n", - "Data variables:\n", - " __xarray_dataarray_variable__ (band, y, x) float64 681MB dask.array\n" - ] - } - ], + "outputs": [], "source": [ "# Retrive data and print\n", - "topo_repo = IcechunkRepo(location=NGWPCLocations.TOPO_PR_USVI_30M_IC.path)\n", + "topo_repo = IcechunkRepo(location=NGWPCTestLocations.TOPO_PR_USVI_30M_IC.path)\n", "topo_data = topo_repo.retrieve_dataset()\n", "print(topo_data)" ] }, { "cell_type": "markdown", - "id": "9ac68b4d-0601-43b5-8cc2-ce328305e4fe", + "id": "8", "metadata": {}, "source": [ "### Plot Data" @@ -214,47 +122,9 @@ { "cell_type": "code", "execution_count": null, - "id": "e5a687c9-57ea-4fa9-ae0b-d88595fc03b2", + "id": "9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 681MB\n", - "dask.array\n", - "Coordinates:\n", - " * y (y) float64 50kB 19.0 19.0 19.0 19.0 ... 17.25 17.25 17.25\n", - " * x (x) float64 108kB -68.0 -68.0 -68.0 ... -64.25 -64.25 -64.25\n", - " spatial_ref int64 8B 0\n", - " * band (band) int64 8B 1\n", - "Attributes: (12/13)\n", - " DataType: Generic\n", - " AREA_OR_POINT: Area\n", - " RepresentationType: ATHEMATIC\n", - " STATISTICS_COUNT: 64069221.0\n", - " STATISTICS_COVARIANCES: 2043434.806372322\n", - " STATISTICS_MAXIMUM: 1328.0447998047\n", - " ... ...\n", - " STATISTICS_MEDIAN: -1039.828272\n", - " STATISTICS_MINIMUM: -6616.7924804688\n", - " STATISTICS_SKIPFACTORX: 1\n", - " STATISTICS_SKIPFACTORY: 1\n", - " STATISTICS_STDDEV: 1429.4876027347\n", - " units: metre\n" - ] - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAmQAAAHHCAYAAAARcURhAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzsfXmcHEXd/lPVPbO7OTkkCSEQDrlPBQRELkUQIoKABwQJCvIRwq28viDKoRBFuUFAVA4FUfwJoqByCagICppXEQS5BHkJyIsk5Nidma76/VH9rfpWdfXs7JHdhfTz+czuTHd1dVVPT/fTz/cSWmuNChUqVKhQoUKFCqMGOdoDqFChQoUKFSpUWNFREbIKFSpUqFChQoVRRkXIKlSoUKFChQoVRhkVIatQoUKFChUqVBhlVISsQoUKFSpUqFBhlFERsgoVKlSoUKFChVFGRcgqVKhQoUKFChVGGRUhq1ChQoUKFSpUGGVUhKxChQoVKlSoUGGUURGyChUYdt11V+y6666jPYwKFdrijDPOgBACr7766nLf1zXXXAMhBB5++OHlvq8KFVZkVIRsBQRdYOnV3d2NDTbYAMcccwxefvnlURnTY489hjPOOAPPPffcsPYbzjVNU6yxxho47LDD8OKLLw7rvoYCpRS+8Y1vYP3110dPTw/WW289HHXUUVi8eHHHfRx22GGYMGFC6foJEybgsMMO85Y999xz+OQnP4n11lsP3d3dmDZtGnbeeWecfvrpAIBXXnkFaZrikEMOKe33jTfeQE9PD/bff38And/A//d//xeHHHIINtxwQ0ycOBErrbQS3vWud+Haa69FrKLbiy++iI9+9KNYaaWVMGnSJOy777545plnCvOh7/orX/lKdL+zZ8+GEKLtseL99Pca7nN2tPDNb34T11xzzWgPo0KFFRbpaA+gwujhrLPOwjrrrIPe3l789re/xeWXX47bb78djz76KMaNGzeiY3nsscdw5plnYtddd8Xaa6897P3zuT744IO45ppr8Nvf/haPPvoouru7bbs77rhj2PfdCS666CKcfPLJ2G+//XDyySfjn//8J37wgx/g85//fFviMBQ89dRT2HbbbdHT04NPfepTWHvttfHSSy/hT3/6E772ta/hzDPPxJQpU/D+978fP/3pT7F06dLoefGTn/wEvb29bUlbDK+++ir+9a9/4cADD8Raa62FZrOJO++8E4cddhieeOIJnHPOObbt4sWLsdtuu2HhwoU49dRTUavVcMEFF2CXXXbB/Pnzseqqq3p9d3d34wc/+AFOO+00b/mSJUvw05/+1PvOY1httdXwve99z1t23nnn4V//+hcuuOCCQtu3Ar75zW/ibW97W4G0V6hQYYSgK6xwuPrqqzUA/cc//tFbftJJJ2kA+oYbbhixsSxbtkxnWaZvuukmDUD/+te/Htb+y+b6+c9/XgPQP/zhD4d1f4PFu971Lr3ppptqpZRdlmWZbjabHfcxZ84cPX78+NL148eP13PmzLGfjz76aJ2mqX7uuecKbV9++WX7/nvf+54GoH/wgx9E+91jjz305MmTdW9vr9a6/Jh3ig9+8IN6/PjxutVq2WVf+9rXNAD9hz/8wS57/PHHdZIk+pRTTrHLnn32WQ1A77///hqAnj9/vtf39ddfr2u1mt5nn33aHqsYZs2apWfOnDmoOQ03Tj/9dA1A//vf/x62PjfddFO9yy67FJYP9fusUKFCZ6hMlhUs3vve9wIAnn32Wbvs+9//Prbeemv09PRglVVWwcc//nG88MIL3nZrr7129Kk69Me69957IYTAjTfeiNNOOw1rrLEGxo0bh4svvhgf+chHAAC77babNQXde++9dttvfvOb2HTTTdHV1YXp06dj7ty5eP311wc915122gkA8PTTT7cdMwD09vbijDPOwAYbbIDu7m6svvrq2H///b1tlyxZgs9+9rNYc8010dXVhQ033BDf+MY3oqa3GKSUUEpBCOEtS9PlJ2I//fTTmDFjBmbOnFlYN2XKFPv+wx/+MMaPH48bbrih0O6VV17B3XffjQMPPBBdXV3DMq61114bS5cuRaPRsMt+/OMfY9ttt8W2225rl2200UZ43/vehx/96EeFPnbYYQess846hTFff/31+MAHPoBVVlllWMb6yiuv4PDDD8fUqVPR3d2NLbfcEtdee63Xhsyf3/jGN3DBBRdg5syZ6OnpwS677IJHH3200Oc999yDnXbaCePHj8dKK62EfffdF48//nh0/6+++io++tGPYtKkSVh11VVx/PHHo7e312tz9dVX473vfS+mTJmCrq4ubLLJJrj88su9NmuvvTb+9re/4b777rO/v/B30NfXh5NOOgmrrbYaxo8fjw9/+MP497//bdfPmTMHb3vb29BsNgvj3GOPPbDhhhu2PZYVKqzoqAhZBQsiGGT+Ofvss3HooYdi/fXXx/nnn48TTjgBd999N3beeechkaEvf/nLuO222/C5z30O55xzDvbYYw8cd9xxAIBTTz0V3/ve9/C9730PG2+8MQDjwDx37lxMnz4d5513Hg444ABceeWV2GOPPaIX/05Afj8rr7xy23ZZluGDH/wgzjzzTGy99dY477zzcPzxx2PhwoX2Zqq1xoc+9CFccMEF+MAHPoDzzz8fG264IU4++WScdNJJHY3nk5/8JB5//HFceeWVg5rPYDBz5ky88MILuOeee9q2Gz9+PPbdd1/86le/wmuvveat++EPf4gsyzB79uxBj2PZsmV49dVX8dxzz+Haa6/F1VdfjR122AE9PT0AjH/dX/7yF2yzzTaFbd/1rnfh6aefxhtvvFFYd9BBB+HGG2+0pPjVV1/FHXfcgYMPPnjQYw3Hveuuu+J73/seZs+eja9//euYPHkyDjvsMFx00UWF9tdddx0uvvhizJ07F6eccgoeffRRvPe97/X8Nu+66y7sueeeeOWVV3DGGWfgpJNOwgMPPIAdd9wx6qv20Y9+FL29vZg3bx723ntvXHzxxTjyyCO9NpdffjlmzpyJU089Feeddx7WXHNNHH300bjssstsmwsvvBAzZszARhttZH9/X/jCF7x+jj32WPzP//wPTj/9dBx11FH42c9+hmOOOcau/8QnPoH/+7//w69+9StvuwULFuCee+4ZsEm7QoUVDqOs0FUYBZAJ4q677tL//ve/9QsvvKBvvPFGveqqq+qenh79r3/9Sz/33HM6SRJ99tlne9v+9a9/1WmaestnzpzpmcIIu+yyi2cC+fWvf60B6HXXXVcvXbrUa1tmsnzllVd0vV7Xe+yxh86yzC6/9NJLNQD93e9+d8Bz/fGPf6xXW2013dXVpV944YW2Y/7ud7+rAejzzz+/0DeZF2+55RYNQH/lK1/x1h944IFaCKGfeuqptmPUWuv//u//1vV6XSdJon/yk5/02z6GgZosH330Ud3T06MB6K222koff/zx+pZbbtFLliwpbHvbbbdpAPrKK6/0lm+//fZ6jTXW8L6bgZq45s2bpwHY1/ve9z79/PPP2/X//ve/NQB91llnFba97LLLNAD997//XWvtTJZf//rX9aOPPqoB6N/85je27YQJE/SSJUv6PVYxhCbLCy+8UAPQ3//+9+2yRqOhd9hhBz1hwgS9aNEib0z02yI89NBDGoA+8cQT7bKtttpKT5kyRf/f//2fXfY///M/WkqpDz30ULuMTJYf+tCHvDEeffTRGoD+n//5H7ss/K1prfWee+6p1113XW9ZfybL3Xff3TOpn3jiiTpJEv36669rrY2JfcaMGfpjH/uYt/3555+vhRD6mWeeKfRdoUIFh0ohW4Gx++67Y7XVVsOaa66Jj3/845gwYQJuvvlmrLHGGvjJT34CpRQ++tGP4tVXX7WvadOmYf3118evf/3rQe93zpw5Vv3oD3fddRcajQZOOOEESOlO109/+tOYNGkSbrvtto764XM98MADMX78eNx6662YMWNG2+3+3//7f3jb296GY489trCOzIu33347kiSxKh/hs5/9LLTW+MUvftF2HxdffDHOP/98/O53v8NBBx2Ej3/844Xggq6uLnzxi1/sZKodY9NNN8X8+fNxyCGH4LnnnsNFF12E/fbbD1OnTsVVV13ltd1jjz2w2mqreSbAZ599Fg8++CAOOugg77sZKA466CDceeeduOGGG6x6tWzZMrue3sdMouScz9vz+W2xxRb4wQ9+AAC44YYbsO+++w5bwMrtt9+OadOm4aCDDrLLarUajjvuOCxevBj33Xef136//fbDGmusYT+/613vwnbbbYfbb78dAPDSSy9h/vz5OOywwzyT6hZbbIH3v//9th3H3Llzvc90nvK2/Le2cOFCvPrqq9hll13wzDPPYOHChR3P98gjj/RM6jvttBOyLMM///lPAMbEPnv2bNx6662eYnn99dfj3e9+N9ZZZ52O91WhwoqIipCtwLjssstw55134te//jUee+wxPPPMM9hzzz0BAP/4xz+gtcb666+P1VZbzXs9/vjjeOWVVwa934FcmOliH/qf1Ot1rLvuunZ9f6C5/vjHP8bee++NV199tSOfp6effhobbrhhW1+uf/7zn5g+fTomTpzoLSeTa7sxLlu2DKeffjqOOOIIbLPNNtbf58Mf/jB++9vfAjDfRaPRwHbbbdfJVNuC31ABYIMNNsD3vvc9vPrqq/jLX/6Cc845B2ma4sgjj8Rdd91l26Vpio997GP4zW9+Y9OFEDkbirkSMKbT3XffHQcddBCuv/56rLvuuth9990tySJC0dfXV9iW/KXKCP7BBx+Mm266CU899RQeeOCBYTNXAuZ7XX/99QtktOx7X3/99Qt9bLDBBtYUWXauU5+vvvoqlixZ0rbP9dZbD1JKz7z5u9/9Drvvvrv1SVtttdVw6qmnAsCACNlaa63lfSZz/3/+8x+77NBDD8WyZctw8803AwCeeOIJPPLII/jEJz7R8X4qVFhRURGyFRjvete7sPvuu2PXXXfFxhtv7N1YyMH8l7/8Je68887Ci/s6hTd5QpZl0eWdqmPDCZrrAQccgFtvvRWbbbYZDj744AHl+VoeePzxx/H6669j++23B2CIz49//GNsttlmmDVrFv70pz/hW9/6lk0/0Q7d3d3o6+uLBhJordHb21ua7iFJEmy++eY45ZRT7M30+uuv99occsghUEpZxekHP/gBNtlkE2y11VYDnXZbHHjggXjhhRdw//33AwBWWWUVdHV14aWXXiq0pWXTp0+P9nXQQQfh1Vdfxac//Wmsuuqq2GOPPYZ1rGMN4W/x6aefxvve9z68+uqrOP/883HbbbfhzjvvxIknngjA/M47RZIk0eX8fNtkk02w9dZb4/vf/z4AExRUr9fx0Y9+dKBTqVBhhUOVh6xCFOuttx601lhnnXWwwQYbtG278sorR538//nPf2LdddftaH9lpI4iAJ944gmvr0ajgWeffRa77757R/1zJEmCefPmYbfddsOll16K//7v/y5tu9566+Ghhx5Cs9lErVYrHeNdd92FN954w1PJ/v73v3tziIHmzSNXx48fj9tvvx3vec97sOeee6K3txdf+cpX+lX0Zs6ciVarhaeffhpvf/vbvXVPPfUUsixrOxYCOc+HBGi77bbDeuuthxtuuAHvf//78be//Q1nn312v/0NFKSMkXojpcTmm28eTTT70EMPYd111y2ok4S11loLO+64I+69914cddRRwxq1OnPmTPzlL3+BUsp7mCn73v/xj38U+njyySdt3j1+rof4+9//jre97W0YP358oU+uOD/11FNQStk+f/azn6Gvrw+33nqrp3DFXA7KfoMDxaGHHoqTTjoJL730Em644QbMmjWr3+CZChUqVApZhRLsv//+SJIEZ555ZkFx0Vrj//7v/+zn9dZbDw8++KCXpuDnP/95IT1GO9CNJiR2u+++O+r1Oi6++GJvHN/5znewcOFCzJo1ayDTsth1113xrne9CxdeeGEhTQDHAQccgFdffRWXXnppYR2NZ++990aWZYU2F1xwAYQQ2GuvvUr733zzzTF16lRceumlnhl41VVXxdVXX41XX30Vy5Ytwz777NPvnGg/sbFSRB0fy29+85tolCr5H8VMZ7Nnz8af//xnnH766RBCDMkEyFMmcHznO9+BEALvfOc77bIDDzwQf/zjHz1S9sQTT+Cee+6xKVPK8JWvfAWnn3561A9wKNh7772xYMEC/PCHP7TLWq0WLrnkEkyYMAG77LKL1/6WW27xqkP84Q9/wEMPPWS/k9VXXx1bbbUVrr32Wu938Oijj+KOO+7A3nvvXRgDj5QEgEsuuQSA+55J1eK/nYULF+Lqq68u9DV+/PghRU8TDjroIAghcPzxx+OZZ56poisrVOgUoxRMUGEU0WkUHEW/vfvd79bnnnuuvvzyy/V//dd/6fXXX19//etft+1++ctfagB6t91205dffrn+3Oc+p6dNm6bXW2+9aJTlTTfdVNjXSy+9pJMk0dtvv72+5ppr9A9+8AObnJQiyvbYYw996aWX6mOPPVYnSaK33XZb3Wg0Bj1Xiuy8/PLL7bIwyrLVauldd91VA9Af//jH9WWXXabPPfdcvccee+hbbrlFa22iy3bbbTcthNBHHnmkvuyyy/S+++6rAegTTjih7fhoHFJKPWXKFP3FL35Rf/vb39af/exn9corr6w333xzvfLKK+vNNttML1y4sN++jjjiCA1A77333vqCCy7QF1xwgd577701AH3EEUd4bWfNmqWnTZumjz76aH3FFVfoK664Qh955JG6u7tbr7LKKtGouCeffNJGQ+64447RMXR6fh1//PF6m2220aeddpr+1re+pb/61a/qbbfdVgPQxx57rNd20aJFer311tNTpkzR5557rr7gggv0mmuuqadPn65feeUV245HWbbDcERZLl26VG+88ca6Xq/rz372s/qSSy7Ru+yyiwagL7zwwsKYNt98c7322mvrr33ta/qss87Sq6yyil511VX1//7v/9q2d955p07TVG+00Ub661//uj7rrLP0aqutpldeeWXv+6DfxOabb6732Wcffdlll+lDDjlEA9AHH3ywbff3v/9d1+t1vfnmm+tLL71Uf/WrX9Xrrbee3nLLLTUA/eyzz9q2Rx99tBZC6C9/+cv6Bz/4gb777ru11uXf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8MHo6OjAxIkTcdZZZ1Xs88gjjyy7BgsWLBikGZQzGHNq5s8SgOD77s4776zYZyM/S8DgzGkofJ4AUxJvzz33RBRF2Lx5c8U+G/06CSMUPUL50Y9+pDs7O/X111+v165dq//4xz/qu+66y+5/66239C677KJPPfVU/dxzz+nVq1frefPm6d1220339vbm9rtgwQI9efJkvWzZMr1ixQr9D//wD/oDH/hAPaZUdU7btm3Tr776qvOYM2eOPuKIIyr2u/fee+tFixY5x23dunWQZzN48/nIRz6ip0+frn/3u9/pxx9/XL/rXe/SJ5100iDPxlBtTlprvWTJEr3HHnvo22+/Xb/44ot61apV+r777qvY7xFHHKHPOOMM51q8+eabgzkVy2DNqZk/S1prDUB///vfd655d3d3xX4b9VnSevDm1OyfJ+JjH/uYnjt3rgag//73v1fst5GvkzByGZGCrFgs6ne+8536pptuym3z5JNPagB6w4YNdtsf/vAHDUC/8MILwWM2b96sW1tb9T333GO3PfvssxqAXr58+cBNIEAtc/J57bXXdGtrq77tttsqttt77731Nddc088R9o3Bms+aNWs0AP3kk0/abQ888ICOoki//PLL/RpzNWqZ0xtvvKFHjRqlH3300T71fcQRR+izzz67nyPsO4M1p6HwWQKgf/zjH/ep70Z8lrQevDk1++eJuO666/QRRxyhly1bVrMga8TrJIxsRqTL8umnn8bLL7+MOI4xY8YM7L777pg7dy5Wr15t20ydOhW77rorbr75ZvT29qK7uxs333wzpk2bhn322SfY71NPPYVisYjZs2fbbe9+97ux1157Yfny5Q2fk89tt92G0aNH41/+5V+q9n/VVVdh1113xYwZM3D11VejVCoN5PDLGKz5LF++HOPGjcNhhx1mt82ePRtxHOOJJ54Y0Dn41DKnRx55BEopvPzyy5g2bRr23HNPfOITn8BLL71Utf/bb78d48ePx0EHHYSLLroI27ZtG8zpABi8OQ2Vz9JZZ52F8ePH4/3vfz9uueUW6BrSOtb7swQM3pya/fMEAGvWrMGiRYtw22239anwdyNeJ2GE02hF2Aj+53/+RwPQe+21l/7Rj36kV6xYoU866SS966676r/97W+23TPPPKP3228/HcexjuNYT506Va9fvz6339tvv123tbWVbX/f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EIQhiVjIBEEo44477sA///M/WzFGxHGMc889F2vWrMGqVaucfVdddRXuvfderFixop5DFQRBGBaIIBMEoYznn38e06ZNC+6j7c8//7yz/dBDD8UnPvEJXHDBBYM+PkEQhOGGCDJBEIJorft8zBVXXIHHH38cDz/88CCMSBAEYfgigkwQhDIOOOAAPPvss8F9tP2AAw4o27fffvvhjDPOwIUXXrhDgk4QBGGkIoJMEIQyTjzxRDz66KNlcWJKKVxzzTU48MADy+LLiEsvvRTPP/887rzzznoMVRAEYVggqywFYYTz5ptvYuXKlc62T3/607jvvvvw0Y9+FEuWLEFXVxc2bdqEK6+8Es8++yweffRRu8LSZ7fddsN5552Hq6++ug6jFwRBGB6IIBOEEc4vf/lLzJgxw9k2f/58PPbYY7jyyivx5S9/Gf/3f/+HnXfeGUcddRR+97vf4aCDDqrY57//+7/j+uuvx/bt2wdz6IIgCMOGSEughyAIgiAIQkORGDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBqMCDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBqMCDJBEARBEIQGI4JMEARBEAShwYggEwRBEARBaDAiyARBEARBEBrM/wMk0ywglyByVAAAAABJRU5ErkJggg==", - "text/plain": [ - "
    " - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "# Print Dataarray\n", "print(topo_data[\"elevation\"])\n", @@ -286,7 +156,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.12.9" + "version": "3.12.11" } }, "nbformat": 4, diff --git a/examples/icechunk/icechunk_version_control_examples.ipynb b/examples/icechunk/icechunk_version_control_examples.ipynb index 5429e4a..6e2e8c0 100644 --- a/examples/icechunk/icechunk_version_control_examples.ipynb +++ b/examples/icechunk/icechunk_version_control_examples.ipynb @@ -2,17 +2,19 @@ "cells": [ { "cell_type": "markdown", - "id": "25341568-feb1-46b7-acaf-d6b76f066e57", + "id": "0", "metadata": {}, "source": [ "## Icechunk Version Control and Branching\n", - "Showcase for adding new data over time to an icechunk store, \"time traveling\", and making new branches" + "Showcase for adding new data over time to an icechunk store, \"time traveling\", and making new branches\n", + "\n", + "Requires `.env` with `data` account credentials" ] }, { "cell_type": "code", "execution_count": null, - "id": "1a2ed407", + "id": "1", "metadata": {}, "outputs": [], "source": [ @@ -27,7 +29,7 @@ { "cell_type": "code", "execution_count": null, - "id": "4f0fe850-0e5e-40e5-93b1-1c9f468a2d28", + "id": "2", "metadata": {}, "outputs": [], "source": [ @@ -45,21 +47,10 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "61ff84b0-9dba-494e-b9c4-187923f504e9", + "execution_count": null, + "id": "3", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", - "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", - "Message:\tRepository initialized\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Print repo ancestry\n", "new_repo.print_history()" @@ -68,31 +59,9 @@ { "cell_type": "code", "execution_count": null, - "id": "ef762477-5c6b-4876-b5a2-a708b9f3d02f", + "id": "4", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "zz_ssmv11034tS__T0001TTNATS2009*.nc\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:27<00:00, 17.52s/files]\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset is uploaded. Commit: 9CNDKXE65PVGCHK4CHBG\n" - ] - } - ], + "outputs": [], "source": [ "# Collect first five SNODAS netcdf files from 2009 and combine/virtualize them together into a single dataset\n", "snodas_09_vds = virtualize_and_concat_archival_files_on_time(\n", @@ -110,25 +79,10 @@ }, { "cell_type": "code", - "execution_count": 4, - "id": "b3b6e582-ba59-44c2-9753-74afa7c48fd0", + "execution_count": null, + "id": "5", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", - "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", - "Message:\tFirst commit! 09 data added.\n", - "\n", - "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", - "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", - "Message:\tRepository initialized\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Now that we have a new snapshot, reprint the repo ancestry\n", "new_repo.print_history()" @@ -136,30 +90,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "41d0467d-84da-45f2-94e2-f911e88bbf68", + "execution_count": null, + "id": "6", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 671MB\n", - "Dimensions: (lon: 8192, time: 5, lat: 4096)\n", - "Coordinates:\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", - "Data variables:\n", - " Band1 (time, lat, lon) float32 671MB dask.array\n", - " crs (time) object 40B dask.array\n", - "Attributes:\n", - " Conventions: CF-1.5\n", - " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", - " history: Tue Feb 04 18:40:28 2025: GDAL CreateCopy( /data/unmasked/2...\n" - ] - } - ], + "outputs": [], "source": [ "# Print the data now contained within the SNODAS repo\n", "snodas_data = new_repo.retrieve_dataset()\n", @@ -169,31 +103,9 @@ { "cell_type": "code", "execution_count": null, - "id": "bbefb68a-b747-449e-b7da-4c61c6f4a2e0", + "id": "7", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "zz_ssmv11034tS__T0001TTNATS2010*.nc\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:27<00:00, 17.54s/files]\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset has been appended on the time dimension. Commit: 6FMVKF4CS7N5RW6PC86G\n" - ] - } - ], + "outputs": [], "source": [ "# Much like the 09 SNODAS files were collected, do the same for 2010\n", "snodas_10_vds = virtualize_and_concat_archival_files_on_time(\n", @@ -213,29 +125,10 @@ }, { "cell_type": "code", - "execution_count": 7, - "id": "c5cfc9ee-0357-404f-8535-c414409ac58e", + "execution_count": null, + "id": "8", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", - "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", - "Message:\tAppended new data from the year 2010\n", - "\n", - "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", - "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", - "Message:\tFirst commit! 09 data added.\n", - "\n", - "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", - "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", - "Message:\tRepository initialized\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Now that we have another new snapshot with 2010 data, reprint the repo ancestry\n", "new_repo.print_history()" @@ -243,30 +136,10 @@ }, { "cell_type": "code", - "execution_count": 8, - "id": "f9a3d55d-7d51-4317-9dc8-cf41316d3fea", + "execution_count": null, + "id": "9", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 1GB\n", - "Dimensions: (time: 10, lat: 4096, lon: 8192)\n", - "Coordinates:\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - "Data variables:\n", - " Band1 (time, lat, lon) float32 1GB dask.array\n", - " crs (time) object 80B dask.array\n", - "Attributes:\n", - " Conventions: CF-1.5\n", - " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", - " history: Tue Feb 04 19:54:02 2025: GDAL CreateCopy( /data/unmasked/2...\n" - ] - } - ], + "outputs": [], "source": [ "# Print the new repo collection with both 2009 and 2010 data\n", "snodas_data = new_repo.retrieve_dataset()\n", @@ -275,30 +148,10 @@ }, { "cell_type": "code", - "execution_count": 9, - "id": "e8c16d28-1933-48fd-8cfc-31dd18d8ed7d", + "execution_count": null, + "id": "10", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - " Size: 671MB\n", - "Dimensions: (time: 5, lat: 4096, lon: 8192)\n", - "Coordinates:\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - " * time (time) datetime64[ns] 40B 2009-12-09 2009-12-10 ... 2009-12-13\n", - "Data variables:\n", - " Band1 (time, lat, lon) float32 671MB dask.array\n", - " crs (time) object 40B dask.array\n", - "Attributes:\n", - " Conventions: CF-1.5\n", - " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", - " history: Tue Feb 04 18:40:28 2025: GDAL CreateCopy( /data/unmasked/2...\n" - ] - } - ], + "outputs": [], "source": [ "# Retrieve and print the data from the previous snapshot, before 2010 data was added\n", "prev_snap_snodas_data = new_repo.retrieve_prev_snapshot()\n", @@ -308,31 +161,9 @@ { "cell_type": "code", "execution_count": null, - "id": "3d940692-0407-4c46-8df2-5a0036f4420b", + "id": "11", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "zz_ssmv11034tS__T0001TTNATS2011*.nc\n" - ] - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Opening files as virtual datasets.: 100%|\u001b[38;2;55;182;189m███████████████████████████████████████████████████\u001b[0m| 5/5 [01:28<00:00, 17.79s/files]\u001b[0m\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Dataset has been appended on the time dimension. Commit: T30V4R9GM9TCKHFFBQFG\n" - ] - } - ], + "outputs": [], "source": [ "# Make a new feature branch based on \"main\" to add 2011 data\n", "new_repo.create_new_branch(name=\"2011_feature\")\n", @@ -355,47 +186,10 @@ }, { "cell_type": "code", - "execution_count": 11, - "id": "8386ab8e-02ef-4d87-8b55-91a26bb76675", + "execution_count": null, + "id": "12", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NEW BRANCH =====================================\n", - "Snapshot ID:\tT30V4R9GM9TCKHFFBQFG\n", - "Timestamp:\t2025-06-17 00:05:10.559344+00:00\n", - "Message:\tAppended new data from the year 2011\n", - "\n", - "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", - "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", - "Message:\tAppended new data from the year 2010\n", - "\n", - "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", - "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", - "Message:\tFirst commit! 09 data added.\n", - "\n", - "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", - "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", - "Message:\tRepository initialized\n", - "\n", - "MAIN BRANCH ====================================\n", - "Snapshot ID:\t6FMVKF4CS7N5RW6PC86G\n", - "Timestamp:\t2025-06-17 00:03:27.965202+00:00\n", - "Message:\tAppended new data from the year 2010\n", - "\n", - "Snapshot ID:\t9CNDKXE65PVGCHK4CHBG\n", - "Timestamp:\t2025-06-17 00:01:17.067141+00:00\n", - "Message:\tFirst commit! 09 data added.\n", - "\n", - "Snapshot ID:\tMWPZ0C0SCM3TRRKNF8D0\n", - "Timestamp:\t2025-06-16 23:59:40.242436+00:00\n", - "Message:\tRepository initialized\n", - "\n" - ] - } - ], + "outputs": [], "source": [ "# Now that we have a new branch with new 2011 data, print the history of both branches\n", "print(\"NEW BRANCH =====================================\")\n", @@ -406,47 +200,10 @@ }, { "cell_type": "code", - "execution_count": 12, - "id": "43814441-7461-4d93-99f0-a839b9324d99", + "execution_count": null, + "id": "13", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "NEW BRANCH ========================================================\n", - " Size: 2GB\n", - "Dimensions: (time: 15, lon: 8192, lat: 4096)\n", - "Coordinates:\n", - " * time (time) datetime64[ns] 120B 2009-12-09 2009-12-10 ... 2011-01-05\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - "Data variables:\n", - " crs (time) object 120B dask.array\n", - " Band1 (time, lat, lon) float32 2GB dask.array\n", - "Attributes:\n", - " Conventions: CF-1.5\n", - " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", - " history: Tue Feb 04 19:00:12 2025: GDAL CreateCopy( /data/unmasked/2...\n", - "===================================================================\n", - "MAIN BRANCH =======================================================\n", - " Size: 1GB\n", - "Dimensions: (time: 10, lat: 4096, lon: 8192)\n", - "Coordinates:\n", - " * lon (lon) float64 66kB -130.5 -130.5 -130.5 ... -62.27 -62.26 -62.25\n", - " * time (time) datetime64[ns] 80B 2009-12-09 2009-12-10 ... 2010-01-05\n", - " * lat (lat) float64 33kB 24.1 24.11 24.12 24.13 ... 58.21 58.22 58.23\n", - "Data variables:\n", - " Band1 (time, lat, lon) float32 1GB dask.array\n", - " crs (time) object 80B dask.array\n", - "Attributes:\n", - " Conventions: CF-1.5\n", - " GDAL: GDAL 3.11.0dev-f1386937cde9e540784909294fdd45cda3ee65d2, re...\n", - " history: Tue Feb 04 19:54:02 2025: GDAL CreateCopy( /data/unmasked/2...\n", - "===================================================================\n" - ] - } - ], + "outputs": [], "source": [ "# Print both branch's datasets - notice the new one has 2011 data\n", "snodas_data_feat_branch = new_repo.retrieve_dataset(branch=\"2011_feature\")\n", @@ -460,18 +217,10 @@ }, { "cell_type": "code", - "execution_count": 13, - "id": "a69a8c8e-0003-4738-964e-7bd136412264", + "execution_count": null, + "id": "14", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Icechunk repo @ s3://hydrofabric-data/ic_testing/snodas_yearly_append_test in its entirety was successfully deleted.\n" - ] - } - ], + "outputs": [], "source": [ "# Cleanup - delete the test repo entirely\n", "new_repo.delete_repo(quiet=True)" @@ -480,7 +229,7 @@ { "cell_type": "code", "execution_count": null, - "id": "da2aa6f1", + "id": "15", "metadata": {}, "outputs": [], "source": [] diff --git a/src/icefabric/builds/build.py b/src/icefabric/builds/build.py index eeee091..8f5c969 100644 --- a/src/icefabric/builds/build.py +++ b/src/icefabric/builds/build.py @@ -1,4 +1,4 @@ -"""Contains all api functions that can be called outside of the icefabric_manage package""" +"""Build scripts for pyiceberg""" import pyarrow.parquet as pq from pyiceberg.catalog import Catalog diff --git a/src/icefabric/builds/icechunk_s3_module.py b/src/icefabric/builds/icechunk_s3_module.py index e276e06..1c385f4 100644 --- a/src/icefabric/builds/icechunk_s3_module.py +++ b/src/icefabric/builds/icechunk_s3_module.py @@ -148,7 +148,8 @@ def gen_virtual_chunk_containers( v_chunks = None if virtual_chunk_mapping: v_chunks = [ - set_up_virtual_chunk_container(vc["bucket"], vc["region"]) for vc in virtual_chunk_mapping + self.set_up_virtual_chunk_container(vc["bucket"], vc["region"]) + for vc in virtual_chunk_mapping ] return v_chunks @@ -425,8 +426,3 @@ def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkC return ic.VirtualChunkContainer( name=bucket, url_prefix=f"s3://{bucket}/", store=ic.s3_store(region=region) ) - - -# def get_icechunk_data(repo: NGWPCLocations) -> xr.Dataset: -# """Convenience wrapper to return data from a designated NGWPCLocations Icechunk repo""" -# return IcechunkRepo(location=repo.path).retrieve_dataset() diff --git a/tests/integration/test_icechunk.py b/tests/integration/test_icechunk.py new file mode 100644 index 0000000..b633b4b --- /dev/null +++ b/tests/integration/test_icechunk.py @@ -0,0 +1,16 @@ +import pytest +import xarray as xr + +from icefabric.builds import IcechunkRepo +from icefabric.schemas import NGWPCTestLocations + +ic_list = NGWPCTestLocations._member_names_ +params = [pytest.param(getattr(NGWPCTestLocations, name), id=f"Icechunk {name}") for name in ic_list] + + +@pytest.mark.parametrize("ic", params) +def test_icechunk_repo(ic: NGWPCTestLocations) -> None: + """Confirm icechunk repos are valid""" + ic_repo = IcechunkRepo(location=ic.path) + ic_data = ic_repo.retrieve_dataset() + assert isinstance(ic_data, xr.core.dataset.Dataset) From f1c27ac38ee5f91a5e35faef27720e8c7e84948d Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 15 Jul 2025 10:25:20 -0400 Subject: [PATCH 82/97] Setting up the OE: Ngwpc 6892 patch (#56) * initial commit: updated geopackage_viewer to work with iceberg * feat: updated pyiceberg example to remove s3 reliance * patch: Update soil_freeze_thaw.ipynb * Icechunk Tests (#55) --------- Co-authored-by: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> --- examples/geopackage_viewer/viewer.ipynb | 699 ------------------- examples/iceberg/pyiceberg_time_travel.ipynb | 305 +++----- examples/iceberg_data_viewer/viewer.ipynb | 279 ++++++++ src/icefabric/helpers/__init__.py | 2 + src/icefabric/helpers/io.py | 32 + src/icefabric/ui/__init__.py | 10 +- src/icefabric/ui/geo_utils.py | 105 ++- 7 files changed, 517 insertions(+), 915 deletions(-) delete mode 100644 examples/geopackage_viewer/viewer.ipynb create mode 100644 examples/iceberg_data_viewer/viewer.ipynb diff --git a/examples/geopackage_viewer/viewer.ipynb b/examples/geopackage_viewer/viewer.ipynb deleted file mode 100644 index a264560..0000000 --- a/examples/geopackage_viewer/viewer.ipynb +++ /dev/null @@ -1,699 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "5c66ee09-04ee-47c3-bc36-8f620a207626", - "metadata": {}, - "source": [ - "# Hydrofabric Geopackage Viewer" - ] - }, - { - "cell_type": "markdown", - "id": "df0435b9-0fd0-4681-9c10-4ac2faaf83aa", - "metadata": {}, - "source": [ - "Read geopackage with geopandas. Get list of layers, loop and read all layers and store in a dictionary.\n", - "\n", - "\n", - "Requires:\n", - "- To be run on machine with access to https://hydroapi.oe.nextgenwaterprediction.com/\n", - "- `.env` with AWS credentials" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "784799a5-df23-4971-ad1b-ea4573610279", - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "import geopandas as gpd\n", - "import ipywidgets as widgets\n", - "import pandas as pd\n", - "from ipywidgets import interact\n", - "\n", - "from icefabric.ui import create_time_series_widget, get_geopackage_uri, get_observational_uri" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "515b8c7d-c575-42f3-a9b3-414659e619f5", - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric.helpers import load_creds\n", - "\n", - "# dir is where the .env file is located\n", - "load_creds(dir=Path.cwd().parents[1])" - ] - }, - { - "cell_type": "markdown", - "id": "3278d5ca-d9c5-4950-8731-77b9dd5d3367", - "metadata": {}, - "source": [ - "## Getting streamflow observations for different gages\n" - ] - }, - { - "cell_type": "markdown", - "id": "ac3f8c61-8218-4d6b-bba7-285053166a7e", - "metadata": {}, - "source": [ - "Step 1) getting the data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5124f78a-2f24-4e9c-ba73-93d246bfc2e4", - "metadata": {}, - "outputs": [], - "source": [ - "streamflow_obs_uri = get_observational_uri(gage_id=\"01013500\")\n", - "streamflow_obs_df = pd.read_csv(streamflow_obs_uri)\n", - "streamflow_obs_df" - ] - }, - { - "cell_type": "markdown", - "id": "3ef286cb-c57b-471c-b235-0c7becd81bb4", - "metadata": {}, - "source": [ - "Step 2) streamflow visualization" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "a53b0ff1-be18-4baf-af51-f331888974da", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "02a4caac921e415092fb25289f697d6b", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(SelectionSlider(description='Start:', layout=Layout(width='95%'), options=('1990-10-01 0…" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "streamflow_obs_df[\"dateTime\"] = pd.to_datetime(streamflow_obs_df[\"dateTime\"])\n", - "\n", - "# Create sliders\n", - "start_slider = widgets.SelectionSlider(\n", - " options=streamflow_obs_df[\"dateTime\"].dt.strftime(\"%Y-%m-%d %H:%M:%S\").tolist(),\n", - " description=\"Start:\",\n", - " layout=widgets.Layout(width=\"95%\"),\n", - ")\n", - "\n", - "end_slider = widgets.SelectionSlider(\n", - " options=streamflow_obs_df[\"dateTime\"].dt.strftime(\"%Y-%m-%d %H:%M:%S\").tolist(),\n", - " description=\"End:\",\n", - " layout=widgets.Layout(width=\"95%\"),\n", - ")\n", - "\n", - "# Scatter Plot of observations\n", - "create_time_series_widget(streamflow_obs_df, start_slider, end_slider, point_size=5)" - ] - }, - { - "cell_type": "markdown", - "id": "721e55a1-798e-4122-b69f-d178381086ec", - "metadata": {}, - "source": [ - "## Geopackage Summary" - ] - }, - { - "cell_type": "markdown", - "id": "3adcb9a2-4623-4117-99cf-ad29501bea42", - "metadata": {}, - "source": [ - "Print list of layers, number of catchments, and list of hydrolocations." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7fb96ccb-b383-42eb-b8bd-b2355c1e20cc", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Layers:\n", - "flowpaths, divides, nexus, lakes, pois, hydrolocations, flowpath-attributes, flowpath-attributes-ml, network, divide-attributes\n", - "Number of catchments:\n", - "26\n", - "Hydrolocations:\n", - "huc12-101900020801, huc12-101900020802, gages-06710385\n" - ] - } - ], - "source": [ - "geopackage_uri = get_geopackage_uri(gage_id=\"06710385\", version=2.2)\n", - "print(geopackage_uri)\n", - "\n", - "layers = gpd.list_layers(geopackage_uri).name.tolist()\n", - "\n", - "layer_df = {}\n", - "\n", - "for layer in layers:\n", - " df = gpd.read_file(geopackage_uri, layer=layer)\n", - " layer_df[layer] = df\n", - "\n", - "layers_str = \", \".join(layers)\n", - "print(\"Layers:\")\n", - "print(layers_str)\n", - "row, col = layer_df[\"divides\"].shape\n", - "print(\"Number of catchments:\")\n", - "print(row)\n", - "print(\"Hydrolocations:\")\n", - "hl = layer_df[\"hydrolocations\"].hl_uri.tolist()\n", - "hl_str = \", \".join(hl)\n", - "print(hl_str)" - ] - }, - { - "cell_type": "markdown", - "id": "77cd7974-cda9-4931-b80c-8d5dd31da250", - "metadata": {}, - "source": [ - "## Map of divides, nexuses, and flowpaths" - ] - }, - { - "cell_type": "markdown", - "id": "b3689b76-8a61-48b8-b827-1b17eb3e3caf", - "metadata": {}, - "source": [ - "Plot divides, nexuses, and flowpaths on a map." - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "798ddd22", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
    Make this Notebook Trusted to load map: File -> Trust Notebook
    " - ], - "text/plain": [ - "" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "divides = layer_df[\"divides\"].to_crs(epsg=3857)\n", - "\n", - "flowpaths = layer_df[\"flowpaths\"].to_crs(epsg=3857)\n", - "nexus = layer_df[\"nexus\"].to_crs(epsg=3857)\n", - "\n", - "div_ex = divides.explore()\n", - "fl_ex = flowpaths.explore(m=div_ex, color=\"yellow\")\n", - "nexus.explore(m=fl_ex, color=\"red\")" - ] - }, - { - "cell_type": "markdown", - "id": "460fc320-ffd7-4509-a252-d3eedb25b292", - "metadata": {}, - "source": [ - "## View Layers" - ] - }, - { - "cell_type": "markdown", - "id": "c4e1f9d4-ab23-4606-86dd-69432e84a523", - "metadata": {}, - "source": [ - "Select layer and print table" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "858e0398-81ee-4d57-8889-11002174c5ea", - "metadata": {}, - "outputs": [ - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "70048138c0e24c9b99123493f978d25a", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - "interactive(children=(Dropdown(description='layer_name', options=('flowpaths', 'divides', 'nexus', 'lakes', 'p…" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "interact(lambda layer_name: display(layer_df[layer_name]), layer_name=layers)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "icefabric", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/iceberg/pyiceberg_time_travel.ipynb b/examples/iceberg/pyiceberg_time_travel.ipynb index a001312..30f6ea8 100644 --- a/examples/iceberg/pyiceberg_time_travel.ipynb +++ b/examples/iceberg/pyiceberg_time_travel.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "markdown", - "id": "c015f447", + "id": "0", "metadata": {}, "source": [ "# Demo: Timetravel in with iceberg tables\n", @@ -16,330 +16,217 @@ }, { "cell_type": "code", - "execution_count": 2, - "id": "9f07637f", + "execution_count": null, + "id": "1", "metadata": {}, "outputs": [], "source": [ - "import shlex\n", - "import subprocess\n", + "import os\n", "from pathlib import Path\n", "\n", - "import pyarrow.parquet as pq\n", - "from pyiceberg.catalog import load_catalog" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "db86d0ba", - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric.helpers import load_creds\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric.helpers import load_creds, load_pyiceberg_config\n", + "\n", + "# Changes the current working dir to be the project root\n", + "current_working_dir = Path.cwd()\n", + "os.chdir(Path.cwd() / \"../../\")\n", + "print(\n", + " f\"Changed current working dir from {current_working_dir} to: {Path.cwd()}. This must run at the project root\"\n", + ")\n", + "\n", "\n", "# dir is where the .env file is located\n", - "load_creds(dir=Path.cwd().parents[1])" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "3f901988", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "download: s3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet to data/parquet/divides.parquet\n" - ] - }, - { - "data": { - "text/plain": [ - "CompletedProcess(args=['aws', 's3', 'cp', 's3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet', 'data/parquet'], returncode=0)" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "# Retrieve sample parquet from s3\n", - "parquet_path = Path(\"./data/parquet\")\n", - "parquet_path.mkdir(parents=True, exist_ok=True)\n", + "load_creds(dir=Path.cwd())\n", "\n", - "subprocess.run(\n", - " shlex.split(\n", - " f\"aws s3 cp s3://ngwpc-hydrofabric/hydrofabric_parquet/2.2/CONUS/divides.parquet {parquet_path}\"\n", - " )\n", + "# Loading the local pyiceberg config settings\n", + "pyiceberg_config = load_pyiceberg_config(Path.cwd())\n", + "catalog = load_catalog(\n", + " name=\"sql\",\n", + " type=pyiceberg_config[\"catalog\"][\"sql\"][\"type\"],\n", + " uri=pyiceberg_config[\"catalog\"][\"sql\"][\"uri\"],\n", + " warehouse=pyiceberg_config[\"catalog\"][\"sql\"][\"warehouse\"],\n", ")" ] }, { "cell_type": "markdown", - "id": "f41913d7-1cc8-42d0-8cea-053b4c23d6bb", + "id": "2", "metadata": {}, "source": [ - "Read divides parquet file" + "Load a specific table that we would like to time travel from" ] }, { "cell_type": "code", - "execution_count": 5, - "id": "6651c9e7-c38d-46d1-b6a4-491baf12cc90", + "execution_count": null, + "id": "3", "metadata": {}, "outputs": [], "source": [ - "df = pq.read_table(\"data/parquet/divides.parquet\")" + "table = catalog.load_table(\"streamflow_observations.usgs_hourly\")\n", + "table.inspect.snapshots()" ] }, { "cell_type": "markdown", - "id": "0e4d5aaf-d51c-486c-86ac-32eeb2b7e74f", + "id": "4", "metadata": {}, "source": [ - "Create data catalog stored in \"warehouse\" directory." + "Let's view this data and see what's there" ] }, { "cell_type": "code", - "execution_count": 6, - "id": "96974839-0308-4256-bb3e-0cddfea9d037", + "execution_count": null, + "id": "5", "metadata": {}, "outputs": [], "source": [ - "warehouse_path = Path(\"./warehouse\")\n", - "warehouse_path.mkdir(exist_ok=True)\n", - "catalog = load_catalog(\n", - " \"default\",\n", - " **{\n", - " \"type\": \"sql\",\n", - " \"uri\": f\"sqlite:///{warehouse_path}/pyiceberg_catalog.db\",\n", - " \"warehouse\": f\"file://{warehouse_path}\",\n", - " },\n", - ")" + "df = table.scan().to_pandas().set_index(\"time\")\n", + "df.tail()" ] }, { "cell_type": "markdown", - "id": "2fe13a4d-0c18-4f2b-953e-a9c658b7225a", + "id": "6", "metadata": {}, "source": [ - "Create Iceberg table for divides" + "A snapshot was created for the initial append. Store this snapshot id for later use." ] }, { "cell_type": "code", - "execution_count": 7, - "id": "efed8866-134c-40f9-969b-1e4c20b5f11b", + "execution_count": null, + "id": "7", "metadata": {}, "outputs": [], "source": [ - "catalog.create_namespace(\"default\")\n", - "table = catalog.create_table(\n", - " \"default.divides\",\n", - " schema=df.schema,\n", - ")" + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")\n", + "snapshot_id = table.metadata.snapshots[0].snapshot_id" ] }, { "cell_type": "markdown", - "id": "f29ed9b6-ba8d-4a54-bbc5-eec900f1cec6", + "id": "8", "metadata": {}, "source": [ - "Add divides data to Iceberg table and print the number of rows. There should be 831777 divides for CONUS." + "Add a new column for a fake gauge" ] }, { "cell_type": "code", - "execution_count": 8, - "id": "0a9d4717-9055-4ac7-819c-aca6c2435c95", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "831777" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "table.append(df)\n", - "len(table.scan().to_arrow())" - ] - }, - { - "cell_type": "markdown", - "id": "a1c2b449-667a-4bcd-9c94-d0e604c33f8c", + "execution_count": null, + "id": "9", "metadata": {}, + "outputs": [], "source": [ - "A snapshot was created for the initial append. Store this snapshot id for later use." + "import numpy as np\n", + "\n", + "n = len(df)\n", + "x = np.linspace(0, n, n)\n", + "y = np.sin(2 * np.pi * 1 * x / n).astype(np.float32)" ] }, { "cell_type": "code", - "execution_count": 9, - "id": "78ee6462-5db1-4a40-89b8-3837e63711cd", + "execution_count": null, + "id": "10", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Snapshot ID: 6392225911450853109; Summary: operation=Operation.APPEND\n" - ] - } - ], + "outputs": [], "source": [ - "for snapshot in table.snapshots():\n", - " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")\n", - "snapshot_id = table.metadata.snapshots[0].snapshot_id" + "import pyarrow as pa\n", + "\n", + "df[\"12345678\"] = y\n", + "_df = pa.Table.from_pandas(df)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)" ] }, { "cell_type": "markdown", - "id": "8f245529-a3c9-4a99-bcb3-fe1078779498", + "id": "11", "metadata": {}, "source": [ - "Add a new column for flowpath length in m. Overwrite original table." + "There should be a new \"12345678\" column." ] }, { "cell_type": "code", - "execution_count": 10, - "id": "975224d2-deb0-420f-be80-6b5cac7bbe60", + "execution_count": null, + "id": "12", "metadata": {}, "outputs": [], "source": [ - "import pyarrow.compute as pc\n", - "\n", - "df = df.append_column(\"lengthm\", pc.multiply(df[\"lengthkm\"], 1000))\n", - "with table.update_schema() as update_schema:\n", - " update_schema.union_by_name(df.schema)\n", - "table.overwrite(df)" + "table.schema" ] }, { "cell_type": "markdown", - "id": "b3ff7a72-70f6-44e8-a6da-d1c9766c6782", + "id": "13", "metadata": {}, "source": [ - "There should be a new \"lengthm\" column." + "There should now be three snapshots. The original, a delete, and an append with the new column." ] }, { "cell_type": "code", - "execution_count": 11, - "id": "d826f290-79bf-4bab-a508-cd73bb3aadb6", + "execution_count": null, + "id": "14", "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ - "table.schema" + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")" ] }, { "cell_type": "markdown", - "id": "668d3f57-e9ef-47e7-a268-05699debcf8f", + "id": "15", "metadata": {}, "source": [ - "There should now be three snapshots. The original, a delete, and an append with the new column." + "You can use the scan function and the first snapshot ID (this variable was saved earlier) to look at the table before the\n", + "new column was added. This table doesn't have 12345678." ] }, { "cell_type": "code", - "execution_count": 12, - "id": "6b3a70f2-2271-4bcd-b5fb-83683f36705c", + "execution_count": null, + "id": "16", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Snapshot ID: 6392225911450853109; Summary: operation=Operation.APPEND\n", - "Snapshot ID: 3770483438741118773; Summary: operation=Operation.DELETE\n", - "Snapshot ID: 6082380623201209864; Summary: operation=Operation.APPEND\n" - ] - } - ], + "outputs": [], "source": [ - "for snapshot in table.snapshots():\n", - " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")" + "# scan = table.scan(row_filter=\"divide_id\" == \"cat-276\", selected_fields=('divide_id', 'lengthm')).to_arrow()\n", + "# print(scan)\n", + "table.scan(snapshot_id=snapshot_id).to_pandas().tail()\n", + "# table.scan(snapshot_id=snapshot_id)" ] }, { "cell_type": "markdown", - "id": "3685eddd-31bb-4c07-a656-6cfb5e97881a", + "id": "17", "metadata": {}, "source": [ - "You can use the scan function and the first snapshot ID (this variable was saved earlier) to look at the table before the\n", - "new column was added. This table doesn't have lengthm." + "whereas loading without the snapshot gives the latest data" ] }, { "cell_type": "code", - "execution_count": 13, - "id": "2f47f9e3-7e6b-468b-a978-2c433e662c12", + "execution_count": null, + "id": "18", "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "pyarrow.Table\n", - "divide_id: large_string\n", - "toid: large_string\n", - "type: large_string\n", - "ds_id: double\n", - "areasqkm: double\n", - "vpuid: large_string\n", - "id: large_string\n", - "lengthkm: double\n", - "tot_drainage_areasqkm: double\n", - "has_flowline: bool\n", - "geometry: large_binary\n" - ] - } - ], + "outputs": [], "source": [ - "# scan = table.scan(row_filter=\"divide_id\" == \"cat-276\", selected_fields=('divide_id', 'lengthm')).to_arrow()\n", - "# print(scan)\n", - "print(table.scan(snapshot_id=snapshot_id).to_arrow().to_string())\n", - "# table.scan(snapshot_id=snapshot_id)" + "table.scan().to_pandas().tail()" ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [] } ], "metadata": { diff --git a/examples/iceberg_data_viewer/viewer.ipynb b/examples/iceberg_data_viewer/viewer.ipynb new file mode 100644 index 0000000..22eb6db --- /dev/null +++ b/examples/iceberg_data_viewer/viewer.ipynb @@ -0,0 +1,279 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0", + "metadata": {}, + "source": [ + "# Hydrofabric Geopackage Viewer" + ] + }, + { + "cell_type": "markdown", + "id": "1", + "metadata": {}, + "source": [ + "Reads/extracts files from the NGWPC pyiceberg resources" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from pathlib import Path\n", + "\n", + "import pandas as pd\n", + "from ipywidgets import interact\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric.helpers import load_creds, load_pyiceberg_config\n", + "from icefabric.hydrofabric import subset\n", + "from icefabric.schemas import IdType\n", + "from icefabric.ui import create_time_series_widget, get_hydrofabric_gages, get_streamflow_data\n", + "\n", + "# Changes the current working dir to be the project root\n", + "current_working_dir = Path.cwd()\n", + "os.chdir(Path.cwd() / \"../../\")\n", + "print(\n", + " f\"Changed current working dir from {current_working_dir} to: {Path.cwd()}. This must run at the project root\"\n", + ")\n", + "\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd())\n", + "\n", + "# Loading the local pyiceberg config settings\n", + "pyiceberg_config = load_pyiceberg_config(Path.cwd())\n", + "catalog = load_catalog(\n", + " name=\"sql\",\n", + " type=pyiceberg_config[\"catalog\"][\"sql\"][\"type\"],\n", + " uri=pyiceberg_config[\"catalog\"][\"sql\"][\"uri\"],\n", + " warehouse=pyiceberg_config[\"catalog\"][\"sql\"][\"warehouse\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "3", + "metadata": {}, + "source": [ + "## Getting streamflow observations for different gages\n" + ] + }, + { + "cell_type": "markdown", + "id": "4", + "metadata": {}, + "source": [ + "Step 1) getting the data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5", + "metadata": {}, + "outputs": [], + "source": [ + "from pprint import pprint\n", + "\n", + "# Using a local warehouse for this example. This was created through the following command and NGWPC test AWS account\n", + "# python tools/pyiceberg/export_catalog.py --namespace streamflow_observations\n", + "streamflow_obs_df = get_streamflow_data(catalog_name=\"sql\", **pyiceberg_config[\"catalog\"])\n", + "\n", + "# List all gauge IDs\n", + "\n", + "pprint(streamflow_obs_df.columns.tolist())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6", + "metadata": {}, + "outputs": [], + "source": [ + "# select the gauge ID you want to use:\n", + "gage_id = \"12145500\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7", + "metadata": {}, + "outputs": [], + "source": [ + "streamflow_obs_df[\"time\"] = pd.to_datetime(streamflow_obs_df[\"time\"])\n", + "\n", + "# Scatter Plot of observations\n", + "create_time_series_widget(streamflow_obs_df, point_size=5, time_col=\"time\", flow_col=gage_id)" + ] + }, + { + "cell_type": "markdown", + "id": "8", + "metadata": {}, + "source": [ + "## Geopackage Summary" + ] + }, + { + "cell_type": "markdown", + "id": "9", + "metadata": {}, + "source": [ + "Print list of layers, number of catchments, and list of hydrolocations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10", + "metadata": {}, + "outputs": [], + "source": [ + "pprint(get_hydrofabric_gages(catalog=catalog))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ + "# Using a local warehouse for this example. This was created through the following command and NGWPC test AWS account\n", + "# python tools/pyiceberg/export_catalog.py --namespace conus_hf\n", + "gage_id = \"11280000\"\n", + "layers = [\"flowpaths\", \"nexus\", \"divides\", \"network\", \"hydrolocations\", \"pois\"]\n", + "layers_df = subset(catalog=catalog, layers=layers, identifier=f\"gages-{gage_id}\", id_type=IdType.HL_URI)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "12", + "metadata": {}, + "outputs": [], + "source": [ + "print(\"Layers:\")\n", + "print(list(layers_df.keys()))\n", + "row, col = layers_df[\"divides\"].shape\n", + "print(\"Number of catchments:\")\n", + "print(row)\n", + "print(\"Hydrolocations:\")\n", + "hl = layers_df[\"hydrolocations\"].hl_uri.tolist()\n", + "hl_str = \", \".join(hl)\n", + "print(hl_str)" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "## Map of divides, nexuses, and flowpaths" + ] + }, + { + "cell_type": "markdown", + "id": "14", + "metadata": {}, + "source": [ + "Plot divides, nexuses, and flowpaths on a map." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "15", + "metadata": {}, + "outputs": [], + "source": [ + "divides = layers_df[\"divides\"].to_crs(epsg=3857)\n", + "\n", + "flowpaths = layers_df[\"flowpaths\"].to_crs(epsg=3857)\n", + "nexus = layers_df[\"nexus\"].to_crs(epsg=3857)\n", + "\n", + "div_ex = divides.explore()\n", + "fl_ex = flowpaths.explore(m=div_ex, color=\"yellow\")\n", + "nexus.explore(m=fl_ex, color=\"red\")" + ] + }, + { + "cell_type": "markdown", + "id": "16", + "metadata": {}, + "source": [ + "## View Layers" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "Select layer and print table" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "18", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "\n", + "# Configure pandas display options for better formatting\n", + "pd.set_option(\"display.max_columns\", None)\n", + "pd.set_option(\"display.width\", None)\n", + "pd.set_option(\"display.max_colwidth\", 50)\n", + "pd.set_option(\"display.expand_frame_repr\", False)\n", + "\n", + "# Interactive display with limited rows\n", + "interact(lambda layer_name: layers_df[layer_name].head(20), layer_name=layers)" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "20", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "icefabric", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/icefabric/helpers/__init__.py b/src/icefabric/helpers/__init__.py index 5bcf70b..f3067cb 100644 --- a/src/icefabric/helpers/__init__.py +++ b/src/icefabric/helpers/__init__.py @@ -7,6 +7,7 @@ ) from .creds import load_creds from .geopackage import table_to_geopandas, to_geopandas +from .io import load_pyiceberg_config from .nc_conv_utils import conv_nc, convert_files_to_netcdf4, convert_nc_files_from_s3 from .topobathy_ic_to_tif import convert_topobathy_to_tiff @@ -21,4 +22,5 @@ "convert_nc_files_from_s3", "conv_nc", "convert_topobathy_to_tiff", + "load_pyiceberg_config", ] diff --git a/src/icefabric/helpers/io.py b/src/icefabric/helpers/io.py index 306405e..c8bf202 100644 --- a/src/icefabric/helpers/io.py +++ b/src/icefabric/helpers/io.py @@ -2,7 +2,9 @@ import tempfile import zipfile from pathlib import Path +from typing import Any +import yaml from tqdm import tqdm from icefabric.schemas.modules import NWMProtocol @@ -39,3 +41,33 @@ def _create_config_zip(configs: list[NWMProtocol], output_path: Path, **kwargs): for file_path in config_files: archive_name = file_path.name f.write(file_path, archive_name) + + +def load_pyiceberg_config(cwd: Path) -> dict[str, Any]: + """Reads a .pyiceberg.yaml config file to memory + + Parameters + ---------- + cwd : Path + the path to the .pyiceberg.yaml file + + Returns + ------- + dict[str, Any] + The pyiceberg yaml file + + Raises + ------ + FileNotFoundError + Can't find the YAML file in the CWD + yaml.YAMLError + Error parsing the YAML file + """ + try: + with open(cwd / ".pyiceberg.yaml", encoding="utf-8") as file: + data = yaml.safe_load(file) + return data if data is not None else {} + except FileNotFoundError as e: + raise FileNotFoundError(f".pyiceberg YAML file not found in cwd: {cwd}") from e + except yaml.YAMLError as e: + raise yaml.YAMLError(f"Error parsing .pyiceberg YAML file: {e}") from e diff --git a/src/icefabric/ui/__init__.py b/src/icefabric/ui/__init__.py index 75174ee..091f21d 100644 --- a/src/icefabric/ui/__init__.py +++ b/src/icefabric/ui/__init__.py @@ -1,9 +1,17 @@ """Contains helper functions to support NWM modules""" -from .geo_utils import create_time_series_widget, get_geopackage_uri, get_observational_uri +from .geo_utils import ( + create_time_series_widget, + get_geopackage_uri, + get_hydrofabric_gages, + get_observational_uri, + get_streamflow_data, +) __all__ = [ "create_time_series_widget", "get_geopackage_uri", "get_observational_uri", + "get_streamflow_data", + "get_hydrofabric_gages", ] diff --git a/src/icefabric/ui/geo_utils.py b/src/icefabric/ui/geo_utils.py index 3ef7846..c07cc28 100644 --- a/src/icefabric/ui/geo_utils.py +++ b/src/icefabric/ui/geo_utils.py @@ -2,6 +2,91 @@ import ipywidgets as widgets import matplotlib.pyplot as plt import pandas as pd +from pyiceberg import expressions +from pyiceberg.catalog import Catalog, load_catalog +from pyiceberg.exceptions import NoSuchTableError + +from icefabric.schemas.hydrofabric import HydrofabricDomains + + +def get_streamflow_data( + catalog_name: str, + gage_id: str | None = None, + row_filter: str | None = None, + snapshot_id: int | None = None, + **kwargs, +) -> pd.DataFrame: + """Gets streamflow data for the Jupyter UI to display + + Parameters + ---------- + gage_id : str + The gauge ID you are looking to view + catalog_name : str, optional + The pyiceberg catalog name + row_filter : str | None, optional + The row filter to specify a start/end time, by default None + snapshot_id : int | None, optional + the snapshot ID to , by default None + **kwargs + the pyiceberg.yaml file settings + + Returns + ------- + pd.DataFrame + The streamflow output for the specified gauge + + Raises + ------ + NoSuchTableError + There is no existing record for the streamflow values + """ + catalog = load_catalog( + name=catalog_name, + type=kwargs[catalog_name]["type"], + uri=kwargs[catalog_name]["uri"], + warehouse=kwargs[catalog_name]["warehouse"], + ) + try: + table = catalog.load_table("streamflow_observations.usgs_hourly") + if row_filter is None: + df = table.scan(snapshot_id=snapshot_id).to_pandas() + else: + df = table.scan(row_filter=row_filter, snapshot_id=snapshot_id).to_pandas() + if gage_id is not None: + return df[["time", gage_id]] + else: + return df + except NoSuchTableError as e: + msg = "No table/namespace found for streamflow_observations.usgs_hourly in the catalog" + print(msg) + raise NoSuchTableError from e + + +def get_hydrofabric_gages( + catalog: Catalog, domain: HydrofabricDomains = HydrofabricDomains.CONUS +) -> list[str]: + """Returns the hydrofabric gages within the network table + + Parameters + ---------- + catalog : Catalog + the pyiceberg warehouse reference + domain : HydrofabricDomains, optional + the hydrofabric domain, by default HydrofabricDomains.CONUS + + Returns + ------- + list[str] + The list of all gages in the conus-hf + """ + return ( + catalog.load_table(f"{domain.value}.network") + .scan(row_filter=expressions.StartsWith("hl_uri", "gages-")) + .to_pandas() + .drop_duplicates(subset="hl_uri", keep="first")[("hl_uri")] + .tolist() + ) def get_observational_uri( @@ -77,10 +162,7 @@ def get_geopackage_uri( def create_time_series_widget( - df: pd.DataFrame, - start_slider: widgets.SelectionSlider, - end_slider: widgets.SelectionSlider, - point_size: float = 30, + df: pd.DataFrame, flow_col: str, point_size: float = 30, time_col: str = "time" ): """ Creates an interactive time series plot using matplotlib and ipywidgets. @@ -91,6 +173,17 @@ def create_time_series_widget( start_slider (widgets.SelectionSlider): Widget for selecting start time end_slider (widgets.SelectionSlider): Widget for selecting end time """ + start_slider = widgets.SelectionSlider( + options=df["time"].dt.strftime("%Y-%m-%d %H:%M:%S").tolist(), + description="Start:", + layout=widgets.Layout(width="95%"), + ) + + end_slider = widgets.SelectionSlider( + options=df["time"].dt.strftime("%Y-%m-%d %H:%M:%S").tolist(), + description="End:", + layout=widgets.Layout(width="95%"), + ) @widgets.interact(start=start_slider, end=end_slider) def plot_flow(start, end): @@ -101,10 +194,10 @@ def plot_flow(start, end): print("Warning: Start must be before End.") return - filtered = df[(df["dateTime"] >= start_dt) & (df["dateTime"] <= end_dt)] + filtered = df[(df[time_col] >= start_dt) & (df[time_col] <= end_dt)] fig, ax = plt.subplots(figsize=(10, 4)) - ax.scatter(filtered["dateTime"], filtered["q_cms"], s=point_size, label="Flow rate (cms)", alpha=0.7) + ax.scatter(filtered[time_col], filtered[flow_col], s=point_size, label="Flow rate (cms)", alpha=0.7) ax.set_xlabel("Date Time") ax.set_ylabel("Discharge (cms)") ax.set_title("Streamflow Time Series (Scatter Plot)") From 8cbe55fcd371d3e62a2145ba8747e7afc268375c Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:29:51 -0400 Subject: [PATCH 83/97] init factors in ras_xs --- src/icefabric/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/icefabric/__init__.py b/src/icefabric/__init__.py index 8116e6b..ca70965 100644 --- a/src/icefabric/__init__.py +++ b/src/icefabric/__init__.py @@ -1,6 +1,6 @@ """An Apache Iceberg + Icechunk implementation of Hydrofabric data services""" -from . import builds, cli, helpers, hydrofabric, modules, schemas, ui +from . import builds, cli, helpers, hydrofabric, modules, schemas, ui, ras_xs from ._version import __version__ -__all__ = ["__version__", "builds", "cli", "hydrofabric", "helpers", "modules", "schemas", "ui"] +__all__ = ["__version__", "builds", "cli", "hydrofabric", "helpers", "modules", "schemas", "ui", "ras_xs"] From 7eed50efcecdafc01100181e5ec4fe1041021d3b Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:31:24 -0400 Subject: [PATCH 84/97] Create __init__.py --- src/icefabric/ras_xs/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 src/icefabric/ras_xs/__init__.py diff --git a/src/icefabric/ras_xs/__init__.py b/src/icefabric/ras_xs/__init__.py new file mode 100644 index 0000000..81f0c62 --- /dev/null +++ b/src/icefabric/ras_xs/__init__.py @@ -0,0 +1,7 @@ +"""Helper functions designed to assist with managing data.""" + +from .subset import subset_xs + +__all__ = [ + "subset_xs" +] From 61c2b0325fc404080c2ce7c57dace9625d18802e Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:32:02 -0400 Subject: [PATCH 85/97] adding filter xs script --- src/icefabric/ras_xs/subset.py | 69 ++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/icefabric/ras_xs/subset.py diff --git a/src/icefabric/ras_xs/subset.py b/src/icefabric/ras_xs/subset.py new file mode 100644 index 0000000..87f72cc --- /dev/null +++ b/src/icefabric/ras_xs/subset.py @@ -0,0 +1,69 @@ +"""A file to hold ras cross-section tools""" + +from pathlib import Path + +import geopandas as gpd +import pandas as pd +from botocore.exceptions import ClientError +from pyiceberg.catalog import Catalog +from pyiceberg.expressions import And, EqualTo +from pyiceberg.table import Table + +from icefabric.helpers.geopackage import to_geopandas +from icefabric.schemas.ras_xs import XsType + +def subset_xs(catalog: Catalog, + identifier: str, + output_file: Path | None = None, + xstype: XsType = XsType.MIP, + **kwarg) -> dict[str, pd.DataFrame | gpd.GeoDataFrame] | None: + """Returns a geopackage subset from the xs iceberg catalog. + + This function delivers a subset of the cross-sections data by tracing from a + given HUC identifier & collecting all relevant cross-section information based on + additional identifiers provided. + + Parameters + ---------- + catalog : Catalog + The xs iceberg catalog comprised of the ras cross-sections data tables. + identifier : str + The HUC identifier. + xstype : Type of cross-section data to subset. + The type of cross-section data to read (e.g. mip, ble). + output_file : Path, optional + The output file path where the geopackage will be saved. + + Returns + ------- + GeoDataFrame + Subset of the mip cross-sections data based on identifiers. + + """ + ds_reach_id = kwarg.get('ds_reach_id', None) + + try: + xs_table = catalog.load_table(f"{xstype.value}_xs.{identifier}") + + except ClientError as e: + msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" + print(msg) + raise e + + # By default, mip xs tables are filtered by huc + df = xs_table.scan().to_pandas() + + if ds_reach_id: + filter_cond = EqualTo("ds_reach_id", ds_reach_id) + df = xs_table.scan(row_filter=filter_cond).to_pandas() + data_gdf = to_geopandas(df) + + # Save data. + if output_file: + if len(data_gdf) > 0: + gpd.GeoDataFrame(data_gdf).to_file(output_file, + layer='ras_xs', + driver="GPKG") + else: + print(f"Warning: Dataframe is empty") + return data_gdf From 2f6c350f63ad813b0474cb1cbddccd1442aca2c2 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:33:50 -0400 Subject: [PATCH 86/97] Factor enum for mip, ble, etc --- src/icefabric/schemas/__init__.py | 2 ++ src/icefabric/schemas/ras_xs.py | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) create mode 100644 src/icefabric/schemas/ras_xs.py diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py index 3190283..2d2a0b4 100644 --- a/src/icefabric/schemas/__init__.py +++ b/src/icefabric/schemas/__init__.py @@ -3,6 +3,7 @@ from .hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType from .modules import SFT, Albedo, IceFractionScheme from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations +from .ras_xs import XsType __all__ = [ "UPSTREAM_VPUS", @@ -14,4 +15,5 @@ "FileType", "NGWPCLocations", "NGWPCTestLocations", + "XsType" ] diff --git a/src/icefabric/schemas/ras_xs.py b/src/icefabric/schemas/ras_xs.py new file mode 100644 index 0000000..167c3da --- /dev/null +++ b/src/icefabric/schemas/ras_xs.py @@ -0,0 +1,18 @@ +"""Contains all schemas and enums for the RAS cross-sections""" + +from enum import Enum + + +class XsType(str, Enum): + """The domains used when querying the cross-sections. + + Attributes + ---------- + MIP : str + Mapping Information Platform + BLE : str + Base Level Engineering + """ + + MIP = "mip" + BLE = "ble" From 94a9bd9c8a1f39caaa2afb39575cc2c9c1c93836 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:35:50 -0400 Subject: [PATCH 87/97] adding xs router to main --- app/main.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/main.py b/app/main.py index b6c700e..e31f282 100644 --- a/app/main.py +++ b/app/main.py @@ -11,6 +11,7 @@ from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.nwm_modules.router import sft_router, topoflow_router from app.routers.streamflow_observations.router import api_router as streamflow_api_router +from app.routers.ras_xs.router import api_router as ras_api_router from icefabric.helpers import load_creds @@ -49,6 +50,7 @@ class HealthCheck(BaseModel): app.include_router(streamflow_api_router, prefix="/v1") app.include_router(sft_router, prefix="/v1") app.include_router(topoflow_router, prefix="/v1") +app.include_router(ras_api_router, prefix="/v1") @app.head( From a7eebf67b2e8c15e5a812c470484ec636a24626e Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:36:47 -0400 Subject: [PATCH 88/97] Create __init__.py --- app/routers/ras_xs/__init__.py | 1 + 1 file changed, 1 insertion(+) create mode 100644 app/routers/ras_xs/__init__.py diff --git a/app/routers/ras_xs/__init__.py b/app/routers/ras_xs/__init__.py new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/app/routers/ras_xs/__init__.py @@ -0,0 +1 @@ + From f1881029453c8770320a62e1e1fd48195f839d43 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 11:39:13 -0400 Subject: [PATCH 89/97] adding xs router --- app/routers/ras_xs/router.py | 137 +++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 app/routers/ras_xs/router.py diff --git a/app/routers/ras_xs/router.py b/app/routers/ras_xs/router.py new file mode 100644 index 0000000..6436b98 --- /dev/null +++ b/app/routers/ras_xs/router.py @@ -0,0 +1,137 @@ +import pathlib +import tempfile +import uuid + +from fastapi import APIRouter, HTTPException, Path, Query +from fastapi.responses import FileResponse +from pyiceberg.catalog import load_catalog +from starlette.background import BackgroundTask + +from icefabric.ras_xs import subset_xs +from icefabric.schemas import XsType + +api_router = APIRouter(prefix="/ras_xs") + +@api_router.get("/{identifier}/") +async def get_xs_subset_gpkg(identifier: str = Path(..., + description="HUC-8 identifier to filter by huc ID", + example="02040106"), + xstype: XsType = Query(XsType.MIP, + description="The iceberg namespace used to query the cross-sections" + ) +): + """ + Get geopackage subset from the mip xs iceberg catalog by table identifier (aka huc ID). + + This endpoint will query cross-sections from the mip xs iceberg catalog by huc & return + the data subset as a downloadable geopackage file. + + """ + catalog = load_catalog("glue") + unique_id = str(uuid.uuid4())[:8] + temp_dir = pathlib.Path(tempfile.gettempdir()) + tmp_path = temp_dir / f"ras_xs_{identifier}_{unique_id}.gpkg" + try: + # Create data subset + data_gdf=subset_xs(catalog=catalog, + identifier=f"{identifier}", + output_file=tmp_path, + xstype=xstype) + + if not tmp_path.exists(): + raise HTTPException(status_code=500, + detail=f"Failed to create geopackage file at {tmp_path}.") + if tmp_path.stat().st_size == 0: + tmp_path.unlink(missing_ok=True) + raise HTTPException(status_code=404, + detail=f"No data found for HUC {identifier}.") + + # Verify it's actually a file, not a directory + if not tmp_path.is_file(): + raise HTTPException(status_code=500, + detail=f"Expected file, but got directory at {tmp_path}.") + + print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") + + download_filename = f"ras_xs_huc{identifier}.gpkg" + + return FileResponse(path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={"Data_Source": f"{xstype}_xs", + "HUC Identifier": identifier, + "Description": f"{xstype} RAS Cross-Section Geopackage", + "Total Records": f"{len(data_gdf)}"}, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True))) + except HTTPException: + raise + except Exception: + + # Clean up temp file if it exists + if "tmp_path" in locals() and tmp_path.exists(): + tmp_path.unlink(missing_ok=True) + raise + +@api_router.get("/{identifier}/dsreachid={ds_reach_id}") +async def get_xs_subset_by_huc_reach_gpkg(identifier: str = Path(..., + description="Identifier to filter data by huc ID", + example="02040106"), + ds_reach_id: str = Path(..., + description="Identifier to filter data by downstream reach ID)", + example="4188251"), + xstype: XsType = Query(XsType.MIP, + description="The iceberg namespace used to query the cross-sections")): + """ + Get geopackage subset from the mip xs iceberg catalog by reach ID at huc ID. + + This endpoint will query cross-sections from the mip xs iceberg catalog by + downstream reach ID at given huc ID -- returning the data subset as a downloadable geopackage file. + + """ + catalog = load_catalog("glue") + unique_id = str(uuid.uuid4())[:8] + temp_dir = pathlib.Path(tempfile.gettempdir()) + tmp_path = temp_dir / f"ras_xs_{identifier}_{ds_reach_id}_{unique_id}.gpkg" + try: + # Create data subset + data_gdf = subset_xs(catalog=catalog, + identifier=f"{identifier}", + ds_reach_id=f"{ds_reach_id}", + output_file=tmp_path, + xstype=xstype) + + if not tmp_path.exists(): + raise HTTPException(status_code=500, + detail=f"Failed to create geopackage file at {tmp_path}.") + if tmp_path.stat().st_size == 0: + tmp_path.unlink(missing_ok=True) + raise HTTPException(status_code=404, + detail=f"No data found for downstream reach id {ds_reach_id} @ HUC{identifier}.") + + # Verify it's actually a file, not a directory + if not tmp_path.is_file(): + raise HTTPException(status_code=500, + detail=f"Expected file, but got directory at {tmp_path}.") + + print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") + + download_filename = f"ras_xs_huc{identifier}_dsreachid{ds_reach_id}.gpkg" + + return FileResponse(path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={"Data_Source": f"{xstype}_xs", + "HUC Identifier": identifier, + "DS Reach Identifier": ds_reach_id, + "Description": f"{xstype} RAS Cross-Section Geopackage", + "Total Records": f"{len(data_gdf)}"}, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True))) + + except HTTPException: + raise + except Exception: + + # Clean up temp file if it exists + if "tmp_path" in locals() and tmp_path.exists(): + tmp_path.unlink(missing_ok=True) + raise From c4fbdcadd58f1f9661542431e9cc99a1933c3124 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin <75846376+quercoak@users.noreply.github.com> Date: Tue, 15 Jul 2025 12:47:33 -0400 Subject: [PATCH 90/97] docs: API update --- README.md | 2 +- docs/index.md | 7 ++- docs/user_guide/icefabric_api.md | 73 +++++++++++++++++++++++++++++--- 3 files changed, 74 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 6b61ddf..fb3d4e7 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ To run the API locally, ensure your `.env` file in your project root has the rig ```sh python -m app.main ``` -This should spin up the API services. +This should spin up the API services at `localhost:8000/`. If you are running the API locally, you can run ```sh diff --git a/docs/index.md b/docs/index.md index ff196b6..2ac7447 100644 --- a/docs/index.md +++ b/docs/index.md @@ -22,7 +22,12 @@ To run the API locally, ensure your `.env` file in your project root has the rig ```sh python -m app.main ``` -This should spin up the API services. +This should spin up the API services at `localhost:8000/`. + +If you are running the API locally, you can run +```sh +python -m app.main --catalog sql +``` ### Building the API through Docker To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run diff --git a/docs/user_guide/icefabric_api.md b/docs/user_guide/icefabric_api.md index 86a8850..1625713 100644 --- a/docs/user_guide/icefabric_api.md +++ b/docs/user_guide/icefabric_api.md @@ -9,17 +9,17 @@ The Icefabric API is a FastAPI-based service that provides access to EDFS data s The API consists of several key components: 1. **Main Application** (`app/main.py`) - FastAPI application with health checks and router configuration -2. **Data Routers** - Handles all data endpoints. Currently only working with streamflow observations -3. **Apache Iceberg Backend** - SQLite-backed catalog stored in `/tmp/warehouse` built using `icefabric_manage` +2. **Data Routers** - Handles all data endpoints. Streamflow observations, Hydrofabric subsetting, National Water Model module configuration, and HEC-RAS cross-section retrieval are supported. +3. **Apache Iceberg Backend** - Defaults to hosted AWS Glue catalog. Local SQLite-backed catalog may be built using instructions below. ### Running the API locally -To run the API locally, ensure your `.env` file in your project root has the right credentials, then run +To run the API locally, ensure your `.env` file in your project root has the right credentials (`test`), then run ```sh uv sync -source +source .venv/bin/activate python -m app.main ``` -This should spin up the API services +This should spin up the API services at `localhost:8000/` ### Building the API through Docker To run the API locally with Docker, ensure your `.env` file in your project root has the right credentials, then run @@ -29,6 +29,31 @@ docker compose -f docker/compose.yaml up ``` This should spin up the API services +### Running the API with a local Iceberg catalog - Advanced Use +To run the API locally against a local catalog, the catalog must first be exported from glue. In the following code block, run build script for as many catalog namespaces as you need. Ensure your `.env` file in your project root has the right credentials (`test`), then run +```sh +uv sync +source .venv/bin/activate +python tools/pyiceberg/export_catalog.py --namespace conus_hf +# Run additional tool times with other namespaces as necessary +``` + +To view the namespaces hosted on glue, you can run the following commands in the terminal: +```python +>>> from pyiceberg.catalog import load_catalog +>>> catalog = load_catalog("glue") +>>> catalog.list_namespaces() +``` + + +To run the API locally with a local SQL backend, ensure your `.env` file in your project root has the right credentials (`test`), then run +```sh +uv sync +source .venv/bin/activate +python -m app.main --catalog sql +``` +This should spin up the API services + ## How It Works ### Data Flow @@ -42,14 +67,32 @@ This should spin up the API services #### Observations Currently supports: + - **USGS** - United States Geological Survey hourly streamflow data #### Hydrofabric Provides geospatial watershed data: + - **Subset Generation** - Creates upstream watershed subsets from identifiers !!! note "Data Storage" - All data is stored as Apache Iceberg tables in a SQLite-backed catalog locally built at `/tmp/warehouse/pyiceberg_catalog.db` + All data is stored remotely as Apache Iceberg tables on AWS glue unless you built the catalog locally. Then, it is stored at SQLite-backed catalog locally built at `/tmp/warehouse/pyiceberg_catalog.db` + +### National Water Model Modules +Retrieve National Water Model (NWM) module parameters. + +Currently supports: + +- **Soil Freeze Thaw (SFT)** - Retrieve paramters for Soil Freeze Thaw module +- **TopoFlow-Glacier** - Retrieve parameters for the TopoFlow Glacier module + +### RAS Cross-sections +Retrieves geopackage data of HEC-RAS cross-sections + +Currently supports: + +- **HUC ID**: Download a geopackage for given HUC ID +- **HUC ID** and **Reach ID**: Download a geopackage for a given HUC ID and Reach ID ## Usage Examples @@ -206,6 +249,24 @@ curl "http://localhost:8000/v1/hydrofabric/01010000/gpkg" -o "subset.gpkg" curl "http://localhost:8000/v1/hydrofabric/01031500/gpkg" -o "subset.gpkg" ``` +### NWM Modules +```bash +# Return parameters for Soil Freeze Thaw by catchment +curl "http://localhost:8000/v1/modules/sft/?identifier=01010000&domain=conus_hf&use_schaake=false" + +# Return albedo value for given catchment state (snow, ice, or other) +curl "http://localhost:8000/v1/modules/topoflow/albedo?landcover=snow" +``` + +### RAS Cross-sections +```bash +# Download RAS cross-sections for a HUC ID +curl "http://localhost:8000/v1/ras_xs/02040106/" -o "ras_02040106.gpkg" + +# Download RAS cross-sections for a HUC ID and Reach ID +curl "http://localhost:8000/v1/ras_xs/02040106/dsreachid=4188251" -o "ras_02040106_4188251.gpkg" +``` + ### Health Check ```bash From 22514c37c321251579934f5f0bdd5a3970c9c512 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:32:42 -0400 Subject: [PATCH 91/97] xs router test script added --- tests/app/test_xs_router.py | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 tests/app/test_xs_router.py diff --git a/tests/app/test_xs_router.py b/tests/app/test_xs_router.py new file mode 100644 index 0000000..c54013b --- /dev/null +++ b/tests/app/test_xs_router.py @@ -0,0 +1,32 @@ +from pyiceberg.catalog import load_catalog + +def test_xs_endpoint(client): + """Test: GET /v1/ras_xs/{reach_ids}?xstype={xs_val} - all valid arguments""" + catalog = load_catalog("glue", + **{"type":"glue", "glue.region":"us-east-1"}) + mip_hucid_list = [tup[1] for tup in catalog.list_tables("mip_xs")] + ble_hucid_list = [tup[1] for tup in catalog.list_tables("ble_xs")] + + for mip_hucid in mip_hucid_list[:5]: + response = client.get(f"/v1/ras_xs/{mip_hucid}?xstype=mip") + assert response.status_code == 200, "Incorrect response" + + reachid = list(set(catalog.load_table(f"mip_xs.{mip_hucid}").scan().to_pandas()['ds_reach_id']))[0] + response2 = client.get(f"/v1/ras_xs/{mip_hucid}/dsreachid={reachid}?xstype=mip") + assert response2.status_code == 200, "Incorrect response" + + for ble_hucid in ble_hucid_list[:5]: + response = client.get(f"/v1/ras_xs/{ble_hucid}?xstype=ble") + assert response.status_code == 200, "Incorrect response" + + reachid = list(set(catalog.load_table(f"ble_xs.{ble_hucid}").scan().to_pandas()['ds_reach_id']))[0] + response2 = client.get(f"/v1/ras_xs/{ble_hucid}/dsreachid={reachid}?xstype=ble") + assert response2.status_code == 200, "Incorrect response" + +def test_xs_subset_endpoint__422(client): + """Test: GET /v1/ras_xs/08020203?xstype=NA - fails validator""" + response = client.get("/v1/ras_xs/08020203?xstype=NA") + assert response.status_code == 422 + + response2 = client.get("/v1/ras_xs/08020203/dsreachid=NA?xstype=NA") + assert response2.status_code == 422 From e5d7099cd40dd7dfb4aad363a20761d78d8f9852 Mon Sep 17 00:00:00 2001 From: SylC-ray <201017958+SylC-ray@users.noreply.github.com> Date: Tue, 15 Jul 2025 15:36:38 -0400 Subject: [PATCH 92/97] Add files via upload --- tests/app/test_xs_router.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/app/test_xs_router.py b/tests/app/test_xs_router.py index c54013b..5f8070d 100644 --- a/tests/app/test_xs_router.py +++ b/tests/app/test_xs_router.py @@ -1,7 +1,7 @@ from pyiceberg.catalog import load_catalog def test_xs_endpoint(client): - """Test: GET /v1/ras_xs/{reach_ids}?xstype={xs_val} - all valid arguments""" + """Test: GET /v1/ras_xs/{mip_hucid or ble_hucid}/dsreachid={reach_id}?xstype={mip or ble} - all valid arguments""" catalog = load_catalog("glue", **{"type":"glue", "glue.region":"us-east-1"}) mip_hucid_list = [tup[1] for tup in catalog.list_tables("mip_xs")] From 8341cdeeb221c8f962d9f748c9abf9c987232f5d Mon Sep 17 00:00:00 2001 From: Quercus Hamlin Date: Tue, 15 Jul 2025 15:48:47 -0400 Subject: [PATCH 93/97] fix: albedo test version --- tests/app/test_topoflow_albedo_router.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/app/test_topoflow_albedo_router.py b/tests/app/test_topoflow_albedo_router.py index e4280f9..5836a9e 100644 --- a/tests/app/test_topoflow_albedo_router.py +++ b/tests/app/test_topoflow_albedo_router.py @@ -4,12 +4,12 @@ def test_albedo_endpoint(client): """Test: GET /v2/modules/topoflow/albedo - all valid arguments""" for landcover, albedo in AlbedoValues.__members__.items(): - response = client.get(f"/v2/modules/topoflow/albedo?landcover={landcover}") + response = client.get(f"/v1/modules/topoflow/albedo?landcover={landcover}") assert response.status_code == 200 assert response.text == str(albedo.value) def test_albedo_endpoint__422(client): """Test: GET /v2/modules/topoflow/albedo - fails validator""" - response = client.get("/v2/modules/topoflow/albedo?landcover=nope") + response = client.get("/v1/modules/topoflow/albedo?landcover=nope") assert response.status_code == 422 From 98eb7c6fac3545f3028426c8fa710582aec0561a Mon Sep 17 00:00:00 2001 From: Quercus Hamlin Date: Tue, 15 Jul 2025 15:53:01 -0400 Subject: [PATCH 94/97] pre-commit on xs work --- app/main.py | 2 +- app/routers/ras_xs/__init__.py | 1 - app/routers/ras_xs/router.py | 114 +++++++++++++++--------------- src/icefabric/__init__.py | 4 +- src/icefabric/ras_xs/__init__.py | 4 +- src/icefabric/ras_xs/subset.py | 34 ++++----- src/icefabric/schemas/__init__.py | 4 +- tests/app/test_xs_router.py | 17 ++--- 8 files changed, 87 insertions(+), 93 deletions(-) diff --git a/app/main.py b/app/main.py index e31f282..c512aee 100644 --- a/app/main.py +++ b/app/main.py @@ -10,8 +10,8 @@ from app.routers.hydrofabric.router import api_router as hydrofabric_api_router from app.routers.nwm_modules.router import sft_router, topoflow_router -from app.routers.streamflow_observations.router import api_router as streamflow_api_router from app.routers.ras_xs.router import api_router as ras_api_router +from app.routers.streamflow_observations.router import api_router as streamflow_api_router from icefabric.helpers import load_creds diff --git a/app/routers/ras_xs/__init__.py b/app/routers/ras_xs/__init__.py index 8b13789..e69de29 100644 --- a/app/routers/ras_xs/__init__.py +++ b/app/routers/ras_xs/__init__.py @@ -1 +0,0 @@ - diff --git a/app/routers/ras_xs/router.py b/app/routers/ras_xs/router.py index 6436b98..e2493fc 100644 --- a/app/routers/ras_xs/router.py +++ b/app/routers/ras_xs/router.py @@ -12,20 +12,18 @@ api_router = APIRouter(prefix="/ras_xs") + @api_router.get("/{identifier}/") -async def get_xs_subset_gpkg(identifier: str = Path(..., - description="HUC-8 identifier to filter by huc ID", - example="02040106"), - xstype: XsType = Query(XsType.MIP, - description="The iceberg namespace used to query the cross-sections" - ) +async def get_xs_subset_gpkg( + identifier: str = Path(..., description="HUC-8 identifier to filter by huc ID", example="02040106"), + xstype: XsType = Query(XsType.MIP, description="The iceberg namespace used to query the cross-sections"), ): """ Get geopackage subset from the mip xs iceberg catalog by table identifier (aka huc ID). This endpoint will query cross-sections from the mip xs iceberg catalog by huc & return the data subset as a downloadable geopackage file. - + """ catalog = load_catalog("glue") unique_id = str(uuid.uuid4())[:8] @@ -33,60 +31,57 @@ async def get_xs_subset_gpkg(identifier: str = Path(..., tmp_path = temp_dir / f"ras_xs_{identifier}_{unique_id}.gpkg" try: # Create data subset - data_gdf=subset_xs(catalog=catalog, - identifier=f"{identifier}", - output_file=tmp_path, - xstype=xstype) + data_gdf = subset_xs(catalog=catalog, identifier=f"{identifier}", output_file=tmp_path, xstype=xstype) if not tmp_path.exists(): - raise HTTPException(status_code=500, - detail=f"Failed to create geopackage file at {tmp_path}.") + raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}.") if tmp_path.stat().st_size == 0: tmp_path.unlink(missing_ok=True) - raise HTTPException(status_code=404, - detail=f"No data found for HUC {identifier}.") + raise HTTPException(status_code=404, detail=f"No data found for HUC {identifier}.") # Verify it's actually a file, not a directory if not tmp_path.is_file(): - raise HTTPException(status_code=500, - detail=f"Expected file, but got directory at {tmp_path}.") + raise HTTPException(status_code=500, detail=f"Expected file, but got directory at {tmp_path}.") print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") download_filename = f"ras_xs_huc{identifier}.gpkg" - return FileResponse(path=str(tmp_path), - filename=download_filename, - media_type="application/geopackage+sqlite3", - headers={"Data_Source": f"{xstype}_xs", - "HUC Identifier": identifier, - "Description": f"{xstype} RAS Cross-Section Geopackage", - "Total Records": f"{len(data_gdf)}"}, - background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True))) + return FileResponse( + path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={ + "Data_Source": f"{xstype}_xs", + "HUC Identifier": identifier, + "Description": f"{xstype} RAS Cross-Section Geopackage", + "Total Records": f"{len(data_gdf)}", + }, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True)), + ) except HTTPException: raise except Exception: - # Clean up temp file if it exists if "tmp_path" in locals() and tmp_path.exists(): tmp_path.unlink(missing_ok=True) raise + @api_router.get("/{identifier}/dsreachid={ds_reach_id}") -async def get_xs_subset_by_huc_reach_gpkg(identifier: str = Path(..., - description="Identifier to filter data by huc ID", - example="02040106"), - ds_reach_id: str = Path(..., - description="Identifier to filter data by downstream reach ID)", - example="4188251"), - xstype: XsType = Query(XsType.MIP, - description="The iceberg namespace used to query the cross-sections")): +async def get_xs_subset_by_huc_reach_gpkg( + identifier: str = Path(..., description="Identifier to filter data by huc ID", example="02040106"), + ds_reach_id: str = Path( + ..., description="Identifier to filter data by downstream reach ID)", example="4188251" + ), + xstype: XsType = Query(XsType.MIP, description="The iceberg namespace used to query the cross-sections"), +): """ Get geopackage subset from the mip xs iceberg catalog by reach ID at huc ID. - This endpoint will query cross-sections from the mip xs iceberg catalog by + This endpoint will query cross-sections from the mip xs iceberg catalog by downstream reach ID at given huc ID -- returning the data subset as a downloadable geopackage file. - + """ catalog = load_catalog("glue") unique_id = str(uuid.uuid4())[:8] @@ -94,43 +89,48 @@ async def get_xs_subset_by_huc_reach_gpkg(identifier: str = Path(..., tmp_path = temp_dir / f"ras_xs_{identifier}_{ds_reach_id}_{unique_id}.gpkg" try: # Create data subset - data_gdf = subset_xs(catalog=catalog, - identifier=f"{identifier}", - ds_reach_id=f"{ds_reach_id}", - output_file=tmp_path, - xstype=xstype) + data_gdf = subset_xs( + catalog=catalog, + identifier=f"{identifier}", + ds_reach_id=f"{ds_reach_id}", + output_file=tmp_path, + xstype=xstype, + ) if not tmp_path.exists(): - raise HTTPException(status_code=500, - detail=f"Failed to create geopackage file at {tmp_path}.") + raise HTTPException(status_code=500, detail=f"Failed to create geopackage file at {tmp_path}.") if tmp_path.stat().st_size == 0: tmp_path.unlink(missing_ok=True) - raise HTTPException(status_code=404, - detail=f"No data found for downstream reach id {ds_reach_id} @ HUC{identifier}.") + raise HTTPException( + status_code=404, + detail=f"No data found for downstream reach id {ds_reach_id} @ HUC{identifier}.", + ) # Verify it's actually a file, not a directory if not tmp_path.is_file(): - raise HTTPException(status_code=500, - detail=f"Expected file, but got directory at {tmp_path}.") + raise HTTPException(status_code=500, detail=f"Expected file, but got directory at {tmp_path}.") print(f"Returning file: {tmp_path} (size: {tmp_path.stat().st_size} bytes)") download_filename = f"ras_xs_huc{identifier}_dsreachid{ds_reach_id}.gpkg" - return FileResponse(path=str(tmp_path), - filename=download_filename, - media_type="application/geopackage+sqlite3", - headers={"Data_Source": f"{xstype}_xs", - "HUC Identifier": identifier, - "DS Reach Identifier": ds_reach_id, - "Description": f"{xstype} RAS Cross-Section Geopackage", - "Total Records": f"{len(data_gdf)}"}, - background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True))) + return FileResponse( + path=str(tmp_path), + filename=download_filename, + media_type="application/geopackage+sqlite3", + headers={ + "Data_Source": f"{xstype}_xs", + "HUC Identifier": identifier, + "DS Reach Identifier": ds_reach_id, + "Description": f"{xstype} RAS Cross-Section Geopackage", + "Total Records": f"{len(data_gdf)}", + }, + background=BackgroundTask(lambda: tmp_path.unlink(missing_ok=True)), + ) except HTTPException: raise except Exception: - # Clean up temp file if it exists if "tmp_path" in locals() and tmp_path.exists(): tmp_path.unlink(missing_ok=True) diff --git a/src/icefabric/__init__.py b/src/icefabric/__init__.py index ca70965..89919dc 100644 --- a/src/icefabric/__init__.py +++ b/src/icefabric/__init__.py @@ -1,6 +1,6 @@ """An Apache Iceberg + Icechunk implementation of Hydrofabric data services""" -from . import builds, cli, helpers, hydrofabric, modules, schemas, ui, ras_xs +from . import builds, cli, helpers, hydrofabric, modules, ras_xs, schemas, ui from ._version import __version__ -__all__ = ["__version__", "builds", "cli", "hydrofabric", "helpers", "modules", "schemas", "ui", "ras_xs"] +__all__ = ["__version__", "builds", "cli", "hydrofabric", "helpers", "modules", "schemas", "ui", "ras_xs"] diff --git a/src/icefabric/ras_xs/__init__.py b/src/icefabric/ras_xs/__init__.py index 81f0c62..1c20b1b 100644 --- a/src/icefabric/ras_xs/__init__.py +++ b/src/icefabric/ras_xs/__init__.py @@ -2,6 +2,4 @@ from .subset import subset_xs -__all__ = [ - "subset_xs" -] +__all__ = ["subset_xs"] diff --git a/src/icefabric/ras_xs/subset.py b/src/icefabric/ras_xs/subset.py index 87f72cc..6b918df 100644 --- a/src/icefabric/ras_xs/subset.py +++ b/src/icefabric/ras_xs/subset.py @@ -6,21 +6,19 @@ import pandas as pd from botocore.exceptions import ClientError from pyiceberg.catalog import Catalog -from pyiceberg.expressions import And, EqualTo -from pyiceberg.table import Table +from pyiceberg.expressions import EqualTo from icefabric.helpers.geopackage import to_geopandas from icefabric.schemas.ras_xs import XsType -def subset_xs(catalog: Catalog, - identifier: str, - output_file: Path | None = None, - xstype: XsType = XsType.MIP, - **kwarg) -> dict[str, pd.DataFrame | gpd.GeoDataFrame] | None: + +def subset_xs( + catalog: Catalog, identifier: str, output_file: Path | None = None, xstype: XsType = XsType.MIP, **kwarg +) -> dict[str, pd.DataFrame | gpd.GeoDataFrame] | None: """Returns a geopackage subset from the xs iceberg catalog. - This function delivers a subset of the cross-sections data by tracing from a - given HUC identifier & collecting all relevant cross-section information based on + This function delivers a subset of the cross-sections data by tracing from a + given HUC identifier & collecting all relevant cross-section information based on additional identifiers provided. Parameters @@ -33,14 +31,14 @@ def subset_xs(catalog: Catalog, The type of cross-section data to read (e.g. mip, ble). output_file : Path, optional The output file path where the geopackage will be saved. - + Returns ------- GeoDataFrame Subset of the mip cross-sections data based on identifiers. - + """ - ds_reach_id = kwarg.get('ds_reach_id', None) + ds_reach_id = kwarg.get("ds_reach_id", None) try: xs_table = catalog.load_table(f"{xstype.value}_xs.{identifier}") @@ -49,10 +47,10 @@ def subset_xs(catalog: Catalog, msg = "AWS Test account credentials expired. Can't access remote S3 endpoint" print(msg) raise e - - # By default, mip xs tables are filtered by huc + + # By default, mip xs tables are filtered by huc df = xs_table.scan().to_pandas() - + if ds_reach_id: filter_cond = EqualTo("ds_reach_id", ds_reach_id) df = xs_table.scan(row_filter=filter_cond).to_pandas() @@ -61,9 +59,7 @@ def subset_xs(catalog: Catalog, # Save data. if output_file: if len(data_gdf) > 0: - gpd.GeoDataFrame(data_gdf).to_file(output_file, - layer='ras_xs', - driver="GPKG") + gpd.GeoDataFrame(data_gdf).to_file(output_file, layer="ras_xs", driver="GPKG") else: - print(f"Warning: Dataframe is empty") + print("Warning: Dataframe is empty") return data_gdf diff --git a/src/icefabric/schemas/__init__.py b/src/icefabric/schemas/__init__.py index 2d2a0b4..684d816 100644 --- a/src/icefabric/schemas/__init__.py +++ b/src/icefabric/schemas/__init__.py @@ -2,8 +2,8 @@ from .hydrofabric import UPSTREAM_VPUS, HydrofabricDomains, IdType from .modules import SFT, Albedo, IceFractionScheme -from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations from .ras_xs import XsType +from .topobathy import FileType, NGWPCLocations, NGWPCTestLocations __all__ = [ "UPSTREAM_VPUS", @@ -15,5 +15,5 @@ "FileType", "NGWPCLocations", "NGWPCTestLocations", - "XsType" + "XsType", ] diff --git a/tests/app/test_xs_router.py b/tests/app/test_xs_router.py index 5f8070d..e0973e5 100644 --- a/tests/app/test_xs_router.py +++ b/tests/app/test_xs_router.py @@ -1,28 +1,29 @@ from pyiceberg.catalog import load_catalog + def test_xs_endpoint(client): """Test: GET /v1/ras_xs/{mip_hucid or ble_hucid}/dsreachid={reach_id}?xstype={mip or ble} - all valid arguments""" - catalog = load_catalog("glue", - **{"type":"glue", "glue.region":"us-east-1"}) + catalog = load_catalog("glue", **{"type": "glue", "glue.region": "us-east-1"}) mip_hucid_list = [tup[1] for tup in catalog.list_tables("mip_xs")] ble_hucid_list = [tup[1] for tup in catalog.list_tables("ble_xs")] for mip_hucid in mip_hucid_list[:5]: response = client.get(f"/v1/ras_xs/{mip_hucid}?xstype=mip") assert response.status_code == 200, "Incorrect response" - - reachid = list(set(catalog.load_table(f"mip_xs.{mip_hucid}").scan().to_pandas()['ds_reach_id']))[0] + + reachid = list(set(catalog.load_table(f"mip_xs.{mip_hucid}").scan().to_pandas()["ds_reach_id"]))[0] response2 = client.get(f"/v1/ras_xs/{mip_hucid}/dsreachid={reachid}?xstype=mip") assert response2.status_code == 200, "Incorrect response" - + for ble_hucid in ble_hucid_list[:5]: response = client.get(f"/v1/ras_xs/{ble_hucid}?xstype=ble") assert response.status_code == 200, "Incorrect response" - - reachid = list(set(catalog.load_table(f"ble_xs.{ble_hucid}").scan().to_pandas()['ds_reach_id']))[0] + + reachid = list(set(catalog.load_table(f"ble_xs.{ble_hucid}").scan().to_pandas()["ds_reach_id"]))[0] response2 = client.get(f"/v1/ras_xs/{ble_hucid}/dsreachid={reachid}?xstype=ble") assert response2.status_code == 200, "Incorrect response" - + + def test_xs_subset_endpoint__422(client): """Test: GET /v1/ras_xs/08020203?xstype=NA - fails validator""" response = client.get("/v1/ras_xs/08020203?xstype=NA") From 8ae57b0d159399343fd46afb947846c3e4581847 Mon Sep 17 00:00:00 2001 From: Quercus Hamlin Date: Tue, 15 Jul 2025 16:06:55 -0400 Subject: [PATCH 95/97] fix: openapi example --- app/routers/ras_xs/router.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/app/routers/ras_xs/router.py b/app/routers/ras_xs/router.py index e2493fc..d6318df 100644 --- a/app/routers/ras_xs/router.py +++ b/app/routers/ras_xs/router.py @@ -15,7 +15,12 @@ @api_router.get("/{identifier}/") async def get_xs_subset_gpkg( - identifier: str = Path(..., description="HUC-8 identifier to filter by huc ID", example="02040106"), + identifier: str = Path( + ..., + description="HUC-8 identifier to filter by huc ID", + examples=["02040106"], + openapi_examples={"huc": {"summary": "XS Example", "value": "02040106"}}, + ), xstype: XsType = Query(XsType.MIP, description="The iceberg namespace used to query the cross-sections"), ): """ @@ -70,9 +75,17 @@ async def get_xs_subset_gpkg( @api_router.get("/{identifier}/dsreachid={ds_reach_id}") async def get_xs_subset_by_huc_reach_gpkg( - identifier: str = Path(..., description="Identifier to filter data by huc ID", example="02040106"), + identifier: str = Path( + ..., + description="Identifier to filter data by huc ID", + examples=["02040106"], + openapi_examples={"xs": {"summary": "XS Example", "value": "02040106"}}, + ), ds_reach_id: str = Path( - ..., description="Identifier to filter data by downstream reach ID)", example="4188251" + ..., + description="Identifier to filter data by downstream reach ID)", + examples=["4188251"], + openapi_examples={"xs": {"summary": "XS Example", "value": "4188251"}}, ), xstype: XsType = Query(XsType.MIP, description="The iceberg namespace used to query the cross-sections"), ): From c0b24466ee970bc1a5e8c0b8faaca4503aea1182 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Tue, 15 Jul 2025 16:48:43 -0400 Subject: [PATCH 96/97] initial commit: adding SFT documentation to verify support (#63) --- docs/modules/index.md | 3 + docs/modules/sft.md | 191 ++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 3 + 3 files changed, 197 insertions(+) create mode 100644 docs/modules/index.md create mode 100644 docs/modules/sft.md diff --git a/docs/modules/index.md b/docs/modules/index.md new file mode 100644 index 0000000..0651976 --- /dev/null +++ b/docs/modules/index.md @@ -0,0 +1,3 @@ +# Modules + +The following pages are to document the support from the EDFS team towards creating configuration files for NWM Modules. diff --git a/docs/modules/sft.md b/docs/modules/sft.md new file mode 100644 index 0000000..519c203 --- /dev/null +++ b/docs/modules/sft.md @@ -0,0 +1,191 @@ +# SFT (Soil Freeze-Thaw) Module Documentation + +## Overview + +The SFT (Soil Freeze-Thaw) module simulates the freeze-thaw processes in soil columns and is used in cold regions where freeze-thaw cycles significantly affect water movement and storage. + +## Parameter Reference + +### Core Parameters + +| Parameter | Description | Units | Data Type | Default | Calibratable | +|-----------|-------------|--------|-----------|---------|--------------| +| `end_time` | Simulation duration. If no unit is specified, defaults to hour | s, sec, h, hr, d, day | double | `1.[d]` | FALSE | +| `dt` | Size of a simulation timestep. If no unit is specified, defaults to hour | s, sec, h, hr, d, day | double | `1.0[h]` | FALSE | +| `verbosity` | Logging verbosity level | - | string | `none` | FALSE | + +**Options for verbosity:** `high`, `low`, `none` + +### Soil Physical Properties + +These properties are based on Hydrofabric divide attributes provided in the latest enterprise version. + +| Parameter | Description | Units | Data Type | Default | Calibratable | +|-----------|-------------|--------|-----------|---------|--------------| +| `soil_params.smcmax` | Maximum soil moisture content | - | double | - | TRUE | +| `soil_params.b` | Soil moisture retention curve parameter (bexp) | - | double | - | TRUE | +| `soil_params.satpsi` | Saturated soil suction (psisat) | - | double | - | TRUE | +| `soil_params.quartz` | Soil quartz content, used in soil thermal conductivity function of Peters-Lidard | - | double | `1.0` | FALSE | + +### Domain Configuration + +| Parameter | Description | Units | Data Type | Default | Calibratable | +|-----------|-------------|--------|-----------|---------|--------------| +| `soil_z` | Vertical resolution of the soil column (computational domain of the SFT model) | m | array[double] | `[0.1, 0.3, 1.0, 2.0]` | FALSE | +| `soil_temperature` | Initial soil temperature for the discretized column | K | array[double] | - | FALSE | + +**Ice Fraction Scheme Options:** + +The following ice fraction schemes are dictated by what version of CFE is used + +- `Schaake`: Traditional Schaake ice fraction calculation +- `Xinanjiang`: Xinanjiang ice fraction calculation method (default) + +## Data Structures + +### SFT Configuration Model + +The SFT module uses a Pydantic model to validate and structure configuration parameters: + +```python +class SFT(BaseModel): + catchment: str # Catchment identifier + verbosity: str = "none" # Logging level + soil_moisture_bmi: int = 1 # BMI soil moisture flag + end_time: str = "1.[d]" # Simulation duration + dt: str = "1.0[h]" # Time step + soil_params_smcmax: float # Maximum soil moisture + soil_params_b: float # Soil retention parameter + soil_params_satpsi: float # Saturated soil suction + soil_params_quartz: float = 1.0 # Quartz content + ice_fraction_scheme: IceFractionScheme # Ice fraction method + soil_z: list[float] = [0.1, 0.3, 1.0, 2.0] # Soil layer depths + soil_temperature: list[float] # Initial temperatures +``` + +### Ice Fraction Schemes + +```python +class IceFractionScheme(str, enum.Enum): + SCHAAKE = "Schaake" + XINANJIANG = "Xinanjiang" +``` + +## Usage + +### Command Line Interface + +The SFT config text files can be created using the `icefabric` CLI tool: + +```bash +icefabric params \ + --gauge "01010000" \ + --module "sft" \ + --domain "conus" \ + --catalog "glue" \ + --ice-fraction "xinanjiang" \ + --output "./output" +``` + +**CLI Parameters:** +- `--gauge`: Gauge ID to trace upstream catchments from +- `--module`: Module type (use "sft" for Soil Freeze-Thaw) +- `--domain`: Hydrofabric domain (`conus`, `alaska`, etc.) +- `--catalog`: PyIceberg Catalog type (`glue` or `sql`) +- `--ice-fraction`: Ice fraction scheme (`schaake` or `xinanjiang`) +- `--output`: Output directory for configuration files + +### REST API + +The SFT module is also accessible via REST API: + +```http +GET /modules/sft/?identifier=01010000&domain=conus&use_schaake=false +``` + +**API Parameters:** +- `identifier` (required): Gauge ID to trace upstream from +- `domain` (optional): Geographic domain (default: `conus`) +- `use_schaake` (optional): Use Schaake ice fraction scheme (default: `false`) + +**Response:** Returns a list of SFT configuration objects, one for each upstream catchment. + +### Python API + +Direct Python usage: + +```python +from icefabric.modules import get_sft_parameters +from icefabric.schemas.hydrofabric import HydrofabricDomains +from pyiceberg.catalog import load_catalog + +# Load catalog +catalog = load_catalog("glue") + +# Get SFT parameters +configs = get_sft_parameters( + catalog=catalog, + domain=HydrofabricDomains.CONUS, + identifier="01010000", + use_schaake=False +) + +# Each config is an SFT pydantic model +for config in configs: + print(f"Catchment: {config.catchment}") + print(f"Soil layers: {config.soil_z}") + print(f"Initial temperatures: {config.soil_temperature}") +``` + +## Parameter Estimation + +The system automatically estimates initial parameters from hydrofabric data: + +### Soil Parameters +- **smcmax**: Calculated as mean across available soil moisture maximum values +- **b (bexp)**: Derived from mode of soil moisture retention curve parameters +- **satpsi**: Calculated as geometric mean of saturated soil suction values +- **quartz**: Default value of 1.0 (assuming high quartz content) + +### Temperature Initialization +- **soil_temperature**: Currently set to a uniform 45°F (280.37K) across all layers +- This represents a reasonable estimate for mean soil temperature + +### Spatial Resolution +- **soil_z**: Default 4-layer discretization [0.1, 0.3, 1.0, 2.0] meters +- Provides adequate resolution for freeze-thaw processes + +## Output Files + +The CLI and API generate BMI-compatible configuration files: + +``` +{catchment_id}_bmi_config_sft.txt +``` + +Example file content: +``` +verbosity=none +soil_moisture_bmi=1 +end_time=1.[d] +dt=1.0[h] +soil_params.smcmax=0.434 +soil_params.b=4.05 +soil_params.satpsi=0.0355 +soil_params.quartz=1.0 +ice_fraction_scheme=Xinanjiang +soil_z=0.1,0.3,1.0,2.0[m] +soil_temperature=280.37,280.37,280.37,280.37[K] +``` + +## Notes and Limitations + +1. **Temperature Initialization**: Current implementation uses uniform 45°F across all soil layers. Future versions should implement depth-dependent temperature profiles. + +2. **Parameter Weighting**: Soil parameters are currently averaged with equal weighting rather than weighted averaging based on layer thickness. + +3. **Quartz Support**: The `soil_params.quartz` was removed in v2.2 of the Hydrofabric and is defaulted to 1.0 + +4. **Spatial Coverage**: Parameter estimation depends on available hydrofabric data coverage for the specified domain. + +5. **Temporal Considerations**: Initial parameters represent steady-state estimates. Actual model runs may require spin-up periods for equilibration. diff --git a/mkdocs.yml b/mkdocs.yml index 3f721b1..8b40384 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -53,3 +53,6 @@ nav: - API: user_guide/icefabric_api.md - Tools: user_guide/icefabric_tools.md - Terraform S3 Glue Endpoint: user_guide/terraform.md + - Module Support: + - modules/index.md + - SFT: modules/sft.md From fa11864a6a46c205b2bc900040d55c6bac67b377 Mon Sep 17 00:00:00 2001 From: Tadd Bindas Date: Fri, 18 Jul 2025 16:34:26 -0400 Subject: [PATCH 97/97] AC Patch: subcase 4-5 (#62) * initial commit * docs: added more docs in the pyiceberg time travel code * feat: added new notebook example to demonstrate a locally created icechunk repo with virtual references * patch: added more docs, and example verbiage for PI-4 UAT * patch: updated timeout settings * patch: removed /tmp/sft_output/test dir --- .pre-commit-config.yaml | 1 + docs/description.md | 98 +++ docs/img/icefabric_version.png | Bin 0 -> 223813 bytes docs/user_guide/index.md | 18 - docs/user_guide/terraform.md | 4 +- .../iceberg_version_control_examples.ipynb | 484 ++++++++++++ examples/iceberg/pyiceberg_time_travel.ipynb | 268 ++++++- .../icechunk/icechunk_data_ret_and_plot.ipynb | 164 ---- examples/icechunk/icechunk_to_tiff.ipynb | 705 ------------------ .../icechunk_version_control_examples.ipynb | 321 +++++--- .../initial_parameters/soil_freeze_thaw.ipynb | 20 +- mkdocs.yml | 8 + pyproject.toml | 4 +- src/icefabric/builds/icechunk_s3_module.py | 20 + src/icefabric/helpers/__init__.py | 4 + .../helpers/arch_weather_file_utils.py | 11 +- src/icefabric/schemas/topobathy.py | 2 +- tools/icechunk/build_landcover_stores.py | 92 +++ 18 files changed, 1198 insertions(+), 1026 deletions(-) create mode 100644 docs/description.md create mode 100644 docs/img/icefabric_version.png create mode 100644 examples/iceberg/iceberg_version_control_examples.ipynb delete mode 100644 examples/icechunk/icechunk_data_ret_and_plot.ipynb delete mode 100644 examples/icechunk/icechunk_to_tiff.ipynb create mode 100644 tools/icechunk/build_landcover_stores.py diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 7268e63..4dbe867 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -7,6 +7,7 @@ repos: - id: end-of-file-fixer exclude: LICENSE|\.csv$ - id: check-yaml + exclude: mkdocs.yml$ - id: debug-statements - repo: https://github.com/astral-sh/ruff-pre-commit diff --git a/docs/description.md b/docs/description.md new file mode 100644 index 0000000..dcab003 --- /dev/null +++ b/docs/description.md @@ -0,0 +1,98 @@ +# Icefabric: Lakehouse Architecture for Hydrologic Data Management + +
    + ![Icefabric version controlling system](img/icefabric_version.png){ width="600" } +
    The icefabric lake house architecture. Data is moved from sources to an underlying specificed format (iceberg/icechunk) and queried to consumers via APIs and services.
    +
    + + +## Overview + +Icefabric implements a modern **lakehouse architecture** to combine the flexibility of data lakes with the performance and governance of data warehouse. This system provides versioned, centralized access to hydrologic datasets to support the National Water Model. + +## The Problem: Hydrologic Data Complexity + +### Traditional Challenges + +Hydrologic research and operations face unique data management challenges: + +- **Heterogeneous Data Sources**: Datasets are sourced from different agencies in various formats +- **Multiple Formats**: Tabular, vectorized, COGs, etc +- **Version Control Needs**: Hydrofabric topology updates, data quality improvements, and research reproducibility + +### Why Traditional Solutions Fall Short + +**Traditional database systems** struggle with: + +- Large geospatial datasets and complex geometries +- Schema evolution for evolving datasets +- Version control for scientific workflows + +**File-based approaches** suffer from: + +- Data duplication and storage inefficiencies +- Lack of ACID transactions +- Manual version management +- Limited discovery and access controls + +## Lakehouse Architecture Solution + +### Technology Stack Rationale + +=== "Apache Iceberg - Structured Data" + + **Used For:** + - Hydrofabric geospatial products + - Streamflow observations time series (USGS, Local Agencies) + - Cross-section geometries (RAS XS [MIP/BLE]) + + **Why Iceberg:** + - **ACID Transactions**: Ensure data consistency during hydrofabric updates + - **Schema Evolution**: Handle network topology changes without breaking existing workflows + - **Time Travel**: Access historical network versions for model comparisons + - **Performance**: Optimized queries across continental-scale datasets + - **Partition Pruning**: Efficient spatial and temporal filtering + +=== "Icechunk - Array Data" + + **Used For:** + - Topobathy elevation surfaces + - Land cover classifications + + **Why Icechunk:** + - **Virtual References**: Avoid duplicating large elevation datasets + - **Zarr Compatibility**: Seamless integration with scientific Python ecosystem + - **Git-like Versioning**: Branch/merge workflows for experimental processing + - **Chunked Storage**: Optimized for geospatial access patterns + - **Compression**: Efficient storage of repetitive classification data + +## Benefits Realized + +### For Hydrologic Research + +- **Reproducible Science**: Exact data versions enable repeatable research +- **Collaborative Workflows**: Branching enables parallel research without conflicts +- **Quality Evolution**: Track data quality improvements over time + +### For Operational Forecasting + +- **Consistent Baselines**: Stable data versions for operational model runs +- **Real-time Integration**: Fast access to latest observations and forecasts +- **Rollback Capabilities**: Quick recovery from data quality issues + +### For Data Management + +- **Access Unification**: Single API for diverse hydrologic data types +- **Version Management**: Automated tracking eliminates manual version confusion +- **Quality Assurance**: Built-in validation prevents bad data propagation + +## Conclusion + +The Icefabric lakehouse architecture addresses fundamental challenges in hydrologic data management through: + +1. **Unified Access**: Single interface for diverse water data sources +3. **Version Control**: Git-like workflows for scientific data management +4. **Quality Assurance**: Automated validation and lineage tracking +6. **Research Support**: Reproducible environments for collaborative science + +This architecture enables EDFS to provide reliable, versioned, high-performance access to critical water resources data supporting both operational forecasting and cutting-edge research. diff --git a/docs/img/icefabric_version.png b/docs/img/icefabric_version.png new file mode 100644 index 0000000000000000000000000000000000000000..2762cc41af40b3e0a793c72af1d5a65bd7302984 GIT binary patch literal 223813 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

    \n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
    <xarray.Dataset> Size: 3GB\n",
    -       "Dimensions:      (band: 1, y: 14819, x: 22226)\n",
    -       "Coordinates:\n",
    -       "  * band         (band) int64 8B 1\n",
    -       "    spatial_ref  int64 8B 0\n",
    -       "  * y            (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n",
    -       "  * x            (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n",
    -       "Data variables:\n",
    -       "    elevation    (band, y, x) float64 3GB dask.array<chunksize=(1, 464, 1390), meta=np.ndarray>
    " - ], - "text/plain": [ - " Size: 3GB\n", - "Dimensions: (band: 1, y: 14819, x: 22226)\n", - "Coordinates:\n", - " * band (band) int64 8B 1\n", - " spatial_ref int64 8B 0\n", - " * y (y) float64 119kB 22.5 22.5 22.5 22.5 ... 18.5 18.5 18.5 18.5\n", - " * x (x) float64 178kB -160.5 -160.5 -160.5 ... -154.5 -154.5 -154.5\n", - "Data variables:\n", - " elevation (band, y, x) float64 3GB dask.array" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "repo = IcechunkRepo(location=NGWPCLocations.TOPO_HA_30M_IC.path)\n", - "ds = repo.retrieve_dataset()\n", - "ds" - ] - }, - { - "cell_type": "markdown", - "id": "9e3dceab", - "metadata": {}, - "source": [ - "Save the full dataset to tiff." - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "9e2935a8", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved dataset to ./hawaii_topo_30.tif\n" - ] - } - ], - "source": [ - "var_name = \"elevation\"\n", - "dest = \"./hawaii_topo_30.tif\"\n", - "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name)" - ] - }, - { - "cell_type": "markdown", - "id": "3ea00144", - "metadata": {}, - "source": [ - "Save a clipped bounding box of dataset." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "5493c79b", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Saved clipped window to ./hawaii_clipped_topo_30.tif\n" - ] - } - ], - "source": [ - "var_name = \"elevation\"\n", - "dest = \"./hawaii_clipped_topo_30.tif\"\n", - "minx, miny, maxx, maxy = -159, 21, -158, 22\n", - "repo.retrieve_and_convert_to_tif(dest=dest, var_name=var_name, minx=minx, miny=miny, maxx=maxx, maxy=maxy)" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "icefabric", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.9" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/icechunk/icechunk_version_control_examples.ipynb b/examples/icechunk/icechunk_version_control_examples.ipynb index 6e2e8c0..ca0c834 100644 --- a/examples/icechunk/icechunk_version_control_examples.ipynb +++ b/examples/icechunk/icechunk_version_control_examples.ipynb @@ -5,10 +5,47 @@ "id": "0", "metadata": {}, "source": [ - "## Icechunk Version Control and Branching\n", - "Showcase for adding new data over time to an icechunk store, \"time traveling\", and making new branches\n", + "## Icechunk Version Control for Land Cover Data\n", "\n", - "Requires `.env` with `data` account credentials" + "### Overview\n", + "\n", + "This notebook demonstrates **version control capabilities for geospatial raster data** using Icechunk, a new cloud-native storage format. We'll showcase how slowly-changing time-varying raster data (specifically NLCD land cover data) can be managed with full version control, enabling reproducible research and data lineage tracking.\n", + "\n", + "#### What is Icechunk?\n", + "\n", + "**Icechunk** is a cloud-native storage format that brings **Git-like version control** to large scientific datasets. Icechunk is very similar to Iceberg, but for data-cube/tensor data. Unlike traditional file systems where data changes overwrite previous versions, Icechunk:\n", + "\n", + "- **Creates snapshots** of your data at each change\n", + "- **Enables time travel** to access any previous version\n", + "- **Supports branching and merging** for collaborative workflows\n", + "- **Tracks data lineage** with commit messages and metadata\n", + "- **Uses virtual references** to avoid data duplication. This means existing .nc or COGs can be referenced without rewriting the data\n", + "\n", + "### Dataset: National Land Cover Database (NLCD)\n", + "\n", + "#### Source: https://www.mrlc.gov/data\n", + "\n", + "The NLCD provides land cover classifications for the Continental United States (CONUS)\n", + "\n", + "#### Land Cover Classes\n", + "\n", + "The NLCD uses standardized codes for different land cover types:\n", + "- **11**: Open Water\n", + "- **12**: Perennial Ice/Snow\n", + "- **21**: Developed, Open Space\n", + "- **22**: Developed, Low Intensity\n", + "- **23**: Developed, Medium Intensity\n", + "- **24**: Developed, High Intensity\n", + "- **31**: Barren Land (Rock/Sand/Clay)\n", + "- **41**: Decidous Forest\n", + "- **42**: Evergreen Forest\n", + "- **43**: Mixed Forest\n", + "- **52**: Shrub/Scrub\n", + "- **71**: Grassland/Herbaceous\n", + "- **81**: Pasture/Hay\n", + "- **82**: Cultivated Crops\n", + "- **90**: Woody Wetlands\n", + "- **95**: Emergent Herbaceous Wetlands" ] }, { @@ -18,31 +55,60 @@ "metadata": {}, "outputs": [], "source": [ + "import os\n", + "import warnings\n", "from pathlib import Path\n", "\n", - "from icefabric.helpers import load_creds\n", + "import icechunk as ic\n", + "import matplotlib.pyplot as plt\n", + "import xarray as xr\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric.helpers import load_creds, load_pyiceberg_config\n", + "\n", + "warnings.filterwarnings(\"ignore\")\n", + "\n", + "# Changes the current working dir to be the project root\n", + "current_working_dir = Path.cwd()\n", + "os.chdir(Path.cwd() / \"../../\")\n", + "print(\n", + " f\"Changed current working dir from {current_working_dir} to: {Path.cwd()}. This must run at the project root\"\n", + ")\n", "\n", "# dir is where the .env file is located\n", - "load_creds(dir=Path.cwd().parents[1])" + "load_creds(dir=Path.cwd())\n", + "\n", + "# Loading the local pyiceberg config settings\n", + "pyiceberg_config = load_pyiceberg_config(Path.cwd())\n", + "catalog = load_catalog(\n", + " name=\"sql\",\n", + " type=pyiceberg_config[\"catalog\"][\"sql\"][\"type\"],\n", + " uri=pyiceberg_config[\"catalog\"][\"sql\"][\"uri\"],\n", + " warehouse=pyiceberg_config[\"catalog\"][\"sql\"][\"warehouse\"],\n", + ")" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "2", "metadata": {}, - "outputs": [], "source": [ - "import warnings\n", + "### Opening the Icechunk Repository\n", "\n", - "from icefabric.builds import IcechunkRepo, S3Path\n", - "from icefabric.helpers import virtualize_and_concat_archival_files_on_time\n", - "from icefabric.schemas import FileType, NGWPCLocations\n", + "Unlike traditional file formats (GeoTIFF, NetCDF), Icechunk stores data in a **repository structure** similar to Git. Each repository contains:\n", "\n", - "warnings.filterwarnings(\"ignore\")\n", + "- **Snapshots**: Immutable versions of your data\n", + "- **Branches**: Parallel development lines (like Git branches)\n", + "- **Virtual references**: Pointers to external data files (avoiding duplication)\n", + "- **Metadata**: Rich attribution and processing history\n", "\n", - "new_repo_s3_path = S3Path(bucket=\"hydrofabric-data\", prefix=\"ic_testing/snodas_yearly_append_test\")\n", - "new_repo = IcechunkRepo(location=new_repo_s3_path)" + "#### Virtual Chunk Architecture\n", + "\n", + "Our NLCD data uses **virtual references** - instead of copying large GeoTIFF files into Icechunk, we store lightweight references pointing to the original files. This provides:\n", + "\n", + "- **Fast ingestion** (no data copying)\n", + "- **Storage efficiency** (references vs. full copies) \n", + "- **Source preservation** (original files remain unchanged)" ] }, { @@ -52,29 +118,32 @@ "metadata": {}, "outputs": [], "source": [ - "# Print repo ancestry\n", - "new_repo.print_history()" + "# NOTE This demonstration/example assumes the data/land_cover icechunk has been made locally to the store path, and the TIFs are in the correct location in the data path\n", + "file_location = Path(\"data/land_cover_tifs\").resolve()\n", + "store_path = Path(\"data/land_cover\").resolve()\n", + "\n", + "storage = ic.local_filesystem_storage(str(store_path))\n", + "repo = ic.Repository.open(\n", + " storage=storage,\n", + " authorize_virtual_chunk_access=ic.containers_credentials({f\"file://{file_location}\": None}),\n", + ")" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "4", "metadata": {}, - "outputs": [], "source": [ - "# Collect first five SNODAS netcdf files from 2009 and combine/virtualize them together into a single dataset\n", - "snodas_09_vds = virtualize_and_concat_archival_files_on_time(\n", - " location=NGWPCLocations.SNODAS_REF.path,\n", - " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=FileType.NETCDF,\n", - " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2009*.nc\",\n", - " loadable_vars=[\"crs\"],\n", - " testing_file_quantity=5,\n", - ")\n", + "### Repository History: Data Lineage Tracking\n", "\n", - "# Add 09 data to SNODAS repo with a new snapshot\n", - "new_repo.write_dataset(ds=snodas_09_vds, virtualized=True, commit=\"First commit! 09 data added.\")" + "One of Icechunk's key features is **automatic lineage tracking**. Every change to the dataset creates a new snapshot with:\n", + "\n", + "- **Unique identifier** (snapshot ID)\n", + "- **Timestamp** of the change\n", + "- **Commit message** describing what changed\n", + "- **Parent relationships** showing data evolution\n", + "\n", + "This provides complete **audit trails** for scientific reproducibility.\n" ] }, { @@ -84,20 +153,21 @@ "metadata": {}, "outputs": [], "source": [ - "# Now that we have a new snapshot, reprint the repo ancestry\n", - "new_repo.print_history()" + "# Print repo ancestry\n", + "for ancestor in repo.ancestry(branch=\"main\"):\n", + " print(f\"Snapshot ID:\\t{ancestor.id}\")\n", + " print(f\"Timestamp:\\t{ancestor.written_at}\")\n", + " print(f\"Message:\\t{ancestor.message}\\n\")" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "6", "metadata": {}, - "outputs": [], "source": [ - "# Print the data now contained within the SNODAS repo\n", - "snodas_data = new_repo.retrieve_dataset()\n", - "print(snodas_data)" + "### Accessing Current Data\n", + "\n", + "The data appears as a standard Xarray Dataset, but with version control underneath." ] }, { @@ -107,20 +177,9 @@ "metadata": {}, "outputs": [], "source": [ - "# Much like the 09 SNODAS files were collected, do the same for 2010\n", - "snodas_10_vds = virtualize_and_concat_archival_files_on_time(\n", - " location=NGWPCLocations.SNODAS_REF.path,\n", - " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=FileType.NETCDF,\n", - " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2010*.nc\",\n", - " loadable_vars=[\"crs\"],\n", - " testing_file_quantity=5,\n", - ")\n", - "\n", - "# Append 2010 data to SNODAS repo with a new snapshot\n", - "new_repo.append_virt_data_to_store(\n", - " vds=snodas_10_vds, append_dim=\"time\", commit=\"Appended new data from the year 2010\"\n", - ")" + "session = repo.readonly_session(branch=\"main\")\n", + "ds = xr.open_zarr(session.store, consolidated=False)\n", + "ds" ] }, { @@ -130,20 +189,36 @@ "metadata": {}, "outputs": [], "source": [ - "# Now that we have another new snapshot with 2010 data, reprint the repo ancestry\n", - "new_repo.print_history()" + "# Set up plot for 1990 land cover\n", + "ds[\"5\"].sel(year=1990).plot(x=\"X5\", y=\"Y5\")\n", + "\n", + "# Invert the y-axis to show the CONUS region correctly\n", + "plt.gca().invert_yaxis()\n", + "\n", + "# Add labels and show the plot\n", + "plt.xlabel(\"LON\")\n", + "plt.ylabel(\"LAT\")\n", + "plt.title(\"1990 CONUS Land Cover\")\n", + "plt.show()" ] }, { - "cell_type": "code", - "execution_count": null, + "cell_type": "markdown", "id": "9", "metadata": {}, - "outputs": [], "source": [ - "# Print the new repo collection with both 2009 and 2010 data\n", - "snodas_data = new_repo.retrieve_dataset()\n", - "print(snodas_data)" + "### Demonstrating Version Control: Adding Metadata\n", + "\n", + "Now we'll demonstrate Icechunk's version control by **adding metadata** to our dataset\n", + "\n", + "#### The Version Control Process\n", + "\n", + "1. **Create a writable session** (like checking out code for editing)\n", + "2. **Modify the dataset** (add/update attributes, data, etc.)\n", + "3. **Commit changes** with descriptive message\n", + "4. **New snapshot created** automatically\n", + "\n", + "**Important**: The original data remains **completely unchanged** and accessible.\n" ] }, { @@ -153,9 +228,10 @@ "metadata": {}, "outputs": [], "source": [ - "# Retrieve and print the data from the previous snapshot, before 2010 data was added\n", - "prev_snap_snodas_data = new_repo.retrieve_prev_snapshot()\n", - "print(prev_snap_snodas_data)" + "session = repo.writable_session(\"main\")\n", + "ds.attrs[\"sample_attr\"] = \"sample_attr\"\n", + "ds2 = ds.copy()\n", + "ds2" ] }, { @@ -165,23 +241,7 @@ "metadata": {}, "outputs": [], "source": [ - "# Make a new feature branch based on \"main\" to add 2011 data\n", - "new_repo.create_new_branch(name=\"2011_feature\")\n", - "\n", - "# Much like the 09 SNODAS files were collected, do the same for 2010\n", - "snodas_11_vds = virtualize_and_concat_archival_files_on_time(\n", - " location=NGWPCLocations.SNODAS_REF.path,\n", - " file_date_pattern=\"zz_ssmv11034tS__T0001TTNATS*05HP001.nc\",\n", - " file_type=FileType.NETCDF,\n", - " manual_file_pattern=\"zz_ssmv11034tS__T0001TTNATS2011*.nc\",\n", - " loadable_vars=[\"crs\"],\n", - " testing_file_quantity=5,\n", - ")\n", - "\n", - "# Append 2011 data to SNODAS repo's new branch with a new snapshot\n", - "new_repo.append_virt_data_to_store(\n", - " vds=snodas_11_vds, append_dim=\"time\", commit=\"Appended new data from the year 2011\", branch=\"2011_feature\"\n", - ")" + "session.store.sync_clear() # Clears the store, but preserves snapshots and references to the data" ] }, { @@ -191,47 +251,110 @@ "metadata": {}, "outputs": [], "source": [ - "# Now that we have a new branch with new 2011 data, print the history of both branches\n", - "print(\"NEW BRANCH =====================================\")\n", - "new_repo.print_history(branch=\"2011_feature\")\n", - "print(\"MAIN BRANCH ====================================\")\n", - "new_repo.print_history(branch=\"main\")" + "# NOTE This may take 8-10 minutes\n", + "ds2.virtualize.to_icechunk(session.store)\n", + "print(session.commit(\"Added a sample attribute\"))" + ] + }, + { + "cell_type": "markdown", + "id": "13", + "metadata": {}, + "source": [ + "### Verifying Version History\n", + "\n", + "Let's examine the repository history again. Notice how we now have **two snapshots**:\n", + "\n", + "1. **Original dataset** (initial commit)\n", + "2. **Dataset with metadata** (our recent addition)\n", + "\n", + "This demonstrates **non-destructive updates** - both versions coexist and remain accessible." ] }, { "cell_type": "code", "execution_count": null, - "id": "13", + "id": "14", "metadata": {}, "outputs": [], "source": [ - "# Print both branch's datasets - notice the new one has 2011 data\n", - "snodas_data_feat_branch = new_repo.retrieve_dataset(branch=\"2011_feature\")\n", - "print(\"NEW BRANCH ========================================================\")\n", - "print(snodas_data_feat_branch)\n", - "print(\"===================================================================\")\n", - "print(\"MAIN BRANCH =======================================================\")\n", - "print(snodas_data)\n", - "print(\"===================================================================\")" + "# Print repo ancestry\n", + "for ancestor in repo.ancestry(branch=\"main\"):\n", + " print(f\"Snapshot ID:\\t{ancestor.id}\")\n", + " print(f\"Timestamp:\\t{ancestor.written_at}\")\n", + " print(f\"Message:\\t{ancestor.message}\\n\")" + ] + }, + { + "cell_type": "markdown", + "id": "15", + "metadata": {}, + "source": [ + "### Time Travel: Accessing Previous Versions\n", + "\n", + "One of Icechunk's most powerful features is **time travel** - the ability to access any previous version of your data using its snapshot ID.\n", + "\n", + "#### Use Cases for Time Travel:\n", + "\n", + "- **Reproducing analyses** from specific points in time\n", + "- **Debugging** when something goes wrong\n", + "- **Comparing versions** to understand changes\n", + "- **Rolling back** to previous states\n", + "- **Auditing** data processing workflows\n", + "\n", + "Below, we access the **original version** (before we added metadata):\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "14", + "id": "16", "metadata": {}, "outputs": [], "source": [ - "# Cleanup - delete the test repo entirely\n", - "new_repo.delete_repo(quiet=True)" + "snapshot_id = list(repo.ancestry(branch=\"main\"))[1].id\n", + "print(f\"Snapshot ID:\\t{snapshot_id}\")\n", + "\n", + "session = repo.readonly_session(snapshot_id=snapshot_id)\n", + "_ds = xr.open_zarr(session.store, consolidated=False)\n", + "_ds" + ] + }, + { + "cell_type": "markdown", + "id": "17", + "metadata": {}, + "source": [ + "Notice how the **original version lacks the `sample_attr`** we added. This proves that the data is versioned and preserved" ] }, { "cell_type": "code", "execution_count": null, - "id": "15", + "id": "18", "metadata": {}, "outputs": [], + "source": [ + "snapshot_id = list(repo.ancestry(branch=\"main\"))[0].id # Latest\n", + "print(f\"Snapshot ID:\\t{snapshot_id}\")\n", + "\n", + "session = repo.readonly_session(snapshot_id=snapshot_id)\n", + "latest_ds = xr.open_zarr(session.store, consolidated=False)\n", + "latest_ds" + ] + }, + { + "cell_type": "markdown", + "id": "19", + "metadata": {}, + "source": [ + "This demonstrates how Icechunk enables robust version control for geospatial data, meeting enterprise requirements for data governance, reproducibility, and collaborative research workflows (FAIR)" + ] + }, + { + "cell_type": "markdown", + "id": "20", + "metadata": {}, "source": [] } ], diff --git a/examples/initial_parameters/soil_freeze_thaw.ipynb b/examples/initial_parameters/soil_freeze_thaw.ipynb index b027b34..ac59a1f 100644 --- a/examples/initial_parameters/soil_freeze_thaw.ipynb +++ b/examples/initial_parameters/soil_freeze_thaw.ipynb @@ -81,7 +81,7 @@ " \"domain\": \"conus_hf\", # The CONUS domain\n", " \"use_schaake\": \"false\", # Specifying we're not using Schaake for the ice fraction setting\n", " },\n", - " timeout=30.0, # GLUE API requests can be slow depending on the network speed. Adding a 30s timeout to ensure requests go through\n", + " timeout=60.0, # GLUE API requests can be slow depending on the network speed. Adding a 30s timeout to ensure requests go through\n", ")\n", "\n", "print(f\"Status code: {response.status_code}\")\n", @@ -171,8 +171,24 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Through either the API, or CLI, any modeler can create a BMI Config file for SFT that is compatible with NextGen" + "Through either the API, or CLI, any modeler can create a BMI Config file for SFT that is compatible with NextGen. Now, let's clean up the `/tmp/` dir" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!rm -rf /tmp/sft_output_test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/mkdocs.yml b/mkdocs.yml index 8b40384..1037c57 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -32,6 +32,13 @@ markdown_extensions: generic: true - pymdownx.highlight: anchor_linenums: true + - pymdownx.superfences: + custom_fences: + - name: mermaid + class: mermaid + format: !!python/name:pymdownx.superfences.fence_code_format + - pymdownx.tabbed: + alternate_style: true - pymdownx.inlinehilite - pymdownx.snippets - admonition @@ -48,6 +55,7 @@ plugins: nav: - Home: - index.md + - Description: description.md - User Guide: - user_guide/index.md - API: user_guide/icefabric_api.md diff --git a/pyproject.toml b/pyproject.toml index 2b61ede..c4f6729 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -42,7 +42,7 @@ dependencies = [ "geopandas==1.0.1", "h5netcdf==1.6.1", "h5py==3.13.0", - "icechunk==0.2.18", + "icechunk==1.0.0", "ipywidgets==8.1.6", "jupytergis==0.5.0", "jupyterlab==4.4.3", @@ -63,7 +63,7 @@ dependencies = [ "tqdm==4.67.1", "virtualizarr==1.3.2", "xarray==2025.4.0", - "zarr==3.0.9", + "zarr==3.1.0", ] [project.scripts] diff --git a/src/icefabric/builds/icechunk_s3_module.py b/src/icefabric/builds/icechunk_s3_module.py index 1c385f4..4aeae8a 100644 --- a/src/icefabric/builds/icechunk_s3_module.py +++ b/src/icefabric/builds/icechunk_s3_module.py @@ -402,6 +402,26 @@ def _infer_var_name_for_geotiff(self, variable_list: list) -> str: ) return var_name + @staticmethod + def create_local_virtual_chunk_container(path: str) -> ic.VirtualChunkContainer: + """ + Create a virtual chunk container from a mapping for local files. + + Parameters + ---------- + path : str + The local path to the files which need to be virtualized + + Returns + ------- + ic.VirtualChunkContainer + A definition of a virtual chunk that the icechunk repo + uses to define access to virtualized data. + """ + abs_path = str(Path(path).resolve()) + store_config = ic.local_filesystem_store(abs_path) + return ic.VirtualChunkContainer(f"file://{abs_path}", store_config) + @staticmethod def set_up_virtual_chunk_container(bucket: str, region: str) -> ic.VirtualChunkContainer: """ diff --git a/src/icefabric/helpers/__init__.py b/src/icefabric/helpers/__init__.py index f3067cb..dce7b64 100644 --- a/src/icefabric/helpers/__init__.py +++ b/src/icefabric/helpers/__init__.py @@ -1,6 +1,8 @@ """Helper functions designed to assist with managing data. Similar to util functions""" from .arch_weather_file_utils import ( + add_time_dim_to_datasets, + extract_dates_from_archival_files, get_archival_weather_files, load_tiff_file, virtualize_and_concat_archival_files_on_time, @@ -15,6 +17,8 @@ "get_archival_weather_files", "load_tiff_file", "virtualize_and_concat_archival_files_on_time", + "extract_dates_from_archival_files", + "add_time_dim_to_datasets", "load_creds", "table_to_geopandas", "to_geopandas", diff --git a/src/icefabric/helpers/arch_weather_file_utils.py b/src/icefabric/helpers/arch_weather_file_utils.py index dfd300b..49d948f 100644 --- a/src/icefabric/helpers/arch_weather_file_utils.py +++ b/src/icefabric/helpers/arch_weather_file_utils.py @@ -6,6 +6,7 @@ """ import os +from pathlib import Path import fsspec import pandas as pd @@ -100,8 +101,8 @@ def get_archival_weather_files( return files -def _extract_dates_from_archival_files( - file_paths: list[str], file_pattern: str, just_year: bool | None = False +def extract_dates_from_archival_files( + file_paths: list[str] | list[Path], file_pattern: str, just_year: bool | None = False ) -> list[pd.DatetimeIndex] | list[int]: """ Pull dates out of list of file names @@ -178,7 +179,7 @@ def _virtualize_datasets( return v_datasets -def _add_time_dim_to_datasets( +def add_time_dim_to_datasets( timeless_datasets: list[xr.Dataset], datetimes: list[pd.DatetimeIndex], just_year: bool | None = False, @@ -269,9 +270,9 @@ def virtualize_and_concat_archival_files_on_time( arch_files = get_archival_weather_files( loc=location, file_type=file_type, manual_file_pattern=manual_file_pattern ) - datetimes = _extract_dates_from_archival_files(arch_files, file_date_pattern, just_year=just_year) + datetimes = extract_dates_from_archival_files(arch_files, file_date_pattern, just_year=just_year) timeless_datasets = _virtualize_datasets(arch_files, loadable_vars, testing_file_quantity) - time_added_datasets = _add_time_dim_to_datasets( + time_added_datasets = add_time_dim_to_datasets( timeless_datasets, datetimes, just_year, testing_file_quantity ) concat_dim = "year" if just_year else "time" diff --git a/src/icefabric/schemas/topobathy.py b/src/icefabric/schemas/topobathy.py index 25ed9b6..752f042 100644 --- a/src/icefabric/schemas/topobathy.py +++ b/src/icefabric/schemas/topobathy.py @@ -61,7 +61,7 @@ class NGWPCTestLocations(Enum): stores. """ - SNODAS_IC = ("edfs-data", "forcing/snodas") + # SNODAS_IC = ("edfs-data", "forcing/snodas") # commenting out until data can be moved from data to test bucket NLCD_IC = ("edfs-data", "land-cover/NLCD-Land-Cover") TOPO_AK_10M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_alaska_10m") TOPO_AK_30M_IC = ("edfs-data", f"{TOPO_BP}/tbdem_alaska_30m") diff --git a/tools/icechunk/build_landcover_stores.py b/tools/icechunk/build_landcover_stores.py new file mode 100644 index 0000000..fa58edf --- /dev/null +++ b/tools/icechunk/build_landcover_stores.py @@ -0,0 +1,92 @@ +"""A file to build the landcover stores using Icechunk""" + +import argparse +from pathlib import Path + +import icechunk as ic +import xarray as xr +from tqdm import tqdm +from virtualizarr import open_virtual_dataset + +from icefabric.helpers import ( + add_time_dim_to_datasets, + extract_dates_from_archival_files, +) + + +def build_landcover_store(virtual_files: str, output_path) -> None: + """Creates a landcover store based on the NLCD data + + Parameters + ---------- + virtual_files : str + The path to where the virtual files live + output_path : _type_ + _description_ + """ + abs_path = Path(virtual_files).resolve() + + # Create virtual chunk container + store_config = ic.local_filesystem_store(str(abs_path)) + container = ic.VirtualChunkContainer(f"file://{abs_path}", store_config) + + # Set up credentials + credentials = ic.containers_credentials({f"file://{abs_path}": None}) + + # Create config and add container + config = ic.RepositoryConfig.default() + config.set_virtual_chunk_container(container) + + # Create storage for the repo + storage = ic.local_filesystem_storage(str(Path(output_path).resolve())) + + # Create/open repository with correct class name + nlcd_repo = ic.Repository.open_or_create( + storage=storage, + config=config, + authorize_virtual_chunk_access=credentials, + ) + + # Get Files + files = sorted([str(f) for f in abs_path.glob("*")]) + datetimes = extract_dates_from_archival_files(files, "Annual_NLCD_LndCov_*_CU_C1V0.tif", just_year=True) + + # Virtualize Data + datasets = [] + for i in tqdm( + range(len(files)), + desc="Opening files as Virtual Datasets", + unit="files", + ncols=125, + colour="#37B6BD", + ): + datasets.append( + open_virtual_dataset( + filepath=files[i], + indexes={}, + ) + ) + time_added_datasets = add_time_dim_to_datasets(datasets, datetimes, just_year=True) + ds = xr.concat( + time_added_datasets, dim="year", coords="minimal", compat="override", combine_attrs="override" + ) + + # Write to icechunk + session = nlcd_repo.writable_session("main") + store = session.store # A zarr store + ds.virtualize.to_icechunk(store) + _ = session.commit("Initial Commit: Building landcover store") + + print("Successfully wrote to icechunk") + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="A script to build a pyiceberg catalog in the S3 endpoint") + + parser.add_argument( + "virtual_files", type=str, help="The Path to the files we're virtualizing into icechunk" + ) + parser.add_argument("output_path", type=str, help="The Path to where the repo should be created") + + args = parser.parse_args() + build_landcover_store(args.virtual_files, args.output_path)

    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 literal 0 HcmV?d00001 diff --git a/docs/user_guide/index.md b/docs/user_guide/index.md index 3e66a0a..e38398a 100644 --- a/docs/user_guide/index.md +++ b/docs/user_guide/index.md @@ -2,22 +2,4 @@ ## The mission -![A diagram describing the icefabric mission](../img/icefabric_mission.png) - The idea for the icefabric came from the need to version control datasets for the National Water Model 4.0. There were many different file formats, and hydrofabric versions, but the need for an [Apache Iceberg](https://iceberg.apache.org/) style backend was realized. The name itself, icefabric, is a reference to this. - -Thus, this repo is a workspace for all icefabric assembly, tranformation, and dissemination. - -The repo is structured in the following workspace packages: - -*Icefabric Manage:* - -The repo for building a local version of the icefabric and updating cloud stores - -*Icefabric Tools:* - -The repo for all compute services built on the icefabric - -*Icefabric API:* - -The interface between the icefabric and outside entities diff --git a/docs/user_guide/terraform.md b/docs/user_guide/terraform.md index 43c052a..8249e71 100644 --- a/docs/user_guide/terraform.md +++ b/docs/user_guide/terraform.md @@ -1,8 +1,8 @@ +# AWS S3 Tables with Apache Iceberg - Terraform Implementation + !!! note These docs are taken from `src/icefabric_manage/terraform/README.md` -# AWS S3 Tables with Apache Iceberg - Terraform Implementation - This directory contains PoC Terraform IaC for deploying Apache Iceberg tables using the AWS S3 Tables service with AWS Glue catalog integration. It also contains a basic demo / test python script used to verify things. ## Architecture Overview diff --git a/examples/iceberg/iceberg_version_control_examples.ipynb b/examples/iceberg/iceberg_version_control_examples.ipynb new file mode 100644 index 0000000..9b6ea74 --- /dev/null +++ b/examples/iceberg/iceberg_version_control_examples.ipynb @@ -0,0 +1,484 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Apache Iceberg Version Control for Hydrofabric and Streamflow Data\n", + "\n", + "### Overview\n", + "\n", + "This notebook demonstrates **enterprise-grade version control capabilities** for hydrological datasets using Apache Iceberg. We'll showcase how the hydrofabric and streamflow observations can be managed with full version control.\n", + "\n", + "#### What is Apache Iceberg?\n", + "\n", + "**Apache Iceberg** is a high-performance table format designed for large-scale data lakes. Unlike traditional file formats, Iceberg provides:\n", + "\n", + "- **Automatic snapshots** of every data change\n", + "- **Time travel queries** to access historical versions\n", + "- **ACID transactions** for data consistency\n", + "- **Schema evolution** without breaking existing queries\n", + "- **Query performance** through advanced indexing and pruning\n", + "- **Complete audit trails** for regulatory compliance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Import all necessary modules\n", + "import os\n", + "from pathlib import Path\n", + "\n", + "import pyarrow as pa\n", + "from pyiceberg.catalog import load_catalog\n", + "\n", + "from icefabric.helpers import load_creds, load_pyiceberg_config\n", + "\n", + "# Changes the current working dir to be the project root\n", + "current_working_dir = Path.cwd()\n", + "os.chdir(Path.cwd() / \"../../\")\n", + "print(\n", + " f\"Changed current working dir from {current_working_dir} to: {Path.cwd()}. This must run at the project root\"\n", + ")\n", + "\n", + "\n", + "# dir is where the .env file is located\n", + "load_creds(dir=Path.cwd())\n", + "\n", + "# Loading the local pyiceberg config settings\n", + "pyiceberg_config = load_pyiceberg_config(Path.cwd())\n", + "catalog = load_catalog(\n", + " name=\"sql\",\n", + " type=pyiceberg_config[\"catalog\"][\"sql\"][\"type\"],\n", + " uri=pyiceberg_config[\"catalog\"][\"sql\"][\"uri\"],\n", + " warehouse=pyiceberg_config[\"catalog\"][\"sql\"][\"warehouse\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exploring the Data Catalog\n", + "\n", + "Apache Iceberg organizes data into **catalogs**, **namespaces**, and **tables** - similar to databases, schemas, and tables in traditional systems. However, each table maintains complete version history automatically.\n", + "\n", + "#### Hydrofabric Tables\n", + "\n", + "The `conus_hf` namespace contains hydrofabric layers associated with the CONUS-based geopackage\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "catalog.list_tables(\"conus_hf\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's examine the **hydrolocations** table and make some versioned additions. Below we'll see both the snapshots from the hydrolocations table, and actual geopackage layer exported to a pandas dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table = catalog.load_table(\"conus_hf.hydrolocations\")\n", + "table.inspect.snapshots()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = table.scan().to_pandas()\n", + "df.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Snapshot Analysis: Understanding Version History\n", + "\n", + "Each snapshot in Iceberg contains:\n", + "- **Unique identifier** (snapshot_id)\n", + "- **Summary metadata** describing the operation\n", + "- **Timestamp** of the change\n", + "- **File manifests** pointing to data files\n", + "- **Schema information** at that point in time\n", + "\n", + "This enables **complete traceability** of how data evolved over time." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")\n", + "snapshot_id = table.metadata.snapshots[0].snapshot_id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Demonstrating Version Control: Adding New Monitoring Location\n", + "\n", + "Now we'll demonstrate Iceberg's version control by adding a **new hydrologic monitoring location**\n", + "\n", + "#### The Version Control Process:\n", + "\n", + "1. **Modify data** (add new monitoring location)\n", + "2. **Overwrite table** (creates new snapshot automatically)\n", + "3. **Preserve history** (all previous versions remain accessible)\n", + "4. **Track changes** (complete audit trail maintained)\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_df = df.copy()\n", + "new_df.loc[len(new_df)] = {\n", + " \"poi_id\": 99999,\n", + " \"id\": \"wb-0\",\n", + " \"nex_id\": \"tnx-0\",\n", + " \"hf_id\": 999999,\n", + " \"hl_link\": \"Testing\",\n", + " \"hl_reference\": \"testing\",\n", + " \"hl_uri\": \"testing\",\n", + " \"hl_source\": \"testing\",\n", + " \"hl_x\": -1.952088e06,\n", + " \"hl_y\": 1.283884e06,\n", + " \"vpu_id\": 18,\n", + "}\n", + "new_df.tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Writing Changes: Automatic Snapshot Creation\n", + "\n", + "When we write changes to an Iceberg table:\n", + "\n", + "1. **Schema validation** ensures data compatibility\n", + "2. **New snapshot created** automatically with unique ID\n", + "3. **Previous snapshots preserved** for time travel\n", + "4. **Metadata updated** with operation summary\n", + "5. **ACID guarantees** ensure consistency\n", + "\n", + "This happens **atomically** - either the entire operation succeeds or fails, with no partial states.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "_df = pa.Table.from_pandas(new_df, preserve_index=False)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)\n", + "table.scan().to_pandas().tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Verifying New Snapshot Creation\n", + "\n", + "Let's examine the updated snapshot history. Notice how we now have **multiple snapshots**:\n", + "\n", + "1. **Original data** (initial snapshot)\n", + "2. **Data with new location** (our recent addition)\n", + "\n", + "Each snapshot is **completely independent** and can be accessed separately for different analyses or rollback scenarios.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Iceberg's **time travel capability** allows querying any previous snapshot using its ID\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "snapshot_id = table.metadata.snapshots[0].snapshot_id\n", + "snapshot_id_latest = table.metadata.snapshots[-1].snapshot_id\n", + "table.scan(snapshot_id=snapshot_id).to_pandas().tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.scan(snapshot_id=snapshot_id_latest).to_pandas().tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparing Versions: Before and After\n", + "\n", + "Notice the difference between snapshots:\n", + "- **Original snapshot**: Contains original monitoring locations\n", + "- **Latest snapshot**: Includes our new test location (poi_id: 99999)\n", + "\n", + "This demonstrates **non-destructive updates** - both versions coexist and remain queryable.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Streamflow Observations: Time Series Version Control\n", + "\n", + "Now let's examine **streamflow observations** - time series data that requires different version control considerations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table = catalog.load_table(\"streamflow_observations.usgs_hourly\")\n", + "table.inspect.snapshots()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = table.scan().to_pandas().set_index(\"time\")\n", + "df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")\n", + "snapshot_id = table.metadata.snapshots[0].snapshot_id" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Adding Time Series Data: Simulating Real-Time Updates\n", + "\n", + "We'll now add a new streamflow observation to demonstrate version control for time series data\n", + "\n", + "The process maintains **historical context** while adding new information." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "new_streamflow_df = df.copy()\n", + "new_streamflow_df.loc[len(new_df)] = 0.1\n", + "new_streamflow_df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "_df = pa.Table.from_pandas(new_streamflow_df)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)\n", + "table.scan().to_pandas().tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "for snapshot in table.snapshots():\n", + " print(f\"Snapshot ID: {snapshot.snapshot_id}; Summary: {snapshot.summary}\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Time Travel with Time Series Data\n", + "\n", + "Comparing different snapshots of time series data reveals:\n", + "\n", + "#### Original Snapshot (Baseline Data):\n", + "- Contains original observational record\n", + "- Represents specific quality control state\n", + "- Suitable for historical analysis\n", + "\n", + "#### Latest Snapshot (Updated Data): \n", + "- Includes new observations\n", + "- Represents current operational state\n", + "- Suitable for real-time applications" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "snapshot_id = table.metadata.snapshots[0].snapshot_id\n", + "snapshot_id_latest = table.metadata.snapshots[-1].snapshot_id\n", + "table.scan(snapshot_id=snapshot_id).to_pandas().tail().set_index(\"time\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df = table.scan(snapshot_id=snapshot_id).to_pandas()\n", + "_df = pa.Table.from_pandas(df)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)\n", + "table.scan().to_pandas().tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "table.scan(snapshot_id=snapshot_id_latest).to_pandas().tail().set_index(\"time\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Demonstration Cleanup: Reverting Changes\n", + "\n", + "To maintain data integrity, we'll now **revert our test changes** by removing the added records. This demonstrates:\n", + "\n", + "- **Controlled rollback** procedures\n", + "- **Data management** best practices \n", + "- **Cleanup workflows** for testing environments\n", + "\n", + "**Important**: Even these cleanup operations create new snapshots, maintaining complete audit trails of all activities." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cleaning up hydrofabric changes\n", + "table = catalog.load_table(\"conus_hf.hydrolocations\")\n", + "new_df = new_df.drop(new_df.index[-1])\n", + "_df = pa.Table.from_pandas(new_df, preserve_index=False)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)\n", + "catalog.load_table(\"conus_hf.hydrolocations\").scan().to_pandas().tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Cleaning up Streamflow Observation changes\n", + "table = catalog.load_table(\"streamflow_observations.usgs_hourly\")\n", + "new_streamflow_df = new_streamflow_df.drop(new_streamflow_df.index[-1])\n", + "_df = pa.Table.from_pandas(new_streamflow_df)\n", + "with table.update_schema() as update_schema:\n", + " update_schema.union_by_name(_df.schema)\n", + "table.overwrite(_df)\n", + "catalog.load_table(\"streamflow_observations.usgs_hourly\").scan().to_pandas().tail()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**This demonstration showcases Apache Iceberg's capability to provide version control for water resources data, enabling both reliability and reproducibility for large-scale hydrological modeling systems.**" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "icefabric", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/iceberg/pyiceberg_time_travel.ipynb b/examples/iceberg/pyiceberg_time_travel.ipynb index 30f6ea8..d99689d 100644 --- a/examples/iceberg/pyiceberg_time_travel.ipynb +++ b/examples/iceberg/pyiceberg_time_travel.ipynb @@ -5,13 +5,27 @@ "id": "0", "metadata": {}, "source": [ - "# Demo: Timetravel in with iceberg tables\n", + "# Demo: Time Travel with Iceberg Tables - CRUD Operations & Version Control\n", "\n", - "Create a demo catalog, make changes, and see the changes with \"snapshot\" history.\n", + "## Overview\n", + "This notebook demonstrates **Create, Read, Update, and Delete (CRUD) operations** on version-controlled data using Apache Iceberg tables. The notebook showcases how Iceberg's snapshot-based architecture enables time travel capabilities and maintains a complete history of all data modifications.\n", "\n", - "Requires:\n", - "- pyiceberg[sql-sqlite] installed\n", - "- `.env` with your AWS credentials" + "## Key Features Demonstrated:\n", + "- **CREATE**: Creating new tables and adding data\n", + "- **READ**: Querying current and historical data snapshots\n", + "- **UPDATE**: Modifying table schemas and data\n", + "- **DELETE**: Removing columns and dropping tables\n", + "- **VERSION CONTROL**: Time travel through snapshots to view historical states\n", + "\n", + "## Prerequisites:\n", + "- a local pyiceberg catalog spun up and referenced through .pyiceberg.yaml\n", + "\n", + "## Objectives:\n", + "By the end of this notebook, you will understand how to:\n", + "1. Perform all CRUD operations on Iceberg tables\n", + "2. Leverage version control to access historical data states\n", + "3. Create and manage table snapshots\n", + "4. Navigate between different versions of your data" ] }, { @@ -54,7 +68,9 @@ "id": "2", "metadata": {}, "source": [ - "Load a specific table that we would like to time travel from" + "### READ Operation: Loading and Inspecting Existing Data\n", + "\n", + "We begin by demonstrating the **READ** operation by loading an existing table and examining its version history. This shows how Iceberg maintains complete metadata about all snapshots (versions) of the data.\n" ] }, { @@ -73,7 +89,7 @@ "id": "4", "metadata": {}, "source": [ - "Let's view this data and see what's there" + "Let's examine the current data in the table. This represents the latest version of our dataset. Notice how we can easily convert Iceberg tables to pandas DataFrames for analysis.\n" ] }, { @@ -92,7 +108,9 @@ "id": "6", "metadata": {}, "source": [ - "A snapshot was created for the initial append. Store this snapshot id for later use." + "### Version Control: Capturing Initial State\n", + "\n", + "**Version Control Feature**: Every operation in Iceberg creates a snapshot with a unique ID. We're capturing the initial snapshot ID here so we can demonstrate time travel capabilities later. This snapshot represents the baseline state of our data before any modifications.\n" ] }, { @@ -112,7 +130,12 @@ "id": "8", "metadata": {}, "source": [ - "Add a new column for a fake gauge" + "### UPDATE Operation: Schema Evolution and Data Modification\n", + " \n", + "Now we'll demonstrate the **UPDATE** operation by adding a new column to our existing table. This involves:\n", + "1. Creating synthetic data for the new column\n", + "2. Updating the table schema to accommodate the new column\n", + "3. Overwriting the table with the updated data\n" ] }, { @@ -139,6 +162,16 @@ "import pyarrow as pa\n", "\n", "df[\"12345678\"] = y\n", + "df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11", + "metadata": {}, + "outputs": [], + "source": [ "_df = pa.Table.from_pandas(df)\n", "with table.update_schema() as update_schema:\n", " update_schema.union_by_name(_df.schema)\n", @@ -147,34 +180,41 @@ }, { "cell_type": "markdown", - "id": "11", + "id": "12", "metadata": {}, "source": [ - "There should be a new \"12345678\" column." + "After our UPDATE operation, we can verify that the schema has been modified. The new column \"12345678\" should now be part of the table structure.\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "12", + "id": "13", "metadata": {}, "outputs": [], "source": [ - "table.schema" + "table.schema().fields[-1]" ] }, { "cell_type": "markdown", - "id": "13", + "id": "14", "metadata": {}, "source": [ - "There should now be three snapshots. The original, a delete, and an append with the new column." + "### Version Control: Tracking All Changes\n", + "\n", + "**Version Control Feature**: Notice how Iceberg has automatically created new snapshots for our UPDATE operation. The snapshot history now shows:\n", + "- Original data snapshot\n", + "- Delete operation snapshot (part of overwrite)\n", + "- New append operation snapshot (with the new column)\n", + "\n", + "This complete audit trail is essential for data governance and debugging." ] }, { "cell_type": "code", "execution_count": null, - "id": "14", + "id": "15", "metadata": {}, "outputs": [], "source": [ @@ -184,38 +224,34 @@ }, { "cell_type": "markdown", - "id": "15", + "id": "16", "metadata": {}, "source": [ - "You can use the scan function and the first snapshot ID (this variable was saved earlier) to look at the table before the\n", - "new column was added. This table doesn't have 12345678." + "**Time Travel Feature**: Using the snapshot ID we captured earlier, we can query the table as it existed before our UPDATE operation. This demonstrates Iceberg's powerful time travel capabilities - you can access any historical state of your data.\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "16", + "id": "17", "metadata": {}, "outputs": [], "source": [ - "# scan = table.scan(row_filter=\"divide_id\" == \"cat-276\", selected_fields=('divide_id', 'lengthm')).to_arrow()\n", - "# print(scan)\n", - "table.scan(snapshot_id=snapshot_id).to_pandas().tail()\n", - "# table.scan(snapshot_id=snapshot_id)" + "table.scan(snapshot_id=snapshot_id).to_pandas().tail()" ] }, { "cell_type": "markdown", - "id": "17", + "id": "18", "metadata": {}, "source": [ - "whereas loading without the snapshot gives the latest data" + "Comparing the current state (with the new column) versus the historical state (without the column) demonstrates how version control preserves all data states while allowing easy access to current data.\n" ] }, { "cell_type": "code", "execution_count": null, - "id": "18", + "id": "19", "metadata": {}, "outputs": [], "source": [ @@ -224,7 +260,183 @@ }, { "cell_type": "markdown", - "id": "19", + "id": "20", + "metadata": {}, + "source": [ + "Now we'll demonstrate another **UPDATE** operation by removing the column we just added. This shows how Iceberg handles schema evolution in both directions (adding and removing columns).\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "21", + "metadata": {}, + "outputs": [], + "source": [ + "with table.update_schema() as update_schema:\n", + " update_schema.delete_column(\"12345678\")\n", + "\n", + "df = df.drop(\"12345678\", axis=1)\n", + "_df = pa.Table.from_pandas(df)\n", + "table.overwrite(_df)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "22", + "metadata": {}, + "outputs": [], + "source": [ + "table.schema().fields[-1]" + ] + }, + { + "cell_type": "markdown", + "id": "23", + "metadata": {}, + "source": [ + "### CREATE Operation: Building New Tables\n", + "\n", + "Now we'll demonstrate the **CREATE** operation by building an entirely new table from scratch. This shows how to:\n", + "1. Prepare data for a new table\n", + "2. Create the table structure in the catalog\n", + "3. Populate the table with initial data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "24", + "metadata": {}, + "outputs": [], + "source": [ + "__df = df.copy()\n", + "__df[\"12345678\"] = y\n", + "subset_df = __df[[\"12345678\"]].copy()\n", + "subset_df.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "25", + "metadata": {}, + "outputs": [], + "source": [ + "namespace = \"streamflow_observations\"\n", + "table_name = \"testing_hourly\"\n", + "arrow_table = pa.Table.from_pandas(subset_df)\n", + "iceberg_table = catalog.create_table(\n", + " f\"{namespace}.{table_name}\",\n", + " schema=arrow_table.schema,\n", + ")\n", + "iceberg_table.append(arrow_table)" + ] + }, + { + "cell_type": "markdown", + "id": "26", + "metadata": {}, + "source": [ + "### READ Operation: Verifying New Table Creation \n", + "\n", + "After our **CREATE** operation, we can verify that the new table exists in our namespace and examine its initial snapshot. Every new table starts with its first snapshot upon creation.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "27", + "metadata": {}, + "outputs": [], + "source": [ + "catalog.list_tables(namespace)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "28", + "metadata": {}, + "outputs": [], + "source": [ + "table = catalog.load_table(f\"{namespace}.{table_name}\")\n", + "table.inspect.snapshots()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29", + "metadata": {}, + "outputs": [], + "source": [ + "table.scan().to_pandas().tail()" + ] + }, + { + "cell_type": "markdown", + "id": "30", + "metadata": {}, + "source": [ + "### DELETE Operation: Table Removal\n", + "\n", + "Finally, we demonstrate the **DELETE** operation by completely removing the table we just created. This shows how to clean up resources and manage table lifecycle.\n", + "\n", + "**Important**: Unlike column deletion (which is reversible through time travel), table deletion is permanent and removes all snapshots and data.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "31", + "metadata": {}, + "outputs": [], + "source": [ + "catalog.drop_table(f\"{namespace}.{table_name}\")\n", + "catalog.list_tables(namespace)" + ] + }, + { + "cell_type": "markdown", + "id": "32", + "metadata": {}, + "source": [ + "### Summary: CRUD Operations and Version Control Demonstrated\n", + " \n", + "This notebook has successfully demonstrated all required CRUD operations with version-controlled data:\n", + " \n", + "#### CREATE Operations:\n", + "- Created new tables with `catalog.create_table()`\n", + "- Added new columns to existing tables\n", + "- Populated tables with initial data using `append()`\n", + "\n", + "#### READ Operations:\n", + "- Loaded existing tables with `catalog.load_table()`\n", + "- Queried current data states with `table.scan()`\n", + "- Accessed historical data states using snapshot IDs\n", + "- Inspected table schemas and metadata\n", + " \n", + "#### UPDATE Operations:\n", + "- Modified table schemas by adding columns\n", + "- Updated data through `overwrite()` operations\n", + "- Removed columns from existing tables\n", + "\n", + "#### DELETE Operations:\n", + "- Deleted columns from table schemas\n", + "- Removed entire tables with `catalog.drop_table()`\n", + "\n", + "#### Version Control Features:\n", + "- **Snapshot Management**: Every operation creates tracked snapshots\n", + "- **Time Travel**: Access any historical state using snapshot IDs\n", + "- **Audit Trail**: Complete history of all table modifications\n", + "- **Schema Evolution**: Track changes to table structure over time\n" + ] + }, + { + "cell_type": "markdown", + "id": "33", "metadata": {}, "source": [] } diff --git a/examples/icechunk/icechunk_data_ret_and_plot.ipynb b/examples/icechunk/icechunk_data_ret_and_plot.ipynb deleted file mode 100644 index c4fdb81..0000000 --- a/examples/icechunk/icechunk_data_ret_and_plot.ipynb +++ /dev/null @@ -1,164 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "0", - "metadata": {}, - "source": [ - "## Retrieving Icechunk Data\n", - "Intantiate and retrieve the data from the NLCD Land Cover Icechunk repo. Print and plot the data.\n", - "\n", - "Requires:\n", - "- `.env` with your AWS credentials" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "1", - "metadata": {}, - "outputs": [], - "source": [ - "import warnings\n", - "from pathlib import Path\n", - "\n", - "import matplotlib.pyplot as plt\n", - "\n", - "warnings.filterwarnings(\"ignore\")" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "2", - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric.helpers import load_creds\n", - "\n", - "# dir is where the .env file is located\n", - "load_creds(dir=Path.cwd().parents[1])" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "3", - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric.builds import IcechunkRepo\n", - "from icefabric.schemas import NGWPCTestLocations\n", - "\n", - "# Retrive data and print\n", - "land_cover_repo = IcechunkRepo(location=NGWPCTestLocations.NLCD_IC.path)\n", - "lc_data = land_cover_repo.retrieve_dataset()\n", - "print(lc_data)" - ] - }, - { - "cell_type": "markdown", - "id": "4", - "metadata": {}, - "source": [ - "### Plot 2023 data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "5", - "metadata": {}, - "outputs": [], - "source": [ - "# Print data for year 2023\n", - "print(lc_data[\"5\"].sel(year=2023))\n", - "\n", - "# Set up plot for 2023 land cover\n", - "lc_data[\"5\"].sel(year=2023).plot(x=\"X5\", y=\"Y5\")\n", - "\n", - "# Invert the y-axis to show the CONUS region correctly\n", - "plt.gca().invert_yaxis()\n", - "\n", - "# Add labels and show the plot\n", - "plt.xlabel(\"LON\")\n", - "plt.ylabel(\"LAT\")\n", - "plt.title(\"CONUS Land Cover\")\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "id": "6", - "metadata": {}, - "source": [ - "## Topobathy\n", - "Intantiate and retrieve the data from one Topobathy Icechunk repo. Print and plot the data.\n", - "\n", - "### Retrieve Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7", - "metadata": {}, - "outputs": [], - "source": [ - "# Retrive data and print\n", - "topo_repo = IcechunkRepo(location=NGWPCTestLocations.TOPO_PR_USVI_30M_IC.path)\n", - "topo_data = topo_repo.retrieve_dataset()\n", - "print(topo_data)" - ] - }, - { - "cell_type": "markdown", - "id": "8", - "metadata": {}, - "source": [ - "### Plot Data" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "9", - "metadata": {}, - "outputs": [], - "source": [ - "# Print Dataarray\n", - "print(topo_data[\"elevation\"])\n", - "\n", - "# Set up plot\n", - "topo_data[\"elevation\"].plot(x=\"x\", y=\"y\")\n", - "\n", - "# Add labels and show the plot\n", - "plt.xlabel(\"LON\")\n", - "plt.ylabel(\"LAT\")\n", - "plt.title(\"Puerto Rico & USVI 30M Topobathy\")\n", - "plt.show()" - ] - } - ], - "metadata": { - "kernelspec": { - "display_name": "icefabric", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.12.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -} diff --git a/examples/icechunk/icechunk_to_tiff.ipynb b/examples/icechunk/icechunk_to_tiff.ipynb deleted file mode 100644 index e752390..0000000 --- a/examples/icechunk/icechunk_to_tiff.ipynb +++ /dev/null @@ -1,705 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "id": "42d13343", - "metadata": {}, - "source": [ - "# Demo: Export icechunk raster data to geotiff\n", - "\n", - "Raster topobathymetry data made into icechunk stores is not inherently visibile with traditional GIS methods. Use this method to retrieve a dataset and export to geotiff. \n", - "\n", - "Requires:\n", - "- `.env` with AWS credentials" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "7cba65ef", - "metadata": {}, - "outputs": [], - "source": [ - "from pathlib import Path\n", - "\n", - "from icefabric.builds import IcechunkRepo\n", - "from icefabric.schemas import NGWPCLocations" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "id": "d479759f", - "metadata": {}, - "outputs": [], - "source": [ - "from icefabric.helpers import load_creds\n", - "\n", - "# dir is where the .env file is located\n", - "load_creds(dir=Path.cwd().parents[1])" - ] - }, - { - "cell_type": "markdown", - "id": "bcebeab5", - "metadata": {}, - "source": [ - "Open the dataset to check information and variable name." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "7df8b014", - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "